2009年1月24日 星期六

部落格同步發文程式?blog synchronization ?

前陣子以 PHP 實作了發文至 Yahoo, Wretch, Yam, Xuite 等部落格的程式,說困難也不困難,但卻是挺繁雜的。最近我也開始思考同步發文的意義與其重要性,並且在這之前我也在各處申請屬於自己 Blog 的服務,自己卻遲遲沒有進行同步發文的動作。


原先我都是手動將文章轉成 wordpress.com 能吃的格式,登入餵進,在那邊保持一份備份。今天在整理 Pixnet 這邊的 Blog 時,意外發現在 Google 某關鍵 keyword 時,出現的不是 Pixnet 這邊的文章,反而是 wordpress.com 那裡的,當下有些好奇,仔細一看,原來 wordpress.com 是把文章標題弄成文章 link 中的路徑之一,這將使得在 Google 結果的排名躍居於我在 Pixnet 主站前面,甚至連主站都看不到,於是我似乎又有種感觸,到底這樣的情境是不是想要的?


主站看不到的原因,有一種可能,那就是 Google 在 index 時將重複內容的網頁給去掉了,這似乎不是我所期待的事,畢竟有個站為主,就希望搜尋結果是在主站嘛。這使得我想更細微地考慮同步發文的意義。前陣子看學長們的討論,論及 Blog 服務時,當下就一個觀點:使用者只需要一個 Blog 服務。沒理由去維護多個 Blog 服務 ,且主站就是會花比較多心力,並且希望獲得大家的光臨。那其他的 Blog 服務的意義呢?


除此之外,在老板領導的方向上,我非常認同追求民有民治民享的概念,因此追求將資料分散在各處,降低集中化的現象。真正的選擇,大概只能自行架站吧,但目前得知週遭架站的,十個有九個都還是吃別人的資源罷了,我覺得不是很好,大概是這種想法,大四時我就拋棄擺台機器的念頭。在 Web 2.0 的架構,不少條款都說使用者發佈到網站上得資料,最終所有權是網站公司的,不然網站公司從透過大夥分享的資料所賺取的營收,怎不以現金,公平回饋到使用者身上呢。而 Web 2.0 其實就是反向用這種方式掙錢。以無名的用戶來說,今年六月左右,約 400 萬的用戶中,也只有不到 5% 的使用者有購買 VIP 服務,剩下的營收方式?當然就是廣告,那廣告的來源?抽絲剝繭,又回到人的身上罷了。如果不斷地龜毛起來,剩下的就只剩一嘴毛啦,哈。總之,這類的平衡現象就是世界的亂度吧!


現在觀來,同步發文有其缺點以及維護的成本,成本就是必須主動地對各家封閉性的網站客制化。站在一般使用者的角度上,只用來無痛搬家吧!至於我挑選 Pixnet 當落角處,除了校友免費有 1GB 的空間外,最重要的則是 Pixnet 很用心且有技術地進步,以及提供便利的備份方式,格式是公開且廣泛使用的,不像某家只提供一個好看的樣子,但格式根本不通用,連自家系統也不吃。


2009年1月21日 星期三

用希望戰勝恐懼‧想像力比知識更重要

用希望戰勝恐懼,這是歐巴馬的就職演講中的一段話,我覺得頗 Nice 的。面對未來的彈性,希望很多,但勇氣仍不足。紀錄一下,願自己能付諸行動加以踏實。


這幾天,由於不用處理 DS 助教的工作,輕鬆許多,上週返家後便著手整理東西,包括使用部分消費券跟電腦軟硬體的更新。這幾天偶爾看看電視,收獲也不少,像某台李大師的談話節目,有提到”想像力比知識更重要”,我有所感觸也漸漸明瞭。昨晚原先打算在實驗室的板上發表一篇一年半的心得,寫了半小時後,草草地作罷不存檔。畢竟此刻的我,並沒有什麼十足的成果可以說嘴,說要提醒學弟妹?我想,現在已不需要了。


記得大五那年認識大一學弟,當時分享了讀大學的心情,成績。當時覺得,有些人就是愛耍小聰明地把成績顧好,像是修好過的課,一堆實作的作業不做或抄襲,最後靠著考古題拉成績。當我知道時,我已經大三末了,因此,我提醒了那位大一學弟,如果你沒有對其他事感到特別興趣,那顧好成績,至少不會失足。如今,他的確飛的高遠,成績不錯,但這真的稱得上是精彩的生活嗎?想起了這些後,我覺得生活沒有最佳解,如同面對著未來,沒有誰說的話一定要聽、一定要走的,畢竟,最終走那人生路的,還是親身體驗的自己,想著想著,少點話,珍惜時間,我便倒頭就睡。


愛因斯坦曾說過:「想像力比知識更重要。」,在實驗室待了一年半,開始能夠有所體會。記得半年前,我仍追逐的高深的程式技術或是新穎的演算法,想要用實作來驗證自己的能力,回想起過去的生活,有些感嘆,總覺得自己沒有學到真的想要的東西,不如預期紮實地學到新東西,倒是不斷地熟練自己的已知。時間拉回現在,聽李大師講了這句話,我開始細細咀嚼。沒錯,這句話挺有意義的。


在實驗室領導人的帶領下,我大概碩一下時,就有類似的感觸。談論 Project 方向時,不再是計較著技術,反而更細細地品嘗著創意。並不是技術不重要,只是相對之下,創意更顯的無價。因此,我開始慢慢地少發言,因為,技術絕對不是最重要的課題。儘管如此,我仍擺脫不了技術的束縛,總覺得別人看待自己時,不是用學校,就是用實作東西,於是我花了不少心力去實作,現在看起來就只是胡亂地使用時間罷了。


想像力的重要,只有親自走過的人才能夠加地體會。未來的半年,希望我能夠珍惜時間來規劃與使用,不再是追逐的技巧或是知識。一切所有的價值,並不是別人的眼光,而是自己生命的足跡。


 


主機板 - 水銀電池 CR2032 型號

記一下,不然時間一過又忘了。我家恰恰好目前只剩 GIGABYTE 技嘉的板子,剛剛順便把這些板子看了一下,確定都是用 CR2032 的水銀電池。


每當開機時出現 "CMOS checksum error - Defaults loaded" 時,有八成的原因是主機板上的水銀電池沒電了!這時就看各家主機板 BIOS 的訊息,我家的通常可以按 F1 跳過啦。至於影響的層面呢?就是時間不正確。這個問題看起來沒啥的,卻足以讓 MSN 無法正常登入。記得某年老姐也曾問過我 MSN 的原因,主因就真的只是時間不正確。


說到更新時間的方式,傳統總是點選出設定時間的介面,慢慢地設定,但我一直忘了 Unix 上的 ntpd 和 ntp 或 ntpdate 的東西,這些是透過網路自動執行時間校正的程式,而在 Windows 上頭,也有類似的服務喔,可以到 時間與頻率國家標準實驗室 ,下載透過網路校正時間的程式 - 網路校時軟體,只需點選兩下,便自動幫你更新與設定好時間,十分方便。


在家翻了會,有一堆 CR2016 就是沒有 CR2032 這型!至於 CR2016 呢?一樣也是 3V 的,只是電池厚度少了一半,我記得某年還曾用兩顆 CR2016 硬是給它弄上去,現在想起來,會不會是 3V + 3V = 6V 的情況呢?!真是太 high 了。這次,就比較謹慎地先擺在一旁,隔天就到附近的店商詢問,因為沒有賣,就先買了一顆 CR2025 ,最後嘗試的結果?還是太薄了一點,可以很清楚地感覺還是不夠厚。雖然因為主機站姿的關係,讓電池能夠巧妙地貼靠著,但我覺得仍不是正解。


以後有機會出門,大概會來買一組 CR2032 電池備用吧!另外,在 Yahoo 或 PCHome 的線上購物也很容易看到其蹤跡,大部分是搭配 5 或 10 個的賣法,我這邊單買一顆 35 元,打個八折 28 元還是算貴,但省了運費。整體上,不需要那麼多顆水銀電池,平均一張主機板也才兩三年以上才會需要換電池的。多買多備用?我覺得還是買剛剛好就好了。


2009年1月19日 星期一

宅宅 之 3C Shopping

前腳剛踏進領券處,後腳便開始思索該如何花費。得這次政府發放的消費券,除了經濟層面的影響外,在國人心理之健康度上,相信也會有一定程度的好轉,畢竟,2008年中後期的經濟海嘯,真是太猛了。


說了那麼多,對於消費券的使用,家人也一制性地認為,大概就 3C 產品吧!吃吃喝喝與穿穿,大概不缺也不嘴饞。買一些用的較久的產品吧!


上次使用過 Yahoo 和 PCHome 的線上購物後,這次算是個新嘗試,選擇了”光華原價屋線上估價系統”並且搭配線上購物的方式,當然就是宅配囉。


這次目標只有四種東西:



  • 液晶螢幕

  • 電視盒

  • Ram 2G

  • HD 500GB


前兩個東西,實在是老家的電視已經差不多該退休了,用了十幾年的 14 吋電視,兩年前喇叭也壞得差不多,當時我還透過一台古董卡帶式的錄放影機,讓他將第四台的聲音給抽出至小喇叭來播放,並且還得搭配一台選台器才能好好地看電視!簡單地對應:



  • 古董 14 吋無聲電視 = 一台 LCD 或 CRT

  • 古董錄放影機 + 古董顯台器 = 電視盒


真是辛苦了那些古董,若不是電視已經開始變色了,或許還會再撐個幾年吧!至於硬碟跟記憶體,只能算是趁勢趕緊購買,我要的東西又快退流行了,再不買的話,不是變貴就是買不到啦!


在電視上看到燦坤 4.5 億的營收!真是嚇死我了。其實燦坤離我家不到一分鐘機車車程時間,但上次我看了後,我要的東西都沒特價,因此就完全不考慮,至於 Yahoo 和 PCHome 嘛,當然也比不過原價屋囉!光我要買的 LCD 就差了三百元,光這個差價就足以讓我使用原價屋貨到付款的服務了。總之,這四樣在原價屋購得的價錢,再加上運費和貨到付款的錢,總額還是比在 Yahoo 、 PCHome 或燦坤來的便宜啦。看到新聞說 3C 賣場水洩不通,若熟悉 3C 產品和型號等等的,可以嘗試線上購物囉!如要使用消費券,需留意對方買賣方式,若又要用消費券購物紀錄來進行抽獎,可得留意是否有發票以及發票上是否蓋有使用消費券的紀錄囉!


呼呼,家裡剩下的消費券,大概就買些民生用品吧!該收收心了,以免迷上線上購物啦。


2009年1月16日 星期五

Bloom filter - 使用 Hash 來判斷元素是否存在於一個集合中

昨天凌晨,老板寄信說要期末聚餐!昨天也是個繁忙的一天,更是放寒假前的序曲。下午除了例行的助教工作外,還蹦出個小插曲,那就是報告者未到的情況!這個情況我還是第一次碰到,所幸最後都有完善的處理啦,過了這堂後,緊接著是資料結構的期末考,取而代之的,我不用監考而是寫報告處理上堂課的狀況啦。晚兒可直接在餐桌上進行了簡短的 Meeting 呢!順道提到了解決 crawler 問題的技術!


在搜尋廣大的網際網路資料時,很容易會碰到一個問題:到底這個網址抓過沒?於是,老師在餐桌上提起了一些實作,我坐在邊角,沒有聽得很清楚,返家後隨意地拼湊,再來 google 一下,發現這東西其實就是很早以前就存在的解法!



我印象中老師提及的用法跟這不太一樣,後來再亂逛一下,發現越來越多變種的應用,哈。無論怎樣,我就記下我依稀記得的情況啦。



  1. 首先,如果你想要的結果是 100 萬個不重複的元素,那實作上可以準備八個 400 萬個 bit 當作 Hash Space 以及八個不一樣的 Hash Function。那八個 400 萬個 bit 初始為 0 ,代表尚未使用。

  2. 接著,每當要將某個元素加入的已挑選的名單中,那就分別透過八個 Hash Function 進行運算,每個 hash function 運算出的結果是 0 ~ 3,999,999 的數值,這個數值代表的是該坐落於第幾個位置,並且依序在八個 hash space 上標記上1 。

  3. 如果在加入的過程中,發現有個 hash function 中所算出的位置,其所在的值非 1 ,那就代表目前這個元素是新成員!而當八個 hash function 算出的位置上,各個皆為 1 ,那就把這個待加入的元素當成已被挑選過了!


整體上,老師提的就這樣而已。細微的分析,那就是一百萬個元素,每個元素只用到 1 bit x 8 = 1 byte 空間來紀錄是否用過;而關於 hash collision 的部分,每個 Hash Space 為四百萬的空間,所以對每個 Hash Function 發生 collision 的機率就是 1/4 啦,然而,連八個 hash functions 都發生 collision 的機率,那就是 (1/4)^8 = 0.0000152587890625!也就是說,機率已被降得很低囉!大約處理一百萬個元素,約 15 個元素可能會被誤判。關於其機率的部分,請參考 Wiki 上的 Probability of false positives ,近似於 ( 1/2 )^(hash function 個數)


對於發生 collision(誤判) 的情況呢?其實,網路上資料那麼那麼多,且重要非隱私性的資料很容易到處都有一份,因此,偶爾損失個小小網頁也是無傷大雅的。當然,若真的很計較的話,就可以改用其他的方式或稍作修改來處理了!