2010年6月5日 星期六

archlinux and kdemod

I try to change to use ArchLinux. Documents of ArchLinx web are very helpful. I just follow the instruction and install it in my new laptop. Well...Almost. Actually I have problem in start kdemode. It told "kstartupconfig4 miss or fail......" and the result I google for it is that's related to gcc version. But I had installed newest gcc and it still have problem. If you are looking for step by step instruction, go to ArchLiux's website.

I give up to install kdemod and remove it in the end. But I found the pacman package system is very impressive. I note that the disk size usage before install and after remove are almost the same. That means pacman did remove kdemod and its dependency package clearly. Again, It's very impressive.

But the ArchLinux default deriver for my atheros AR928x seems have same problem with unbuntu 10.04. The network speed is terrible and I have no such problem in windows 7. It take almost two hours to download kdemod and I don't want do it again. I don't know how to fix it yet. But I was tired with it.

So I use awesome now and it just works fine. I will install kde (kdemod? No. Thanks.) after I fix network issue. Now... Time to bed.

[update 2010/06/07]
I don't know why the network interface doesn't slow after I install kde although I know it's not related to kde. Anyway, ArchLinux is very impressive and I like it. GoodBye~ Ubuntu.

2010年4月21日 星期三

個人使用的Tiddlywiki server版設定

因為現在改用Chrome不用firefox,所以在tiddlywiki存檔需要另外設定。基本上最方便的方式就是安裝jre,再配合一個存檔的jar就可以了。但是公司的電腦沒有開admin的權限,我也不想再請IT只為了這個裝jre,所以改試試看Tiddlywiki有什麼其他的方法。

目標是能從server上開啟Tiddlywiki再回存,因為是個人使用所以,權限比較不重要,利用firewall或server設定成只能local access就可以。也因為只是個人使用,所以希望是lightweight server。

Tiddily有一些server版,但是都需要mysql。加了mysql怎樣都lightweight不起來。所以後來使用了最方便的upload plugin。

所以結果是Tiddlywiki的upload plugin+store.php+php+mongoose web server。
Mongoose 是我所以找到能support php裡最lightweight的web server,只有56k的大小。也有ACL的功能,不需動firewall。
走cgi的php只需要php-cgi.exe+php5ts.dll+php.ini也很簡單,約5mb。

但是一開始還是有些不方便的地方。
第一個問題是會有個cmd的視窗,這可以從網路上找到利用com啟動可以達成,連vb的script也有,所以搞定。
第二個問題是upload plugin的upload需要密碼,每次都要重打,滿煩人的。這可以修改配合使用的store.php,或著是在Tiddlywiki裡設成預設參數Peristent Option。就不需要一直填密碼。

這樣就可以像在只用local file一樣,直接開,改完直接存。除了Tiddlywiki以外的檔案總共只要幾mb,不管是備份或是放到flash disk都很方便。這樣還有另外一個好處是自己的Tiddlywiki想用那個版本都沒問題,自行升級也沒問題,不受server限制,直接把Tiddlywiki拿來另外用也沒問題。

雖然不是最完美的solution,但是對我來說是最好的solution。

2010年3月23日 星期二

個人對Mercurial和Git的不同感想

在熟悉了Git後,又找了點時間學了Mercurial。之前準備要學習Git時,就找了很多資料。Mercurial和Git的各種比較當然更是不能少,所以對Mercurial也很有興趣。

Mercurial和Git實際儲存的方式很類似,所以熟悉了Git再看來Mercurial覺得很多觀念都很容易理解。不過有趣的是,因為Mercurial和Git使用了類似的資料儲存,我們可以說Mercurial和Git是用不同的觀點來操作同一份資料,因些產了大異其趣的兩種VCS(這裡說大異其趣也是有點誇大,因為對使用觀念還是很相近)。網路上Google這個Git和Mercurial分析(中文版)雖然有點舊,但還是很不錯。

就我的觀點來說,其實Mercurial其實比較算是VCS。Git連History可以改的功能讓我不太能接受,但是rebase又實在很實用。在我熟悉了Git之後,覺得Git其實比較像是Revision Exchange System,很多的功能都是為了讓contributer能夠很方便的把update送給maintainer,而maintainer也能最方便的把contributer的update merge進maintainer的source。也為了如此Git幾乎把把有的能力都開放給user,但也就是開放的太多太強大,也很容易讓user把repository搞壞。Pro Git裡也強調己經publish的commit最好不好再change或刪除,包含有些功能的本質就是rewrite commit。

其實單就功能性和理念上來說,我是比較喜歡Mercurial的一些特點,包括commit history不能改變,比較平緩的學習曲線,使用跨平台的Python,user容易寫自己的extension,還有對http的高度整合。

但是以我現在的使用環境,最需要的是local branch、history rewrite、rebase。所以我現在使用Git。還有另一個理由是我沒有root的權限,只要把Git build在家目錄裡就可以,相對來說較方便。

Git讓我覺得最不方便的就是在架設server的部分,Mercurial在server部分功能也相對比較方便。也剛我現在只是個人使用,沒使用到server的部分,但是在可預的未來還是需要的。

其實以Mercurial和Git底層的高度相似度,應該不太有因為架構上的差異而有一種能提供而另一種無法做到的功能。我想多半是因為理念的不同而不提供(或是認為不應該提供)。能互相參考,把好用的功能互相補強,當然是最好不過。最好是還可而互通,像對svn一樣的支援就最好不過了。不過我想這應該是我想太多了。:)

之前看到Git支援svn,本來以為可以靠git svn完整支援,把git當svn client,現在發現實際使用上除了有點地方要小心以外,好像dcommit也還有一點不穩定。這樣讓使用起Git,也無法發揮Git的強大。
Mercurial目前對svn的支援度我還不清楚,不過我想我可以以Python當標杆,Python在等hgsubversion的完成度也要轉換到Mercurial。當Python轉到Mercurial後就意味著hbsubversion就到達一定的可用度了。

PS:Mercurial的default package也包括了一些很重要但預設是不開啟的extension,像rebase及能達到local branch的bookmark。這讓我更喜歡這種extension的設計,讓你在嚴謹管理中,也能有一些做例外的能力。而Git也正在討論對http的支援。大家都朝正面的道路前進。

--update 2011/0905
Git在1.7之後就支援smart http讓使用http push或pull時更有效率

Git的local branch果然好用

前一陣子將Pro Git讀完了,開始使用Git來輔助在公司的工作。Git的local branch真是好用。在公司使用公司的VCS,要達到一定的完整性和正確性後才能check in,在還沒check in前自己做不同測試也很不方便,老是要把檔案搬來搬去備份來備去,還要自己做merge。當要同時處理不同功能時就更辛苦了。改用Git後,這些事都方便很多。只是Git實在是也不算好學。網路上有許多的文章,很多人簡介,但是我覺那些對初學者來說其實還是不太夠。雖然最重要的部分都不會少,但是對初學者來說反而更霧裡看花。我一開始看也是先看別人的介紹,但是總覺無法擋掌握Git。最後還是看完了Pro Git之後才覺得真正知道如何使用。

所以現在就變成從公司的VCS check out到自己的local後再使用Git,在不同的local branch做不同的測試,甚至是同時做不同的功能。最後再最後的結果check in進公司。有點像git svn的做法,但是是手動版本。而且公司也不是用svn,git svn幫不上忙就是了。

而且有了Git的rebase和輕鬆merge能力,同時開的local branch最後很也容易就能和公司的VCS的最新版本接軌。除了有時會忘記現在build出來的binary到底是那個branch以外都很方便,我想就大概是太方便的後果吧。

2009年11月11日 星期三

c++ self testing

在網路上看到的幾個c++問題,個人覺得有一些還有點難,不過多懂點總是好的。

1. 什麼是virtual inheritance? 請舉例說明。
2. 什麼是virtual function? 什麼是pure virtual function?
3. pointer與reference的差別?
4. 什麼是static_cast, dynamic_cast, reinterpret_cast, const_cast? 他們之間的差異是?
5. run-time polymorphism與compile-time polymorphism的差異? 分別要如何達成?
6. 什麼是explicit constructor?
7. 什麼是template disambiguator? 請舉出例子。
8. 有沒有聽過boost or loki? 有沒有用過boost or loki? 請舉出例子。
9. 有沒有聽過CRTP (Curiously Recurring Template Pattern)與PBCP (Parametric Base Class Pattern)? 請寫出兩者的sample code並比較它們的差異。
10. 請問在C++中, struct與class最大的差異是?
11. 請問什麼是template partial specialization?
12. 什麼是type traits? 什麼是tag dispatch? 請以簡單的程式碼說明之。
13. 有聽過template metaprogramming嗎? 請舉例解釋之。
14. 什麼是SFINAE? 請解釋之。
15. 為什麼常常看到template的程式碼寫在hpp裡,而不是放在cpp檔中?
16. 什麼是functor? 用過(或寫過)任何的functor library嗎? 例如boost function/bind或是fast delegate?
17. std::list與std::vector的差異是什麼? std::map裡的資料結構是如何實作的?
18. 何謂copy constructor? 如何阻止一個class被copy?
19. virtual function是如何實作的? 什麼是vtbl?
20. 在template的宣告裡,typename與class的差異是? 為什麼有typename這個keyword?
21. 什麼是forward declaration?
22. 如何解決header file mutual inclusion的問題?
23. 什麼是templated class? 什麼是class template?
24. 什麼是wchar_t? 有沒有用過std::locale跟std::codecvt?
25. 用過那些c++ compiler? 有沒有聽過c++0x? 試舉出c++0x的新功能。

2009年11月8日 星期日

看完韓劇貝多芬病毒了

其實我是到最近電視又在重播時才看到,以前聽過有這個電視但是因為是韓劇,我心裡有刻版印象,不怎麼喜歡韓劇,所以沒想要看。但這次看到重播時,不知怎的,竟然想看看好了,現在回想那時開始看的時候可能是太閒了。

貝多芬病毒讓我第一個連想到的是日劇的交響情人夢。同樣是以古典音樂為連接劇情的要素,略有不同的是交響情人夢的角色群是一群將畢業的音樂系學生,而貝多芬病毒是一群業餘的音樂愛好者。

前半還不錯,劇情在大家的音樂路上打轉,也為後面的劇情鋪陳,但是過了前半之後劇情的重心開始轉向韓劇經典的三角戀和人生重變上,這我就開始有點看不下去,因為開始變成愛情劇,音樂的劇情變成是連接事件的跑龍套,讓我滿失望的。我一邊看一邊開始想到之前陪老婆看的另一個韓劇"On Air",裡面描述的連續劇製作方式要每天看每個分鐘的收視率來決定後面的劇情要怎麼修改(或是說由收視率而產生的改劇情壓力),還要因應不同的主角受歡迎的程度改劇情,讓收視好的人出現多一點,收視率才能高一點,那劇情怎麼辦呢?只好叫編劇去坳囉。這就像我們常聽到的台灣本士劇的拍法,從一開始的劇情主題到後面都不一樣,中間可能還換了好幾個不同的主題,還能對時間快速做出回應。如果劇情是一篇文章,應該會被國文老師從窗戶丟出去吧。我嚴重懷疑貝多芬病毒也是這樣拍的。拍到後面發現還是要回到三角戀啊,得什麼重病、生父大逆轉啊這種灑狗血收視率才會好。所以後半部分我有點看不下去。到後面的音樂成分都快變成只是角色設定,連串場龍套都稱不上了。所以說,雖然我無法確定他是看收視率而改劇本變成狗血劇還是鋪陳的比較好的狗血劇,對我來說都差不多了。話又說回來,如果一開始就是要做狗血劇還能讓前半部保持不灑狗血的劇本應該也不多吧。都決定要灑狗血還有什麼好客氣的。

和交響情人夢比起來,交響情人夢很清楚的刻畫音樂系學生的徬徨和憂心。不過本質上來說交響情人夢的原著是少女漫畫,重點不在於深入的刻畫或真實的呈現,但是搞笑的方式也表達到了一部分苦澀的現實。

貝多芬病毒也試圖表達學音樂的人在現實生活和在對音樂的熱情的衝突。像劇中戲份也滿多的一個double base手,在太太很支持他的音樂熱情下,他還是要為了現實生活降低對音樂的投入。還有一個這應該就是拉cello的大嬸,以前先生就是愛看他拉cello,但在婚後為了家庭,一直壓抑自己,包括對音樂的夢想。這大概就是交響情人夢的角色再過十年後的劇情了吧。

整個劇情中最能打動我的一句話就是女主角說"為什麼有人這麼有才華卻二十幾年都沒感覺,有的人這麼的有熱情卻沒有才華"(大意如此,記不得原台詞)。這不只可用在音樂上,簡直就道盡了人生的苦楚。很清楚的知道自己的夢想自己的熱情是自己所無法達成的,認清事實那瞬間的心碎真是無法形容。

所以像我這種隨便玩玩隨便合奏就能得到快樂的人,應該也是一種幸福吧。

整體而言,我覺得前半比後半好看,金明敏演的毒舌指揮家演的很不錯,很多小地方都能表達出那種感覺。所以真正的結論是,李智雅很正。:D

2009年10月19日 星期一

電影 美味關係

今天跑去看了美味關係這電影。看完之後第一個感覺還是中文片名實在取的不怎麼樣。雖然我是被中文片名吸引到才注意到這部電影。但是他讓我聯想到另一個偶像劇,事實上,這兩個是完全沒關係的。就事論事來說,這個片名的意義其實在某種程度上有表達出電影的主線,但是我猜應該也是台灣片商刻意選這個己經有偶像劇用過的片名想要引吸人的好奇。否則絕對可以有比"美味"這兩個字更好的詞。畢竟這個片子說的並不是美食本身,而是製作美食的過程。但是話說回頭,我還是被這個名字給引吸了,片商也算是成功了。對片商來說最重要就是引吸人進電影院去看嘛。

烹飪真的是滿好玩的一件事,除了在烹飪的過程中期待美食以外,看著自己完成的成品也是非常的有成就感和滿足感。雖然我不像電影裡拿著半正式的食譜(照道理說,電影裡所用的食譜是給非專業廚師,應該也有某種程度的簡化,尤其是技術上的簡化),最常玩的還是懶人食譜之類連味道都會簡化的食譜,但是還是能享受到烹飪的樂趣。當然還有體重的增加。

另外一提,之所以常用懶人食譜其實倒不是怕麻煩不動手,烹飪最大的樂趣可是在過程不在結果,然而每次買一堆食材,特別是調味料,買了一整瓶永遠用不完,最後的下場常是過期出清。浪費錢也浪費食物。就只好老是找食材多重複的笨蛋食譜了。

電影裡還表現到了一件事,不過我覺得我應該是職業病才會注意到這種事。電影裡Julie把挑戰大師食譜(至少也能算是正式的廚師,畢竟從藍帶烹飪藝術學院專業廚師的課程畢業了)的過程寫在blog上,在網路上受到歡迎,進而有出版社願意幫他出書,tv show想邀請他,最後還拍成了這部電影。這都是現在成功的部落客的成功模式。事實上這個電影也是從真人真事改編,也真的有(Mastering the Art of French Cooking)這本書唷。但這種成功的背後是要有專注的主題,頻繁且持續的更新,才能引吸網友的注意,而且現在可能還要再加上跟網友的互動,這部分電影倒是沒特別著墨,但是看到不停的數有幾個comment,這還滿寫實的:) 。片中要在365天做過524道菜,平均每天要做一至二道菜。每次都有更新的話,最慢二天就會有一次的更新。並不是一時興起開一個blog,零零星星的放幾個文章就想要成名出書。這部分和網路的現實十分接近,我不知道是是真人真事所反應的事實還是編劇有注意到這種小地方,絕對是值得稱許。

而且頻繁並不是最難的部分,每個人都會突然對什麼東西有興趣,這時有大量的熱情就能頻繁的更新,但是最難的是要持續這樣的熱情持續頻繁更新,所以電影裡也有說到這部分,梅格萊恩一開始也很沒信心,說自己老是半途而廢,說的不只是他,也是所有人。所以也許我們也要學學電影裡,給自己期限,給自己壓力。

附帶一提,電影裡的blog用的也是blogspot,notebook用vaio,片中有不少置入性行銷,不過這在近年的好萊屋己經不算什麼了。