- 金雞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 都個別存為獨立的圖檔。
兒子便秘

昨天傍晚餵兒子喝奶,在他快喝完的時候,突然臉一陣紅一陣白的在用力。
我知道,這是他在嗯嗯的前兆,在努力數下之後,開始哭~我趕緊叫老婆過來幫忙。
於是我們趕緊把他尿布解開,想要幫他~
果然,撥開他的小菊花一看,就是有硬硬的便便卡住,我拿出溫度計沾上一些凡士林,插進他的小菊花刺激他~
於是他繼續嗯嗯,嗯到他哭喊,恩到哭著努力想要讓它解放,我們的心裡真的是很難過。
後來便便總算是出來了~還帶著一些血絲~
喝完奶之後,我們趕緊餵他喝了 30cc 葡萄糖水。
喝完以後跟他講了好久~讓他明白不可以因為痛就忍著不便便~
到了晚上九點多餵奶,他又變臉、哭喊,不過這次便便雖然也小硬,但卻順利了許多~(我想這可以證明他有聽懂我們說的話。)
以後喝完奶都要強迫他喝水了(因為他不愛喝水),早晚也要給他暗示說要便便~否則每次他便便都會是他自己的痛苦~
參考資料:
讀取網頁(3)
WebClient 畢竟還是有一些限制,例如 Cookie,這就沒辦法了,你必須要自行操作 Header。
可是 WebClient 並沒有任何成員可以讓你實現這塊。
而 WebClient 的底層,其實是用 WebRequest 來實現的。這裡的例子使用了
HttpWebRequest,但其實 HttpWebRequest 也是繼承自 WebRequest。
要加上 Cookie 的話,你得指定 HttpWebRequest 的 CookieContainer 屬性。
所以我們很快就可以寫出 wgetInWebRequest()。
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.Web;
using System.IO;
using System.Diagnostics;
using System.Collections;
public class Network
{
public static string wgetInWebRequest( string url, CookieContainer cookies, Encoding encoding )
{
string responseData = "";
try
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create( url );
// 加上 Cookie
webRequest.CookieContainer = cookies;
// 如果你有 Proxy 的話~
// webRequest.Proxy = new WebProxy( "your_proxy", 3128 );
// 加上 User Agent,用來模擬瀏覽器~
//webRequest.Headers.Add( "User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
StreamReader responseReader;
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream(), encoding );
// and read the response
responseData = responseReader.ReadToEnd();
}
catch( Exception ex )
{
Debug.WriteLine( ex.ToString() );
}
finally
{
Debug.WriteLine( responseData );
}
return responseData;
}
}
我想,也許你會問這有什麼用?
一般網站應用系統登入以後,都會設置 Cookie 以表示你已經登入了,換句話說,你只要先設法模擬登入,然後取得 WebResponse 所得到的 Cookie,接著再把得到的 Cookie 放到 WebRequest.CookieContainer,你接下來所有對該網站應用程式的 Request 就已經是有特定使用者身份的了~
讓我舉個 ASP.Net 網站的例子吧~
public static void Login( string user, string pwd)
{
string loginPage = wgetInWebRequest( "http://your_web_app/login.aspx", null, Encoding.Default );
// ASP.Net 會在頁面埋一個 __VIEWSTATE 隱藏表單變數,先取得!
Regex rx = new Regex(@"\<input\ type=""hidden""\ name=""__VIEWSTATE""\ value=""(?<viewstate>.+)""\ /\>");
string viewstate = "";
try {
// Find matches.
MatchCollection matches = rx.Matches( loginPage );
if( matches.Count == 1 )
{
// 要作 UrlEncode
viewstate = HttpUtility.UrlEncode( matches[0].Groups["viewstate"].Value );
// 用來收 cookie 的容器
CookieContainer cookies = new CookieContainer();
// now post to the login form
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create( "http://your_web_app/login.aspx" );
// 模擬瀏覽器
//webRequest.Headers.Add( "User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
// POST
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
// 收到的 cookies 會放到 cookies 變數
webRequest.CookieContainer = cookies;
// 如果你有 proxy 的話
// webRequest.Proxy = new WebProxy( "your_proxy", 3128 );
// 這邊要看 login 表單有哪些變數而定,請自行變化
string postData = string.Format( "__VIEWSTATE={0}&user={1}&password={2}&Submit=Submit", viewstate, user, pwd );
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(postData);
requestWriter.Close();
// 收到內容啦,但是我們不需要他的結果,只要 cookies
webRequest.GetResponse().Close();
// now we can send out cookie along with a request for the protected page
string responseData = wgetInWebRequest( "http://your_web_app/default.aspx", cookies, Encoding.Default );
Debug.WriteLine( responseData );
}
else
Debug.WriteLine( "Internal error, too many ViewState." );
}
catch( Exception ex ) {
Debug.WriteLine( ex.ToString() );
}
finally {
}
}
大致上就是這樣子,我不作太多的說明囉~
想要作更多的話,可以再研究HTTP Protocal並配合Sniffer之類的軟體去監看網路封包,來了解詳細的流程。
奶爸心得(2)-參考用的餵奶間隔
原本以為小朋友只要定時餵,就會乖乖的,實際上卻不然。
我家的小朋友,哭了,會有兩個可能原因:
- 餓了
- 想睡了
(尿布濕了反倒不是最主要的原因,濕了,他只會睡得比較不穩而已。)
在初期,他常常哭,老婆跟我始終搞不清楚他是想睡還是想吃。到後來,終於搞懂了,簡單的判定原則就是,吃”飽”以後的 3~4 小時,如果哭了,可以先簡單把餓的因素排除掉;反正就是先哄睡。如果還是哭,就換人哄,再不行,就應該是餓了~
所以這個餵奶間隔,真的就是參考用~
張超英病逝
今天在Yahoo!奇摩新聞上看到張超英病逝了~令人扼腕的消息~
原本不知道這個人對台灣的影響在哪裡。某次到敦南誠品看到宮前町九十番地這本書,翻了一會,發現這本書有種獨特的魅力,讓我沒辦法放手。從他身邊的故事與在國外所作的事情,可以很清楚的讓人體會到台灣外交的艱難處境與之前國民黨政府的顢頇(要不然怎麼會有民進黨與美麗島事件?)~
在此悼念~並推薦這本書:宮前町九十番地
讀取網頁(2)
上一篇最後留下 Encoding 的問題還沒解決,事實上已經有解了:你可以改用 DownloadString() 函數。
DownloadString() 是怎麼做到的呢?
他是先看 WebRequest 得到的 Header 裡面是否有 Content-Type ,如果有指定的話,再看他裡面是否指定 charset,如果有,就以此編碼去讀取 stream。
如果沒有指定的話呢?.Net 2.0 的 WebClient 多提供了 Encoding 屬性,換句話說,就會以 Encoding 屬性指定的編碼去讀取 stream。
事實上,大部分的 browser 並沒這麼笨~他還會先去偷看網頁內容是否有指定 Content-Type 這個 meta tag:
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
如果有的話,就會以此 charset 所指定的編碼來讀取。