Gtk 裡的 trayicon:StatusIcon

Windows 的 Tray Icon 基本上就是對應到 Gtk 的 StatusIcon,用法蠻簡單的,在繼承自Gtk.Window的類別裡增加一個成員:Gtk.StatusIcon m_icon,然後在 constructor 裡加入:

		m_icon = new Gtk.StatusIcon();
m_icon.File = "./your_icon.png";
m_icon.PopupMenu += new PopupMenuHandler( delegate( object o, PopupMenuArgs args ) {
Console.WriteLine( "click" );
} );

這樣就可以動了。

當在 Icon 按下右鍵時,就會觸發 PopupMenu 事件。

電影流水帳(2010/3/13~2010/3/25)

到底是一個人好呢?還是有人陪好?這真的很難說。
我選擇了有人陪,所以我結婚了。結婚以後,兩人吵架生悶氣的時候,常常會想為什麼會搬石頭砸自己的腳,一個人好好的,幹嘛找另外一個人生氣。後來慢慢的,想法也有所改變,現在會看的比較開了。
Up in the Air 的最後幾幕對失業者的訪談,相當的感性,他們都表示了自己在失業時,最大的支持是來自己的家庭,如果沒有家庭的支持,他們可能會走不下去。這算是回應這部電影想表達的主旨吧~

  • Sherlock Holmes(IMDB, Wikipedia),中譯:福爾摩斯。這部片在某種程度上來說,的確顛覆了很多人對福爾摩斯的想像。小說帶給我們的,往往都是推理的那一面,但是能有那麼強的活動力去進行那麼多探案,這表示他除了推理行以外,身體跟運動神經應該也不錯,所以我覺得基本上還是相當符合的。另外外國人在教育上的作法其實跟孔子所提的六藝相當接近,也就是除了讀書以外,對於其他方面也相當的注重,自然很能打囉。這部片子除了這點跟一般人的期待不是很相同之外,倒是不脫一般偵探推理片的路,一開始先鋪梗,最後再來個大解謎,片尾留下伏筆,帶出會有第二集的訊息,看來是可以期待囉。我個人覺得還不錯。
  • 鬪茶(IMDB, Wikipedia)。片頭一開始的動畫,把故事帶的很好,讓我開始期待後面的鋪陳,不過很遺憾,可能是因為鬥茶本身就是屬於比較文靜的活動,後面劇情跟演員的演出一整個走調。Wikipedia裡把劇情交代了上半,下半劇情簡略來說,就是大家都碰到一起,母黑金茶被楊搶走,然後美希子說要來鬥茶,莫名其妙地,母黑金茶從楊手上回到如花手裡,美希子老爸用他在老婆掛掉前做的綠茶,楊用公黑金茶展開一場鬥茶。金士潔跟曾志偉出來鋪下台的路,說鬥茶其實是面對自己,就這樣,三人分別面對了自己之後,最後不了了之盡釋前嫌,楊跟如花重回舊好,美希子跟重新振作的老爸則回到日本。這部片真的莫名其妙。
  • Up in the Air(IMDB, Wikipedia),中譯:型男飛行日誌。我覺得很好看的片子,從看完到騎車回家,心情都還一直在戲裡,這部片堪稱是Georage兄的代表作了吧~劇情基本上跟你找到的簡介差不多,但結局會讓你覺得惆悵與一絲絲的失落,會讓你去思考Ryan這樣是好還是不好。除了Georage精彩的表現之外,飾演Alex的Vera Farmiga的幫襯也非常亮眼,這樣的熟女不管是哪個男人都會心動的吧,能讓人覺得安心,可以玩,又不依賴。如果不是她,結局不會是這麼的惆悵跟失落。另外,看起來是小妹妹的Anna Kendrick(才25歲!)表現也不錯。值得一看的電影。

mono 與 ssl

昨天在試 dotplurk 時,遇到了這個錯誤: unhandled Exception: System.Net.WebException: Error getting response stream (Trust failure): TrustFailure 。
循線追查,根據這篇:UsingTrustedRootsRespectfully,首先認為可能是 dotplurk 沒有做遇到未知憑證的處理。但是後來想想不對,因為 Browser 並沒有報遇到未知憑證的錯誤。
再繼續找,才又在這篇FAQ: Security,找到正解!因為 Mono 預設是不信任所有憑證的!!

That's probably because you do not trust the site you are connecting to. Note that a default installation of Mono doesn't trust anyone! 

那麼該怎麼解決呢?我後來是根據FAQ: Security所提供的第3種方法:以 mozroots.exe 去安裝 Mozilla 所有的根憑證就解決了。
微軟的 .Net famework 預設似乎是使用 IE 的,所以除非遇到未知的憑證,否則是不會遇到這種問題的。

在編譯時期判定是mono或microsoft.net

Mono 提供的 FAQ: Technical有提到如何動態判定版本與環境,但我找了好多文件都沒有提到在編譯時期是否有預設的 symbol 可用來判定。
看來只能在用 gmcs 編譯時加入 /d:MONO 了,這樣我就能在程式裡用 #if MONO 或 #if !MONO 來判定了。

夢境-台東

這是剛剛的夢,不趕緊寫下來,恐怕再過一會就忘了…
我和太座正好去台東找林兄,在他那兒做客。但是台東發生了大水。這邊有點遺忘了,我好像搭了一個奇怪的東西,很快地回到飯店。在飯店往外看,發現很多飛機被惡水衝成兩半在河裡翻滾,有人騎著機車也在河裡試著要上岸。這水實在太大,原本打算要去機場搭飛機回台北的,如果這麼多飛機被衝成兩半,那麼看來飛機是不能坐了。當下就跟太座說,你先跟林兄到高雄,再搭高鐵回去吧~等小孩醒了,我再趕過去。於是就開始準備。過一會,林兄的叔叔打電話來,說他到香港了,平安無事。然後林兄跟我交代了一下他叔叔的事情。小孩醒了,太座也正準備要走,所以我也趕緊打包好東西,帶著小孩要一起走。可是要怎麼到台東呢?這時候我說:搭捷運….
好吧,大致的記憶就到這裡…

Port Mini c# Lab to mono

在 Linux mono 平台上缺少了一個輕量級的開發工具,而 snippetcompiler 又沒有 open source,所以腦筋就動到 黑暗執行緒 開發的 Mini C# Lab 上。

下載原始碼以後,先試著用 MonoDevelop 開啟,但卻因為路徑與檔名問題失敗,Linux 使用的路徑分隔字元與 Windows 不同,對大小寫檔名也比較嚴格,調整以後,就能開啟了。

接著去編譯,稍微調整 References 以後,也可以順利編譯。

最後要執行了,卻出現下面的錯誤:

Unhandled Exception: System.EntryPointNotFoundException: HideCaret
at (wrapper managed-to-native) ICSharpCode.TextEditor.Caret:HideCaret (intptr)
at ICSharpCode.TextEditor.Caret.DisposeCaret () [0x00000]
at ICSharpCode.TextEditor.Caret.RecreateCaret () [0x00000]
at ICSharpCode.TextEditor.TextArea.OptionsChanged () [0x00000]
at ICSharpCode.TextEditor.TextArea..ctor (ICSharpCode.TextEditor.TextEditorControl motherTextEditorControl, ICSharpCode.TextEditor.TextAreaControl motherTextAreaControl) [0x00000]
at (wrapper remoting-invoke-with-check) ICSharpCode.TextEditor.TextArea:.ctor (ICSharpCode.TextEditor.TextEditorControl,ICSharpCode.TextEditor.TextAreaControl)
at ICSharpCode.TextEditor.TextAreaControl..ctor (ICSharpCode.TextEditor.TextEditorControl motherTextEditorControl) [0x00000]
at (wrapper remoting-invoke-with-check) ICSharpCode.TextEditor.TextAreaControl:.ctor (ICSharpCode.TextEditor.TextEditorControl)
at ICSharpCode.TextEditor.TextEditorControl..ctor () [0x00000]
at (wrapper remoting-invoke-with-check) ICSharpCode.TextEditor.TextEditorControl:.ctor ()
at MiniCSharpLab.Form1.InitializeComponent () [0x00000]
at MiniCSharpLab.Form1..ctor () [0x00000]
at (wrapper remoting-invoke-with-check) MiniCSharpLab.Form1:.ctor ()
at MiniCSharpLab.Program.Main (System.String[] args) [0x00000]

問題應該就出在 ICSharpCode.TextEditor.dll 裡,有空再用 MoMA 來分析或挖 ICSharpCode.TextEditor.dll 看看好了。

FileSystemWalker

用 foreach 以遞迴方式去找出所有檔案根目錄,順便練習 yield。

class FileSystemWalker
{
private string _path = "";
public FileSystemWalker(string path)
{
_path = path;
}
public IEnumerable<FileSystemInfo> Walk()
{
foreach( string d in Directory.GetDirectories( _path ) )
{
DirectoryInfo di = new DirectoryInfo( d );
yield return di;
FileSystemWalker walker = new FileSystemWalker(Path.Combine(_path, d));
foreach (FileSystemInfo fsi in walker.Walk())
yield return fsi;
}
foreach (string f in Directory.GetFiles( _path ) )
{
FileInfo fi = new FileInfo(f);
yield return fi;
}
}
}
class Program
{
static void Main(string[] args)
{
foreach(FileSystemInfo fsi in new FileSystemWalker(@"f:").Walk())
{
if( fsi.Attributes == FileAttributes.Directory )
Console.WriteLine( "[D]{0}", fsi.FullName );
else
Console.WriteLine("[F]{0}", fsi.FullName);
}
Console.ReadLine();
}
}

電影流水帳(2010/3/4~2010/3/12)

我很喜歡破碎的擁抱的這張海報,但是很可惜,官方網站沒有提供桌布。

  • Broken Embraces(IMDB, Wikipedia),中譯:破碎的擁抱。很好看的劇情片,這是作家 Harry 與 Lena 的愛情故事。Harry 在還沒瞎之前是個導演加編劇,他遇上了想成為女演員的富翁(Martel)女人 Lena,於是開始熱戀。但是 Martel 不放手,輾轉之後,兩人私奔。Martel 想逼兩人出來,把未完成的電影剪得亂七八糟,Harry跟Lena回去的路上發生了車禍,天人永隔,Harry因此失明。隔了十數年後,因為 Martel 的兒子來找他,才讓他把這件事情告訴他的兒子。
  • All about Steve(IMDB, Wikipedia),中譯:求愛女王。還可以看的喜劇片,躲在自己世界裡的填字遊戲作家遇到了很帥的攝影記者Steve,昏了頭,寫了關於Steve的填字遊戲,結果被Fire。然後開始展開追逐Steve的行動,追逐的過程裡,發生了許多的事情,讓她認知到其實Steve並不適合自己。

ConfigParser/ConfigObj

前一陣子心血來潮,做了一個很簡單的 subversion 管理網站,用來設定 htpasswd 跟 svnmailer 的設定。原本想說 svnmailer 的設定正好可以用 python 內建的 ConfigParser 來做,想不到用來讀設定是可以,但遇到寫的時候,就出錯了。因為寫的時候,ConfigParser 會因為 Hash 的特性,而無法依照原來的順序寫回去。沒辦法,只能摸摸鼻子,找別的 library 來做,最後是找到 ConfigObj 來做,幸好方法也不難,依照官方文件依樣畫葫蘆就行了。

電影流水帳(2010/2/23~2010/3/3)

拖了好久才寫這篇,看片的速度也變慢許多。

  • Jennifer’s Body(IMDB, Wikipedia)。這部片子沒有引進台灣上映。這部片,坦白說不好看。簡單說,Megan Fox在被樂團進行黑暗儀式之後,就變成了惡魔,開始吃人肉,女主角知道真相之後,就決定為民除害,就這樣。既不是很恐怖,該露的也沒什麼露。
  • Old Dogs(IMDB, Wikipedia),中譯:歐吉桑卡好。Dan 在7年前因為離婚,Charlies為了讓他轉換心情,就帶他去狂歡。狂歡時邂逅了兩個女人,Dan因此衝動地跟Vicki再次結婚,但旋即離婚。7年後,Vicki 因為要入獄服刑兩個星期,而好友又受傷,所以只好告訴Dan真相,說兩個小孩是他的,並請他照顧。於是發生了許多有趣又搞笑的事情,最後當然是皆大歡喜,不僅顧了親情,也顧了事業。還不錯看的片,蠻搞笑的,雖然劇情不是非常連貫,但瑕不掩瑜。