顯示具有 軟體 標籤的文章。 顯示所有文章
顯示具有 軟體 標籤的文章。 顯示所有文章

2009-06-28

資料同步!

前陣子一直在煩惱要怎麼把資料在很多台電腦間同步的問題,也做過不少相關調查 ˇˇ 然而我對不同目錄的同步有不同要求,而且試過的幾套軟體又各有限制或缺限,實際用起來總是覺得少了某些功能。就在我差點要忍不住自己來寫的時候,Google 到某套神妙軟體,硬是補上了這個三不管地帶 XD 心情愉快之餘,把踹過的幾套軟體做個記錄。

  1. Syncback (可參考 阿德觀點這篇):
    • 檔案小 (1.7mb)
    • 有免費版本 Syncback Freeware
    • 僅支援 Windows 系統
    • 不會在要同步的資料夾中新增存放資料,因此 "刪除檔案/目錄" 後,程式會誤判成新增
    • 有中文介面,雖然翻譯有點慘 ˇˇ
    • 中文目錄名 ok !
    • 能透過 FTP 同步,但中文目錄常常會爛掉
    • 同步的一端可以是 zip 壓縮檔
    • 能做 One-way (backup) 與 Two-way (sync)
    • 以日期 (mtime) 與大小來判斷檔案是否修改過
    • 可透過此程式排程,或手動執行同步
  2. Subversion
    • Freeware
    • 跟本就是套版本控制系統,拿來同步只能說是惡搞 !
    • 主從架構,所以要自己架 server (好在不難)
    • 需透過特殊介面 /軟體/指令 新增/刪除檔案與目錄
    • 協定跨平台,各平台 (Linux/FreeBSD/Windows/MacOS) 都有相對應的軟體可用
    • 妥善設定後,能以瀏覽器從伺服器直接下載檔案
    • 會在同步的資料夾 (遞迴) 下,放置 .svn 目錄存資料;以兩種以上的軟體對同一個目錄同步時,會有一些困擾
    • 功能強大,可以自己排程 (利用 crontab / at) 或手動 submit / update
    • 中文目錄名 ok !
    • 佔用較多硬碟空間 (版本控制系統,不意外 !)
  3. DirSyncPro
    • FreeWare (GPL)
    • GUI 由 Java 寫成,啟動略慢,但有多平台版本
    • 能做 One-way (backup) 或 Two-way (Sync)
    • 以同步本地端資料夾為主,例如透過網路磁碟或隨身碟進行同步
    • 中文目錄名 ok !
    • 不會在要同步的資料夾中新增存放資料,因此 "刪除檔案/目錄" 後,程式會誤判成新增
    • 需手動執行軟體以進行同步作業
  4. Windows Live Sync
    • 今天搜到的就是這傢伙 ˇˇ Microsoft 本家出品 !
    • 目前未收費,但限於 Windows 平台使用
    • 透過網路,自動對不同電腦上的資料夾進行同步,無需排程或手動執行
    • 若誤刪或改錯某個檔案,其它電腦上的對應檔案也會自動修改,科科
    • 妥善設定 (自己開後門 lol) 後,能從任意一台電腦以 live ID 登入,設定其它電腦間的資料夾同步
所以現在我以 Subversion 處理工作目錄,避免把檔案搞爛,並利用版本控制的優點方便隨時rollback;以 Live Sync 同步遊戲與娛樂相關目錄,加快處理速度,並避免我在切換電腦時,要花一狗票時間重設定;SyncBack Freeware 則用於將資料在電腦的內建與外接磁碟機同步。

2009-02-28

Windows7 x64 Beta 使用小感想

微軟放出 Windows 7 Beta 讓大家測試有好一陣子了,
我比較怕死,所以今年才裝來玩 XD
相關連結隨便 Google 就有,我也懶得去查囉 lol

底下是隨便用用隨便寫寫的感想

  1. 軟體支援度
    這應該是重點項目吧 ! 我常用的軟體支援都不錯,目前只試到 RealVNC 4.4.3 Viewer (目前最新 release) 會出現 " setReflection() error"。官網有 RealVNC 4.4.3.2 Public Beta for Windows7 x64 ,似乎能解決這個問題。
    WoW 玩一玩會當機,原因不明,可能是 Fubar 系列 UI 出 Memory Leak,或者是顯卡 + Driver (ATI 4670 + Driver v9.1) 出錯;目前把另一張 8800GT 換上來測試,如果還是出現一樣的錯誤,應該就是 UI 的問題了 ˇ
  2. 硬體支援度
    和 vista x64 類似,該有的限制仍然存在著 XD
    智慧卡讀卡機驅動程式 WHQL 問題還是一樣的令人討厭。
  3. 操作介面
    我喜歡現在的工作列,雖然沒有 Mac 的 Docks 炫麗,但辨識度 (特別是滑鼠移上去時,出現視窗縮圖 -- 與 KDE 類似) 還算不錯。
    但在桌面上秀出視窗外框這點,感覺沒啥意義;如果沒卡專利的話,學 mac 的 Expose 將視窗位置分離 + 顯示內容,操作上會比較直觀。
    抖抖視窗將其它程式最小化,或者是將視窗移到螢幕頂端最大化,這兩點感覺沒啥用處。當顯示器多半是 22 吋起跳時,介面應該要改以 "不將工作中的視窗最大化" 去設計;最大化視窗還是以在標題列 dblclk 最快速,將其它視窗最小化則不實用。工具列右下角的 "顯示桌面" 按鈕感覺有點多餘,常使用這項功能的人,多半早就學會 winkey-D 這個快速鍵了。
    Aero ? 不覺得有多神妙就是了 XD
  4. 系統效能
    Vista 及之前的 Win OS 若在開機後過早登入的話,會因為磁碟頻繁讀取,使得作業速度相當慢,甚至有些程式會出錯 (timeout ?)。Win7 略有改進,至少不會因為系統程式的載入,嚴重影響使用者的操作 (雖然開一些吃 i/o 的程式還是會卡住,但最起碼電腦這時候還算堪用)。要解決這樣的問題,恐怕還是要依賴 ready boost 一類的技術吧 XD
    似乎對程式記憶體用量有改良,不過我裝 vista / win7 的電腦都含 4gb Ram,所以感覺不太出來 @@
總結:Win7 與 vista 感覺差異不大,但如果在記憶體不足的主機會有明顯差異的話 (有測試報告說 Win7 的系統需求與 WindowsXP 相仿),比起 vista 會是較值得購買/使用的 OS。作出這樣結論的主因並非它有什麼偉大的改進,而是 vista 太遜。

2008-11-19

ipfilter 隨手亂記

ipfilter 可以從這邊下載,vista 下的放置點:

  • emule: %APPDATA%\emule\config (吧,忘了裝 XD)
  • uTorrent: %APPDATA%\uTorrent

2008-11-13

SQLite + Python ?

前陣子想說,在 PHP 以外,應該學點其它的 Script 來用,所以選擇了 "There's only one way to do one thing" 的 Python ,而非 "There's MORE THAN one way to do one thing" 的 Perl。這是個人喜好問題,所以沒什麼好談的。

至於會想把重心偏離 PHP 的原因,是因為我堅信 "好的語言要基於良好的架構,以及寫得夠好的 manual (進入障礙低)"。十年前,PHP 的 Manual 相當易查易用,主頁面顯示兩層的內容,其中第二層便是函數名稱,且包含函數簡短說明。因此我在一夜之前 K 完其中的大半。幾個月前我又瞄了一下 Online Manual,發現整個架構變得難讀了。主頁面現在只顯示第一層分級,並且沒有說明;各函式的說明又跑到了第四層,而且在 1-3 層都沒有說明。也就是說,我必需要 Click 兩次才看得到函數名稱與說明;或者是,才知道我有沒有走錯分類。除了 Manual 變差以外,在 PHP 涵蓋越來越多功能以後,遲不引入 namespace (或 module) 的概念,會使得多人合作開發系統,或者是程式的引用越來越容易造成麻煩。

至於 SQLite 的故事就更簡單了。我一直有在摸 MySQL (雖然也只在爛使用者的水平),然後之前聽到 Izero 長輩說 KKBox 是用 SQLite 儲存資料,就對這個 Embedded DBMS 有點興趣啦。

然後幾週前,我想說既然平常都是用 PHP + MySQL 來寫東西,何不試試 Python + SQLite 呢 ? 網路上雖然有 Python 2.5 以後內建支援 SQLite3 的說法,不過我試的結果似乎不是如此 XD

  • Windows 版的 Python 2.6 內建 pysqlite2,所以支援 SQLite3。那個 "2" 是 pysqlite 的版本號。另外,我家 AMD AthlonX2 5000+ 跑 vista x64 裝 Python 2.6 AMD64 會當掉,真不知道這是給哪一家的 AMD64 裝用的 XD
  • FreeBSD 用 Ports 裝的 2.5 有包含 sqlite3 這個 lib 的目錄,不過似乎沒有加上 pysqlite2 的 dep。所以要再裝 /usr/ports/databases/py-sqlite3 這個 port
  • Ubuntu 裝太快了,我忘記當時有沒有點 py-sqlite 這個套件,下週應該會再組一台,到時候再看看;Mac 不在手邊沒得試 XD

2008-11-12

從 SQLite 看 SQL (2) :: 隨隨便便的資料庫說明

現在的 RDBMS (關聯性資料庫系統) 多半是長這個樣子:

  • Database 1
  • Database 2
    • Table 1
      • Column 1
      • Column 2
      • Column 3
      • * Index 1
      • * Index 2
    • Table 2
也就是說,資料庫系統底下有好幾個資料庫 (Database),每個資料庫底下有好幾個表格 (Table)。每個表格可以包含有好幾個欄位 (Column),然後每個欄位各自要設定名稱,資料型態,能不能為空值,等等的屬性。資料則是以列為型態在存表格內,稱為資料錄 (Record Set) 或是資料列 (Data Row)。為了加速搜尋,可以將表格的某些欄位設為索引 (Index),那麼在對這些欄位檢索資料時,速度就可能可以加快 (特別是對複雜的查詢)。

有些 DBMS 要求使用者先行登入,並且包含某種型態的權限系統;有些 DBMS (例如 SQLite) 就沒有這樣的設計。另外,有些 DBMS 會設計各種內建函式或語法,使查詢的方式變得更多樣化 (如果能透過下 Query 解決的問題,就不要把資料收到 Script / APP 裡用程式自己算),效能也更高;有些 DBMS 則因某種原因,而不提供某些語法。所以在使用時還是要 K 相關使用手冊。

另外在設計資料庫架構的時候,常有許多考量。這點就自己去 K Google 或翻書吧 XD 比較熱門的大概有正規化,還有寫程式碼時要避免 SQL Injection 等等。

SQLite 具有一些相當有趣的特性,大致上包含:
  • 無需設定
    SQLite 本身是嵌入式資料庫系統,因此無需繁瑣的安裝或維護資料庫系統本身的程序。其它資料庫系統雖然運作得也不錯,但光安裝就可以搞死人了。
  • 非主從式架構
    對大部份資料庫系統來說,你必需要先把它們裝起來,然後透過網路 (即使是連到 localhost) 登入進行作業。使用 SQLite 時,只要能有在硬碟讀寫檔案的權限就夠了。雖然如此,這也使得若程式有蟲,可能會影響到資料庫的正確性 (因為沒有 Server 來管理維護);並且資料庫檔本身的安全性也較差 (少了 Server 的權限控管)。
  • 資料庫只有一個檔案,而且可以跨平台
    SQLite 的資料庫是直接存在檔案裡的,而且檔案可以攜至各種平台使用。這樣備份,搬檔都很方便。
  • 精簡
    SQLite 在編譯後僅佔極小的空間,所以使用它的程式不會變得太過肥大。
  • Manifest Typing
    大多數 DBMS 讓 Column 指定型別,然後只允許符合型別的資料被儲存;SQLite 則讓每個值擁有自己的型別,因此你可以把字串塞進型別為 int 的欄位中。有人覺得這是 bug,不過 SQLite 堅持這是一項 feature。如果能被轉型的話,SQLite 還是會把資料轉成設定的型態的。唯一的例外是當碰上表格的 Primary Key 時,SQLite 會強制將值轉為 int。
    因為有這項特性,我在寫 SQLite 時都不太設欄位型別了 XD
  • 可變長度的欄位
  • 高級原始碼 -- 保證可以由人類看懂
  • 將 SQL 編成虛擬機器碼
    SQLite 會將丟進去的 SQL 指令先編成虛擬機器碼,再真正的去執行搜尋。使用 EXPLAIN 指令將能看到這些碼,有助於除錯等等。
  • 程式碼完全屬於公領域
    SQLite 是完全自由,不受著作權法干預的。(甚至不是 GPL,或是 CC !) 任何人可以將 SQLite 應用在他想要的地方。 (不過著作人格權應該還是受到保障吧,我亂猜的)
  • 對 SQL 的擴充性
    SQLite 提供一些提升效率的工具,例如前面提到的 EXPLAIN 與 Manifest typing。此外 SQLite 還提供了一些標準之外的語法,如 REPLACE, ON CONFLICT, ATTACH, DETACH 等。SQLite 甚至還有 API 讓你可以在 SQL 裡安插自定函數及 Collating Sequences (我不清楚這是啥 @@ 等 K 到這邊再說)

從 SQLite 看 SQL (1) :: 起頭

最近因為某種原因 (不是上次的幫 SPORE 蓋房子了),又回來碰了一下資料庫。隨手翻了一下,發現 SQLite 的官網文件中,關於 SQL 指令的說明相當淺顯易懂,因此打算沒系統的亂翻一下,順便給自己當個備忘。當然,網路上關於 SQLite 的特性與推廣已經夠多了,不需要在這複製貼上 XD

這系列文章的翻譯沒有時間表,更沒有行程表 ! 嚴禁摧稿 (OS: 其實跟本沒人要看吧,哭哭~) 預定之後會分別對 SQL 裡的指令,藉由翻譯 SQLite 文件中的對應項目來做說明。暫定可能照 CREATE, ALTER & DROP, INSERT, DELETE, UPDATE, SELECT, function, TRANSACTION 這樣的順序亂講吧。至於 JOIN, Sub-Query, EXPLAIN, VIEW 就看我能不能在寫到那邊之前,把它們弄熟了 XD

除了 SQLite 的官網之外 (那個指令結構圖還挺好用的),還可以念 MySQL 文件長知識 (2549 頁的知識啊 ~~~),或者看這邊的文章先有點概念。SQL 的歷史及說明可以翻 Wikipedia

另外,由於 SQL 標準允許各資料庫系統在某些地方自由發揮,並且 SQLite 也未必遵守 SQL 的所有標準,不同的 SQL 版本標準也可能有異,因此這系列的文章必然無法涵蓋所有版本的資料庫系統。

WinXP 使用跨距磁碟區的小心得

這幾天因為氣場不順的關係,把手上的幾台電腦都弄到需要重灌 (kukuku~)
其中有台 P4 2.8G 裝的是 WinXP,就順手拿它來玩玩 Windows XP 內建的磁碟管理模式。
(主力桌機 AMD AthlonX2 5000+ 則是在 vista 之外,還裝了 Ubuntu, 目前使用 Kubuntu 8.10 搭配 KDE 4.1 桌面,有空再來聊這個 XD)

為了避免造成混淆,先將以下的幾個名詞加上定義。下列定義僅適用於本文,與業界或各軟體的說明不保證相同 ! (事實上,MS Windows 對於 "磁碟機" 和 "磁碟" 的用法恰好和我相反,哭哭 T_T)

  • 硬碟機 (HDD):實體的硬碟,或者是硬碟的實體
  • 磁區 (Partition) :是在磁碟機中,由如 fdisk 等軟體劃分出的區塊
  • 磁碟 (Drive):指的是由單一或數個區塊組成的邏輯單位,能夠直接被掛載 (Mount) 到一個磁碟代號 (MS),或者是掛載成為另一個磁碟機的某個目錄 (Un*x, 或使用 NTFS 的 MS)
一般情況下,硬碟機最多能分割出四個磁區,包含主要磁區 (Primary Partition) 或至多僅有一個的延伸磁區 (Extended Partition);每個延伸磁區可以再被割出數個邏輯磁區 (Logical Partition)。其中的主要與邏輯磁區,可以當作 Drive 被掛載。平常的 Drive 都只包含一個 Partition。

但在某些情況下,一個 Drive 會包含多個 Partition,例如 RAID 。簡略的說,RAID 就是把數個硬碟機或磁區,經由軟體或硬體的方式,變成一個 Drive 的技術。透過不同的設定,RAID 能夠提高資料的可靠性 (自動的備份與錯誤較正)、加大硬碟容量且資料讀取速度、將 RAID 整體或其中的部份硬碟機取下或更換 (熱插拔、抽換) 等等--這些特性未必同時存在。

Microsoft Windows 從 2000 之後 (含 Server 2003, 2008, 特定版本的 WinXP, Vista ),內建支援某些軟體 RAID 模式,其中使用的名詞大略意義如下:(註:微軟口中的磁碟,指的其實是我的磁碟機,反之亦然)
  • 簡單磁碟:單純的,古典的硬碟使用方式,能夠被轉換成動態磁碟,以支援其它格式
  • 動態磁碟:轉換過的簡單磁碟,支援下列各種特性。無法被轉回簡單磁碟 !
  • 跨距:Spanned Volume,應該算是 RAID 中 JBOD 的一種實作吧 XD (兩邊都有 RFC 或 IEEE 標準啦,不過我懶得看) 注意:RAID JBOD 裡只要有任何一顆磁碟損壞或被拔除,可能會搞爛整個 RAID 的資料;MS Windows 沒有提供任何從跨距磁碟中取出資料的工具程式。系統碟似乎無法建立成跨距磁區。
  • 鏡像:對磁區的 RAID1 (Mirror),因此若其中任一磁區損壞,資料仍然能夠讀取。
接著是要如何在 WinXP or Vista 上建立跨距或鏡像磁碟的步驟簡述:
  1. 電腦上安裝正確的作業系統。Windows XP Home 已知無法建立動態磁碟,Vista 的各版本我不確定 XD 另外,要確定至少有某顆磁碟有足夠且未分割的空間。若是要對某磁碟機 (而非磁區) 建立鏡像的話,可能會需要有兩顆同樣型號的硬碟機;如果要對某磁區建立鏡像的話,需要有大於或等於該磁區大小的未分割空間。
  2. 進入控制台 -> 系統管理 -> 電腦管理 -> 磁碟管理。
  3. 將牽連的所有磁碟機 (包含有未分割空間的那顆) 都轉換成動態磁碟 (右擊 "磁碟#" 的區塊就會有這個選項)。只有動態磁碟機上的磁區,才能夠成為鏡像或跨距磁區。如果轉換的磁碟機包含系統碟的話,需要重開機。
  4. 在要建立鏡像的磁碟機或磁區,或是要轉換成跨距的磁區上按右鍵,點選想要的選項
  5. Windows 會幫你帶出可能使用的磁碟,點選後便完成。
重點在於要有未分割的空間,並且使用的磁碟 (包含原本與要擴充的部份) 都先轉成動態磁碟。否則選項可是會灰給你看喔 XD

2008-10-31

Matlab 的編碼與中文顯示

雖然 Matlab 官方宣稱字串在變數 (Workspace) 與二進位儲存檔 (.mat) 是使用 Unicode 編碼,據稱為 UTF16be,不過使用 Editor 編輯儲存時,似乎沒這麼回事 T_T

在 Vista 底下,預設使用 C950 (Big5) 編中文就算了,在 Mac OSX 上 (明確設定 LANG, LC = zh_TW.UTF-8) 還是給我存成 Big5 就有點過份了。更糟的是,餵 Unicode 給它 (UTF8, UTF16, UTF16be) 通通看不懂 !!!!!

也就是說,預設 Matlab 的主程式基於 Unicode 運作,自帶的 Editor 只看得懂 Big5 編碼。有空再試試這樣的限制是來自於 Editor 還是 JRE

另外,在網路上也看到了一些關於 Matlab 使用中文發生問題的解決方式,簡單整理如下。Matlab 7.x (2006 以後的版本) 確定支援中文 (只是編碼很笨而已 XD),若無法正確顯示,多半是字型設定的問題 (Windows / Un*x 都是)。只要更換為包含中文的顯示字型便可以正常輸入顯示。順便推薦網路上爬到的 雅黑 + Consolas Hybrid 字型,畢竟寫程式用的字型,一定要能清楚區別 "I,l,1", "0,o,O", "i,j" 這幾個不同的字元。該字型中文部份使用微軟雅黑,為了避免授權的問題,請需要的人自行 Google 吧 XD (認識的當然可以直接要啦 :p)

2008-10-29

安裝網路印表機簡易說明

底下是寫給實驗室的同學與學弟妹看的東西,可說是相當基礎,但好像也很多人不會 @@

要在 Windows 平台下,透過網路上的芳鄰安裝印表機,可以遵循以下步驟:

  1. 確定 Client (MS Windows) 有裝通訊協定 (File & Printer Sharing for Microsoft Network),並且 Server 端的防火牆允許 LAN 對網芳進行連線 (在 Linux / FBSD 上就是 Sambad)
  2. 從 Client 端執行 "\\電腦名稱" 或 "\\電腦IP",連線到 Server。有些情況下在 Server 會需要以特定帳號登入以取得權限。
  3. 在想要安裝的印表機上 DblClick
  4. 有些時候,Server 所提供的列表機驅動程式無法為 Client 所用 (例如 Windows -> Linux,或是 WinXP -> Vista),就需要手動選擇印表機的型號。舉例來說,我們實驗室的 HP LaserJet 3380 在我家 WinXP 上找不到,但使用 HP LaserJet 的驅動程式便能正常運作。

如果要除錯的話,也是從這個流程往下跑,先看網路協定有沒裝好,之後是連線有無被擋掉,驅動程式是否安裝正確,最後看 Server 端使用者權限是否足夠。

2008-10-18

KKBox (Win) 4.0 Bug 小補充

前面這篇提到的 Bug 主要是關於在 KKBox (Win) 4.0 裡,匯入歌單 (無論是 .kbl 檔或是從網路取回備份 <-- 我想機制其實應該是同一個) 時,歌單中的歌曲可能會消失,變成只能由 "全部歌曲" 找到。但匯入完畢後,重新開啟 KKBox 時,歌單的內容不會有任何改變。

然後前天其實還有碰到另一隻 Bug ,上篇忘了寫 XD

新增歌單,搜尋 "陶喆" 的所有歌曲,然後 [用滑鼠把歌拖到歌單裡 | 在任何一首曲子上按右鍵,選全部新增到 [前面新增的歌單 | 新歌單 ]],之後重新啟動 KKBox。
Boom ! 恭喜所有歌單錯亂,情況與前面那篇類似 XD

我不確定這樣的情況是否只會發生在新增陶喆的歌曲,亦或所有歌手皆如此。所以在新增或編輯歌單前,建議還是要先備份喔 XD (拷貝整個目錄喔,匯出的檔案會在匯入時再度踩中 Bug)

2008-10-17

KKBox 4.0 有 Bug

真的,我真的應該去做軟體 QA 的 XD

發現 KKBox (Win) 4.0 在歌單匯入匯出方面的 Bug。
當以 "匯入歌單" (從另一台電腦匯出的 .kbl 檔) 或是 "取回線上備份" 取得歌單時,會把 KKBox 的歌單整個抖亂。匯入的歌曲都會出現在 "全部歌曲" 歌單中,但其它所有歌曲或歌單都可能會亂掉,包含下列各種情型:

  1. 歌曲所屬歌單被吃掉,因此只能從 "全部歌曲" 抓到那首歌
  2. 歌曲所屬歌單被改掉,出現在不正確的歌單裡
  3. 歌單內裝的歌曲亂七八糟,包含有原本屬於與不屬於此歌單的曲子
  4. 歌單消失不見
KKBox 沒付錢給我,所以我也懶得去抓是怎麼回事 XD
不過我會建議所有人 "不要升級至 KKBox Win 4.0 版",並且避免使用匯入匯出等方式在主機間傳送歌單。如果真要同步的話,將使用者家目錄下的 Music\KKBox\systemu.dat 複製到新主機去就 ok 了 (至少整個目錄 cp 過去對我有效)。

KKBox Mac 版本匯入及取回線上備份均正常....

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-08-04

以 VB.Net (Visual Studio 2005) 模擬滑鼠動作

玩一些網路 Flash Game 的時候,常常需要狂暴的點擊滑鼠,而所謂的 "滑鼠連點程式" 就成了第一選擇。網路上可以搜尋到不同作者篆寫的版本,像是 windsheep 寫的 windclick,或是..... 忘了,不重要 XD 不過之前有次想抓的時候,發現載點好像掛了,就只好自己寫一個囉。

要送出滑鼠事件,例如點擊 (Click)、壓下按鍵 (Mouse Down)、放開按鍵 (Mouse Up)、或是移動滑鼠 (Mouse Move),必需透過視窗訊息 (Windows Message) 運作,然而 .Net Framework 並沒有提供這樣的功能,因此只能透過 API。網路上可以找到一些關於所需 API 的說明,而這邊有人寫出基本的模組供使用,而這邊則有包好的 Class 源碼。

但考量到平台 (32 or 64 bit system) 和版本的關係,那個模組需要做一點修改。VS 2005 + vista x64 底下的 Long 是 8 byte,而 Integer 是 4 byte,但並非所有作業系統及 Compiler 下均是如此;相對的,user32.dll 所提供的 API 如 SetCursorPos 與 GetCursorPos 則明顯不使用 8 byte 的變數型態,因此將相關的變數型態指定為 int32 會是比較安全的做法。然後 TYPE 在 VS 2005 中已經被拿掉了,只要改成 Structure 就好。

修改過的模組檔如下:
Option Explicit On

Module MManip
'API 定義
Public Declare Sub Mouse_Event Lib "user32" _
(ByVal dwFlags As int32, ByVal dx As int32, ByVal dy As int32, _
ByVal cButtons As int32, ByVal dwExtraInfo As int32)

Public Declare Function SetCursorPos Lib "user32" _
(ByVal X As int32, ByVal Y As int32) As int32
Public Declare Function GetCursorPos Lib "user32"
(ByRef lpPoint As POINTAPI) As int32

Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10
Public Const MOUSEEVENTF_MOVE = &H1

Public Structure POINTAPI
Dim X As Int32
Dim Y As Int32

End Structure

'取得目前滑鼠座標
Public Function GetCurrentPos As POINTAPI
Dim Position As POINTAPI
GetCursorPos(Position)
GetCurrentPos = Position

End Function

'取得目前滑鼠座標 x 值
Public Function GetCurrentX() As int32
Dim Position As POINTAPI
GetCursorPos(Position)
GetCurrentX = Position.X

End Function

'取得目前滑鼠座標 y 值
Public Function GetCurrentY() As int32
Dim Position As POINTAPI
GetCursorPos(Position)
GetCurrentY = Position.Y

End Function

'滑鼠左擊
Public Sub LeftClick()
LeftDown()
LeftUp()

End Sub

'按下滑鼠左鍵
Public Sub LeftDown()
Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End Sub

'放開滑鼠左鍵
Public Sub LeftUp()
Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End Sub

'滑鼠中擊
Public Sub MiddleClick()
MiddleDown()
MiddleUp()

End Sub

'按下滑鼠中鍵
Public Sub MiddleDown()
Mouse_Event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
End Sub

'放開滑鼠中鍵
Public Sub MiddleUp()
Mouse_Event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
End Sub

'移動滑鼠
Public Sub MoveMouse(ByVal xMove As int32, ByVal yMove As int32)
Mouse_Event(MOUSEEVENTF_MOVE, xMove, yMove, 0, 0)
End Sub

'滑鼠右擊
Public Sub RightClick()
RightDown()
RightUp()

End Sub

'按下滑鼠右鍵
Public Sub RightDown()
Mouse_Event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
End Sub

'放開滑鼠右鍵
Public Sub RightUp()
Mouse_Event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
End Sub

End Module

2008-06-19

除了吃掉 KKBox 的 DRM 以外....


前陣子為了想找某首歌,刷卡買了半年的 KKBox。我原本都是以購買實體 CD 為主,但前陣子要找首有點歷史的歌,才開始去查線上音樂服務。當時我沒查 iTunes Store,然後 Amazon 說他們家的音樂不賣國外,所以就沒買成。後來發現 KKBox 其實也有不少外文歌,所以就刷卡買了。雖然網路上也有換 email address 連續試用的技倆,不過既然他們價格合理 (7xx NTD / 半年),該賺的還是要給人賺 XD
KKBox 與 ezPeer 兩套線上音樂服務都提供音樂下載離線播放,但因檔案有 DRM 保護,所以無法複製至其它電腦或媒體播放器 (如 mp3 player),或以 WMPlayer 之外的軟體播放。為了能讓我家 T.sonic 840 能播這些音樂,我在 google 上爬到一些能夠破解 DRM 的軟體。我不太想自己 host 這些東西 (我沒種),不過聽說其中有套軟體用 "convert.exe" 當作關鍵字就能查到。
這套軟體的功能相當精簡,能在一秒內解除 wma 檔案的 DRM 限制,不過它是 console 程式,對檔名的判斷會有些小問題 (許功蓋),並且一次只能接受一個 input。寫 shell script / bat 檔案一次轉完整個目錄的檔案,是種合理的解決方式,不過用起來總讓人感到相當 geek。所以我花了一個下午用 VS.Net 2005 寫了一隻 wrapper 出來 (太久沒碰了,不然應該 1-2hr 就能搞定),能將檔案表列處理,並處理檔名問題。目前只能由 OpenFileDialog 讀檔,無法接受拖放輸入,不過其它功能都寫得差不多了 XD
由於本人做事一向低調,這軟體我也沒打算公開 (應實驗室學弟要求寫的)。不過要是有和我夠熟的人,恰好有買 ezPeer 或 KKBox 帳號又想用 mp3 player 播放音樂的話,我也不會介意有人使用這隻小程式。不夠熟的人 (例如從 google 搜尋 "KKBox DRM 破解" 爬到這篇的路人) 就不用試啦,前面的資訊絕對足夠你們找到破解程式的。

2008-06-18

Google Browser Sync 確定不支援 Firefox3

下載了 Firefox3 以後,不可免的要開始更新各種 plug-in / extension。當下發現的第一件事就是 Google Browser Sync 不支援 Firefox3。基於 Google Toolbar 有發 Firefox3 的版本,猜想 Google Browser Sync 會發新版,應該不是件偏離邏輯的事吧 XD

不過用力爬文以後,只發現這邊有消息指出,Google 因為把原本做 Google Browser Sync 的人拿去做其它事了,所以將停止它的開發 T_T 原有 Firefox2 的版本則會在 2008 年繼續提供服務 (之後就不知道會怎樣囉)。

Google Browser Sync 可以在不同機器的 Firefox 間同步下列資料:

  • 書籤及歷史 (Bookmark & History):這兩項都不難找到替代品,使用 Foxmarks 同步書籤相當方便。Mozilla Labs 做了一個叫作 Weave 的服務,能夠同步書籤及歷史。這東西似乎有限制註冊人數,前兩天一直無法登入,不過剛剛 (6/19 7:30) 好像又開放註冊囉 ^^;
  • 儲存的帳號及密碼 (Password):目前可以使用 Password Exporter 把密碼弄出來,或是以 PasswordMaker 這樣的套件管理/產生密碼,不過終究沒有線上自動同步來得方便啊 T_T
  • Cookies:這樣不管用哪台電腦爬論壇,都不需要一直重新登入囉 XD 有些網路小遊戲的記錄甚至還可以共用。
除了同步書籤及歷史以外的功能似乎都不太容易被取代,看來要等一陣子才能讓 FF3 變得和以前一樣方便囉 T_T

Firefox 3 上了

Firefox 3 火熱上映
Firefox 是一個開放原碼的瀏覽器,在許多平台上都有包好的檔案,安裝執行相當方便。它可以加入多種擴充功能,包含 extension, plug-in 與 themes,自由度相當高。我的電腦上雖然安裝有 IE 7.0, Opera, Safari 與 Firefox 2 四種瀏覽器,不過平常我都是使用 Firefox。

透過 Google Browser Sync 可以同步所有電腦的書籤。雖然它有時候會秀抖,把整個書籤弄亂 XD 不過拿本地備份再蓋回去就好。另一個方法是改用 Foxmark
PCMan 寫的 IE Tab 能夠將Firefox 裡的某個 tab 改以 IE 核心顯示,這在碰到某些不怎麼合標準,或者是使用邪惡的 ActiveX 技術時很好用。Mac 就拿它沒輒囉。
LittleFox 是一套將按鈕縮小的 theme,把螢幕空間盡可能的留給網頁呈現。
AdBlock Plus 是套強大的廣告清除套件,不過有些時候我還是會把它關閉,廣告可是大多網站生存的命脈啊 XD
其它我常用的 plug-in 還有 Download Statusbar, DOM Inspector, Web Developer, Google Toolbar, Tab Mix Plus 等等等 XD 如果想玩酷炫特效的話,Cooliris PreviewPicLens 更是非裝不可!

雖然說 FF 2.0 功能及擴充性都相當強大,不過它在執行 javascript 的時候,速度並不是太讓人喜愛,特別是在執行一些 Google 應用的時候。FF 3.0 則改用了 Gecko 1.9 核心,據說 js 執行速度更上一層 (不過我沒抓 Beta 下來玩 :p)。網路上有人說 FF 3.0 (Gecko 1.9) 執行 js 速度略慢於 Opera 9.5,而 CSS 載入速度略快,不過相關評測還是等 FF 3.0 正式發布/使用者多了以後再看吧。

Firefox 3.0 企圖突破 "發佈日最多下載" 的世界記錄,因此在 6/17 日正式發布起 24 小時內 (台灣時間為 6/18 1:00am - 6/19 1:00am) 請有興趣的玩家盡量衝量囉 XD 目前已經可以從官網下載了,不過可能是因為網路流量或磁碟 I/O 的關係,需要 Refresh 幾次 :p

** 附註: 目前有些附加元件未能使用於 FF 3.0 上,至少包含 Tab Mix Plus 與 Google Browser Sync。官網的流量似乎也被 FF 3.0 下載塞爆,無法連入下載附加元件的網頁。看來要等下載日結束後才有空慢慢整理囉 ^^;;;