昨天在 MozillaZine 看到的 unofficial build
只能說裝起來之後感覺得出來速度有差別
http://www1.plala.or.jp/tete009/en-US/software.html
多了幾個 image 的 patch 和 VC2005 的 PGO

Image 的部份好像蠻明顯的
印象中之前有 image cache allocation 的問題 不知道是不是修掉了

一時手癢來寫一下
第一次看到神妙的 vim 是在系上的的機房
某天 I0來學校弄機器 然後就在我旁邊秀了一手 vim 的神技 (對那時候用 ee 的我來說 哈)
我記得 I0 好像先 show 了一下 split … (好神奇啊!)
然後還有 Virtual mode, Block mode、 ‘>’ 等等
對那個時候整天在用工作站的我來說 vim 簡直是神器啊
回家馬上把 vimtutor 開來練習
從此和 vim 結下不解之緣 可以說是惠我良多

一般 editor 可以做到的功能 vim 通常也少不了
最讚的應該是 vim 支援很廣的 file syntax
從此以後不管是寫網頁, 寫 verilog, 寫 asm, 全部用 vim 就一次搞定
連打 latex, 寫 spice 都可以用
而且全部都有漂亮的 syntax highlighting

接下在研究所時期
我是做硬體的 所以主要都是在寫 verilog
實驗室裡面的人 除了我以外 都是以 UltraEdit 為主
不過那時候和我一起弄 project 的 cplin 看 vim 覺得蠻神奇的
也常常跑過來問我要怎麼用
有人問當然要好好研究一下
看看 vim 的世界還有什麼好東西是我沒發現的

第一個是寫硬體的人一定會用到的 visincr 這個 plugin
基本上用 UltraEdit 的人第一個想問的應該會是這個
這個 plugin 像 UltraEdit 的 Column mode
可以生出一行累加的數字 1, 2, 3, 4 或是 0, 3, 6, 9 等等
這個應該是 hardware designer 必備

另外一個是把 vim 變身成一個 edit + debug 的平台
一般我們寫 code 的流程是這樣
寫完之後把 compiler 平台叫出來 compile code
查一下 message 在第幾行後 再回到 vim 修改
這樣就有點麻煩
一來要切來切去 二來要從一堆亂亂的 message 中找到行數真的是件麻煩的事
後來找出了 vim 強大的 quickfix
配上 command line 的 compiler
把 error log 的 format 寫好
就可以很輕鬆的把 vim 變成 editor + compiler
寫 code 寫好後 按下 F7 就可以自動檢查
如果有錯會開一個小 window 把 error 秀出來
點兩下就可以跳到有問題的那行
快樂的把 code 修好
從此寫 code 的爽度 ++

最後一個 也是我覺得 vim plugin 裡面最重要的一個: Project
對.. 這個 plugin 的名字就叫做 Project
基本上用了這個之後 你的 vim 就變成一個神兵利器
用起來的像這個樣子
Vim + Project
簡單講 Project 可以把會用到的檔案放在一起
vim 的左邊就變成了像一般 IDE 的 Project manager
點兩下就可以把檔案開在右邊的 Window
整合了這個和上面的 quickfix 的功能
vim 就變成 vim x++ 了 (x 隨便你換)
基本上和一個整合的 IDE 沒什麼差別
用了之後你應該會和我一樣 覺得生命美好了許多

我的 vim 之路到大概就到這裡
其他還有一些
必學的三種 virtual mode
可以省下很多的麻煩的 macro (’q')
如果你有在用 buffer 的話 方便的 selectbuf plugin
等等比較基本的就不介紹了
另外在 vim 的網站上有不少的寶 (scripts/plugins)
翻一翻應該會蠻有收獲的

第一次自己弄 binary
因為 CentOS 上找不到新的 Firefox 可以用
官方的則是因為 freetype2 的 pattern issue
新細明體 hinting 會碎掉 (好像啦~_~)

只好自己弄 package
下次應該會把一些常用的 extension 包進去 XD

如果有人要的話 在這邊

整理一下最近的新知

因為某種特別需要 (噗)
需要拿程式內部的 data

我對 windows programming 其實不熟
對整個流程不甚了了
不過整理一下過程

  • 在 Inject Dll 裡面 開一個 Share Memory 把 Data 放進去 像這樣
    #pragma comment(linker,”/SECTION:.shared,RWS”)
    HINSTANCE hDll;
  • 設定 Victim Window 的 Hook 到 DLL 的一個 Function,HookProc
    g_hHook = SetWindowsHookEx( WH_CALLWNDPROC,(HOOKPROC)HookProc,
    hDll, GetWindowThreadProcessId(hWnd,NULL) );
  • 在 HookProc 裡面把 Library Load 進來
    然後開始做壞事
    比如說偷看系統 DLL 的 function 之類的 XD

流程大概是這樣
不過我只有把 Function Disable 掉之類的比較成功
其他要偷把系統 Function Call 的東西拿來偷看之類的都蠻失敗的
不知道是因為資料量太大還是怎樣 (用 OutputDebugString .. )
還沒看到好料的就 Crash 了 orz

比較好的方法應該是用 DDE 把 Data 弄出來吧
不過我 windows programming 不熟
以後再慢慢研究 XD

另 Auto Debug for Windows 也是好物
對要處理的 Dll 會有比較清楚的了解

受Joel on Software這篇文章
微軟如何輸掉API戰爭
的啟發
覺得好像可以開始學一點有記憶體管理的程式語言了
引述一下

我時常會寫相同的程式,用C++呼叫Windows API寫一次,用Visual Basic也寫一次,C++通常要花三到四倍的工作時間。為什麼呢?答案是記憶體管理。要瞭解原因最簡單的方法,就是去看任何會傳回字串的Windows API函數文件。仔細看看有多少篇幅在討論該字串的記憶體由誰配置,或是如何協商需要的記憶體數量。

I buy it.

所以,Java 還是 .Net ?
我的 Java 程度大概只停在讀過 Java in a Nutshell 的程度
正準備要把 eclispe 裝起來的地步
C# 則似乎是個迷人的玩意兒
雖然我和很多人一樣對 MS 的印象很差

有點難以取捨
如果眼光放長遠一點
.NET 應該才是選擇
我想微軟應該還是會贏 :-P

不過我還是先玩 Java 好了
畢竟我只負責玩 不負責用 XD

因為某些邪惡的因素有在跟某 news group 的文章
所以把舊的不能動的 nntp2rss 修了一下 (php5 incompatible, 懶得丟 patch :p)
可以動了
不過該 news group 是 Big5 or GBK 的編碼
還得順手轉一下

之前有看過 irssi 的 recode plugin, 似乎是好方法
不過和 imap 的 extension 衝到 php 一開就爆炸
我原本是像找比較像 libhz 的 library …

最後發現比較方便的是 mb_string (花了一堆時間 orz 爛 recode)
用法如下
mb_detect_order(”UTF-8,BIG5,GBK”); // 應該是 GBK 沒錯 orz 對匪區不太了解
$enc = mb_detect_encoding($str);
return mb_convert_encoding($str, “UTF-8″, $enc);
這樣就可以同時轉 Big5 又可以轉 GBK

這幾天用 Firefox 用得很相當的不爽 @”@
Firefox 處理 Picture 相當的虛
早上關了一個 VM 吃了 1.8G 的 Firefox 感覺非常的差

剛找了一些 trunk 的 build
應該修了不少 Memory leak
現在用起來超開心

Btw, TBE 完全爛掉了
改用 Tab Mix Plus 追 trunk 的版本

之前在玩 bugzilla 的時候順便弄的
主要是利用 database 裡 extern_id 的欄位
然後 login 的時候就可以讓 e-mail / 底層認証系統同時使用
我在 Bugzilla 上 file 了這個 Bug

上面有 Link 和使用方法
要改成其他認証系統應該也蠻方便的 

原本是要 trackback Gslin GNU Problem Report Management System 這篇的..
不過 blogger 好像不能 trackback orz

就使用介面來講,Bugzilla 好一些
上次試用的心得 ^^

ITHOME 的報導

Workaround 的方法

不過我懶得弄 ._.

小結: 微軟再不 patch 就慘了 ….

Update: Passive and active fixes available for .wmf

Next Page »