2018年11月21日 星期三

Chrome 70 removed "Build" in user agent string


Chrome 70 removed the "Build" part:
Chrome 69: ...(Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit...
Chrome 70: ...(Linux; Android 4.2.1; en-us; Nexus 5) AppleWebKit...

But it doesn't change in webview:
...(Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D; wv) AppleWebKit...

2018年11月20日 星期二

使用 cdnjs 上的 1x1 gif

在使用 lazyload image 常會空白的 gif 

這邊找了幾個 43 bytes 的版本:

https://cdnjs.cloudflare.com/ajax/libs/timelinejs/2.36.0/css/blank.gif
https://cdnjs.cloudflare.com/ajax/libs/probtn/1.0.1/stylesheets/blank.gif
https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.8.5/skins/lightgray/img/trans.gif

那為什麼不用下列方法?
留白法:<img data-src="http://...." />
data uri: <img data-src ="http://...." src="data:image/gif;base64,....." />

因為看過 access log 之後發現
如果你的頁面是 example.com/hello/
留白法會造成主頁面再多一次 request 到 /hello/
data uri 會造成相對路徑再多一次 request 到 /hello/data:image/gif;base64,...

誰發的 request?主要是一些爬蟲,和少數的舊瀏覽器

2018年11月5日 星期一

每月 200美金的 cloudflare business 又開始走台灣節點了!

台灣訪客 造訪 cloudflare pro 的網站

  • 72% KIX
  • 28% TPE

台灣訪客 造訪 cloudflare business 的網站

  • 84% TPE
  • 16% KIX


資料來源是從本站的 log 挖出來的
不知道是 cloudflare 和 hinet 的心結解開了,還是其它考量就不清楚了。

2018年6月28日 星期四

SSL 憑證:新申請的或快到期的憑證會讓使用者連不上網站

使用者的電腦的時間不一定正確,自己的經驗是,儘管是用正版 windows ,時間自動校正都常常壞掉。當使用者電腦的日期是 6/1 ,但是您網站的 ssl 憑證是 6/2 ,瀏覽器就會擋下來,說憑證不安全什麼的。簡言之,您可能 6/1 申請的憑證,6/3 才能放上網站上供使用者使用。本站曾對使用者電腦的時間做過簡單的統計:

  • 電腦時間在八小時以前:2.7%,新申請的憑證在八小時內就放上去,有 2.7% 的使用者會連不上。
  • 電腦時間在十天以後:0.6%,憑證在快到期前十天有 0.6% 的使用者無法使用
  • 電腦時間在一天以前:1.2%
  • 電腦時間在一天以前 + 電腦時間在三十天以後:1.4%
  • 電腦時間在兩天以前 + 電腦時間在三十天以後:1.0%
  • 電腦時間在三天以前 + 電腦時間在三十天以後:0.9%
  • 電腦時間在五天以前 + 電腦時間在三十天以後:0.7%
以上是本站的使用者統計,主要非台灣的使用者,桌機;每個網站的實際情況不一樣。
我們自己是申請完五天後就才放上線使用,預計只影響 0.7% 的使用者。

2018年5月29日 星期二

cloudflare argo 速度測試

先說結論,真的快!懶得看請按讚!



2018年5月24日 星期四

測量 ssh session 的 latency

目前是使用本機的 virtualbox 做為開發機,而常在思考是否要改用 google vm(台灣彰化機房) 或 linode (日本機房) 做為開發機。之前都是打開 vim 看看打字的體感速度慢多少,但其實沒有個數字都不太準確。今天在 serverfault 找到了答案

在這裡以 MAC 為例,windows 的朋友可能要立用 docker 或 virtualbox 來建立 linux 的環境來測量。

先設定要連線的主機
HOST=root@remote-address

再下指令進行測試

mkfifo /tmp/up /tmp/down
ssh $HOST -N -M -S /tmp/control &
ssh $HOST -S /tmp/control cat < /tmp/up > /tmp/down &
python -m timeit -s 'import os' \
    'os.write(3, "z"); z=os.read(4, 1); assert z=="z", "got %s" % z' \
    3>/tmp/up 4</tmp/down
rm -f /tmp/up /tmp/down
kill $(jobs -p)

台北 hinet 測試結果:
  • Localhost VirtualBox: 0.508ms
  • Linode Tokyo (JP): 45ms
  • Linode Fremont (US): 146ms
  • Linode Dallas (US): 200ms
  • Google VM (TW): 21ms
  • Linode Singapore (SG): 67ms

2018年5月18日 星期五

GDPR + adsense

對於網站來說,GDPR 的實際影響,幾乎只有 adsense。 這邊依 google 官方說明,歸類為三個等級:
1. 在歐盟停用個人化廣告:Google 說不用改廣告代碼,在管理介面點一點設定即可停用個人化廣告,在歐盟區只顯示非個人化廣告。[1]
2. 網站詢問使用者是否同意使用 cookie
3. 使用者沒同意前不能有 adsense:因為歐盟要求使用者同意前不能使用 cookie ,可是 google adsense 一定要使用 cookie ,結論就是同意後才能顯示 adsense 廣告。所以 google 提供了一個寫程式的方法,可以先停止廣告,讓使用者同意之後,再顯示廣告。[2]

依 1 來說,我在後台點一點就好,但真的這麼簡單嗎?
由於 adsense 一定要用 cookie ,所以依規定一定要到達 3
依 3 的條件來說,1 根本沒意義
依規定網站到要做到 3 ,使用者同意才能顯示 adsense !
3 的 google 方法蠻巧妙的:
 - 不會改程式的,一定做不到!
 - 若網站端真的有能力改程式,損失也非常大。
 - 其實真的要符合應該是 google 那邊在歐盟預設停用廣告,而會改程式的網站,再用程式的方法來啟用 adsense 才對。但絕對不可能,google 股價會跌一半吧!


不過基本上,是不用怕被歐盟的人說違反 GDPR 之類的,
怕的是將來 adsense 可能為了符合法規,會主動檢查網站否有符合規範。
其實在 2015 年 adsense 政策中心就要求要跳出「是否同意使用 cookie」[3]
而且也有人被發信警告,不遵守會被停權。[4]
所以 GDPR 之後,會不會更嚴格就不知道了,還有 Google 會要求網站要達到上述 1,2,3 哪一個程度呢?

個人建議是先做到 1 + 2 ,3 太可怕了,再觀察。
 (此等建議僅供參考,被罰恕不負責)

[1] https://support.google.com/adsense/answer/7670013
[2] https://support.google.com/adsense/answer/7670312
[3] https://adsense.googleblog.com/2015/07/introducing-new-user-consent-policy.html
[4] https://www.webmasterworld.com/google_adsense/4833628.htm

2018年4月25日 星期三

free "loading" gif 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
https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.8.5/skins/lightgray/img/loader.gif


https://cdnjs.cloudflare.com/ajax/libs/timelinejs/2.36.0/css/blank.gif
https://cdnjs.cloudflare.com/ajax/libs/timelinejs/2.36.0/css/loading@2x.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