2017年12月6日 星期三

查看世界各國的網路速度

由 akamai 製作的一個互動的圖表,非常的簡單易用
https://www.akamai.com/us/en/about/our-thinking/state-of-the-internet-report/state-of-the-internet-connectivity-visualization.jsp

2017年11月14日 星期二

中國大陸 cdn 前端通用庫的比較

Google ajax lib 無法在中國大陸正常的存取,cloudflare 的 cdnjs 則可以,但最好還是少用,因為很少人使用。多人使用的東西通常不會掛,或者是掛了會很少人修復。

這個連結有詳盡的比較表 https://c7sky.com/javascript-libraries-cdn.html

如果你是全球網站,可以使用 cloudflare 的 cdnjs ,速度可能還比 google 快,行有餘力,就把中國的訪客改成 bootcdn 吧!

2017年5月17日 星期三

更新 mysql sets 欄位

Database 有一種 SETS 型態的欄位,在某些時候蠻有用的,不同於 ENUM 型態欄位是多選一,SETS則是可以多選。像是 `categories`="fashion,food,travel" 。何不第三正規化就好了?但因為會多兩個 table。對於 SETS 屬性,要純以 SQL 來操作新增或移除是蠻麻煩的,在此筆記一下。

2017年3月17日 星期五

查詢隱藏在 cloudflare 後面的主機 ip 是否被流出

蠻多 service 都會紀錄曾經使用過的 ip ,除此之外,一些子網域也藏會透漏原始的 ip
http://www.crimeflare.com/cfs.html

2017年3月7日 星期二

使用 JS 讓 iOS 的 safari 跳出複製

其實就是全選功能,iOS 會跳出複製選項。
在此紀錄一下
http://stackoverflow.com/questions/10452391/is-it-possible-to-select-all-input-text-on-iphone-device-when-focus-click

2017年2月24日 星期五

healthcheck 的 checkpoint

我們使用 aws route53 的 dns failover 來決定現在的 ip 要指向哪一個 datacenter。dns failover 後面要綁一個 healtcheck 的 網址。我們的 healthcheck 檢查了下列項目:
  • Mysql 連線:做 select query ,看看能否拿到某個字串。
  • APC Cache:隨機存入一個字串,再取出這個字串來看看正不正確。有遇過只有 apc 掛掉的情況。
  • PHP 可以正確的執行:像是 php fatal error 的 http status 是 200,如果只偵測 non 200 status ,就會落入陷井。

全部都正確執行後,會 echo 'o' . 'k'; 然後再偵測 ok 這個字串。為什麼不是 echo 'ok'; 呢?因為有可能是設定錯誤,造成 server 吐 php code 的情況,若是吐 php code ,就沒辦法檢查出錯誤。正確執行會吐 ok 字串,不正確執行也會吐一些 error code ,error code 我們會這麼做

echo str_replace('ok', '@k', $err_msg);

這是為了避免 error code 會不小心出現 ok 的字串,例如 facebook 就含有 ok

2017年2月21日 星期二

mysql unable to start in restored ubuntu 16.04

Linode provides snapshot backup. But mysql unable to start if the system was restored from snapshot image. The solution is simple, just uninstall and reinstall mysql package.

sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
then
sudo apt install mysql-server

2016年10月14日 星期五

The difference between maxmind geoip and cloudflare geoip: country code level

Cloudflare provide free CF-IPCountry header, but we found a tweet said cloudflare's accuracy is not good enough at 2014.

We logged ip and cloudflare country code, then made a simple script to check the difference.

Dates of Cloudflare country code: first half of October, 2016
Maxmind geoip 2 country database: Oct 11, 2016

2016年9月26日 星期一

Setup DNSSec on route53 and cloudflare

Step:

  • Cloudflare -> enable DNSSec
    • Click "DNS Record", and copy public key
  • Route53 -> Manage Keys
    • Key type: 257 - KSK
    • Algorithm: 13
    • Public key: (copy from cloudflare and paste here)

Thats it! If setup fail, Google DNS will shows empty result immediately. 

2016年8月29日 星期一

修改/復原 ulimit 的 script

這個年頭 VPS 機器越來越利害,但是系統的預設設定上卻沒什麼改變,導致 cpu loading 還沒一半,系統就死掉了。以 nginx 來說,除了修改 worker_connections 、worker_processes、worker_rlimit_nofile 之外,還必需要增加系統內建的 ulimit ,預設為 1024 ,我最後是決定把 root 提升到 65536, 其它權限則改為 32768 。由於每次安裝新系統都要執行,把它包成 script 是必要的。這個 script 主要是修改 /etc/security/limits.conf 和 /etc/sysctl.conf,環境是 ubuntu 16.04:

修改 / 安裝 / install:  https://gist.github.com/girvan/a341513654ad6b1cbb7f365b9f68fa7b
回覆 / 還原 / remove: https://gist.github.com/girvan/2f70eb52fd259f6c18a062e015785bc2

我自己是用 ab 來測試 ab -n 10000 -c 500 http://....
-c 從 500 ~ 1000 來反覆測試看看極限值有沒有提升。

這個 ulimit 修改適用於靜態檔案,php 的極限值有提升,但沒這麼多,可以再做其它設定去增加 php 的連線數。php 的連線數我沒有做調整,因為還不到極限值 cpu 就滿載了,調了也沒用,我這邊是採用 nginx 的 request limit 來保護 php ,還蠻有效的。