2016年12月26日 星期一

Nginx 編譯 BoringSSL 失敗 BIO_get_mem_data [passing argument 2]

這幾天在編譯 Nginx 1.11.7 with BoringSSL 的時候一直鬼打牆,屢屢編譯不成功在 make 的時候出現錯誤訊息

src/event/ngx_event_openssl.c: In function 'ngx_ssl_parse_time':


src/event/ngx_event_openssl.c:4072:5: error: passing argument 2 of 'BIO_get_mem_data' from incompatible pointer type [-Werror]


     len = BIO_get_mem_data(bio, &value);


     ^


In file included from /tmp/nginxauto-28396-tmp/boringssl/.openssl/include/openssl/ssl.h:147:0,


                 from src/event/ngx_event_openssl.h:15,


                 from src/core/ngx_core.h:82,


                 from src/event/ngx_event_openssl.c:9:


/tmp/nginxauto-28396-tmp/boringssl/.openssl/include/openssl/bio.h:385:21: note: expected 'char **' but argument is of type 'u_char **'


OPENSSL_EXPORT long BIO_get_mem_data(BIO *bio, char **contents);


                     ^


cc1: all warnings being treated as errors


make[1]: *** [objs/src/event/ngx_event_openssl.o] Error 1


make[1]: Leaving directory `/tmp/nginxauto-28396-tmp/nginx-1.11.7'


make: *** [build] Error 2




2016年12月23日 星期五

macOS Sierra 無法安裝未識別開發者 App

這篇簡單記錄一下在 macOS Sierra 遇到無法安裝未識別的開發者的 App,以往只要打開鎖頭就可以選到允許任何來源 App,但是在 Sierra 竟然把這個選項拿掉了!!

 

還好 Apple 只是把介面上的選項拿掉,實際上的功能還是可以透過 terminal 來開啟
$ sudo spctl --master-disable

 

spctl 是 macOS 裡面的系統安全控制功能,類似 redhat 系列中的 SELinux,只要 disable 就可以解決

Orignal From: macOS Sierra 無法安裝未識別開發者 App

Macbook Pro 2016 later 三指拖曳(three finger drag) 失效問題

終於在今天小弟拿到新的 Macbook Pro with touch bar,很開心的在安裝一些常用工具的過程中發現在 MacOS 中超好用的一個 "三指拖曳" (three finger frag) 功能有點怪怪的

 

一開始覺得怪怪的,但用了幾個小時之後發現三指拖曳的功能時常失效,心想不會是機王吧!!

 

開始把問題餵 Google 後在 Apple Communities 裡看到有相同問題的一個 issue,"MacBook Pro late 2016 three finger drag issue",同樣的在許多地方也有相同的討論串 Three-finger drag gestures working sporadically on 2016 MacBook Pros, users say

 
Try to enable three finger drag on it and do a 3 finger drag gesture on bottom left of the trackpad, there are 40% chance that it's wrongly detected as secondary click.

2016年12月20日 星期二

Ubuntu 16.04 設定 Network interfaces、DNS

大概一年多沒有碰 Ubuntu 了,最近因為工作開始要大量的玩 Ubuntu 順手記錄一下以前沒有記錄到的資訊

 

此篇是紀錄  Ubuntu 16.04 在網路、DNS 的設定教學

2016年12月18日 星期日

Nginx 1.11.7 fix 使用 HTTP/2 與 limit_req 和 auth_request 的衝突

Nginx 在 2016/12/13 釋出 1.11.7 版本,主要修改 SSL 的 bug,其中比較有感的就是如果你已經使用 HTTP/2 的話,又搭配 limit_req 或 auth_request 的話,使用者端 rquest body 會有損壞的狀況,從 1.11.0 出現的 bug。

 
Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
directives client request body might be corrupted; the bug had
appeared in 1.11.0.

2016年12月17日 星期六

Java 淺談 OutOfMemory 的 JVM Heap and PermGen 設定

在使用 Java 的時候相信都會遇到過 OutOfMemory 這個錯誤,在以前維護 Tomcat 的時候就常常遇到這個狀況,剛好最近又遇到了 紀錄一下這篇

 

What is the JVM ?

Jvm (Java Virtual Machine) 意旨 Java 虛擬機,用於執行 Java bytecode 的 Virtual Machine space,以堆疊結構機器的方式實作,將編譯過的 *.class 輸入到 JVM 並執行,以下是 JVM 架構圖:

2016年12月16日 星期五

【DevOps】Puppet 自動化部署 - 安裝初始化

在 DevOps 中 Puppet 是一個自動化佈署 (Configuration Management) 的角色,在目前市場上 DevOps 頗為流行,在目前動不動就是幾百、幾千甚至是萬台 Server 的狀況根本就無法使用對等的 Server 人員進行管理,尤其在這個技術環境發展這麼快的時代,技術人員是越來越缺乏,更無法使用對等的人力去維護這些伺服器。

 

對於 DevOps 小弟認為這是技術時代的變遷,如果你不跟著提升就等著被淘汰,尤其在目前要成為一位"工程師",其實技術門檻非常低,在這個極競爭的產業對於一位系統管理者,自動化佈署絕對是一個提供自己價值的方式,不僅加速工作上的效率,也讓工作上增加更多空檔,讓我們一起提早下班吧

Linux 使用全域 Proxy 上網 (with only apt/yum)

這一兩天遇到 Server 必須要用 HTTP Proxy 才能上網,順手紀錄一下如何設定

 

使用 export http_proxy / https_proxy 的方式代理

 

全域變數 http_proxy / https_proxy
# 暫時生效,重開機proxy就會失效 
$ export http_proxy=http://proxy.example.com

# https用https_proxy
$ $ export https_proxy=https://proxy.example.com

2016年12月15日 星期四

Sublime Text 3 將TAB替換成空白,顯示空白字元

在寫 Python 的時候我想最頭痛的就是段行的問題,由於小弟蠻喜歡用 Sublime 當開發工具,但是 Sublime 預設看不出來你的段行是空白 or TAB

 

sublime_space_none

2016年12月14日 星期三

Mockaroo 自動替你生成測試資料,終於不用再浪費時間建立測試資料啦!

以往開發人員在進行開發需要測試的時候往往需要範例的資料進行測試,我最常看到 QA 用 Excel 拉資料,如果是開發人員會另外寫工具去隨機生成簡單的資料檔,不過可能因為資料庫欄位屬性的不同或是資料類型不同需要進行微調,是非常麻煩的一件事情。

 

Mockaroo 是由一位 Mark Brocato 所提供的免費的線上工具,提供生成一些測試資料用於各種情境的測試使用,並且提 供 CSV、JSON、SQL、Excel、XML  ... etc 不同的格式,並且可以調整需要的資料類型如 id、Data ... 目前 120種 types

2016年12月9日 星期五

Chrome 55 的重大改革:記憶體、Flash停用、HTML5的時代

這幾天一直在外奔波,在群組內一直有人提到 Chrome 55 ,但一直無法去 follow,今天終於有時間可以去了解 Google 在搞什麼鬼

 

一直以來 Google Chrome 擁有了很大的市占率,但是這幾年開始被其他的瀏覽器瓜分了一些地盤,最大的問題莫過於 Chrome 被冠上 吃記憶體怪獸 的這個名號,而終於在 Chrome 55 獲得了不錯的解決

2016年12月6日 星期二

Linux 系統殘留大量 php-fpm 執行的 53 udp session

前陣子在某台伺服器發現無法正常的解析網域,導致在呼叫 API 的時候一直失敗,這是一個非常特殊的案例,實際案例解析後其實就是 udp 協定的缺陷

 

問題:

  • 該主機無法對外解析 Domain


Nginx 專注於 CDN 的 PageSpeed module

引前之前文章所提到的 Google PageSpeed,而 Google 也有提供 nginx 用的 ngx pagespeed module,當然也有屬於 Apache 的,但是小弟本身偏好 nginx,所以此篇會以介紹 ngx_pagespeed 設定為主

 

要安裝 ngx_pagespeed 必須在 nginx 原始碼就進行編譯,如果不想要自行編譯可以到 nginxauto 這個專案自動安裝 nginx

2016年12月3日 星期六

Amazon 佛心來著,發表 DDoS 免費/付費防禦服務 AWS Shield

Amazon 在 12/1 發表了一款標榜防禦 DDos 的服務 AWS Shield,並且分為標準版 / 付費版並且將自動佈署在 Elastic Load Balancers、CloudFront、Route 53 的服務上,這對於本身就已經使用 AWS 的人可是一件超值的服務

 

由於 Amazon 的標準版是免費的,號稱可以阻擋 96% 的 DDos 攻擊,這對於已經使用 Amazon 的企業無疑是一大好消息,正在考慮使用各式雲端的企業也是一大加分,長年以來 DDos 就是系統人員的夢厭,如今資安攻擊日漸頻繁 DDos 也是越來越常態的攻擊手法,甚至是垂手可得,對於 Amazon 的這個做法身為系統人員是給予很高的贊同與評價。