2018年4月25日 星期三

free gif loader on cdnjs

https://cdnjs.cloudflare.com/ajax/libs/jquery-mobile/1.4.5/images/ajax-loader.gif
https://cdnjs.cloudflare.com/ajax/libs/yui/2.9.0/assets/skins/sam/ajax-loader.gif

2018年2月10日 星期六

new Date().getTime()

忘記是哪邊看到的,new Date().getTime() 其實可以改用 new Date() * 1
自己也實際使用了一陣子。
寫這一則時,順便去 stackoverflow 看一下,得到更短的 +new Date
然後看 一下 Google GA 的 js ,是寫 (new Date).getTime()

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 after restored from linode backup

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
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