在瀏覽器內偵測連線是否正常...

在「Offline automatically displays online/offline indicators to your users」看到 Offline 這個軟體,可以偵測網路狀態,做出像 Gmail 在離線時重連的特效...

在偵測到斷線時:

然後是重連的效果:

偵測到回復時的效果:

支援 IE8+ 與其他瀏覽器...

OCSP 是如何影響 HTTPS 的效率...

Netcraft 從 2012 年 11 月開始偵測 OCSP 的 availability,然後發現各家 OCSP 的穩定性都不太好:「Certificate revocation and the performance of OCSP」。

OCSP 是 Online Certificate Status Protocol 的縮寫,當 HTTPS 連線建立中,client 可以透過 OCSP 詢問這份 certificate 是否有效。這是 PKI 架構下的事後補救機制,因為已經發出去的簽名是無法被收回的,只好靠連線時再查詢。

另外一個機制比較舊,叫 CRL (Certificate Revocation List),則是屬於清單類的機制,更新速度比 OCSP 慢。

目前是以 OCSP 為主,而舊的平台 (就是 XP 上的 IE) 則只支援 CRL。

可以看到 OCSP 檢查打開後對於速度的影響,有的影響很明顯,有的還好。而原文下面很多張 uptime 圖表也可以看出來各家 OCSP 的穩定性其實不怎樣,有些是直接上 Akamai 解決,有些是上 CloudFlare 解決 (然後遇到幾次 CloudFlare 爆炸就跟著炸 XD)

目前瀏覽器大多都是 soft-fail,也就是查不到就當作 pass。照目前的穩定性要推動 hard-fail (查不到就 break) 應該是頗有難度...

對於 HTTPS 速度很在意的人可以看一下內文的說明,可以挑 OCSP 速度比較快的幾家簽,對速度會有幫助...

寫 Online Judge 的題目...

早上又回頭跑去寫 UVa Online Judge 的題目,這應該是參加高中生與大學生在寫的?好久沒寫了...

這東西除了訓練資料結構與演算法外,另外還可以訓練「鑽牛角尖讀 spec」的能力:在題目裡沒保證的,就一定會炸給你看...

舉例來說,第一題的「100 - The 3n + 1 problem」上面只說要找 i 與 j 之間的範圍的最大值。於是很多人就寫了:

for (t = i; t <= j; t++) { ... }

文件上有提到保證 i <= j 嗎?沒有。

多練習這些題目後,除了資料結構與演算法外,對於實際工作的文件就會很自然而然避免過度解讀。