2014年5月23日 星期五

使用 lnyx 抽取 Web Page 所有的 Links

沒想到 lynx 真好用 XD 比用 Wget 好的地方是不用去重組一些 relative link,那缺點就會是要避開同一個 page 的 anchor (<a href="#me></a>) 用法,但是...有些 Javascript 的或是其他 MVC 架構的網站,仍會用 anchor 來取資料。

$ lynx -dump -listonly https://tw.yahoo.com | grep -o '^\s\{1,\}[0-9]\{1,\}..*$' | sed -e 's/^[[:space:]]\{1,\}[0-9]\{1,\}\.[[:space:]]//g' | uniq

2014年5月22日 星期四

使用 Wget 抽取 Web Page 所有的 Links (關鍵字 href="")

簡易用 Wget 達成:

$ wget -q --no-check-certificate -O - https://tw.yahoo.com | grep -o 'href=['"'"'"][^"'"'"'#]*['"'"'"]' | sed -e 's/^href=["'"'"']//' -e 's/["'"'"']$//' | grep -v "javascript:" | uniq 註:wget 有 --convert-links 可用

2014年5月19日 星期一

[Linux] 透過 AWK 和 HOSTNAME 資訊執行 Sleep 指令 @ Ubuntu 14.04

最近開始埋一些 crontab 任務到各台機器,但是,有些指令是對 DB 動作的,而通常擺在 crontab 的 DB 指令是為了建出一些 snapshot 且多為 slow query 的,那如果多台機器全部都同時發送 DB query 時,反而又累到了 DB 系統。

這時候想到的方式就是搭配 sleep 的方式,並透過每檯機器的資訊避開一同發送要求,用法就想到 hostname 了:

$ awk '{s=0;for(i=1;i<=length($0);i++){c=sprintf("%c",substr($0,i,1));s+=c ;}; system( "sleep " s); }' /etc/hostname 

最後,在 crontab 上,就可以在待執行指令前面,先安插上述的 script 來跑,如:
  # m h dom mon dow command
*/10 * * * * sh /path/sleep.sh ; /path/job_exec

2014年5月17日 星期六

微型創業(Micro Startup? Personal Startup?) 費用規劃

中午吃飯時,想起前幾天跟學弟閒聊 startup 的趣事,有些人 startup 是為了工作機會,有些人是為了錢,有些人是為了興趣,不論是哪種想法,都是人生的一種規劃與執行。

這幾個月摸了 AWS 、Linode 和 Aliyun 後,深深覺得資金方面的規劃可以透過這些 VPS 服務來"限制"管理,反而人力、人才、成果進度才是最不穩定且需要花心力的地方 :P

就先來聊聊 Micro Startup 的可能的固定花費:
第一年一整年的費用約 (99+25+5) + (20+25*2)*12 + (12+10) = 991 美金/年,也等於一個月約 83 美金(做起來後再煩惱隔年的花費吧)。其它未計算的包含開發用的設備(如 OSX 系列的裝置等)

以 1:30 來算,算起來一個月約 2500 台幣的花費,其實負擔並不會太重 :)

所以,最重的花費其實是"人力時間"與"成果時間" Orz

2014年5月16日 星期五

[PHP] 簡易的 Web Service Unit Test: HTML validator、JSON Format @ Ubuntu 14.04

把 web service 移到 AWS 上後,想到時時刻刻都人工測試感到很 Orz 於是想了一些簡易 Unit Test 方式:
  • 檢驗網頁是否可讀取正常 (strlen)
  • 檢驗網頁 HTML 格式 (tidy 或 xmllint)
  • 檢驗網頁上的 link 個數 (preg_match_all)
  • 檢驗 JSON 格式 (json_decode && json_last_error)
剩下的就...再看看 XD

其他筆記:changyy / web-service-unit-test / phpunit / web-service-unit-test.php