2007-08-18

Silverlight 1.0 和 1.1 的差別

Silverlight 1.0 有些什麼東西都還沒弄清楚, 1.1 又跟著冒出來, 兩者間的差異是什麼呢? 剛好看到官方網站上的簡介, 趕快記起來! http://silverlight.net/GetStarted/overview.aspx

2007-08-09

嫁給我好嗎?

今天看到黃品源在康熙來了節目上自彈自唱了一首並未發表的歌, 歌名好像叫做 嫁給我好嗎, 聽說他在婚禮上有唱這首歌, 真得很適合那種情境!! 因為覺得很好聽, 一時技癢就拿起吉他跟著抓了一下, 順便記錄下來! 不知道有沒有 mp3 可以抓得到??

詞/曲: 黃品源  D 調

D   #Ddim Em A          D
嫁給我    好嗎  我的心早已經屬於妳

D   #Ddim Em A          D
嫁給我    好嗎  今生今世妳是我的唯一

D   #Ddim Em A            D
嫁給你    好嗎  我要的不只這些甜言蜜語

D   #Ddim Em A            D
嫁給你    好嗎  妳是否永遠記得說過的話

Bm      #Fm   G    A   D
期待已久的緣分  即將要變成永恆

      G   A              D
編織著美麗的夢  是否能愛我到永遠

      Bm    #Fm   G    A   D
請相信我對妳的真誠  決定要伴妳一生

      Bm          G
別說是天長地久  只要真心愛我

      G      A        D
只要妳輕輕點個頭  我們就長相廝守

D   #Ddim Em A            D
嫁給我    好嗎  不會再讓妳孤單讓妳受傷

D   #Ddim Em A          D
嫁給我    好嗎  寂寞的心將會有一個家
----- #Ddim 怎麼按, 附張圖好了, 以免要用的時候突然忘記!!

2007-08-08

遠端桌面到 Vista Home Premium 版

Vista Home Premium 版本預設是不支援遠端桌面的, 雖說它可能有什麼商業上的考量, 但是對於習慣使用遠端桌面的人來說, 實在是太不方便了, 當然也可以裝個 vnc 之類的 server 來遠端搖控, 但是總覺得效能上還是差了一點, 最好是能把隱藏在 Home Premium 版內的功能重新打開來比較好. Google 一下, 果然已經有人提出解決的辦法了, 親自實驗之後證實是可以的, 而且步驟還超簡單, 只要 [下載] -> [解壓] -> [以 Administrator 的身份執行 命令提示字元] -> [執行 premium.bat 檔] 就搞定了!!

參考: http://portal.tonychan.org/Default.aspx?tabid=58&EntryID=123

C# 3.0 筆記: Automatic Properties, Object Initializers, Collection Initializers

1. Automatic Properties 2. Object Initializers 3. Collection Initializers 1. Automatic Properties

//=== BEFORE ===
public class Person {
    private string _name;
    private int _age;

    public string Name {
        get { return _name; }
        set { _name = value; }
    }

    public int Age {
        get { return _age; }
        set { _age = value; }
    }
}
//=== AFTER ===
public class Person {
    public string Name { get; set; }
    public int Age { get; set; }
}
2. Object Initializers
//=== BEFORE ===
Person p = new Person();
p.Name = "John";
p.Age = 30;
//=== AFTER ===
Person p = new Person { Name = "John", Age = 30 };
3. Collection Initializers
//=== Way 1 ===
List ps = new List();

ps.Add(new Person { Name = "John", Age = 30 });
ps.Add(new Person { Name = "Mary", Age = 25 });
//=== Way 2 ===
List ps = new List {
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Mary", Age = 25 };

2007-08-04

支援 rdesktop -x 功能的 gnome-rdp

在 Ubuntu 的遠端連線工具裡, 預設的是 tsclient, 功能相當不錯, 但是在管理上稍有不足, 所以我都是使用 gnome-rdp 這個套件來管理常用的一些連線, 但是不管是原來的 tsclient 或是 gnome-rdp 都沒有開放設定 rdesktop 的 -x 參數, 可是我又希望連線時能夠看到遠端的桌面背景, 於是就自己下載 source 稍稍改了一下, 做了一個新的版本!! 修改的功能有:

  1. 新增 RDP5 Experience 選項(modem,broadband,lan), 配合 rdesktop 的 -x 選項, 使遠端連線時可顯示桌面背景.
  2. 關閉主視窗大小改變時, 會自動置中造成視窗跳動的問題.
使用方式: 下載 gnome-rdp.exe 替換掉原來在 /usr/lib/gnome-rdp/ 目錄底下的程式就可以了!
想自己動手做的話, 可以照著以下步驟進行:
$ apt-get source gnome-rdp
$ cd gnome-rdp-0.2.2
$ dpkg-buildpackage -rfakeroot -uc -b
這時候會先做一個小 patch (把原來的 xvncviewer 換成 xtightvncviewer), 再開始進行編譯程式, 然後會看到一個很笨的錯誤, 先不要理它, 這裡我們只是要產生一些 make file 的配置檔!(表示這個源碼之前沒有被編譯過, 否則應該不會有這種錯誤)
./OptionsDialog.cs(58,93): error CS0023: The `+' operator cannot be applied to operand of type `string'
如果編譯中出現缺少開發套件的話, 可以先執行
$ sudo apt-get build-dep gnome-rdp
$ sudo apt-get install fakeroot # 以非 root 身份進行編譯時所需的套件
這樣會安裝所有建置 gnome-rdp 所需要的套件庫, 和 fakeroot 套件
接下來下載 gnome-rdp-changedfiles.tgz, 解壓並覆蓋掉原來的檔案(包含上面那個錯誤的修正)!
$ cd ..
$ wget http://bigsan.chen.googlepages.com/gnome-rdp-changedfiles.tgz
$ tar zxvf gnome-rdp-changedfiles.tar.gz
$ cd gnome-rdp-0.2.2
$ dpkg-buildpackage -rfakeroot -uc -b
這時候會產生一個 ../gnome-rdp_0.2.2-0ubuntu2_i386.deb 檔案, 可以自行安裝囉! $ cd .. && dpkg -i gnome-rdp_0.2.2-0ubuntu2_i386.deb
附帶一提的是 gnome-rdp 的資料是用 Sqlite 來管理的, 因為有改到資料庫的結構, 所以如果原來有建立站台資料的話, 就必須先刪除 ~/.gnome-rdp.db, 然後再執行 gnome-rdp 的時候, 資料庫就會重新建立了! 如果不想讓原來的資料消失的話, 就得自行更改資料庫的結構及資料, 指令如下:
$ sqlite ~/.gnome-rdp.db # for sqlite version 2
$ sqlite3 ~/.gnome-rdp.db # for sqlite version 3
sqlite> .tables
#如果看到 session 和 version 兩張 table 的話, 表示沒問題, 否則就是 sqlite 版本不對
sqlite> ALTER TABLE session ADD COLUMN rdp5experience INTEGER;
sqlite> UPDATE session SET rdp5experience = 0;
sqlite> .quit

2007-08-02

Visual Studio 2008 Debugger Visualizer

看到一些很棒的 debugger visualizer, 以後一定會用到, 先記起來! WPF Tree Debugger Visualizer LINQ to SQL Debug Visualizer from ScottGu's Blog 相關文章: Create a Debugger Visualizer in 10 Lines of Code By Tomer Noy Useful add-ons (plugins) for Visual Studio 2005

2007-08-01

新版 Web Development Helper

這次發佈的 0.8.5.0 版, 修正了在 Vista 中的一個小問題, 而且還多加入一個 Script Class Browsing 工具(如下圖), 不過這個小工具僅支援遵循 Microsoft ASP.NET AJAX Pattern 所開發的 JavaScript, 雖然如此, 還是很不錯!! 參考: nikhilk.net

設定 IMEX=1 透過 OleDb 讀取 Excel 仍然出現 null 值的問題

之前在使用 OleDb 讀取 Excel 時, 發生有些欄位雖然有值, 但是讀出來卻是 Null 的問題, 上網查了一下, 說是在連線字串中加入 Extended Properties, 將 IMEX 設為 1, 就可以強迫 OleDb 的 driver 將內容當成文字讀取, 以避免發生型別錯誤而回傳 null. 如下

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data.xls";Extended Properties="Excel 8.0;HDR=Yes;IMEX=1;
但是後來發現有些資料可以成功, 有些不行, 但是如果把資料列的順序作一下改變的話(把非數字的資料放到比較前面的幾列), 就又可以順利讀取, 真是怪到極點, 於是再去問了一下 Google, 終於找到問題的源頭... 原來是 OleDb Driver 的問題, 在機碼 HKLM\Software\Microsoft\Jet\4.0\Engines\Excel 有一個 TypeGuessRows 值, 預設是 8, 表示會先讀取前 8 列來決定每一個欄位的型態, 所以如果前 8 列的資料都是數字, 到了第 9 列以後出現的文字資料都會變成 null, 真是聰明得令人哭笑不得..... 所以如果要解決這個問題, 只要把 TypeGuessRows 機碼值改成 0, 就可以解這個問題了!