2008-09-16

SQLite + Visual Studio 2005

SQLite 是一套 Embedded RDBMS,很適合加進 App 裡頭跟著跑,並且資料庫檔能輕鬆跨平台。關於其它 SQLite 的優點,可以 Google 大神或 Wikipedia 取得。或許效能與支援度未能與其它 DBMS 相比,但你總不會想為了暫存 Spore 裡的建築方式,去安裝這些巨獸吧 XD


參考這篇討論串的作法,我下載了 SQLite for ADO.Net 2.0,目前使用正常 XD

底下簡述安裝及使用方式,作個記錄備查:
  1. 下載並解壓縮前面的 SQLite for ADO.Net 2.0 檔案
  2. 安裝 bin\Designer\install.exe,以提供設計階段的 VS.Net IDE支援
  3. 在方案中,加入對 bin\System.Data.SQLite.DLL 的參考
  4. 可以用了 !
下面是簡單的使用範例,語言為 Visual Basic.Net


Imports System.Data.SQLite

' ADO.Net 標準 Reader 三物件
Dim slconn As SQLiteConnection
Dim slcmd As SQLiteCommand
Dim slrdr As SQLiteDataReader

'建立 connection,給定檔名即可。注意讀寫權限 !
slconn = New SQLiteConnection("Data Source=c:\backup\Test.db3")
slconn.Open()
slcmd = slconn.CreateCommand() '建立 command 物件

'取得目前該檔案已有之 Table 名稱
Dim found as Boolean = False
slcmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table';"
slrdr = slcmd.ExecuteReader() '建立 reader 物件
If slrdr.HasRows Then
While slrdr.Read()
MsgBox(If slrdr.GetString(0))
If slrdr.GetString(0).Equals("test") then found = True

End While
slrdr.Close() 'Reader 要關閉才能再利用

End If

If Not found Then
'建立 Table
slcmd.CommandText = "CREATE TABLE test (name);"
slcmd.ExecuteNonQuery()

End If

'INSERT, UPDATE, DELETE 用法均類似
slcmd.CommandText = "INSERT INTO test(name) VALUES ('clifflu');"
slcmd.ExecuteNonQuery()

'SELECT 需要用 cmd.ExecuteReader 抓結果
slcmd.CommandText = "SELECT name FROM test ;"
slrdr = slcmd.ExecuteReader()
If slrdr.HasRows() Then
While slrdr.Read()
Msgbox(slrdr.GetString(0))
End While
slrdr.Close()

End If

slconn.Close() 'Connection 用完要關

吃雞塊,長痘痘

Facts:

  • 炸雞塊挺好吃,有空想到就會弄一點 XD 只是油要用不少,清理也有小麻煩
  • 不過痘子出現的速度也快到嚇人 T_T
  • 烤雞塊一定要退冰 + 預熱,不然會很失敗
Plans:
  • 吃太多炸雞塊不太好,還是限制每天最多 10 塊吧
Anticipated Result:
  • 如果真的執行下去,應該會變成 "每天都吃 10 塊",然後痘子更多了 :p
ps. 下次炸了再回來補圖吧 XD

2008-09-07

Stop Sending "+1" 's -_-凸

還記得那個 Google Chrome 的滑鼠 / Touchpad 臭蟲嗎 ?我在三天內已經收到超過 150 封的 "+1" "Confirmed" 郵件,然後目前總計已經超過 210 項訊息了 T_T


頭 20 篇就看得出這個問題會發生在 WinXP 與 vista 上,然後我在第 24 篇表示與控制台中的滑鼠設定有關,之後在 1xx 篇有人說 TouchPad 的左右捲動也受影響,再扣掉第一篇的 bug report initiator,真不知道剩下的 211-4-k 篇是在回什麼的.... (k = 跳出來喊 "No More '+1' 的篇數)

這就是鄉民啊.......

2008-09-06

KKBox on Mac 秘密流出版亂用感想

三個多月前,因為某些不很複雜的原因,我刷卡買了半年期的 KKBox,現今仍感到相當值得 XD 7xx 元拿去買專輯的話,了不起就是兩三張吧 :p

KKBox 好用歸好用,可是我平常出門帶的都是 MBA,醬就算有網路也聽不了音樂啦 T_T 若要帶 Dell 出門的話,主機變壓器滑鼠背包隨便算都是 5-10kg 起跳,對快要步入中年的大叔來說負擔也不算輕。這次恰好在 pttMac 版上看見 Izero 大大發佈測試版 KKBox on Mac 的消息,當然是寫信過去毛遂自薦一下了 XD 這邊是發表在 blog 上的版本。基本上目前 bug 還算有一些,選單的中文化也尚未完成,再加上我也沒有取得 Izero 大大的同意,所以想要檔案的人還是去找他要吧 XD  KKBox 可以在這邊註冊試用,喜歡的話再花錢購買^^; 


雖然台灣的 Mac 使用者數量一直是穩定、緩慢、微量的增加,不過 Izero 大大在 KKBox 裡推動對不同平台的支援,其心可鑑!反觀有些服務業的網站把自己綁死某些系統底下,連帶限制使用者只能用那些系統連入;這樣的服務品質真的應該要抓起來打屁股~~

然後這份軟體是測試版,有 Bug 在所難免,請不要寫信去跟 KKBox 說要延長 60 天的服務喔 XD

註:所有的選單和名詞都是我亂掰的,看不懂的人請升級幽默套件到 4.7 版。

主操作介面:

左邊是  Mac 的介面,然後右邊是 Win 版本的 XD 兩邊看起來其實差不太多,對轉換平台的使用者應該不會造成混淆。不過仔細看還是會發現一些差別 @@ Win 版本右下角可供切換的選項比較多,對我影響最大的功能,應該是歌詞動態顯示吧。Win 版本的 KKBox 可以在下面的播放區塊顯示歌詞,而 Mac 版本的不行。Mac 版本只能在主要播放視窗點選 "歌詞" 顯示,其它模式通通叫不出來 T_T 人家說風雨生信心,台北這兩天大風大雨的,我想應該下一版就會有了吧 XD


歌曲選單介面:

↑ Win 標準介面 ↑

↑ Mac 標準介面 ↑

↑ Mac 專輯檢視介面 ↑

↑ Mac CoverFlow 介面 ↑

Mac 無敵全螢幕 CoverFlow !!! 

Windows 版的 KKBox 只有一種檢視介面,Mac 有四種 XD 聽說只有 Leopard 以上才能用 CoverFlow 喔。休息的時候開全螢幕 CoverFlow 還挺有音樂播放機的樣子 :p


偏好選項:
現在的多媒體播放軟體好像都會去設定 IM 的即時狀態了 (抖),大家在看片子的時候千萬要小心喔 XD 我覺得 Win 版的偏好設定有些東西寫得太雜了,適當的播放品質和傳輸埠應該是軟體自己就可以測試出來的啊 :p


控制選單:
兩邊的選項差不多 (OS: 廢話嘛,難不成要寫什麼 "失去控制" 或 "左翼的彈幕太薄了 !!!" 這種東西嗎),不過我覺得 Mac 版用 CheckBox 做 Shuffle 選項比較直觀。在快速鍵方面,由於我平常離線聽音樂還是以用 Winamp 為主,所以還是比較習慣用 zxcvb 去控制 XD 


播放器介面大變身:


點下去以後變這樣:

上面是精省化過的 KKBox,底下則是被擠成蘋果汁的 iTunes。我只能說還是小蘋果的介面比較好看 XD 把播放器縮小的主要目的應該是想看到播放資訊,同時又能從事工作;如何壓縮所使用的桌面空間,並把需要的資訊呈現出來,其實是相當困難的課題。我沒寫過 Cocoa,不過如果能把上面標題列的空間縮減,按扭縮小擠到左邊,字型縮減,把播放時間放到視窗底下當作 progress bar,然後在主要區塊顯示歌名、歌手及歌詞的話,應該會相當實用 XD



這兩種 Windows 版本的迷你播放器介面都有歌詞可以看啊 T_T 



然後比較麻煩的是,mac 版的 KKBox 無論是 cpu 的使用量 (Win: 0-2% on T7500 2.2GHz / Mac: 10-12% on Pxxxx 1.6GHz),或是記憶體使用量,都比 Win 版本吃得更兇 T_T

目前我玩到的 Bug 有:
  1. Mac 版 KKBox 狂暴 seek progress bar 可以把播放器搞當 XD
  2. 把所有歌單 (除了刪不掉的 "全部歌曲" 以及 "我的最愛") 都刪掉,會把歌單資料庫弄爆炸
上述 KKBox 的版本是 Mac: 0.8.34 / Win: 3.2.0076 (0136),新版推出以後全都說不得準啦 XD

[ 延伸閱讀 ] :這邊老地方冰果室對 KKBox on Mac 的看法

2008-09-05

Google Chrome 感想超速報

  1. 啟動執行都很快;
  2. 吃記憶體兇;
  3. 據說安全且穩定;
  4. 介面簡單,但設定自由度偏低;
  5. 畫面可用區塊大,甚至還能以 "應用程式" 的方式開啟網頁,完全省略瀏覽器的 UI;
  6. 操作滑鼠滾輪、TouchPad、觸控版時會有蟲子,對我影響頗大 (躺在床上與泡澡時,我習慣以 TouchPad 作為主要操作介面);
  7. 目前沒有 extension 可用 (對,沒有 Adblock !),聽說一週內會有新消息;
  8. 我希望它能整合 Google Browser Sync 的功能,在不同電腦間同步書籤;我同樣希望它能整合我在同一台電腦上,不同瀏覽器的書籤;
  9. 有沒有可能比照目前執行 plug-in (如 Flash) 的方式,讓 ActiveX 也能在 Chrome 內運作呢 ? 架構上看來是有可能的;
  10. 書籤編輯與管理功能薄弱,該不會之後又出個 Google Bookmark 網站,讓 Chrome 透過它同步,並且可由其它瀏覽器連入,甚至是公開自己的書籤集吧 (書籤網站該小心囉);
  11. 希望網址列能像 Firefox3 的 Ubiquity 一樣,能以特定或自定語法開啟網站;
  12. 在 Vista 的 Aero 介面下,標題列有點太高;

2008-09-03

哭哭 Chrome 踩到蟲

剛玩 Crome 時發現滑鼠和 TouchPad 在捲動頁面時會怪怪的,跑去 bug report system 發現兩個小時前就有人踩過這隻蟲了 XD


我發現如果在控制台把滑鼠捲動設定為 n 行的話,滾輪上下捲不會有問題,但是用 TouchPad 的虛擬捲動無法上捲,而且虛擬下捲會變成差不多兩倍快;如果是設定成捲動一頁的話,滾輪上下捲會相反而且變慢,然後 TouchPad 還是不能上捲,虛擬下捲則是會被反相 (向上捲)。

我在 Dell 1520 跑 vista business x64 SP1 搭配內建觸控版 (Synaptics V6.3) ,以及兩隻外接滑鼠 -- Microsoft Bluetooth Mouse 5000 和另一隻 Logitech 的小滑鼠 -- 能夠完整的重製這個問題。大部份回報這個問題的人使用 vista,不過其中也有看到用 windows XP SP3 的。

總之 Web 2.0 時代的精神就是 always Beta ,G 社會這樣也不令人意外啦 XD

Google Chrome 出來囉!!

從 Google Chrome 昨天發佈風聲之後,我就把他們的首頁加到 FireFox 3 SpeedDial 裡頭監視。剛玩 DMC4 想說休息一下回來看個網頁,就發現 Chrome Beta 正式野放囉。


關於 Chrome 的特性 (官方說詞),其實 Google 有先放出一份漫畫稿。大致整理一下,就是說 Google 看其它 Browser 不爽,所以拿 Safari 的引擎 WebKit,兜上自己寫的 Javascript 核心 V8,決定自己做瀏覽器。這隻瀏覽器的特點有:
  • 開發程式碼時,在 Google 總部內有許多猴子能幫忙比對現有網頁的呈現效果是否正確。
  • 多行程 (Multi-process),所以 tab 裡的每個頁面當掉,對其它頁面不會有影響。除了穩定性以外,對安全性也有幫助。
  • V8 加強對 javascript 中型別的控制,以將 js 編譯成 machine code 執行,也加強了記憶體回收 (Garbage Collection) 的效能。V8 對龐大的 js 架構做最佳化,因此在執行 Web Application 時效能更佳。
  • 內建 Phishing / Mal-ware 防堵清單 (這個幾乎所有 browser 都有)。
  • 更佳的權限控制,將瀏覽器與網頁本體分離 -- 包括內嵌的 Plugin (猜想如 Flash 一類) 
  • 上述為我以很糟的記憶力、貧乏的專業知識、以及唯恐天下不亂的個性亂整理的重點。

實際使用 45 分鐘後的感想如下:

優點:
  1. 執行速度真的不錯,然後頁面真的很有 Safari 的感覺 XD (之前做怪怪的電子報,測試測到看內容就分得出是 IE 7, FF 3, 還是 Safari T_T)。跑 Google 的 js 怪獸軟體更是有感覺,例如 Gmail Google Docs
  2. 可以亂拖的 tab 相當方便,特別是在查詢一些需要交互參照的資料時。
  3. 介面簡潔直觀,雖然我還是不太習慣看沒有 status bar 的視窗。
  4. 對既有網頁 (Flash,Java,Silverlight) 的支援度還算 ok,然後很明顯的不可能支援 ActiveX XD
缺點:
  1. 我一直覺得 Google Browser Sync 會在 Chrome 上重現 T_T
  2. 雖然能自其它瀏覽器 Import 設定應該算目前趨勢,但對 Google 的期許較高也是很正常的事。除了能與 Server 同步以外,整合本地端的其它瀏覽器也是很實用的啊!!!! 
  3. Config 可以改的設定真是少到可以 XD 或許以後會有人寫/發現某些 tweak 
  4. 沒有 Extension !!!! 我指的是 "連要從哪邊裝都找不到" 的沒有,而不是 "主機上沒幾套可以用的 Extension" 的沒有 囧rz~
  5. 書籤管理有點弱,當 FF3 可以輸入名稱、網址、描述與標籤的時候,Chrome 只給打名稱和網址,似乎是回到 IE4.0 之前的邏輯去了 (免責 !! 我的記憶力不好 !!!)
  6. 啟始畫面很明顯是向 Opera 與 FF3 :: SpeedDial 的模式致敬,不過供選擇的視窗只能由 Google 決定有點虛。當電腦會由多人共用時,這樣的推薦跟本就沒啥效用。
  7. 當有些網站使用 ActiveX,然後這些網站其實又挺重要時 (例如 Windows Update 或多數銀行線上 ATM 網頁),我還以為 Google 會內建類似 IE Tab 的功能,只是由 Server 來維護這份 IE-only 網頁清單呢。或是更邪惡的,把 ActiveX 也套上其它 plugin 的架構,然後讓 Chrome 成為第一個能讓 ActiveX 正確顯示的 non-MS browser :p
** 補充 1 **
在視窗中按 shift-Esc 可以叫出工作管理員,能看到各頁面及 plugin 佔用的 cpu 資源與記憶體,感覺不錯。

官方有提到所謂的無痕模式,將不會記錄該 Process 的所有行為,除了新增 Bookmark 與下載檔案以外。大概只有準備送禮物給人,還有偷逛不好的網站有用吧 XD 相比之下,Sandbox 自動轉為 Jail(而非禁止執行)的這項功能還比較讓我有興趣,至少逛一些壞壞的網站時能放心點。

網址列聽說可以用各種引擎搜尋,不過我還試不出按法。FF3 Ubiquity 一整個比較好用。

Chrome 內建檢視原始碼 (Ctrl-U) 與 "檢查元素" 功能雖然比不上 Firefox 的 Web Developer,不過也算是各瀏覽器內建中最好用的。

2008-09-02

當 Google Browser Sync 碰上 Google Chrome

Google Browser Sync 是一個我之前還滿喜歡的 Firefox 2 Addon,由 Google 出品,功能是將 Firefox 2 的書籤、History、Cookies、Stored Password、Tabs 透過網路加以同步。雖然也有聽說它把書籤搞爛的故事 (Foxmarks 比較穩),不過整體功能還是相當強大。雖然如此,當 Firefox 3 推出之後,Google Browser Sync 卻沒有跟上 -- 當時在某 blog 上看到的原因是 "程式員被抓去做其它 Project 了"。當然,Mozilla Labs 做了一個帶類似功能的 Weave ,不過當時它同步時,整台電腦都會變的相當 Lag (Weave 1.00.1),然後我就把它砍啦。

總之 Google 即將推出 Chrome,聽說是個 Mozilla-based天哪,我一定是白天被動吵醒超級火大亂打,明明就是 Safari 的 WebKit 引擎 T_T。看來把 Google Browser Sync 搞死的 Project 是啥,大家應該心裡有數了吧 XD (不過話說回來,Google Browser Sync 能 Access 到的資訊主要還是 History 與 Bookmark,偏偏這兩者靠 Google Toolbar 就能取得。從這樣的角度出發,Google Browser Sync 對 G 社產出的邊際效不高,會停止發展也是意料中事)

2008-09-01

PostgreSQL + Visual Studio 2005

以前在某處寫網頁的時,是用 FreeBSD + Apache + MySQL + PHP (FAMP);隨著時間進展,這樣的頭字語縮寫就越來越多了 XD 照這個邏輯來看,微軟要正式推 VISA (Vista + IIS + SQL Server + ASP.Net) 也是很合理的事 :p

最近又開始回來摸 Visual Studio (For fun),想說裡面附的 SQL Server 功能有點少,而且 MySQL 玩得有點膩 (雖然也沒說弄到多熟啦,就只是玩玩而已 XD),所以就改裝 PostgreSQL 啦 XD 在 wikipedia 上可以看到他們家的發展歷史,感覺挺有趣 :p 然後雖然他們沒有在 Manual 裡貼笑話,可是看到他們有些事情一整個不照 SQL 來 (例如 name 的大小寫,還有把 BLOB 叫作 bytea) 都滿好玩的 XD

總之如果要在 Visual Studio 裡搭配 PostgreSQL ,簡單的流程如下:

  1. 裝 Visual Studio 和 PostgreSQL (可以不在同一台電腦上)
  2. 設定 PostgreSQL,至少要有一個可以登入的帳號,並建立要使用的 DB
  3. 裝 Npgsql (.Net Data Provider for PostgreSQL)
  4. 開啟 Visual Studio 及欲編輯的專案,並加入參考 (Reference) 至 Npgsql.dll 與 Mono.Security.dll
至於如何使用 Npgsql ,可以參考 docs/UserManual.html 內的範例。