Wednesday, June 27, 2018

vagrant resize disk

在 windows 上用 virtualbox 來開發,因為我總是使用 default Vagrantfile ,沒有多久,就遇到了預設的 10G disk space 不夠用的情況。

查了一些資料,發現需要下一堆很複雜的指令,我實在很擔心自己會搞不定。

仔細找了一下,結果有一個 vagrant plugin 可以達成這個功能! vagrant-disksize


Tuesday, June 26, 2018

integration test with mysql

重構公司的 legacy code 時,發覺沒有 integration test ,一遇到資料庫相關的程式碼,心裡就覺得很棘手,不知該如何是好?

於是就動手做了一小段 integration test 的準備。
1. 首先是準備資料庫
2. 再來是準備初始資料
3. 將初始資料塞進資料庫

準備資料庫的部分,用 docker 好了。

準備初始資料的部分,想了一下,就用 mysql workbench 。
mysql workbench 要 export 資料,如果是用 csv 格式的話,可以 export 查詢的 result set 。但是如果要 export sql 格式的話,只能是 table 或是 database 。後來,我選擇先用 query  來做出一張新的 table ,再用 mysql workbench 來 export table

將初始資料塞進資料庫的部分,我本來是想說,我開發的程式語言是 nodejs ,我就用 nodejs 來做檔案的讀取,與資料庫的寫入吧? 結果,試了一些專門做資料庫 import 的 library 之後,卻出乎意料之外的…很難用。

重新考慮之後,如果考慮 dependency declaration 和 dependency isolation ,最好還是把測試用 nodejs 來做。不過,既然只是 integration test ,前兩者似乎也可以做一些妥協,那我還是用單純的老方法 mysql client 來做好了。

#!/bin/bash

docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.6

# wait docker initialized
sleep 30

# import ce.item-report-hourly
mysql -h 127.0.0.1 -uroot -ppassword < ./ce_item_report_hourly.sql

Thursday, June 14, 2018

AWS 服務的除錯

現在任職的公司對 backend service 的要求是要設計成 horizontal scalable 的設計,所以其實用了滿多的 AWS 的技術。一個新的 nodejs 服務剛做出來的時候,有時候功能還不完整,也沒有設計複雜的 log 機制,那這樣子的話,該怎麼在生產環境中除錯呢?

 AWS 的 Elastic Load Balancer 是有 access logs 的機制的,所以把這個部分設定好,之後就可以把這個 ELB 的 access logs 當做 apache access logs 來除錯了。