2016年9月6日 星期二

SLF4J 與 Logback 的運作流程

最近因為工作需要,開始在研究如何自定義 logback 的 Appender
不過在開始嘗試實作之前,因為想要知道整個 slf4j 到 logback 等的整個執行流程為何
因此就做了這篇的簡單的研究。

2016年8月24日 星期三

Docker container 的實體路徑

Docker 創造出來的 container,各自的實體路徑是在以下的位置:

/var/lib/docker/devicemapper/mnt/<container id>/rootfs/
參考資料
  1. Exploring Docker container's file system

Apache 2 SSL 的 Passphrase 問題

在 Apache 2 裡,如果要使用有被 Passphrase 保護的 key 給 SSL 使用
必須在某處提供 SSL 的 Passphrase 才能讓 Apache 正常啟動。

一般內建的方法是使用 builtin,也就是 Apache 啟動時會直接詢問使用者
其他方法則是可以把 Passphrase 寫在某個檔案裡,要 Apache 啟動時去讀取。

而寫設定的地方,在我的 container 中是放在 /etc/apache2/mods-enabled/ssl.conf 裡。

如果是不想那麼麻煩地處理 Passphrase 問題,想把他從金鑰中移掉
則可以參考 [2] 的方法,只需要指定輸入和輸出的金鑰檔名,然後輸入 Passphrase
就可以重製出一個不需要 Passphrase 的金鑰了。

以 RSA 的金鑰來說,指令如下:

openssl rsa -in /path/to/your/rsakey.key -out /path/to/your/rsa.nocrypt.key

參考資料
  1. Apache Requires SSL / Passphrase
  2. Remove the passphrase from an existing OpenSSL key file

2016年7月25日 星期一

Amazon Beanstalk 的應用程式位置

隨筆紀錄,如果把 Java 程式部署到 Beanstalk 上
預設在 Beanstalk 的路徑會是 /var/app/current/application.jar。

2016年7月4日 星期一

透過 Gson 輸出 pretty print 的 JSON

當使用 Gson 來解析 JSON 格式時,如果需要讓輸出的 JSON 以 pretty print 格式輸出
可以利用簡單的小工具達成這個目的。

Gson gsonBuilder = new GsonBuilder().setPrettyPrinting().create();
gsonBuilder.toJson(....);

不過 Gson 的這個工具,預設會自動做 HTML 跳脫,因此特殊符號都會自動被置換成 Unicode 表示形式
如果想要關掉 HTML 跳脫,可以使用 .disableHtmlEscaping() 方法。

Gson gsonBuilder = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
gsonBuilder.toJson(....);

2016年7月2日 星期六

對 Jersey 製作的 RESTful API 做單元測試(二):啟用 Servlet

Jersey 中使用 Jersey Test Framework 做測試時
如果遇到需要使用 Servlet 的狀況,例如使用了 @Context HttpServletRequest request
可能就會注意到,HttpServletRequest 這類應該要自動被注入的東西,在測試時都沒有被注入
因此會發生像是 NullPointerException 等等的錯誤。