上班上的頗煩,
所以 jeff 前幾個星期給了我一個作業,
他說他每天在 flickr 上面, 翻閱所有好友的 comments 很累, 因為必須要一個一個去看,
flickr 介面只會提供, 你在別人那邊的留言, 別人在你這邊的留言,
不會提供你朋友在別人那邊的留言, 更不用說別人在你朋友那邊的留言... (有點繞舌)
所以他想要有一個介面, 想要一次撈出所有的朋友名單, 一次就把這些 comment 從最新排到最舊, 省的花很多時間去找尋.
大概中午十一點多接到這個作業, 約下午六點前, 已經把 proto type 做給他了.
用 php + flickr api + mrss + curl 就完成.
不過第一版非常慢, 他是拉出好友名單之後, 一個一個去拉到 rss, 然後根據時間排序, 過濾掉重複的.
才顯示出來,
http connection 數量約是, (好友數量 * 2) + 2 + 1
然後一個一個排隊連線, 假設我有 25 個好友,
我的連線數量就是 25 * 2 + 2 + 1, 1 是原本的 flickr api rest, + 2 是我也要拉到我自己的.
這樣會有 53 個 connections, 每個只花一秒鐘的話, 從 request 這頁開始, 我要等 53秒以上, 頁面才會出現, 因為還要加上排序等處理.
因此第二個版本, 使用了 curl 特殊搞法, multi interface, 他可以一瞬間, 就把要開的 connections 一次開滿, 一次拉回來.
這個改法, 我自己約 25 個好友的狀況下, 從 53 秒以上, 拉低到 4 ~ 5 秒就出現結果.
但是還是有瑕疵, 因為每次, 都要真實的開那麼多 connections 出去, 可能一拉就是 500k, 但是經過過濾之後,
只有吐給使用者 30k 的資料而已.
怎麼辦呢? cache 吧. php 可以直接使用 apc, 將每次的 rss result 存個幾分鐘,
當使用者短時間內重複拉取同樣的 rss 時, 可以直接從 cache 中拉出, 不必浪費資源出去抓.
這次目前 php 版本的狀況, 也順便感謝某同事的支持, 弄了個漂亮簡單的頁面, 讓東西瞬間看起來有質感多了.
該版本的 url 是 http://www.alive.tw
2007年8月11日 星期六
2007年2月13日 星期二
php extension
荒廢了好些時候的 cTemplate php extension modify for php5, 這幾天應該會開始拿出來改.
原本就已經改了一下, 但是沒有 work, 就扔在那邊不理他...
開始重看, 大概又得重頭學一下...
原本就已經改了一下, 但是沒有 work, 就扔在那邊不理他...
開始重看, 大概又得重頭學一下...
2006年11月17日 星期五
login password + md5.
由於最近剛好幫健一搞網站, 因此小研究了一下 yahoo taiwan 的 login 部份,
比較好玩的是, yahoo taiwan login 大概有半年以上的時間, 是我負責維護的,
但是我並沒有仔細去研究一些東西, 甚至 code 都是別人搞好的, 我只負責重建環境跟擦屁股.
anyway...
yahoo login 雖然是 http, 沒有 ssl 保護, 不過你大概一輩子也沒辦法 sniffer 到真實密碼,
因為, 他 client side 就 md5 三次, 才送出去.
form 裡面有個 .challenge,
輸入密碼, submit 之後,
md5 一次, md5 兩次, 出來的 string 加上 challenge 之後, 再一次 md5.
然後把 user name 跟 md5 之後的密碼, 還有 challenge 一起 submit 出去.
3次 md5 ㄟ, challenge 也是每次不同, 你要怎樣算回原始的資料?
好東西, 就要一起偷來用, 因此我也把那段 js 偷來...
比較好玩的是, yahoo taiwan login 大概有半年以上的時間, 是我負責維護的,
但是我並沒有仔細去研究一些東西, 甚至 code 都是別人搞好的, 我只負責重建環境跟擦屁股.
anyway...
yahoo login 雖然是 http, 沒有 ssl 保護, 不過你大概一輩子也沒辦法 sniffer 到真實密碼,
因為, 他 client side 就 md5 三次, 才送出去.
form 裡面有個 .challenge,
輸入密碼, submit 之後,
md5 一次, md5 兩次, 出來的 string 加上 challenge 之後, 再一次 md5.
然後把 user name 跟 md5 之後的密碼, 還有 challenge 一起 submit 出去.
3次 md5 ㄟ, challenge 也是每次不同, 你要怎樣算回原始的資料?
好東西, 就要一起偷來用, 因此我也把那段 js 偷來...
apache + ctemplate
最近幫健一搞他們的網站, 自己決定整個用 c++ 來幹,
然後原本想用 lighttpd 來稿, 後來發現彈性真的頗差,
還是換回了 apache, 因為 db persistent pool 的原因, 就直接上了 apache22.
apache 寫純 handler 很強, 但是加上了 presentation layer, 整個就鳥了,
不過, 還好有了 google ctemplate, 兩個搞在一起, 就是完美組合.
現在整個都差不多了, pure page 大概可以上到 1900 reqs/sec,
加上簡單的 sql query, 還是可以逼近 1000 reqs/sec.
今天也把 devel/json-c 搞起來玩, 看起來也不錯
然後原本想用 lighttpd 來稿, 後來發現彈性真的頗差,
還是換回了 apache, 因為 db persistent pool 的原因, 就直接上了 apache22.
apache 寫純 handler 很強, 但是加上了 presentation layer, 整個就鳥了,
不過, 還好有了 google ctemplate, 兩個搞在一起, 就是完美組合.
現在整個都差不多了, pure page 大概可以上到 1900 reqs/sec,
加上簡單的 sql query, 還是可以逼近 1000 reqs/sec.
今天也把 devel/json-c 搞起來玩, 看起來也不錯
2006年10月22日 星期日
apache20 to lighttpd
昨晚把 apache20 改用 lighttpd,
wp 還是有幾個地方要改一下, 有參考了 dk 的 設定
看起來直接用 404 handler 在我的狀況是不太行的.
有空來學學 lighttpd module 怎樣寫好了.
不過我還是覺得 apache module 比較強大...
wp 還是有幾個地方要改一下, 有參考了 dk 的 設定
看起來直接用 404 handler 在我的狀況是不太行的.
有空來學學 lighttpd module 怎樣寫好了.
不過我還是覺得 apache module 比較強大...
訂閱:
文章 (Atom)