2009年7月8日 星期三

Hadoop 初體驗

一週過了,心情還沒調適回來,參加這次雲端計算比賽,雖然沒並沒很明確的做出什麼,甚至最後僅花了兩天開始衝 Hadoop Streaming 與簡單 Web 介面實作,也感到樂趣無窮。


至於為啥會只有兩天實作?實在是一開始太鬆散,最初一兩天先裝裝機器,接著我開始用 Java 來實作,用這三年沒寫過的語言,事實證明,儘管還沒忘光卻也不夠好。在倒數三天時,有不少突碰性的討論與設計,最重要的是設計資料格式,我覺得這是最有成就感的部分,無論最後有沒被欣賞,都夠囉。


談談 Hadoop 的架構,分成 Map 與 Reduce 架構,前者主要處理 Partition 的部分,後者則是 Merge 動作,而 Hadoop 另一個特色是能提供 Sorting 功能,完全符合碩班老師的教導,面對大資料不外乎三件事:Partition、Sort 和 Merge 。


另外,Map 和 Reduce 接收統一格式的設計,以至於推導出此架構,真是很變化無窮,感覺得出來設計此架構的人是非常有實力與經歷的。回想起周遭的生活,倒比較少有這樣的感覺,很多事都是為 Special Case 處理,顯少有 General Purpose 的設計。慶幸的,經過這幾天的腦力激盪,完成一個小小的 General Purpose 架構的雛型,挺爽快的。


差不多該調整步調了。


2009年7月6日 星期一

[bash/tcsh] 按上鍵與開頭字,搜尋與顯示上次執行指令

最近比較常用 tcsh 當作 FreeBSD 的開發環境,甚至其它常用的 Linux 亦是如此。然後就會有個需求,希望按"上”時,能夠自動顯示上一個已執行的指令,理論上這都很直觀,好像預設也是這樣,但如果想要做到搜尋的功能,那就要多一些設定。


例如依序打了三道指令



  1. # ls -la

  2. # vim .bashrc

  3. # cat .bashrc


如果只是用單純的 history 功能,接下來我只要按"上”鍵時,此時會自動顯示上一道執行指令,即 cat .bashrc 。但如果我先打了 l 再按"上"鍵時,想要它會去找到 ls -la 這道指令,那就要多做些設定,細節請參考這篇文章:bash 記憶指令 For Linux


設定方式:



  • # vim ~/.bashrc

    • bind '"\x1b\x5b\x41":history-search-backward'
      bind '"\x1b\x5b\x42":history-search-forward'




另外,關於 tcsh 的設定:



  • # vim ~/.cshrc

    • bindkey "^W" backward-delete-word
      bindkey -k up history-search-backward
      bindkey -k down history-search-forward




2009年6月27日 星期六

記憶中的麥可‧傑克森!

我好像在高一時,才對 Michael Jackson 有印象。那年高一我因為國三時補數學而認識幾位同學,因此曾去過他們家玩電動,那年好像非常流行跳舞機,結果我到現在還是不會玩。那時的印象是因為有一位同學是 Michael Jackson 的歌迷,買了幾張專輯,這對從未都不關心歌壇流行的我來說,有些生疏。之後的印象就僅剩電視新聞啥漂白啥戀童的醜聞了!


直到今天,我看到了這篇文章轉錄1》被誤解最深的偉大藝人——麥可‧傑克森!我才知道,我錯了很久,而我的家人也普遍只因新聞覺得他怪怪的,有漂白等奇怪的行為。


如今,我花了一些時間將這些待修正的觀點傳播給家人跟朋友,是的,我們都被媒體誤導了!麥可‧傑克森真的是一位偉大的歌手,他的偉大不在於賺了多少錢,而在於他對社會如此大的包容與付出,真的,我們誤會你了!感謝你對世人的付出與關懷。謝謝你。


第20屆金曲獎-新人獎和作曲人獎:盧廣仲!

其實,也才不到兩個月吧,是我第一次聽他唱歌,當時有種感覺,像當初剛接觸周董音樂般,似乎又將對音樂界有種新的突破?!老實說在得獎前也說不出個所以然,直覺得不能小看他,沒想到真的得獎了!還得到兩個大獎,真是令我佩服。


五月左右,我聽著他演唱會版的 CD ,順便寫寫程式,當時有點被他的音樂吸引,我覺得沒有人是可以被取代的,如同這屆新人獎的各位,看到大家在台上表演,那種感覺真的很不錯,或許是因為當時看到 盧廣仲 - 維基百科,自由的百科全書 介紹,有莫名的欣賞感!


很高興他能得獎,雖然我還是覺得他的風格有點怪怪不習慣,但那種感覺,就像對周董總說不清的歌詞般地,讓人不想釐清,好好享受就好。


2009年6月26日 星期五

[PHP] 實作 XML-RPC Client 筆記 - Blog with Pixnet , Wordpress , Roodo , Blogspot

幾個月前為了實作部落格同步程式,所以使用了 XML-RPC ,但僅小試一下,久了又忘了它,直到上上個禮拜,我又重新整頓一下,正式實作 XML-RPC 的發文程式,在此就順道筆記一下,因為各家實作並非完整。


關於 XML-RPC 可以參考以下資訊



其中,我使用 The Incutio XML-RPC Library for PHP 來實作部落格同步程式,或者是說,部落格發文程式。其版權宣告為 Artistic License


在實作過程中,碰見四類 API



然後,就上述提及的 Blog ,依序使用或支援的 XML-RPC



  • Wordpress

    • WordPress API

    • Movable Type API

    • MetaWeblog API

    • Blogger API

    • Atom API



  • Pixnet

    • WordPress API

    • Movable Type API

    • MetaWeblog API

    • Blogger API



  • Blogspot

    • Blogger API



  • Roodo

    • Movable Type API




接著,探討一個重要的議題:「是否能夠決定發文的時間呢?」



  • WordPress

    • metaWeblog API : Yes



  • Pixnet

    • metaWeblog API : Yes



  • Blogspot

    • Blogger API : No



  • Roodo

    • Movable Type API : No




最好的測法就是打開 Windows Live Writer 去進行測試,其中,Blogspot 可以的原因是使用 GData API ,這是我抓封包時才發現的,原先我一直以為 Blogger API 是可以的。


因此,如果要撰寫部落格同步程式,那可以實作在發表的同時,讓程式自動再透過 XML-RPC 幫你發文到各處去,如此一來將沒有時間上的問題,但這並不是我想寫的程式,我想要的是讓程式默默地幫你完成同步動作,也就是為什麼我需要能自訂發文時間的功能。


簡言之,搞到最後我寫的程式僅能用在 WordPress 跟 Pixnet 上正常使用囉。建議有興趣的人,可以嘗試先下載 Wordpress 的原始檔來看看,裡頭有個 xmlrpc.php 檔,雖然是 Server Site 的,但也挺好參考的喔。


最後,就小試一下啦。此程式可以發文至 Pixnet 和 WordPress ,但對於 Roodo 則是因為無時間支援,僅以當下的建立的時間為準,而 Blogspot 的話,可以把 metaWeblog.newPost 換成 blogger.newPost 並且把 $content 直接設值成文章內文即可,不需保持 Array 的架構,因為它本身僅提供文章內文,連標題設定都沒有。各家的 API 位置,大多是連到對方的 Blog 上,點選原始碼查看 EditURI 的敘述位置,而那個位址基本上不是 API 位置,請再點選它,理論上會蹦出一個網頁再告訴你各個支援 API 的位址,再把你想用的 API 更新在 $blog_info[3] 上。而 Roodo 比較特別,請直接用 "http://xmlrpc.blog.roodo.com/cgi-bin/mt/mt-xmlrpc.cgi",此程式僅適合提供 metaWeblog API 為主。