發表文章

目前顯示的是 2012的文章

Hadoop single node setup on Ubuntu

I tried to figure out how to use Hadoop and HDFS for a while. But the information on their official site is very scattered and out-of-updated. Here are some notes I did.
A clean ubuntu 10.04 LTS build.Download hadoop package from here.The Hadoop's versioning rule is very confusing.1.0.x is stable version1.1.x is beta version2.x.x is alpha version0.23.x is similar to 2.x.x but missing Name Node HAI tried to ignore all other version started with 0.2x. I just use 1.0.4 directly.Download the KEYS in the root directoryDownload the from hadoop_1.0.4-1_i386.deb(or it's x64 version) and it's asc file from hadoop-1.0.4 folder.Check the integrityrun `gpg --import KEYS`run `gpg --verify hadoop_1.0.4-1_i386.deb.asc`You should see
mac@mac-ubuntu:~/projects/hadoop$ gpg --verify hadoop_1.0.4-1_i386.deb.asc
gpg: Signature made Thu 04 Oct 2012 01:04:55 PM PDT using RSA key ID ECB31663
gpg: Good signature from "Matthew Foley (CODE SIGNING KEY) <mattf@apache.org>"
gpg: WARNING: Th…

TrueCrypt

TrueCrypt is a good stuff that you can encrypt your data to a virtual disk. Which is actually a file resides in your regular file system. And that file can be put in your Dropbox folder, so your data can be stored in "cloud" securely.

AES encryption/decryption

Encryptionopenssl enc -e -in original_file -out original_file.aes -aes256 -k passwordDecryptionopenssl enc -d -in original_file.aes -out original_file.out -aes256 -k password
AES size: original file size + 1, then padding to 16bytes, then add 16 e.g. 1 117 bytes 117 + 1 padding to 16 bytes => 128 bytes 128 bytes + 16 = 144 bytes
e.g. 2 127 bytes 127 + 1 padding to 16 bytes => 128 bytes 128 bytes + 16 = 144 bytes
e.g. 3 128 bytes 128 + 1 padding to 16 bytes => 144 bytes 144 bytes + 16 = 160 bytes
It's irrelevant to the length of password.

Lucene

http://lucene.apache.org/core/3_6_1/demo.html

CLASSPATH

OKexport CLASSPATH=/home/mac/xxxx/xxx/xxx.jar:/home/mac/yyyy/yyy/yyy.jarexport CLASSPATH=/home/mac/xxxx/xxx/*:/home/mac/yyyy/yyy/*Not OKexport CLASSPATH=/home/mac/xxxx/xxx/*.jar:/home/mac/yyyy/yyy/*.jarexport CLASSPATH=/home/mac/xxxx/xxx/:/home/mac/yyyy/yyy/
http://lucene.apache.org/core/3_6_1/demo2.html

Need to detect doc language and change to use correct analyzer. Create Index open an directory to put index files (dir)new an Analyzer (analyzer)new an IndexWriterConfig (iwc)do some settings on IndexWriterConfiguse dir and iwc to new a IndexWriter (writer)add documentsnew a Document (doc)add several fieldsnew a Field (pathField)Field pathField = new Field("path", file.getPath(), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS);pathField.setIndexOptions(IndexOptions.DOCS_ONLY);doc.add(pathField);new a NumericField (modifiedField)NumericField modifiedField = new NumericField("modified");modifiedField.setLongVal…

Change font in web pages

圖片
參加過三次Google I/O, 但都沒有去過它的codelab, 現在回頭看一下他的教材, 還真是好物... 一個是用appengine把pipeline, log, google storage, big query, bootstrap, channel api全部串起來, 做一個log分析程式. 那個很有趣, 之後再另外寫心得.

另外一個是教CSS, http://io12-css-codelab.appspot.com/lessons/index.html. 也不是頂難的東西, 但是一步一步這樣教, 好有FU喔. 其中換字型原來這麼簡單.

1. 去http://www.google.com/webfonts/挑字型. 它已經有很多工具可以讓你看不同大小的字型, 或是該字型當標題或內文時的感覺.
2. 選定後可以按該字型下面的Quick-use, 它還會跟你說因為用了這個字型, 造成網頁loading overhead的高低. 如果是綠色的應該影響就很小吧...

3. 再往下面看有兩個簡單的code要copy & paste.
只要把
<link href='http://fonts.googleapis.com/css?family=Quando' rel='stylesheet' type='text/css'>
放在html的header裡. 然後就可以在後續的css style裡用font-family: 'Quando', serif;來指定該字型囉... 真是想不到的簡單.



OAuth in GAE

因為需要用到Google的某個service, 而那個service需要用OAuth認證, 最近研究了一下OAuth2要如何在GAE上用. 身為OAuth2推手之一的Google, 在推廣OAuth2及提供對應的Tools來說, 盡了很大的心力. 以python來說, 它就提供了google-api-python-client這個library, 可以很容易的使用OAuth. 我參考了這份文件實驗成功使用OAuth2了, 特別記錄一下.

安裝在Linux與MacOS下十分簡單, 只要'sudo easy_install --upgrade google-api-python-client'即可安裝完成. Windows下就哭哭了, 但是最後的成果是可以在Windows下的dev_appserver.py裡執行的.在Google APIs Console裡註冊你的AP 在左邊的下拉選單裡新增一個Project.在Service那欄裡找出對應的API, 把它切換成On.點API Access.點Create on OAuth 2.0 client ID.因為是GAE, 選Web application. Hostname可以先打localhost.點Create後, 會產生三個像密碼一樣的東西, 兩個link. 把它們抄寫到一個叫settings.py的檔裡. 等等會用到.CLIENT_ID='把那串密碼裡的Client ID填在這' CLIENT_SECRET='把那串密碼裡的Client secret填在這' SCOPE='' #這是要使用的API應該會提供的資訊, 從API的文件取得. 在安裝完google-api-python-client後, 會在/usr/local/bin裡裝一個enable-app-engine-project的script. 如果已經有把/usr/local/bin加入PATH的話, 直接執行後面加project目錄即可.e.g. enable-app-engine-project ./上面那段command會複製一大堆目錄檔案過來, 把你的目錄搞的亂七八糟, 不過就將就著用吧.多建了apiclient, httplib2, oauth2, oauth2client, uri…

Unix scripts (sed & bash for)

圖片
今天工作上有個小任務, 一個目錄裡有47張圖, 巧合的是他們只有兩種解析度, 分別是480x84及480x720. 需要把它們分別放到兩個目錄裡. 大概記錄一下怎麼做的, 不然永遠記不得...
用file取得檔案的解析度, 先不要480x84的.file *.png | grep -v "x 84" | sed 's/\(.*\):.*/\1/' > list再在bash cmdline寫一行的scriptfor i in `cat list`; do `mv $i 720`; done再把剩下的搬去84目錄下.mv *.png 84收工

How to use FTP over TLS?

FilezillaSite Manager->New Site->Encryption->Require explicit FTP over TLS.lftplftp id@ipset ftp:ssl-protect-data trueget filename

Revamp my blog

圖片
My blog template didn't change for a while. Blogger has added many new features and I chose my template before that. So that template wasn't too flexible. Now I changed to use another template, removed most of the Ads and add SyntaxHighlighter 3.x. Now the web site would look neater.

Microsoft isn't doing right job...

I paid a visit to a Apple store on 3/16 to experience the new iPad. And I found there wasn't too much difference and innovation there. It got heavier and thicker for the higher resolution. I don't appreciate the higher resolution now because most of the apps do not support this resolution, they looked awful. There are still blurred icon there including the system UI. Can't imagine it before Jobs' leave.

Things may change when time flows. There would be more and more app support it in the future. One tip, you shouldn't buy 16GB version anymore, the app grows a lot in size in such resolution. 16GB won't be enough.

Anyway, the intention of this post is complaining about MS. When I visited Apple store, I also visit Microsoft store. I can feel they are desperate. A girl in the front door to pass free T-shirt which shows "I'm a PC" and I got one too. And another Latino was promoting a "call for duty" game tournament. As far as I can tell, only…

Python gflags

Google有一個叫python-gflags的project, 可以很方便地幫助讀取參數. 使用方法如下.

安裝方法sudo easy_install --upgrade python-gflags 參數種類string: 將參數解讀為字串bool/boolean: 值可以是0/1, false/true, f/tfloat: 將參數解釋為floating point number. 有兩個optional參數, 可以指定上下限integer: 將參數解釋為integer. 有兩個optional參數, 可以指定上下限enum: 如果輸入參數在預先設好的這個list裡, 為合法輸入, 否則會發出exception.list: 以逗號隔開的一組輸入字串spaceseplist: 以space隔開的一組輸入字串multistring: 還看不太懂怎麼用.multi_int: 還看不太懂怎麼用.使用方法 import gflags FLAGS = gflags.FLAGS # string, 參數意義為"參數名", 預設值, 說明 gflags.DEFINE_string('client_id', None, 'Client Id for authentication.') gflags.DEFINE_string('client_secret', None, 'Client secret for authentication.') gflags.DEFINE_integer('age', None, 'your age in years', lower_bound=0) gflags.DEFINE_boolean('debug', False, 'produces debugging output') gflags.DEFINE_enum('gender', 'male', ['male', 'female'], 'your gender') # 設為required field gflags.MarkFlagAsRequired('c…

[新聞] 宏碁上雲端 力推AcerCloud

圖片
Original Link
工商時報【記者詹子嫻╱拉斯維加斯9日專電】 在雲端風潮下,宏碁先前砸下3.2億美元購併iGware的成效,一直深受市場關注。宏碁在CES上對外展示最新「個人雲」成果,用戶儲存在PC上的檔案可傳送到微軟和Android平台的平板、智慧手機,並暫存在AcerCloud30日。 另外,董事長王振堂指出,2012年研發和行銷費用約增加營業額的1%,估算下來約50億元,主要將用以提供AcerCloud服務及運作。 AcerCloud將自第2季在北美、大中華區推出,第4季全球上線,宏碁預估2012年宏碁約有4成的產品會支援AcerCloud。 王振堂表示,未來是雲端社會,雲端跟雲端之間可互相交往,但世界級的雲端服務只有3~5個,如Google、微軟、亞馬遜等,宏碁要去競爭不太可能,但宏碁有一個自己的雲端社群,就能跟國際級雲端去交叉行銷。 未來硬體業者若缺乏一套完整服務,就沒有差異化,恐怕無法在產業成為要角。宏碁希望藉由AcerCloud提高客戶黏著度。 不同於一般雲端服務,使用者多將檔案儲存在業者的資料中心,AcerCloud則是以電腦為基礎,用戶可將存在電腦的檔案暫存到AcerCloud,其它裝置就能存取、編輯文件等。王振堂表示,目前支援微軟和Android系統,非宏碁產品也可使用,長期希望擴大串連到蘋果iOS,並希望透過AcerCloud替宏碁的平板及智慧手機加分。 對於宏碁將平板電腦單位移至PC部門,王振堂表示,主要是因Ultrabook與Tablet關聯性更高,考量相關零組件、技術資源共用的比例增大,加上產品精簡化後,筆電機種減少,所以將兩個部門整合。 但蘋果、亞馬遜在平板價位上下夾殺,平板逐漸朝M型化發展,恐不利宏碁、華碩等業者。王振堂坦言,過去內部也懷疑中間價位的平板是不是就會消失,但近3~4個月歐、美市場訂單卻一直湧入,看來299~499美元的中間市場還是會存在。 目前平板電腦仍有利潤,宏碁不會放棄,不過今年平板電腦市場仍多變數,包括低價199美元平板會持續多久,以及蘋果iPad 3功能,因此宏碁傾向保守策略,目標維持在200萬台。

Send SMS

圖片
現在是個手機門號比人頭還多的年代. 簡訊幾乎是每個人都有"能力"收的一個媒介. 如果service有狀況, 用簡訊通知是最有效的!

之前在survey transcribe service時, 找到了一個叫 twilio 的網站. 它提供的服務可多了, 可以用程式打電話給使用者(1), 然後再唸一段文字給使用者聽(2), 可以錄下使用者的回話(3), 還可以把使用者的回話轉譯成文字(4). 手機的部份則可以送簡訊(5), 還可以收使用者送來的簡訊(6)當做request, 再另外做對應的事. 可以很簡單地把程式跟電話整合在一起. 價錢看起來不太貴(打電話一分鐘2 cents, 接電話一分鐘1 cent, 每送一個SMS 1cent). 我倒也沒比較過類似服務收費就是了...
註冊的方式很簡單, 只要在它的首頁上點Try Twilio Free, 填上基本資料就可以使用他們的API了, 還有附送30 USD的credit可供試用. 之後它還會試著吸引你upgrade成正式用戶, 比如說再另外送25 USD的credit. 主要是要吸引你提供信用卡資料就是了...
之前帳號申請就放在那裡, 忘了! 今天剛好有一個場合可以試這個API. 主要是用crontab持續的去偵測目前server的狀況. 如果有需要注意的時候, 它會即時送SMS將當時的狀況送給能夠處理的人, 免得問題擴大.
它有提供各種不同語言的API, 最近都在用python, 所以就用它的python來達成目的. 真是無敵簡單的.
1. 安裝 在ubuntu上只要打sudo apt-get install pip, sudo pip install twilio, 基本上就將必需的python package裝好了.
2. 使用 在coding之前, 有兩個資訊是需要知道的, account id與token. 這兩個值可以在login後的dashboard上看到. 用了它,  twilio 才知道要跟誰收錢. 可以把這兩個值直接寫在程式碼裡, 或者是存成TWILIO_ACCOUND_SID與TWILIO_AUTH_TOKEN這兩個環境變數. 官方文件是建議存成環境變數, 這樣就不用擔心程式碼放到source control server上, 會把這兩個值洩漏出去.
有了這兩個值之後, …