Subscribe to RSS Subscribe to Comments Blog of Roy Chan

Blog of Roy Chan

Beryl 升級0.2.0問題 (for Ubuntu)

Beryl: Ring Window Switcher

久沒有更新Ubuntu裡的Beryl,今天想試一試svn最新的Beryl環形視窗切換器(Ring Window Switcher), 就出了事。整個Beryl都crash了,出了:

libberylsettings: Couldn't get vtable from '/usr/lib/beryl/libdbus.so' plugin
libberylsettings: Couldn't get vtable from '/usr/lib/beryl/libcrashhandler.so' plugin
libberylsettings: Couldn't get vtable from '/usr/lib/beryl/libdecoration.so' plugin
libberylsettings: Couldn't get vtable from '/usr/lib/beryl/libwobbly.so' plugin
libberylsettings: Couldn't get vtable from '/usr/lib/beryl/libanimation.so' plugin

apt-get --purge remove ......拆除Beryl再重新安裝都沒有。結果在Beryl Forum找到gourdin提無的解決方法,就是除了 purge 外,還要來個徹底大清洗。方法如下:

先拆除所舊版本Beryl的套件及其有關檔案:

apt-get remove --purge beryl beryl-core beryl-dev beryl-manager beryl-plugins beryl-plugins-data beryl-settings beryl-settings-bindings emerald libberyldecoration0 libberylsettings0 libemeraldengine0

找出所有殘餘的檔案 (除了在用戶home directory中個別用戶的設定檔外) 並放入檔案 /tmp/beryl.list

find / -iname '*bery*' | grep -v "^/home" > /tmp/beryl.list

你最好人手檢查一下 /tmp/beryl.list 有沒有你不想刪除的檔案,然後把裡面提給的檔案全部刪除:

xargs sudo rm -rf </tmp/beryl.list
sync

重新安裝beryl:

apt-get install beryl beryl-core beryl-manager beryl-plugins beryl-plugins-data beryl-settings beryl-settings-bindings emerald libberyldecoration0 libberylsettings0 libemeraldengine0

搞定後,你可以享受最新最酷的Beryl了!!! \(^O^)/


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


再談Metisse : 不是3D的三維桌面

週五提過Mandriva的新3D桌面 Metisse ,因為相關的網站被/.了。到近幾天才有機會看到官方screencast和試用LiveCD。原本曾說過覺得Metisse沒有大驚喜,這幾天試用後有很大的改觀。在畫面效果來說,Metisse 顯然給超炫的Beryl、Compiz甚至MacOS X的Aqua比下來。 或者不客氣的說,很醜。但正如其名 (Metisse 意指美印混血兒) ,Metisse 顯然走實而不華路線,很不少功能頗實用。

自動卷頁

我以往都不覺得卷起視窗的一個角位,除了有趣外有什麼實質用途。要偷看後面的視窗為什麼不把前面的視窗移開或令整個視窗半透呢?不過Metisse就為卷頁提供一個妙用。當你要由後面的視窗抄一些東東到前面的視窗,自行點擊視窗最少要四個步驟,autoraise 很多時也不是活動自如。但在Metisse中,只要你用滑鼠在後面的視窗拖拉企圖選取一些文字,前面的視窗會自動卷起讓你看到整個後面的視窗,可以清楚選取你要的文字。選好放開鼠鍵後,前面的視窗又會自動張開復原。只要你在你要貼出文字的地方按鼠中鍵,就完成了。前後只不過兩步,比以前爽很多了。

Dailymotion
[YouTube]

反轉視窗

打側和旋轉視窗其實很簡單。當你把鼠標移到視窗邊框時接下左鼠鍵,就會出現一個十字架,跟住十字架的指示移至你想做的動作方向就可以將視窗打側或旋轉。這個功能的重點是讓你在不改變軟件心目中視窗的大小而把幾個視窗堆在同一個桌面中。例如以下影片中,使用者將兩個Firefox的視窗打側對排在桌面中,令她可以一次過看到和比較兩個網頁的內容但不改變網頁顯示的大小。大家都知縮窄網頁視窗很多時會引致爆格或多了個很麻煩的scorll bar。但這打側視窗就不會有這個情況出現。你可以隨時按[Win-F1]令視窗回復正常或變回打側的模樣。你亦可以用[Win-F4]或[Win-F5]將視窗左右打側,[Win-F6]或[Win-F7]將視窗上下打側,[Win-F2]或[Win-F3]將視窗旋轉。你甚至可以[Win-A]令視窗自動旋轉。

Dailymotion
[YouTube]

遠眺群桌

Metisse轉換桌面並不像Beryl/Compiz/Aqua般轉動正立方體,而是相等於把pager放大的Bird View。這種方式似乎平淡很多,但也實用很多。按著Win鍵再把鼠輪滾向下(亦可以按[Win-D]),就可以跳入Bird View,一次過遠眺所有桌面,讓你清楚所有視窗的位置及內容。和Beryl/Compiz/Aqua,所有視窗內容變動都會即時反映在Bird View上。即是說你是可以在Bird View看到某桌面視窗正在播放的電影。你亦可以在Bird View上用右鼠鍵把任何視窗在各桌面間搬動。要切回桌面模式,只要按著Win鍵再把鼠輪滾向上或再按一次[Win-D]。

Dailymotion
[YouTube]

視窗鏡像

這個功能頗有用。你可以按視窗左上角的小圖示並在選單上選Duplicate來為視窗複製個鏡像。這個鏡像和原本一模一樣。你在任何一個視窗所做的改變都即時反映在其他視窗中。用處在於鏡像可以被打側放大縮細。你可以把一個視窗的鏡像縮細放在另一個桌面。這樣你就可以在那桌面一邊工作,一邊搞角落中的鏡像縮圖觀察另一個程式的情況。必要時切換桌面去專心操控相關程式。

Dailymotion
[YouTube]

重組介面

這個功能絕對酷斃了。Metisse可以讓你複製幾個視窗部份介面並將之合併成為新視窗。你只需要按著[Win]鍵和左鼠鍵在視窗上拖拉就會選取了一個長方形。在選取了的位置按右鼠鍵,選Create Façades,就會建立一個只包括選取區域鏡像的新視窗。鏡像上的按鈕或控制單元同樣可以按動運用,你亦可以再選取另一程式控制單元並拖至 Façades 視窗邊位併合到Façades 中。這個功能絕對有很大發展空間。例如,你可以把某網頁的文字框剪出來放在桌面下面,再從要參考的網頁視窗中把要內容部份和scroll bar(減去了其他控制單元、頁面上的navigator bar和margin位等) 剪出來在桌面上方,邊參考邊撰寫。這比把視窗上下平鋪有更大的空間和操控性。另外Façades 的組合可以儲存,下次開啟軟件時你可以再載入先前定義好的Façades 使用,很方便。更有趣的是,你可以把任何Drop down box 變成 radio box 。(似乎真的有人注意到太多軟件把濫用 drop down box 了) 當然如Pager的版片中所展示,你亦可為任何視窗中間挖洞。

Facades Metisse (29MB QuickTime Movie)
(29MB QuickTime Movie)

Metisse的缺點

  • Expose是不可缺的 - 把所有視窗平鋪來讓用戶選是Aqua最傑出的設計,這是Bird View代替不了。
  • 不夠炫 - 現在的模樣是不能打動愛炫的大眾去安裝GNU/Linux試試的。

現時Metisse或只是實驗階段,仍有很多改善空間。希望藉著這次發佈及Mandriva的協力,Metisse 能得到多點的參予改良,早日像Citroen的般 C-Metisse 發揮其 True Color!!!! \(^o^)/

相關網站

相關文章


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


《Rocky Balboa》(《洛奇:拳王再臨》)

說實,開始時我對這片的興趣不大。一來不是Sylvester Stallone (港譯「史泰龍」)的fans,沒有怎看過《Rambo: First Blood》(港譯「第一滴血」) 系列,《Rocky》(港譯「洛奇」) 也只在多年前在有線瞄過第四和第五集。二來心想年過六十的Stallone再出山,怕又來一套《Terminator 3》或《Basic Instinct 2》。不過看了後,發覺不錯。劇本鋪排有序,拍得亦很有心機。由76年《洛奇》第一集開始,Rocky Balboa早已和Stallone本人二合為一,30年後第六集終極出山,充份表現出Rocky和Stallone的人老心不老而絕不是他人所說只活在回憶中。兩者不折不朽的精神實值得我們借鏡。喜受Rocky對兒子的一段對白

生命並非永遠充滿光明,這個世界殘酷而陰險,隨時會把你擊得永不翻身。如果把受到的打擊通通歸罪於別人身上,那是懦夫的行為。因為最重要不是你出拳有多重,而是你能夠捱得了多重的拳。你只有在重拳的攻擊全力支撐並奮戰不懈,你才可能贏。

原文是:

The world ain’t all sunshine and rainbows. It is a very mean and nasty place and it will beat you to your knees and keep you there permanently if you let it. You, me, or nobody is gonna hit as hard as life. But it ain’t how hard you hit; it’s about how hard you can get hit, and keep moving forward. How much you can take, and keep moving forward. That’s how winning is done.

相關網頁


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Unix的歷史

這是我十多年前為TCL BBS Unix板寫的一篇關於Unix歷史的文章。事實上我只寫到三份之一就停了,不過這幾年來也偶然看到別人曾引用過這文章。近日我的舊個人網站要停了,所以把舊文貼上來作保存。

Multics 的失敗

要談 Unix 的歷史,一定要回溯到 1965-68 年美國電話及電報公司 (American Telephone and Telegraph Inc., AT&T) 、 通用電器公司 (General Electrics, G.E.) 及麻省理工學院 (Massachusetts Institute of Technology, MIT) 的 Multics (MULTiplexed Information and Computing Service) 計劃。

在那時期,大部份電腦都是採用批次處理 (Batch Processing) 方式。為了顯示多用途 (general-purpose) 及多用戶 (multiuser) 的分時系統 (timesharing system) 是可行的,MIT 以在試驗 CTSS (Compatible Time-Sharing System) 當中所得的研究成果取得了 G.E 的同意合作為 G.E. 的大型電腦 GE-635 開發一套全新的分時作業系統 - Multics 。

由於 Multics 有不少設計在當時是頗新穎具富創意的,因此吸引了不少研究機構的註意。而其中那時仍和 AT&T 同一家的貝爾實驗室 (Bell Libraries, Bell Labs) 更在六十年代末曾正式參於過 Multics 計劃,那時剛由加州柏克萊大學 (University of California at Berkeley, UCB) 去到 Bell Labs 的 Ken Thompson 就是 Multics 研究小組的一員。

不過 Multics 的發展進度很慢,原本預算兩年有成果但過了很久仍沒有多大進展。到了 1969 年, Bell Labs 終於決定放棄,退出了 Multics 計劃。 Bell Labs 的 Dennis Ritchie (K&R 的 R) 曾描述當時 Bell Labs 由管理層到研究員都認為 Multics 的開發是太遲及太貴了。

Multics 自 Bell Labs 退出後 , 仍有繼續發展。 Honeywell 在 1972 年購入了 G.E. 的電腦部門後更把 Multics 進出商業市場,但始終不算太成功。在 Multics 比較流行的八十年代,約有 75 至 100 台每台價值數百萬美元的大型電腦跑 Multics 。 1977 年, MIT 也退出 Multics 的發展工作。後來 Honeywell 在八十年代中期把其電腦上的事業賣給 Bull 後,Multics 的發展亦終於在 1988 年打上一個句號。

『角落中乏人問津的 PDP-7 』(”little-used PDP-7 in a corner”)

然而,Thompson 曾在 Multics 計劃當中為 GE-635 寫了個叫做「太空旅行」(Space Travel) 的遊戲程式。這個程式模擬 了一個太空船和太陽系的環境。 Bell Labs 放棄 Multics 後, Thompson 打算找另一台機器把「太空旅行」移植 (port) 過去,於是便和 Ritchie 向 Bell Labs 提議買一台電腦以便他們建立一台自己的交談式、多用戶、分時系統,不過他們的申請並沒有被接納。最後,Thompson 在一角落裡發現了一台很少人用的 PDP-7 (Programmed Data Processor) 。

PDP-7 是迪吉多 (Digital Equipment Corporation, DEC) 在 1964 年進出的迷你電腦 (minicomputer) 。這台約和 Commodore 64 同級的電腦的作業系統對於 Thompson 來說十分簡陋,於是 Thompson 就順帶以他在 Multics 計劃中學到的技術和經驗,為這台過時的電腦上撰寫一套新作業系統。這套作業系統有很多構想是來自 Multics ,包括樹狀結構 (tree-structured) 的檔案系統、用戶層面的命令解釋器 (Command Interpreter) ,簡單表現文字檔及對週邊設備 (Device) 的綜合化存取等。

最初,Thompson並不是在PDP-7上撰寫他的新系統,而是先在一台GE-635上使用GEMAP組譯器(Assembler)的巨集(Macros)編寫程式,再經由一後置處理器(post processor)產生可供PDP-7讀取的紙帶(paper tape)。這樣一來一回,由GE到PDP-7,直到一個雛型的核心(Kernel)、一個編輯器(Editor)、一個組譯器(Assembler)、一個簡單的Shell(命令解釋器,Command Interpreter)及一些公用程式如rm、cat、及cp等完成了,整個系統可以自給自足後,所有開發工作才在PDP-7上繼續。

而這套作業系統最初由與 Thompson 共事的 Brian W. Kernighan (K&RC中的K) 命名為 Unics (UNiplexed Information and Computing System),和Multics開了個玩笑。1971年間改成Unix,用Uni對Multi,cs對x。提起Unix的名字,很多人都疑惑正確的寫法是全大楷的「Unix」,還是只有起首大階的’Unix’。Ritchie就解釋說「UNIX」言個寫法源自1974年CACM的文件”The UNIX Time-Sharing System”,當時這班先鋒研究者剛剛得了個新的typesetter及開發了troff。一大班人正對smallcaps字款著了迷,導致了「Unix」的產生。縱使Ritchie在往多次以Unix並不是任何句子的縮寫為理由想在幾份Bell Labs的文件用回「Unix」,最後都失敗。而後來UNIX的註冊商標也是以全大寫為準。

First Edition Unix

到了 1970 年,這班 Unix 的研究者獲得配合一台新的十六位元電腦 DEC PDP-11/20,條件就是要為 Unix 加入較佳的文件處理工具。不過台電腦迅速地送到研究者的桌上後,它的磁碟足足慢了三個月才運到。就在這機在碟未到的等候時間中,Thompson 用 PDP-11 的組合語言 (Assembly Language) 重寫了整個 Unix 核心及基本的命令。當時那台 PDP-11/20 只有 24KB 記憶體 (Memory),這個最早期的 PDP-11 版 Unix 就佔用了 12KB,其餘的記憶體就被拿來跑用戶的程式和作 RAM Disk。僅有 500KB 的磁碟空間以及在毫無記憶保護(Memory Protection) 的情況下,支持三個用戶同時作編輯和格式化文件和那群先鋒開發者繼續 Unix 的發展工作。

1971年11月,這班懶惰的開發者終於把第一版 Unix 的說明書(Manual)定稿。往後每一由 Bell Labs 發展出來 Unix 的版本都以同時出版的說明文件的版號為準。如所謂 Unix Version 1 (V1) 其實就是指第一版 (First Edition) Unix 說明書所載的 Unix。所以在 Bell Labs 內部一直都稱呼 nth Edition Unix,不是外間的 Unix Version n。V1已有了基本的檔案系統、fork()、roff (troff 的前身)及 ed 等,並被用作處理專利文件的工具。而 pipe() 就在第二版 (Version 2) 中初次出現。

C 的誕生

在開發 V1 時,由於 PDP-7 和 PDP-11 的組合語言差異很大,令移植的工作非常因難。Thompson 這時突發奇想,覺得如用高階語言 (High-level Langauge) 來撰寫 Unix,移植和維>護的工作都會變得簡單得多。對於 C 語言極度盛行的今日,這想法可能不怎麼。但在當時>絕對是十分瘋狂,執行效率要高且記憶體使用要省的系統程式(System Software)必需要用>組合語言來撰寫的觀念早已根植在當時每一個電腦人心中。

Thompson 首先嘗試使用 FORTRAN 來寫,不過沒有成功。後來他找來一個叫 BCPL 的語言,在使用期間整理了 BCPL 的若干功能,成了另一個新的程式語言 B。V1 中就有少量公用程>式是用B來撰寫。後來 Ritchie 加入了 Unix 的開發行列,很快發現了 B 語言有若干缺點>,如資料型態(Data Type)的缺乏等。 Ritchie 著手改良 B 語言,誕生了著名的C語言。

1973年初,C 語言的重要特性大都完成了。在各方條件都足夠的情況下,Thompson、Ritchie及他們的同伴在同年的夏天把 Unix 的核心用 C 重寫。這也是所謂的第四版(Version 4, V4),有九成多的程式碼是用 C 來寫。在整個操作系統史上,這是一件很重要的事,也是 Unix 的轉折點。這意味著 Unix 可以很容易被修改,也使其成為第一個在源程式層面上可移值(source-portable)的操作系統,可以在很短時間移值(port)另一台的電腦中。

接下來的就沒有再寫了…… -P


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Possbily the best Beryl demo ever!!

Wow!! It might be the best Beryl demo video til now!!!! \(^o^)/ Just find it in Youtube

Other fun stuffs


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl] [Digg It] [Netscape] [Reddit] [Newsvine]


Multi-touch: iPhone介面在桌面上的真正威力!?

早前Apple教父Steve Jobs在Macworld 2007展示萬眾期待的iPhone,成為城中熱話。當中最令人驚喜的是iPhone的Multi-touch技術。兩指開合可以放大或縮細相片或地圖,手指在唱片推撥動尋搜唱片的CoverFlow等。有人說Steve Jobs把電影《未來報告》中Tom Curise舞動手指尋搜預言影片的技術帶到現實。不過,我昨天在Youtube找Metisse資料時,無意間發現了Jeff Han去年二月在TED2006展示 Multi-touch技術的演示,比Steve Jobs更精彩。

9分鐘的演示中,Han雙手在一張大點觸式熒光屏舞動,展示了如何以雙手十指操控電腦,整理相片,瀏覽地圖、畫圖等。除了Steve Jobs在MacWord 2007展示的兩手指在熒光屏開合來放大縮小相片或整個桌面,還有雙指/手轉動相片和用三指水平轉動地圖等。由於在點觸式熒光屏比iPhone大很多,Han的演示更見靈活。左手雙指在放大某張相片,右手又同時把另一張相片撥開,眨眼間又把整個桌面放大並旋轉。看得在場的觀眾目定口呆,拍案叫絕。所得到的掌聲絕不亞於Steve Jobs。

Hans的神奇桌子也有虚擬鍵盤,但這個鍵盤可以在熒光屏上移來移去、轉動甚至放大縮小以配你手的大小,酷了!

由於大家展示的技術有很多相似性,有不少人都懷疑iPhone的Multi-touch是取經自Jeff Han,亦有傳聞Apple則在MacWorld2007前企圖招聘Han但失敗。對此Steve Jobs聲言Apple在兩年半前已有了這個點子。而Han對iPhone亦極為欣賞:「iPhone絕對精彩,我以前一直說,如果有一個公司會把這類技術帶到顧客市場,那一定是Apple。」Han亦表示打算在六月iPhone推出時購買一部。

Han開了一間公司Perceptive Pixel專間銷售Multitouch技術。NYDailyNews執導他將為電影工作室提供相關儀器作brainstorm之用。

無論如何,Han的演示透露了multi-touch的無限可能性。事實上multi-touch在Apple並非由iPhone開始,iBook用戶都知道用雙指在touchpad打圈可以模擬Wheel Mouse轉動滑輪的效果。去年Bunny曾告訴我有人發現Apple註冊了張整個鍵盤前手墊位變成touchpad的專利,這似乎是為未來Mac機上大量使抈multi-touch而鋪路。

Video

Links


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


另一個GNU/Linux的3D桌面 - Metisse

在digg.com看到有關Metisse的消息。Metisse是由In Situ專案開發出來的3D桌面,其介面和主要模仿OSX的Compiz或Beryl有很大分別,你可以隨意打側、反轉、旋轉或揭開任何視窗。轉換桌面不是旋轉正立方體,而是把所有桌面平鋪在熒幕展示(所謂bird view)。Mandriva打算在其2007.0 LiveCD上付運Metisse,大家可以bt有關LiveCD先睹為快Metisse的威力。

因為下載太慢,我暫時只看到Youtube上的一些舊Metisse示範,感覺不及Compiz和Beryl那般酷。Compiz/Beryl不能打側、反轉、旋轉視窗,但這些功能暫時似乎用途不大。Metisse現時只Fvwm(沒記錯是我第一個使用的WM,8年多沒有了,感覺很古老) Bird view其實會比Cube view更好操作,但取替不了Expose的方便。不過可能會比Compiz/Beryl快。最令人眼前一亮的就是你任意把幾個視窗的部份介面複製出來組成一個新視窗,讓用戶可以任意重新編排任何軟件的介面,頗有趣。當然,實質的評論還是自己跑過才能說。

P.S. 用後又發過很不錯,請參看再談Metisse : 不是3D的三維桌面

影片

相關文章


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


QEDWiki

年多前曾思考過WikiWikiWeb在商業上的應用,今天在Youtube打釘時找到去年有關QEDWiki的Demo,似乎是WikiWikiWeb商業他的實例之一。


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Google Mobile 個人化首頁和中國地圖

今天才發覺原來Google Maps都有中國地圖,不過不在原本的Google Maps站,而是在中国Google站底下的maps目錄才找到。基本主要幾個大城市如北京、上海、南京、廣州和深圳的地圖都有,也可以用『搜索地圖』找到主要城市的地方名和主要街道名。不過和主站的地圖不一樣的是,這個地圖是沒有衛星圖片的。原因大家都猜到…….。

另外很多人都知Google個人化首頁在本月中開始提供Mobile版,大家以後可以透過手機一次過看很多內容。不過我在個人化首頁一直都找到自訂Mobile版首頁的方法,找了好一些時間才在Google的Cache中取會一篇Google Mobile舊文,才知道你可以在桌面電腦上到訪http://www.google.com/ig/cp來自訂Mobile版首頁。

P.S. 這大概算是bug,Top Stores(頭條報導)在桌面電腦上顯示中文版的,在Nokia的電話中卻變成了英文和外國新聞。

P.P.S. 企鵝佬修正Google中国地圖的url 是 http://ditu.google.cn/ ,Bunny亦修正Google Mobile版首頁的link可以在正常個人首頁底的Mobile字找到。


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


USB充電池

用USB幫手機/PDA/MP3機充電大家都試過了。但有很多電子產品仍是用AA或AAA電。USBCell設計了不少解決這個問題的充電池。這間公司的產器好像digg之前都提過,不過實在太有趣,所以想再之提一下。

USBCell有多款充電池,包括AA、AAA、9V及手機型電池,何以放入相關電子產品上使用。有趣的地方是當要充電時,這些充電池都可以彈出一個USB插頭讓你插入電腦的USB插位充電。AA和9V固然有足夠大小放有一個正常USB插頭。不過連AAA這樣小,USBCell也有方法。兩款AAA充電池,一款只提供miniUSB插頭,不過當然miniUSB插頭不太常見,用途不大。另一款則是一個正常的USB插頭摺起來藏在AAA電上。但最令人拍案叫絕的是手機型充電池,裡面藏有一個正常USB插頭,可以拉出來插入電腦充電。其站還說可以一面充電,一面使用手機……. m(-_-)m


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Fix the MySQL character set problem after MySQL 4.1 forever!

I suppose many people had mention it before. It is talk about the output of your database become rubbish after you upgrade from older MySQL to 4.1. Experience people should senses that it is the problem because MySQL 4.1 get more support on multi-language and charset. You or me may already got the same experience in Oracle/Java and know that we should correct the charset of the MySQL server and client. However, the solution in people’s blog is in chaos.

Some ask you to “SET NAME utf8″ after each connection. Oh, that you need to search “mysql_connect” or “mysql_pconnect” in all your PHP application and put “mysql_query('SET NAME utf8')” after them. You may look through your php.ini or httpd.conf and see if you change the default client charset in PHP/apache but the fact is that the default client charset is fixed libmysql before compilation. You don’t want to compile libmysql again by yourself, right? Some ask you to put init-connect='SET NAME utf8‘ in my.cnf but it never works. Some said it should be init_connect instead of init-connect but still no luck. Some ask you to set default-character-set in section [mysql] of my.cnf but you want PHP will connect with UTF-8 by default too. Ok, here is the solution. What you need is add “default-character-set=utf8 in both [client] and [mysqld] sections in your my.cnf:

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

The MySQL will use UTF8 after restart it. You can check it by typing the following in mysql:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

Reference


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Sun重新採用Intel晶片

本周一,Sun(昇陽)和Intel(英特爾)達成協議,Sun將在其部份新產品中採用Intel 的晶片。過往Sun在x86的伺服器一直使用AMD。這個協議對AMD有一定程度打擊。 Sun表示仍會繼續使用AMD的Opteron晶片和Sun本身的Sparc處理器。 然而有不少人亦關心這次協議對GNU/Linux有多大影響和Sun會否成次改變其對 GNU/Linux的政策。

當被問及這次協議對GNU/Linux是否壞消息,Sun的CEO Jonathan Schwartz回答: 「最終人們會選擇對他們產生最大價值的操作系統。」


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Use this to teach your younger brother what is Pi (π)

Just saw this from digg.com:

You can show this GNU-free image to your younger brother/sistor when your mom ask you to teach them what is π -P


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Black Jack [怪醫秦博士]

初看怪醫時還是個幾歲小孩,當時只受其名字吸引,「博士!博士!」,好像是說什麼科學的故事般。買是當年海豹出的單行本才知所謂的博士只是醫生Doctor的誤譯。那時確實給怪醫悶得很,一來自己對醫學沒有半分興趣,而且當時那本單行本中的三篇故事並不著重怪醫的醫術或科幻成份,所有的人情味和生命觀感對一個幾歲大的小孩似乎深了點。所以看了一期也沒有再追下去。

後來我自己也不記得在那偶然看多了幾篇怪醫的故事。當中的科幻吸引了我的重新注意。同時可能人大了幾年,經歷多了,對故事中含對生命的價值觀感染了點。可惜後來海豹再也沒出其餘的單行本,所以我對怪醫也只有留下一點印象。

直到1993年尾,文傳重出一大堆手塚的作品。94年初一時心痕買了小飛俠的單行本,對手塚的作品重燃興趣,過了不久便重新追看。現在怪醫亦成為了我最喜愛的漫畫之一。


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


漫談芹澤廣明: 校長、《Touch》的作曲家

早前譚詠麟的舊歌《愛情陷阱》取得《勁歌金曲25週年榮譽金曲獎》,倒令我想起這首檔年熱門歌曲的作曲者芹澤廣明。還記起當年《愛情陷阱》推出的那年暑假,我曾跑到尖咀重慶大廈看兩著名動畫。一是超時空要塞電影版 - 可有記起愛,另一曾是在日本OVA歷上佔極重地位的《Megazone 23》。看《Megazone 23》時,當奏起《越過悲傷的背面》時,就感覺其調子和《愛情陷阱》很相似。那時多口問問鄰座的動畫友,得到的回咎是《越過悲傷的背面》根本是《愛情陷阱》的原本。動畫當年在一般香港人眼中只屬小朋友玩兒,當紅歌手把一首日本動畫插歌改編熱爆流行曲,自然成為往後向朋友宣傳日本動畫的其中一個籍口。往後,芹澤廣明仍作了不少歌給譚詠麟,不過我也鮮有留意。後來,芹澤廣明為名動畫《Touch》的電視版和三套電影作很多歌曲,我才對芹澤廣明留意起來。(我當年買了四張《Touch》的CD,現在還在我的CD架中)

不過話說起來,看了《Megazone 23》後幾年,也曾買過其錄音帶,《愛情陷阱》和《越過悲傷的背面》的作曲者雖然同是寫著芹澤廣明的名字,不過兩首歌除了主歌部份,其他都不同。後來才說知譚詠麟並非改編《越過悲傷的背面》,反而是芹澤廣明吃兩家茶禮,把同一個調子放入兩首不同的歌,賣給譚詠麟和《Megazone 23》。


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Rob和Amber會否在The Amazing Race: All Stars出現!?

早幾個月肯定了的The Amazing Race: All Stars在早前已開始在AXN買廣告。明顯大部份人最關心的是今次的參賽者有誰。小道消息說TAR 5的Colin & Christie和Mirna & Schmirna已肯定入圍。而我倒關心Rob & Amber有否機會再次現身並再次示範如何玩轉TAR。在TAR 7中,這對奸狡情侶為CBS取得不錯收視,連兩人婚禮,CBS都有現在直播,掠水情侣再現CBS機會也不小。


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


One line shell command to show the top referer of your WWW site

First show you the big monster:

egrep ‘HTTP/[0-9.]*” *[23][0-9][0-9]’ access.log | \
  egrep -iv ‘\.(js|css|jpg|jpeg|png|gif)[” ]’ | \
  sed -e ’s/^.*HTTP\/[0-9.]\+”\?[[:space:]]\+[0-9]\+[[:space:]]\+\(-\|[0-9]\+\)[[:space:]]\+”\?//i’ \
    -e ’s/”.*$//’ | \
  egrep -v ‘^-’ | egrep -v ‘blog\.xychen\.org’ | \
  sed -e ’s/^http:\/\/[^\/]*\(\.google\.\|google\.pchome\|google\.sina\).*q=\([^&]*\).*$/[Google]:\2/i’  \
    -e ’s/^http:\/\/[^\/]*search\.yahoo\..*[^a-z0-9]p=\([^&]*\).*$/[Yahoo]:\1/i’ \
    -e ’s/^http:\/\/[^\/]*\.soso\..*[^a-z0-9]w=\([^&]*\).*$/[SoSo]:\1/i’ \
    -e ’s/^http:\/\/[^\/]*\.baidu\..*[^a-z0-9]wd=\([^&]*\).*$/[Baidu]:\1/i’ \
    -e ’s/^http:\/\/[^\/]*\.hisearch\.hinet\..*[^a-z0-9]k=\([^&]*\).*$/[Hinet]:\1/i’ \
    -e ’s/=/=3D/g’ -e ’s/%\([0-9A-F][0-9A-F]\)/=\1/gi’ | recode /QP.. | \
  sort | uniq -c | sort -nr | head

Here is the output of My blog:

     15 [Google]:中文字型
     12 [Yahoo]:速成字碼表
      9 [Google]:Beryl
      9 [Google]:beryl
      8 http://planet.debian.org.hk/
      7 [Google]: scim
      6 [Google]:色弱
      6 [Google]:任性
      5 http://www2.shoutmix.com/?sidekick
      4 http://www2.cbox.ws/box/?boxid=1129960&boxtag=9722&sec=main

It show me that 15 visits came to my site while searching “中文字型” with Google. 12 visits from searching “速成字碼表” with Yahoo. You can write a program to analyze the referer entry in your WW site log to obtain the above result. But I just show you how to do that with one line shell command. Sure, it might better to rewrite it with Perl while the one line shell command involve too many utilities and become too complex. But I had already finish it, why not share it.

First, I would like to filter out those unsuccessful visits and requests that only getting the images/javascript code/stylesheets:

egrep 'HTTP/[0-9.]*” *[23][0-9][0-9]‘ access.log | \
  egrep -iv ‘\.(js|css|jpg|jpeg|png|gif)[” ]

Then I need to dig out the referer from the log. I try to filter out the characters before and after the referer:

sed -e 's/^.*HTTP\/[0-9.]\+"\?[[:space:]]\+[0-9]\+[[:space:]]\+\(-\|[0-9]\+\)[[:space:]]\+"\?//i' \
  -e 's/".*$//' access.log >referer.log

Sure I don’t want to count the referer from my own site and request without referer:

 egrep -v '^-' referer.log | egrep -v 'blog\.xychen\.org'

Up to now, you can already pipe the result to the old shell trick - “sort | uniq -c | sort -nr | head” to show the top 10. However, being a crazy guy, I would like to group the refer from search engine (This part is complex and should be better using perl to handle it):

sed -e 's/^http:\/\/[^\/]*\(\.google\.\|google\.pchome\|google\.sina\).*q=\([^&]*\).*$/[Google]:\2/i'  \
  -e 's/^http:\/\/[^\/]*search\.yahoo\..*[^a-z0-9]p=\([^&]*\).*$/[Yahoo]:\1/i' \
  -e 's/^http:\/\/[^\/]*\.soso\..*[^a-z0-9]w=\([^&]*\).*$/[SoSo]:\1/i' \
  -e 's/^http:\/\/[^\/]*\.baidu\..*[^a-z0-9]wd=\([^&]*\).*$/[Baidu]:\1/i' \
  -e 's/^http:\/\/[^\/]*\.hisearch\.hinet\..*[^a-z0-9]k=\([^&]*\).*$/[Hinet]:\1/i' referer.log

While I’m insane, I even don’t want see those “%2F%e6“. Pls give me the “real” characters.

  sed -e 's/=/=3D/g' -e 's/%\([0-9A-F][0-9A-F]\)/=\1/gi' | recode /QP.. referer.log

I convert the URI encoding to Quota-Printable and decode it with recode. OK, now, I can use the old shell magic to get the top 10. First I sort it to group the same referer.

sort referer.log

Kick out the repeated line, left one only and the number of it had repeat.

sort referer.log | uniq -c

Sort the result with no. of repeat:

sort referer.log | uniq -c | sort -nr

Show only the top 10:

sort referer.log | uniq -c | sort -nr | head

Known problem

  1. It only a quick trick. I haven’t optimize it yet. Any recommendation?
  2. Fail to show the search keyword with the correct encoding. Most search engine use UTF8 but CN engine love GB2312 and some TW engine seems still using stupid Big5. Ummm… I nearly forget the zh-autoconvert…. Oops, zh-autoconvert can’t distinguish the UTF8 with Big5 or GB2312.

Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


店鋪老闆們!請讓我們在iPhone登陸香港後可以容易點找到你們~~~~~~

Google Map最近終於有香港地圖了,雖然仍Search不到香港地方名,但看到一大堆香港街道路名,感覺很好。希望各香港的店鋪老闆快點到Google Map登記一下你的店鋪位置和其他資訊,讓我們在iPhone登陸香港時可以像Steve Jobs早幾天在MacWorld 2007 Keynote上般用iPhone隨時可以用Google Map找到周圍同類型的店鋪並致電說:「噢,對不起!打錯電話!」


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Convert Video to play on Nokia Phone with Ffmpeg

You can get the latest full (Chinese) version of the following document from OSWikiHK.

Install ffmpeg

Add following line in /etc/apt/sources.list :

deb ftp://ftp.hk.debian.org/unofficial/debian-multimedia/ sid main

Update the data of repositories and install ffmpeg:

apt-get update
apt-get install ffmpeg

Convert to 3GP format

ffmpeg -i U2d–Jes5AU.flv -y -b 400 -s cif -r 25 -acodec amr_wb -ab 50 -ac 1 -ar 16000 U2d–Jes5AU.3gp
  • i: Video file to be converted
  • s: The resolution of the output video, the syntax is “widthxheight“. cif means 320×240
  • b: The video bitrate of the output video. (in bit/sec)
  • r: The frame per second (fps) of the output video.
  • acodec: The audio codec of the output video
  • ab: The audio bitrate of the output video. (in bit/sec)
  • ac: The number of audio channel of the output video. 1 means mono
  • ar: The frequency of the output video. (in Hz)

Related Pages


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


本週新聞


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Based on Fluidity© 1998-2007 Roy Hiu-yeung Chan