無意間發現了一個 ping service:UptimeRobot,操作、設定都很簡單,介面的視覺設計也很棒,主機況狀一目了然。
UptimeRobot 可以使用下列方法偵測主機狀況:
- ping
- HTTP/HTTPS
- port
- keyword
軟體開發、伺服器和生活瑣事
無意間發現了一個 ping service:UptimeRobot,操作、設定都很簡單,介面的視覺設計也很棒,主機況狀一目了然。
UptimeRobot 可以使用下列方法偵測主機狀況:
測試 HTML parser 時,某段 HTML 一直被標記有誤,花了不少時間才找到原因。
在 W3 HTML spec 中有註明,「&」符號剛好用來作為 HTML entity 的起始字元,遇到該字元需要 escape。
舉例來說,有個超連結帶有參數:
<a href="search.php?val=keyword&category=3">search</a>
URL 中的「&」符號應該改為「&」:
<a href="search.php?val=keyword&category=3">search</a>
現今瀏覽器都很聰明,會自動辨識並修正人為錯誤,但既然有規範,還是注意一下。
為了找到 W3 HTML spec 中與這個問題有關的章節,實在吃了不少苦頭。後來發現 Firefox addon – Html Validator 可以偵測錯誤,並告知可以參考的 W3 spec 章節:
在無限期鬼打牆以後,才發現 HTTP Referer 不一定真的代表參考位址。
假設有三個頁面:
一般情況下 process.php 的 referer 會是 form.html、showError.php 的 referer 會是 process.php,但若 proccess.php 跳轉頁面是這樣寫:
if( ERROR ){
header('Location: showError.php');
}
執行後 HTTP server 的回應會是 HTTP 302 而非 HTTP 200,瀏覽器不會將 302 視為正常的瀏覽行為,所以 proccess.php 不會被列入正式瀏覽記錄,當重新導向到 showError.php 時,Refer 仍然會是最後一個正式的瀏覽記錄,也就是 form.html。
若希望讓 showError.php 可以正確知道是哪一頁連過來的,就得靠其他方法了。
在這裡建議不要使用 HTTP Referer 來做判斷的依據。現有瀏覽器開發工具、外掛都可以讓人任意修改 Referer,也聽說有些防毒軟體會固定將 Referer 從 HTTP request 中刪除,再者,各家瀏覽器送 Referer 的情況也不同 (IE MUST DIE),用 Referer 判斷流程等方法會遇到不少例外情況要處理,別讓自己那麼累。
Reference:
php – HTTP_REFERRER and Location redirect – Stack Overflow
有項工作需要將 BTSync 上的資料同步上 AWS S3,並做靜態網頁使用。原本打算用來將 S3 掛載為虛擬磁碟的 s3ql 來用,但 s3ql 寫入的是 block data 而非 file,檔案同步上去要當作 static website 來用不太可能。
後來發現 AWS command line interface 的 s3 有個功能「sync」,會自動偵測要同步的項目。於是可以寫成:
$ aws s3 sync btsync/ s3://target-bucket
以上已可以將有異動的資料上傳到 AWS S3 上,但若 BTSync 若有檔案刪除,S3 上的資料仍會保留。若要刪除的動作也在 S3 重複一次,則要加上「–delete」參數:
$ aws s3 sync btsync/ s3://target-bucket --delete
還差一個步驟。要做 static web hosting,檔案必須讓所有人可以讀取,所以從網頁上操作的話,需要手動「Make Public」。
而 CLI 則是使用 –grants 幫檔案加上權限。參考 AWS ACL 設定,要讓所有人均可讀取,要設定成:
--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
如此一來,上傳的檔案會自動設定為公開。
完整的 sync 指令如下:
aws s3 sync btsync/ s3://target-bucket --delete --exclude ".Sync*" --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
最後定 crontab 自動執行,大功告成。
查資料時,無意間發現 Google 有一系列的演講,整理出如何撰寫乾淨、好維護、可以測試的程式碼。
影片有很多段,已查不到播放順序,請各位自己挑選了看。