事先說明:我是 Pixnet 的技術顧問,在這篇文章裡提到的這項服務與 Pixnet 以及 Pixnet 競爭對手有關。
前陣子看到「玩WARM人脈搜尋網 竟抓到劈腿男」這篇文章後,我第一個想法是「這個東西也能當研究?」,如果連這種幹壞事的事情都要教授指導才能研究的話… (後面三千字省略)
我在思考了一下整個架構後,似乎沒有技術上的問題,至於 Similiarity (好友相似度) 的部份,在 IRC 上跟 lwhsu 討論過後也已經知道方向在哪裡,就跳下去寫,看看要寫多久。Social Network Search in Taiwan 這個網站就是這樣的產物。
目前只做了無名小站的部份 (先跑一陣子看看),未來希望能再加上其他站台。另外有打算直接開放 API (預定是 JSON 與 SOAP) 以及 feed (應該還是會用 RSS 2.0)。
以下補充一些題外話。
以我個人的習慣,系統當然還是 FreeBSD + Apache (不是 lighttpd) + MySQL + PHP 組成的 (FAMP 架構),整個 code 都進 Subversion,但是有做一些特殊的設定 (post-commit hook),使得我 commit 進去的時候就會自動更新。這個部份可以參考 Wiki 上的範例:Subversion。
MySQL 的部份是跑 5.1。在考慮之後 reading (query) 的量會比較大,所以採用 MyISAM 作為底層。目前這邊沒什麼技術可言,把 my-huge.cnf 裡與 replication 有關項目關閉,放到 /usr/local/etc/my.cnf 就可以了。
Crawler 當然還是用 Perl 寫 (畢竟用 Perl 分析網頁已經寫得很順手了),底層是透過 ParallelUserAgent 抓,不然在國外連線速度太慢。另外因為有 Y! Apache 999 的關係,有故意用了一些方法避開,但這樣也造成更新會比較慢,看目前首頁上的資訊應該也看得出來 (「已統計人數」指的是有 ID 但還沒去抓取這個帳號的好友資料,「已經取得資料」則是指抓取過的)。程式一開始是從 wretch 開始跑,看起來可以長很大…
最後是實際寫程式的時候發現 PHP 上最好用的 “C” (MVC 裡的 “Controller”) 是交給 Apache 用 mod_rewrite 做… (真無奈)
另外套了一些 jQuery 與 jQuery UI 的東西上去玩,雖然文件寫的不是很清楚 (我去翻了程式碼才知道要怎麼用),但整體上來說還是相當不錯呢… 另外 YUI 的 CSS 也試著用了一些,不過之後可能會用其他家的吧 XD

Pingback: Google宣佈OpenSocial API,台灣也自己來做繁體中文版吧! - Cyberpunk網際叛客