2009年2月20日 星期五

免搬家,部落格同步發文之設計

還記得大學畢業專題的精髓:「以不改變使用者習慣,創造出好用的服務。」


一年前算是有從旁協助開發一些部落格同步的實作,目標讓使用者可以只在一端登入,並且盡情地發表文章至各地去!突然想起 Facebook 這幾天的新聞:Facebook修改使用條款遭炮轟,不免想到,這些都跟 Web 2.0 的架構有極大關係,並且無止盡地想要吃掉使用者的權益。以部落格來說,最佳的解法就是自己架站,但這個對不熟悉廣大用戶,的確有很大的困難的,所幸的是還有 NUWeb 開發團隊!一種極度追求民有民治民享的實現方式,這種作法即為 NUWeb 願景,它一種以自己的電腦架站並以 Web 為主體呈現的整合性系統軟體,把自己的權利擺在第一。


接著,關於部落格的同步機制,我覺得可以分成兩種:



  1. 建立一個新介面或系統,在該系統上進行文章編輯,並且發表文章的同時,進行同步動作至各家 Blog Service

  2. 照舊在習慣的 Blog Service 上進行文章編輯與發表,接著固定由第三方對該 Blog Service 進行抽取資訊的行為,接著同步發表至其他家 Blog Service


第一種方式,算是目前 NUWeb 的子服務 NUBlog 所提供的功能。這樣的實作並不困難,困難的是不能建立在 Server 的角色!我記得 Pixnet 以前也有提供同步至無名小站的方式,雖然我不確定還有沒有這項功能,但在 Server 的角度上無疑會造成不小負擔,同時在服務相近的競爭下也會相對應的處理,如被 ban 掉 IP 等,另外對使用者而言,存在會有密碼被竊取的可能性。因此,NUWeb 建立在 Client 端的角色,正是最佳發揮的場所!


第二種方式,便是這次我實作小玩的。由於這一年多都在接觸網路類的服務與開發,幾天前就用 PHP 寫了個簡單 Crawler ,大概不用 50 行的小程式,頂多只是架構上的斤斤計較。透過這個 Crawler 就可以把某家 Blog Service 上的文章標題、文章時間、文章內容都發表分析出來,緊接著,就是在至各家 Blog Service 啦。這種方式,比較接近大專做專題的宗旨:「以不改變使用者習慣,創造出好用的服務。」,於是,我又嘗試整合了!


第二種的前半步,說穿了就是目前許多家 Blog Service 在做的事:「搬家服務」。撈資料總是最簡單而易做的,各家搬家服務就只要負責處理撈資料的動作,接著就只是在塞進自家的資料料庫。至於第二種後半步發表至各家 Blog Service ,在台灣目前的處境,少數家有支援開放的服務,如制式的XMLRPC設計等,由於台灣的 Web 2.0 的設計都是盡可能地讓使用者待在自家網站上,因此,幾乎不提供這種不用上官網就能享受的服務,以至於後半部要實作的,就是模擬使用者登入某家服務,並且再模擬發表文章的作業。


兩種架構,漸漸地偏向於 Client 端,雖然 Server 端也能做到,但 Server 相較之下比 Client 多不少限制。然而,有一項困難點是永遠必須要被克服的,那就是客制化的過程,程式模仿!模擬使用者登入的流程、發表文章流程,等等的,這其實是最大的困難。至於第一和第二兩者間的最大差異?我覺得就做專題的那個觀點吧!一個是要改變使用者的習慣,另一種則是不用。前者並不是不好,只是人是習慣性動物嘛,像我自己面對新的服務時,有時還滿懶得去嘗試的,甚至腦裡就僅存著一個念頭「簡單夠用」,或許這就是為啥連我現在寢室用的桌機還是 AMD 1.2 GHz CPU & DDR 400 512 MB 的電腦!只是當服務想要提供的能量越來越大時,勢必就得進入改變習慣的步道啦。


至於如何製作模擬使用者用瀏覽器逛網頁的行為,這部分就令人頭痛了,沒有最佳解,只能硬幹了!有興趣可以參考這篇筆記:[PHP] 客製化部落格同步發文實作筆記 - 模擬瀏覽器行為。理論上,我實在不建議這樣的實作,耗時又費力,並且當對方網站流程一更動後,程式就作廢,又得重刻流程。只是學會的好處是?可以用的地方就很廣了,主要是短期的,像是搶訂票或是限量的服務等等邪惡又正當的行為 XD 這些就是模擬瀏覽器的程式魅力吧!


基於一些理由,先不分享程式,有興趣的,可以在未來透過 NUWeb 就行啦!


沒有留言:

張貼留言