今天看到這則新聞,看完以後只有幾個感想:
1. 爛標題:快和星一樣笨,我很難聯想到”星”是指新加坡。看完以後,才發現原來說的是歷史教材,或許是說新加坡的歷史教材較差,但是不懂歷史等於笨?
2. 甚麼是”誰對民主政治毫無貢獻”的標準答案?一個爛題目再加上一個爛解答…
我輸了…Orz…
資料繫結與巡覽
資料的繫結基本上都是靠 Controls.DataBindings,所以
text1.DataBindings.Add( new Binding(“Text”, ds, “customers.custNo”) );
就可以把 text1 這個控制項的 Text 屬性繫結到 ds.Tables[“customers”] 的 custNo 欄位上。
如果想要有一些處理與變化,那麼可以透過 Binding.Format 與 Binding.Parse:
Binding b=new Binding(“Text”, ds, “customers.custOrder.OrderAmount”);
b.Parse+=new ConvertEventHandler( currencyStringToDecimal); // currencyStringToDecimal 是自訂的
b.Format+=new ConvertEventHandler( DecimalToCurrencyString ); // DecimalToCurrencyString 也是…
text3.DataBindings.Add(b);
這表示在轉換控制項屬性到資料來源的時候,會透過這兩個事件作變化。
Parse 表示控制項到資料來源,而 Format 正好相反。
都繫結上了以後呢?我們可以透過 BindingManagerBase 來作巡覽。
BinderManagerBase bm = BindingContext[ dataset, “tablename” ];
此時可用 bm.Position 取得位置,bm.Current 取得當前的物件(如果資料來源是 datatable,那就是 DataRowView;若是陣列,那就是所指向的元素)
bm.Position+1 就是下一筆,反之則是上一筆。到了最後一筆的時候,bm.Position+1 以後仍然會是一樣。
那麼,位置移動的時候會觸發甚麼事件?PositionChanged。所以我們可以撰寫自己的處理事件,
PositionChanged+=new EventHandler( this.fmMain_PositionChanged )
不僅僅是 TextBox 可以作,只要有提供 DataBindings 屬性的控制項都可以。
把 Button 的 Text 屬性 Bind 到某資料來源的某欄,而 Enable 屬性又 Bind 到 某欄時,那麼當移動資料來源位置的時候,就可以讓 Button 的相關狀態自動改變了。
這讓我想到似乎可以作一些 state machine 的東西…
IDeserializationCallback.OnDeserialization()
在 deserialization 之後,需要做的一些處理可以寫在這裡。
.Net framework documentation 裡面的例子是以 Circle 類別作例子,圓的面積不 serialize,而是在 deserialize 之後再計算出來。
霍元甲
這部電影應該可以拍的更深沉,我想或許該拍的都拍了吧,只是沒剪出來。
這是蠻可惜的。
覺得裏面挺不錯的幾句話:
- 人心裡不好受,就得哭,哭完了,你還得上路。
- 人呀,要時常洗洗自己,這樣才能清爽地走在世上。
- 秧苗也是有生命的,它們之間不能靠得太近,近了就會妨礙生長,就像我們人,生活中要懂得互相尊重,這樣大家才能活得平安快樂。
- 茶品的上下高低,並不是由茶來對我們說,倒是由人來決定的,不同的人有不同的選擇。
- 喝茶是一種心情,如果你心情中了,茶的高低還有這麼重要嗎?
- 最可怕的競技在自己內心?
NAnt (2)
看完上一篇,你大概會想,要寫的 task 是如此之少,這真是太完美了。
但是對於笨Q來說,不幸的事情發生了…
笨Q 聽說 .Net 也移植到 Linux 上了,所以他想試試看把上篇的程式拿到 Linux 下編譯,於是笨 Q 安裝了 Mono。接著安裝 NAnt。
同樣他下載了 NAnt, 並且解開,放到 /opt/nant 下。
再把整個專案複製到 Linux 下,並且修改了一下 build 檔的內容,由
<property name=”nant.settings.currentframework” value=”net-1.1″/>
改為
<property name=”nant.settings.currentframework” value=”mono-1.0″/>
讓 NAnt 在建立專案前自動把編譯環境切換為 mono。
接著輸入
$mono /opt/nant/bin/NAnt.exe
這時只見 NAnt 很不爭氣的吐了一句:
Invalid element <solution>. Unknown task or datatype
笨Q 只能流淚默默接受這個事實,他知道必須自己學著寫 target。
一個 NAnt 的 build 檔案其實是一個 XML 檔案,最基本的元素是 project,project 則是由 target 與 property 組成的,而 target 則是由許多的 task 組成的。
所以一個空的 build 檔案是長這個樣子:
<?xml version="1.0"?>
<project name="dnsedu" default=“build”>
<property name=“nant.settings.currentframework” value=“net-1.1″/>
<target name=“build” description="Default build target" depends="dnsedu">
</target>
</project>
那麼 target 裡面有哪些 task 可以用呢?你可以參考官方網站的這裡。
裡面真的很多 task,除了基本編譯(csc, vbc, cl, al, ilasm, resgen)之外,他還有 copy, cvs, mail, nunit …等等的 task,絕對可以讓你組合出你想要的東西。
要改寫上篇的 build(我假設你用 c#),我們會用到 csc、mkdir 這兩個主要的 task。
以下是改寫好的 build 檔案
<project name="your_project" default="build">
<property name="nant.settings.currentframework" value="mono-1.0"/>
<property name="debug" value="false"/>
<target name="build">
<mkdir dir="bin" unless="${directory::exists(‘bin’)}" />
<csc target="winexe" output="bin/your_project.exe" debug="${debug}">
<sources>
<include name="*.cs"/>
</sources>
<references>
<include name="System.Drawing.dll" />
<include name="System.Data.dll" />
<include name="System.Windows.Forms.dll"/>
</references>
<resources>
<include name="*.resx"/>
</resources>
</csc>
</target>
</project>
mkdir task 這邊我使用了 unless,意思是 if not,所以意思就是當目錄不存在的時候,就建立一個。這裡判斷目錄是否存在的函數是 NAnt 內建的,想知道有哪些函數可用,可以參考NAnt官方網站的這邊。
csc task 裡面,則需要指定輸出類型(target),輸出檔名(output)以及要不要包含除錯資訊(debug)。
夾在 <csc></csc> 裡面的,就是指定你 c# 程式,所引用(或參考)到的組件以及所使用的資源檔。
很簡單,對吧~
這就是最基本的囉,下次我們來談談 web 應用程式的部份。
Ah Ah / 四季
為甚麼原住民的歌聲永遠那麼嘹亮動聽有力道?
aLin 的這首 Ah Ah 就很 powerful。
Ah Ah
作詞:Anna Tsuchiya
作曲:paul Rein
編曲:周顯哲
主唱:aLin
All the girl, wish to be sexy
Preny red dresses & high hells
Put lip stick on and make me high
How gorgeous I am
I really love myself
Let’s just be sype cute girls
I don’t need expensive things
You want me but you can’t have it
lady come on join the party ‘Dance Dance’
Show me how you’re ‘Movinq’
that have a crush on you
Baby you’re enslaved by my cheam ‘No No’
I don’t mind ‘Ah Ah’
Nobody can stop me
Most of the girls wanna have fun
Going to clubs in the night time
My mom was always angry at me
But when she was young, she was hot
I really love myself
Let’s just be super cute girls
I don’t need expensive things
You want me but you can’t have it
They give me diamond ring ‘Bling Bling’
But they’re nothing ‘To Me’
Cause I’m muc much more
Yes, you can’t buy me ‘No No’
Different from’The Others’
Nobody can stop me
四季Four seasons
中文詞:Alin
作曲:Mad Soul Child
編曲:林於賢
主唱:aLin
明明是春天我卻感到絕望
夏天來臨了我還是看不見陽光
秋天的落葉將往事都埋藏
準備好冬天將你的一切都遺忘
我的愛情 已折斷了翅膀
無法繼續飛翔 在風裡飄飄蕩蕩
等待天亮 好好大哭一場
再讓眼淚風乾 在微笑中釋放
走過四季 是你給我的力量
當我覺得孤單沮喪害怕還依然能堅強
不管四季 如此無情的交替 我已不寂寞
因為你和我曾多麼快樂
你走了以後日子是否無恙
是不是有誰代替我陪在你身旁
你住的城市陽光多麼燦爛
可曾想起我正一個人面對孤單
我的愛情 已折斷了翅膀
無法繼續飛翔 在風裡飄飄蕩蕩
等待天亮 好好大哭一場
再讓眼淚風乾 在微笑中釋放
走過四季 是你給我的力量
當我覺得孤單沮喪害怕還依然能堅強
不管四季 如此無情的交替 我已不寂寞
因為你和我曾多麼快樂
如果沒有你 現在我會在哪裡
過著怎樣的生活 會不會也寂寞
走過四季 是你給我的力量
當我覺得孤單沮喪害怕還依然能堅強
不管四季 如此無情的交替 我已不寂寞
祈禱這世界 祝福我們所有一切
因為你和我曾多麼快樂
NAnt (1)
在 .Net 2.0 以前,如果不使用 IDE 來建立專案,而想要直接在命令列打個指令就可以建立的話,你有 3 種選擇:
- 批次檔
- Makefile
- NAnt
.Net 2.0 之後,多了一種選擇:msbuild。
這一系列文章主要是討論 NAnt,可是為甚麼要用 NAnt ? 又為甚麼要用 NAnt ??
簡單來說,爽。
如果要講跨平台,用 Makefile、msbuild (mono 已經搞了一個工具叫 xbuild,與 msbuild 相容) 都可以跨平台。
如果要講簡單,我個人是覺得 Makefile 比他還簡單。
如果要講功能,msbuild 也不遑多讓。
所以我說,就是一個爽。
Ant 是 Java 平台上一個極為重要的工具,而NAnt 最早是想把 Ant 移植到 .Net 上,所以才叫做 NAnt。
官方網址在:http://nant.sourceforge.net
下載 .zip 檔案以後,解開就可以用了,沒什麼特別的安裝步驟,即便是 Linux 也一樣。
我假設你解開以後會放到 c:\tools 下,並更名為 nant 。
廢話不多說了,直接從第一個實例開始。
我想一般人還是很習慣用 Visual Studio.Net 來開發吧。
所以,先隨便建立一個 Windows form 專案,確定它可以編譯。(或者你也可以用你手頭上的專案來試試)
接著在該專案目錄下,建立一個文字檔,並命名為 your_project.build (是了,your_project 你得自己替換一下。)
裡面放置如下內容:
<?xml version=”1.0″?>
<project name=”your_project” default=”build”>
<property name=”nant.settings.currentframework” value=”net-1.1″/>
<target name=”build”>
<solution configuration=”release” solutionfile=”your_project.sln” />
</target>
</project>
存檔以後,進入命令列模式,輸入
c:\tools\nant\bin\nant
這樣就大功告成了。
為甚麼可以這麼簡單?因為 NAnt 在 0.85.2296 以後已經添加了解析 Visual Studio 專案檔的能力,所以 build 檔裡面就只要用 solution 這個 task 就可以搞定了。
但是很可惜的是還不支援 Visual Studio 2005,即便是最新的版本也還沒看到蹤跡。
我愛台妹
昨天才聽到這首歌,聽完之後只有一個感覺:這真是太屌啦!!
直接列為練習歌曲,下次去KTV點唱。
以下參考自:認真的台妹最美麗,愛台妹才是真男人
歌名:我愛台妹
作詞:姚中仁/張震嶽
作曲:姚中仁/張震嶽
演唱:Mc Hot Dog、張震嶽
我的阿妹妹 快來和我跳阿哥哥 Go 我知道你看到是我 妳不會說No
我不是油頭葉教授 我的homiez都叫我熱狗 4 sure
女孩 就是喜歡妳台台 等等去家裡home pa要不要來
只怕你掛的太快 明天要去廟裡收驚拜拜 How High ?! We can kiss the sky!
人生海海 我們不會只是stand one night 『one night in 墾丁..我留下許多情..』
你是我的可口可樂 幫我解渴 看我穿著就知道我玩饒舌
不要說我壞話 因為我有順風耳 如果是你肚子大我帶你去看順風婦產科
我愛台妹 台妹愛我 對我來說 林志玲算什麼?!
我愛台妹 台妹愛我 對我來說 侯佩岑算什麼…..
我不愛中國小姐 我愛台妹 萬萬歲 妳的檳榔2粒要100 好貴 有沒有含睡
如果能夠和妳共枕眠 更多更多的奶粉錢 我願意為妳貢獻 我不是愛現
請妳噴上一點點銷魂的香水 換上妳最性感的高跟鞋 人群之中 妳最亮眼
台妹來了 我是否和妳一拍即合 跟我去很多的不良場合
大家看到我都對我喊yes sir 因為我是公認最屌的rapper
台妹們 麻煩和我拍拖 我不是凱子 可是付錢我也不會囉唆
純情是什麼 我不懂 我的想法很邪惡 張震嶽他懂
我愛台妹 台妹愛我 對我來說 林志玲算什麼?!
我愛台妹 台妹愛我 對我來說 侯佩岑算什麼…..
為了妳 我可能要投資一家檳榔攤 為了妳 家裡可能要有鋼管
為了妳 我要常常下去台南 為了妳 流氓會來找我麻煩
對於帶著一點風塵味的女生 我的腎上腺素毫不考慮亮起紅燈
畢竟妳不是天使 我也不是聖人 時尚的野獸 那就請你滾 我受夠
你是馬戲團訓練有素的animal 所有男模 女模 你在屌什麼
我就不信你現在還有處女膜 都是凱子搓
我喜歡台妹說話的口音 有時候挾帶幾句口白三字經
愛神的箭 你要射向哪裡 這裡 張震嶽 free9熱狗 這裡 等你
我愛台妹 台妹愛我 對我來說 林志玲算什麼?!
我愛台妹 台妹愛我 對我來說 侯佩岑算什麼…..
我愛台妹 台妹愛我 對我來說 林志玲算什麼?!
我愛台妹 台妹愛我 對我來說 侯佩岑算什麼…..
把手放在空中甩 我叫你什麼都不用管
讓我看妳把手放在空中甩 把手放在空中甩
台妹 手放在空中甩 叫你什麼都不用管
叫你把手放在空中甩 叫你什麼都不用 Ya
台客 手放在空中甩 把手放在空中甩
我讓你感受 這個節奏 身體跟著擺動
這是free9 張震嶽 熱狗 要你跟著我們怒吼
一切都是假象 不是你們想像
我愛台妹 我愛台北 就像這樣
我愛夏天
今天閒逛的時候,發現張國璽要去開飛機了…看這邊…
跟著來串聯祝福他吧~~
我永遠都會記得這首專屬於夏天的歌,還有最適合這首歌的主唱…
歌名:我愛夏天
主唱:脫拉庫
作詞:張國璽
作曲:張國璽
我 我愛夏天
有 漂亮美眉
我 我愛夏天
因為 她們穿的養眼
每到夏天我要去海邊 海邊有個漂亮高雄妹
只打電話不常見面我好想念 不知她會在哪個海邊
(1、2、3、4)
我 我愛夏天
有 漂亮美眉
我 我愛夏天
因為 她們穿的養眼
每到夏天我要去海邊(去海邊) 海邊有個漂亮高雄妹(高雄妹)
只打電話不常見面我好想念 不知她會在哪個海邊
我 我愛夏天
有 漂亮美眉
我 我愛夏天
因為 她們穿的養眼
每到夏天我要去海邊(去海邊) 海邊有個漂亮高雄妹(高雄妹)
只打電話不常見面我好想念 不知她會在哪個海邊
每到夏天我要去海邊(去海邊) 海邊有個漂亮高雄妹(高雄妹)
只打電話不常見面我好想念 不知她會在哪個海邊
Firewall: lokkit 的設定
進入 console mode 之後,輸入 setup
選到 Firewall configuration (或直接輸入 lokkit)
再選 customize,至此即可設定允許哪些協定進入你 linux 防火牆。
到 Allow incoming 那邊,將協定勾選(按空白鍵勾選,Tab鍵切換)。
如果沒有列出來的,你可能要在 Other Ports 那欄自行輸入。
格式大致是這樣:
protocol_name:[tcp|udp]
拿我家裏的 server 來說,除了勾選 HTTP、SSH 之外,我還自行輸入了
pop3:tcp https:tcp netbios-ssn:tcp microsoft-ds:tcp netbios-ns:udp netbios-dgm:udp
不知道有哪些 protocol 的話,可以用 netstat -a 自己去看。
我也是嘗試之後,才發現 Other ports 那欄的輸入格式可以參考 netstat -a 的結果。