發表文章

目前顯示的是 7月, 2008的文章

豬是不吃蛤蠣殼的!

  某天中午,吃完飯後,我跟同事說:「等下你這些蛤蠣殼不要倒在廚餘,豬是不吃的~」他還以為我在開玩笑XD,真是……。這不是查一下Google就會知道的嗎?! http://www.tcgdep.taipei.gov.tw/olddep/kw/tpe_re_4_2_3.htm#q_3ans2 「堆肥廚餘」:纖維較多之菜葉(烹煮前撿剩的菜葉、菜根、玉米葉、玉米心、筍殼、瓜果皮等)、水果渣(水果外皮像西瓜皮、橘子皮、柚子皮、柳丁皮等)、咖啡渣、茶渣、豬隻無法消化之貝殼類(蟹殼、文蛤殼、貝類等)或果核(龍眼、荔枝的殼及子)、落葉、花材等不適合養豬的分類出作堆肥。 讓我想到當兵的時候,大家都把蛋殼直接丟到餿水,我就對我班兵說:「你要把豬刺死喔?」害他笑個不停XD可是我剛剛查一下google,原來豬不會被刺死的 :)

2008MVP獎品開箱文

圖片
  今年獎品是我覺得最實用的一次,之前有的是送包包、隨身碟、另一個是甚麼我都忘了,今年是藍牙工具組,之前聽人家說以為是藍芽耳機,沒想到是一套的,還包括了PCMCIA介面的藍芽滑鼠。 這次的包裝好像直感比較好~ 而我也從Windows SDK->C#->ASP.Net了,我也不知道為什麼XD 金光閃閃的獎品盒 詳細的獎品 一個雙耳的藍芽耳機,必須插一個小東西在Audio Output,只能聽音樂用,沒辦法配合手機用,這樣跟我之前在Company Store上面買的藍芽耳機就不會重複了,然後我很喜歡那個藍牙滑鼠,薄薄一片,於是我很高興的插進了我的NB,沒想到我的是Express Card介面XD,好像有點把我的插槽損壞了,殘念……

制作使用USB開機的Ubuntu 8.04

  https://help.ubuntu.com/community/Installation/FromUSBStick 這裡講得很好,直接去抓一個 UNetBootin 的回來執行之後,選好目的地 (ex: /dev/sdb1) 跟image檔然後一下子就成功了,而且隨身碟也不會被格式化,果然USB Stick也有用BootSector來做 http://www.pendrivelinux.com/2008/05/08/usb-ubuntu-804-persistent-install-via-the-live-cd/ 則介紹了將開機片和資料分開的做法,但就要自己切partition了,我選擇這種~ 後記:Windows 好像不支援一個Flash多個Partition,在VISTA/2008下,建立Partition時可以讓你選容量,但剩下的空間就不能動了,而且還不能重來,只能到Ubuntu下使用fdisk全部殺光光。然後在XP下則是建立Partition時不能讓你選容量~殘念,所以只能再買一個USB來當作開機碟了~ PS:在某個網頁 ( http://www.lancelhoff.com/2008/05/01/multi-partition-a-usb-flash-drive-in-windows/ ),他也是使用Windows下的Disk Management就可以建立多個Partition。有提到Windows 真的對removable storage有限制,要先使用一個bootit的軟體把 "Removable Media Bit"  這個bit改掉,這樣windows就不會認為這是隨身碟,而是隨身硬碟了,可是我找了一下bootIt 這個工具好難找啊,放棄~ ----------------------------------------------------------------------------------------------------------------------------------------------------- 嘿嘿,今天用Ubuntu試著下載一下,結果就成功了,沒想到這種工具這麼難找,不過就一個bit而已嘛! --------------------------------------

攔截無法預知的錯誤—Windows Form

  我覺得夠robust的程式碼至少有1/3的CODE在是處理錯誤的行為,有時候也覺得很煩,一堆try,但在怎麼try,你還是有可能會miss,下面介紹的是.Net攔截全域的Exception的方法。 我現在習慣在 Main一開始先把這兩個函式掛上去 Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionHandler); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); static void ThreadExceptionHandler(object sender, ThreadExceptionEventArgs e) static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 至於函式內實作的情況可以有很多,你可以給USER一個良好的錯誤回報,或是貼心的幫他把錯誤和StackTrace複製到剪貼簿,或者是透過網路寫到團隊的Bug Report系統,這樣總比他自己看到Runtime的錯誤視窗要好~ WPF好像換成 Application.Current.DispatcherUnhandledException,沒用過不知道~

VCD Player 拆解修理

圖片
  話說今天把巧虎DVD轉成VCD要給單單看的時候,發現家裡那台VCD Player無法退片了,問我媽結果已經超過十年了,因為外面看不到退片孔,雖然他外面貼著”拆機拒修"的貼紙,但現在修一定比買新的還貴了,所以我就給它拆開來了~ 果然這種便宜的機器機構都很簡單,看到一台很輕的VCD光碟機,全部拆完之後還是找不到退片孔,後來仔細看下面有一個斷掉的皮帶 光碟機是由兩部分組成的,上面那一個有一塊磁碟,然後下面讀取頭也有一塊磁鐵,當讀取頭往上靠的時候,會讓磁力再將光碟片夾緊 既然找到了原因應該就好辦了,可是我手邊沒有皮帶哩,於是想說用橡皮筋試試 嘿嘿,可以了,省下買DVD Player的錢了~ 成功播放的畫面,收工~

VIA C7-M 找尋最大TDP (Thermal Design Power)

  藉由開機顯示的"VIA Esther processor 1000 MHz",可以判斷是Model A,但Model A 又有 770 779兩個型號,頻率都一樣,只差在770最大TDP是5W,779是3.5W。 使用cpuid dump出來的資訊跟datasheet比較還是查不出是哪一款~ PS: cat /proc/cpuinfo 就是把cpuid的16位元 parse成比較易懂的訊息,不太需要自己去比對cpuid 最後去看 e_powersaver的原始碼,發現他會列出最大的voltage,根據datasheet,5W那顆highest voltage 為0.844 W,3.5W的則為0.796 W insmod e_powersaver.ko之後,dmesg | grep -i "voltage" 可以看到最大電壓為 796 mV 嗚哇,好奇怪啊!神奇的CPU,如果確定最大是3.5W的話,之前的量測結果為 Frequency(MHz) 400 500 600 700 800 900 1000 CPU Power(W) 0.68 1.1 1.52 1.94 2.42 2.96 3.5 因為我只能量到整個系統的耗電量,所以我假設除了CPU以外的元件耗電量不會隨著頻率而變,然後以1G Hz最多耗3.5 W來估計。 沒想到400 MHz耗電量那麼小,而且根據 W=V 2 CF的公式算出來,此直線會穿過y軸的負值,也就是0 Hz時,會得到負的耗電量,當然0 Hz到400 Hz不確定能不能這樣推,但如果是當頻率為1G時需消耗5W的話直線會很接近原點。 第二點讓我覺得有點疑惑的地方在於datasheet裡面表示 HALT@50度 C (C1)、 StopGrant@50度 C (C2)、 Sleep@50度 C 都需要耗1W的電 然後 deepsleep@35度C (C3) 也需要耗 0.75 W,我用400 MHz跑大量的乘法沒道理比他們還省電啊? 所以我潛意識還是認為5W比較合理,但目前沒想法要怎麼證明了~ PS:量測的推論假設除了CPU之外的耗電量不會隨著降頻而改變,除非推論錯了,或者是第二點datasheet寫錯了XD 上面的推論如果是錯的,代表我把TDP3.5 W直接等於CPU最多耗3.5 W,所以要

BindingSource 出現Null,因為TextBox的Visible 改變了

  最近在使用BindingSource,因為資料庫都需要有一個Key,所以我使用了一個TextBox當作Key的Bind的對象,然後新增的時候就把Key寫到 TextBoxKey裡面去,這樣最後再使用 BindingSource.EndEdit()時,就會寫到DataSet去了。 但也因為這個控制項是不必給使用者看到的,所以我將其Tag填為DebugControl,然後在使用者執行的時候再把這些tag為DebugControl的控制項隱藏起來。結果最近發生一個Bug,到了使用者手上的時候,無法新增,說key為null。可是我測試的環境都OK啊,後來發現是把TextBoxKey設為隱藏之後,在BindingSource.EndEdit() 時,Text屬性就被清掉了,如果我自己再把它顯示出來 TextBoxKey.Visible=true; 這樣子Text也會被清掉。 很懷疑為什麼TextBox會有這麼奇怪的設計,在Visible改變的時候清掉Text。為了解決,我就不隱藏這些DebugControl了,而是將其Left設成很大就好。 最後想想這樣設計不太對,應該是binding惹的禍,測試一下,果然如果有binding的話,Text屬性就會在重新顯示的時候被重新bind一次~ 我設計的方式不對啊,那時候只是為了方便讓我對照資料庫的欄位,應該直接DataTable.NewRow,然後設定為Key之後再加到DataTable去就好~

比爾蓋茲退休了

圖片
http://blog.ylib.com/jimyang/Archives/2008/06/23/6588 我也來應應景 ^^,美國微軟西雅圖總部 順便整理一下之前去微軟年會的照片~