最近同事玩起 Linux,試完了許多套之後,他選擇了 OpenSUSE,介面看來不錯。
但我實在是對 OpenSUSE 的更新與介面不熟,所以就利用 VMware 建了個 Virtual Machine,裝上 OpenSUSE 試試看。
安裝並不順利,最後 Virtual machine 的 type 是改成了 Other Linux,而非預設提供的 SuSE Linux。
完成安裝以後,也開不起來,boot option 參考 Fail safe,修改為 apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 才順利開機成功。
OpenSUSE 使用 Yast2 在管理套件,從網路上諸多文章看來,可以改用 smart / yum / zypper …等等。
但我最後還是用 Yast2。
官方提供了Additional YaST Package Repositories,從這兒你可以找到許多其他的來源。
黑眼珠這兒也提供了他自己維護的來源:黑眼珠的套件庫–http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/
那麼該怎麼加入這些來源呢?答案是用 installation_sources 指令,舉例來說,如果要加入黑眼珠的套件庫的話:
#installation_sources -a http://software.opensuse.org/download/home:/swyear/openSUSE_10.2/
這樣就行了。
最後,就利用 YaST 來進行線上更新即可。
如果你跟我一樣還是偏愛指令列的話,改用 zypper 吧~
#zypper search package_name
#zypper install package_name
#zypper update
以 zypper 替代 installation_sources 的話,可用
#zypper service-add repository_url
更多的用法可以看
#zypper –help
參考資料:
電影流水帳(2007/3/26~2007/4/8)
四天的假期,又消化了不少片子。
- 武林聖火令,一個情節落於俗套的故事,不過看著這些明星年輕的樣子,蠻有趣的。
- Rules of engagement,火線衝突,蠻精彩的片子,最後有些情節因為兒子睡醒了,幫他換尿片、餵奶而miss 了。
- Million dollar baby,登峰造擊,片名翻的不好。元旦去十大書坊買的便宜正版DVD,拖到現在才看。情節相當感人,一個女主角為了自己理想努力的故事,最後的結局令人哀傷,值得一看的好電影。不管怎麼樣,人有個可以努力的目標而努力,都是值得被鼓勵的。
- 龍眼粥,一個老套的故事,看不到一半,你大概就可以預測到結局,不過整個感覺拍的還不錯。
- 50 first dates,我的失憶女友,香港有翻拍過,但是整個感覺不太相同。還不錯看,老樣子,我還是只看了中間一部分。
- The PACIFIER,限制級保母,也是一個翻的不好的片名。笑點不夠有力,隨便看看就好。片子的最後,阿詮大便了,因此錯過精彩的情節。
- Charlie and the Chocolate Factory,巧克力冒險工廠,童話片,感覺其實很像是剪刀手愛德華,不錯的片子。我蠻喜歡最後 Willy Wonka 老爸幫他兒子檢查牙齒那段。
Mono Cecil
這篇文章:Using Cecil from IronPython再次勾起我去年初看到 Mono.Cecil 時的回憶。
什麼是Mono.Cecil??以下翻譯自Nauman Leghari’s Blog : Fun with IronPython and Cecil:
“Cecil 是由 Jb Evain (http://evain.net/blog/)所撰寫的類別庫,可以用來產生或注射自訂程序到以ECMA CIL撰寫的程序和類別庫。它提供了對泛型的完整支援以及對除錯資訊的部份支援。簡單的說好了,用了 Cecil,你可以載入已經存在的組件,瀏覽裡面所有的型別,即時修改它們並保存修改過的組件。”
看起來是個很神奇的東西吧~這兩篇文章介紹了如何以IronPython去使用Cecil,是很不錯的指引文章:
- Nauman Leghari’s Blog : Fun with IronPython and Cecil
- Nauman Leghari’s Blog : Fun with IronPython and Cecil (Part II)
此外也可以參考官方提供的Cecil FAQ。
如何存取SQLite
如果你還在找SQLite的 ADO.Net driver 的話,別找了。
因為Mono就提供了一個:SQLite at Mono。
不管你是在 Windows 或是在 Linux 上,也不管你是用 Microsoft .Net Framework 或是 Mono,都可以直接拿他的 Mono.Data.SqliteClient.dll 來使用~
使用方法也很簡單:
- 連接字串:”URI=file:/path/to/file,version=3″。URI指定檔案位置,version則是指定SQLite database版本。
- 從使用範例可以看出,跟 .Net framework 提供的 ADO.Net driver 用法並沒有什麼差別(範例摘錄自SQLite at Mono):
using System; using System.Data; using Mono.Data.SqliteClient; public class Test { public static void Main(string[] args) { string connectionString = "URI=file:SqliteTest.db"; IDbConnection dbcon; dbcon = (IDbConnection) new SqliteConnection(connectionString); dbcon.Open(); IDbCommand dbcmd = dbcon.CreateCommand(); // requires a table to be created named employee // with columns firstname and lastname // such as, // CREATE TABLE employee ( // firstname varchar(32), // lastname varchar(32)); string sql = "SELECT firstname, lastname " + "FROM employee"; dbcmd.CommandText = sql; IDataReader reader = dbcmd.ExecuteReader(); while(reader.Read()) { string FirstName = reader.GetString (0); string LastName = reader.GetString (1); Console.WriteLine("Name: " + FirstName + " " + LastName); } // clean up reader.Close(); reader = null; dbcmd.Dispose(); dbcmd = null; dbcon.Close(); dbcon = null; } }
讀取網頁(4)
更快的方法,就是直接利用 .Net 2.0 提供的 WebBrowser 控制項。
不過,如果用這方法,有兩個缺點:
- .Net 1.1 不適用,因為 class library 沒提供。
- 當直接使用 DocumentText 屬性的時候,WebBrowser 沒有轉換編碼,而是直接以 ascii 傳回。
- 必須是 Windows form 應用程式
那麼,我們要怎麼自行轉換編碼呢?
首先利用 Reflector 來反組譯一下 DocumentText 屬性,這下就可以很清楚看到他是以 StreamReader 去讀取 DocumentStream。
所以當我們確信網頁的編碼是 UTF-8 時,就可以這麼寫了:
Stream documentStream = webBrowser1.DocumentStream; if (documentStream == null) return ""; StreamReader reader = new StreamReader(documentStream, Encoding.UTF8); documentStream.Position = 0; string documentText = reader.ReadToEnd();
電影流水帳(2007/3/1~2007/3/25)
- 金雞2,官方網址已經消失~還不錯的故事,與張學友對演的那段,很令人唏噓~
- Zathura,雖說是野蠻遊戲2,但劇情跟Jumanji一點相干都沒有,唯一相同的是遊戲演變成真實的情節。這部片還不錯看~
- Just like heaven,中文片名是出竅情人,昨天晚上在 HBO 看到的。劇情很簡單,導演拍得很不錯,相當嚴謹,該交代的都交代了,也不忘加上一些有趣的情節,不錯看。
- The Princess Diaries 2: Royal Engagement,麻雀變公主2,第四台重播好幾次了,昨天又再看了一次…
- PRISON BREAK的第二季15、16
- Stand by Me (1986),翻拍自史蒂芬金的短篇小說集-四季奇譚,有忠於原位。
- King Arthur,只看了中間約二十幾分鐘而已,不算是看完~
- Hart’s War,原本以為是講種族衝突,在法庭進行攻防戰的故事,但最後急轉直下,完全不是這麼一回事,最後下的結論是榮譽~有點不知所云的感覺。
- 黑狗來了,很有趣的故事,值得一看的電影。
319鄉村兒童藝術工程在聖心
張大魯的攝情布拉格這個部落格是我沒事會去逛逛的地方,裡面的照片不僅溫馨,不時還穿插一些令人莞爾發笑的照片~
更令人佩服的是,大魯兄還經常幫聖心教養院作公益活動。
最近他貼出一篇文章:319鄉村兒童藝術工程….在聖心(日日更新金額),希望可以在下星期一前募集到 35 萬元來支持紙風車劇團巡迴公演。
除了捐錢以外,當然也要幫他廣告一下。
已經有人在幫忙宣傳啦,像是蔡依林的部落格…
樂生
最早是在我妹這兒看到。
總之,請支持樂生!也許樂生無法被保留,但是這次的事件可以揭露出政府處事的瑕疵,並要求他們改進。
事實上,這樣的事情不只是在樂生,還發生在許許多多的地方,如果你忽略了,下次這種事情可能就發生在你身邊!!
這一系列文章可以說是懶人包了:
- 中時部落格-新聞頭皮屑 世界枕頭痕-你我不願面對樂生,因為真相太殘酷
- <font size=3><font size=12>柯</font>爾克孜姑娘</font> – 「樂生就是活的文化資產 文建會立刻指定古蹟」
- 人行道 | sideway: 樂生危機 (1):僅獻微忱
- 人行道 | sideway: 樂生危機(2):公開討論、停止迫遷
- 人行道 | sideway: 樂生危機(3):眼見為憑、週日相挺
- 人行道 | sideway: 樂生危機(4):你來過樂生了嗎?
- 人行道 | sideway: 樂生危機(5):It’s not about charity, it’s about JUSTICE
- 人行道 | sideway: 樂生危機(6):政治啊,政治
- 人行道 | sideway: 樂生危機(7):樂在囧感蔓延時
- 走過七十七年歷史傷痕 樂生療養院
然後還有 FAQ:快樂‧樂生─青年樂生聯盟行動網頁 – 樂生院完整說明(含Q&A)
其他參考連結:
快樂.樂生 ──壞消息! 樂生院可能在一個月內遭強制搬遷
快樂.樂生 ──樂生保存90%新方案 捷運局莫一錯再錯
快樂.樂生 ──反對強制拆遷樂生院連署聲明
苦勞論壇 ──懸崖邊的樂生院 北市捷運局限令一周搬遷
OJ.候診室 ──記憶對抗遺忘的掙扎
迷幻機器 ──誰現在跟樂生院民站一起,2008我投他/她!!!
被遺忘的島嶼 ──[老頭胡言亂語] 死人的牆比活人的家還要偉大
米店 ──轉文:北桃捷運網銜接共榮方案
Bbrother ──壞消息! 樂生院可能在一個月內遭強制搬遷
自由電子報 ──世界文化遺產不如中正廟圍牆
InnoNation Reloaded ──空間與正義:傾聽被遮蔽的聲音
在 mono 上使用 Font 的一些事
昨天碰到的事情,紀錄一下:
- mono 1.0 類別庫裡的 Font,有一些 ctor 裡面是空的。如果你發現使用了某個 function 沒作用,或是有些問題,你可以參考一下Mono Class Status以取得類別庫實作的狀況~或者利用Reflector for .NET反組譯看看,免得傻傻在那邊查了半天還不知道原因出在哪。
- 字型的底層是 libgdiplus,更底層則是Cairo。Cairo又再使用了FreeType函式庫(好像還有別的,不過這是主要的)。所以字型的設定是取決於fontconfig的設定:/etc/fonts/fonts.conf(用FreeType好像跟這設定沒啥關係,總之我是這樣聯想到的),當你使用某個字型卻無法正常顯示時(例如中文),不妨參考設定然後直接指定字型名稱:
Font textFont = new Font( “AR PL Mingti2L Big5”, 12, FontStyle.Regular, GraphicsUnit.Pixel, 1, false);
,應該就行了。
在.Net如何產生動畫gif (animated gif)
原生的 .Net framework 雖然可以產生 gif 圖檔,但卻無法產生有動畫效果的 gif 圖檔。
找了半天,本來已經萬念俱灰,想說可能要自己來寫了。
但終於還是在SourceForge.net找到合用的library:NGif。
下載以後,可以直接參考程式,使用方法很簡單~
這邊摘錄製作的方法:
/* create Gif */
//you should replace filepath
String [] imageFilePaths = new String[]{"G:\1.png"};
String outputFilePath = "G:\\test.gif";
AnimatedGifEncoder e = new AnimatedGifEncoder();
e.Start( outputFilePath );
e.SetDelay(500);
//-1:no repeat,0:always repeat
e.SetRepeat(0);
for (int i = 0, count = imageFilePaths.Length; i < count; i++ )
{
e.AddFrame( Image.FromFile( imageFilePaths[i] ) );
}
e.Finish();
NGif同時也提供解開的方法,所以你也可以將 gif 裡面的每個 frame 都個別存為獨立的圖檔。