Archive for the ‘小工具’ Category
Linux 上的 Quicksilver
Quicksilver 是 mac 上好用的輔助軟體,可以在圖形介面下享受命令列直接執行指令的快感,相關介紹請見 zonble 跟 orcas 的 blog。
Gnome 下有人寫了 Quicksilver 的 clone,Gnome-Do,安裝的時候需要 mono,所以應該是以 .Net 完成的,使用起來應該跟 Quicksilver 差不多吧(沒用過快銀),連介面都非常相似,也可以自己寫 plugin =)
ps. 聽說 Quicksilver 變成 opensource 了?不過網站怎麼跑到 127.1.1.1 去了.. Orz
Zenity - 對話框產生器
zenity 這東西真的很好用,可以快速產生一些有用的 dialog,像是為了快速在網路上抓一些 0rz 的謎物,以下 script 就很方便 :p
!/bin/sh
URL="http://0rz.tw/"
NUM=zenity --entry --text $URL
if [ $NUM != "" ]; then
wget -P ~/Desktop $URL$NUM 2>&1 | \
sed -u 's/.*\ ([0-9]+%)\ +([0-9.]+\ [KMB\/s]+)$/\1\n# Downloading \2/' | \
zenity --progress --title="Downloading File..." --auto-close
fi
Debian 開機速度調教
看了 Yuren 的這篇,不禁手癢,也想幫我的伙伴調整一下增進開機速度。首先沒用過 bootchart,以前總以為要 patch 一些東西才能用,沒想到其實只要 apt-get install bootchart 就可以用了 XD
首先是沒有調整過的 bootchart:

在搜尋 bootchart 資料時,找到了這個 Debian 的 SoC 計劃,裡面有各項關於調整開機速度的建議,一項一項試,試了大概有數十次吧,最後終於找到最好的方案:
- 把 /bin/sh 連結到 dash,只要下
dpkg-reconfigure dash就可以了 - 裝好 insserv 之後,下
update-bootsystem-insserv,重新排列 rcX.d 底下的 script 順序 - 修改 /etc/default/rcS 裡面的設定,
CONCURRENCY=shell(原來現在的 initscripts 已經支援 parallel 執行) - 修改
hwclock.sh跟hwclockfirst.sh,讓他們在背景執行 - 開機時,不要加
vga=791參數
減少的時間主要都是來自以上的修改,之後還試過整理多餘的 /etc/init.d/ scripts,試用 ubuntu 的 readahead 程式,prlink gdm 等,都沒有更多的進步…
這是最後的 bootchart:

時間從 39 s 變成 29 s,嗯… 不錯不錯,進步滿多的,不過我覺得應該還可以再進步,只是我不知道該怎麼調了 XD
FireTray
Opera 有個功能就是可以縮小到 system tray 裡面,有時候還滿希望 Firefox 也有這樣的功能,今天用 google 找了一下,Linux 下可以用 FireTray 這個 Add-on,應該是對岸的朋友寫的,Good Job!
有圖的水銀
根據 yungyuc 的有圖的水銀這篇,裝了 ActiveTCL 之後,終於把 hgk 在 Windows 上給跑了起來,不過我一直很好奇的是,Windows 版的 Python installer 預設會安裝 tcl/tk 的 module Tkinter 跟相關的 dll,難道不能用這個來跑 hgk 嗎?
原本是想把 hgk 一行一行搬到 python,不過這樣太慢了,後來發現有 Tkinter.Tk.eval 可以用
剛剛做了一下實驗,證明以下 code 可以執行:
run-hgk.py
import sys import Tkinter
read hgk file
hgk = ''.join(open('hgk', 'r').readlines()) tk = Tkinter.Tk() tk.eval('set argv [list ' + ' '.join(sys.argv[1:]) + ']') tk.eval('set env(HG) "hg"') try: tk.eval(hgk) tk.mainloop() except Tkinter.TclError, e: print e
不過要真的可以用,還要改一下路徑的處理跟環境變數的取得
接下來,想要真的把 hgk port 到 python,現在的 hgk 幾乎是 copynpaste gitk,連 help menu 裡面都沒改過,程式裡面還參考到 GIT_DIR 環境變數… Orz
Vim!!
Tango 風格的 terminal, vim
來自 Tango 風格的 gnome-terminal 以及 Tango 風格的 vim colorscheme
不過因為我用的是 rxvt-unicode,所以要用 ~/.Xresources 設定:
URxvt.color0: #000000
URxvt.color1: #CC0000
URxvt.color2: #4E9A06
URxvt.color3: #C4A000
URxvt.color4: #3465A4
URxvt.color5: #75507B
URxvt.color6: #06989A
URxvt.color7: #D3D7CF
URxvt.color8: #555753
URxvt.color9: #EF2929
URxvt.color10: #8AE234
URxvt.color11: #FCE94F
URxvt.color12: #729FCF
URxvt.color13: #AD7FA8
URxvt.color14: #34E2E2
URxvt.color15: #EEEEEC
ps. Zooomr 把我傳上去的照片由 png 又壓了一遍變成 jpg,畫質變差了…
Emacs 使用 Xft
Emacs 22 有新的 gtk 介面以及更進步的 unicode 支援,而使用 xft 來顯示字體的部份程式則進了 emacs-unicode-2 這個 branch,據說這會是 Emacs 23 的候選之一。
從 CVS 編譯好 emacs 23 之後,照著一些網路上的教學,的確讓英文的部份變成了 Xft 顯示的漂亮字型,但是中文部份仍然是使用醜醜的 bitmap (X font, 因為我沒有安裝中文字型所需要的相關檔案),網路上也甚少提及如何設定中文的 Xft 字型,大部份都還是用 X font。
其實很簡單,只要:
設定與設使用 Xft backend,把以下加入 ~/.Xresources 中
Emacs.FontBackend: xft在 ~/.emacs 中指定使用的中文字型
(set-default-font "Bitstream Vera Sans Mono-14") (set-fontset-font (frame-parameter nil 'font) 'han '("cwTeXHeiBold" . "unicode-bmp"))啟動 emacs
emacs-snapshot --enable-font-backend
“–enable-font-backend” 一定要加,因為預設沒有開啟除了 X font 以外其他任何 backend。
Update: 先前設定字型的部份,英文的設定會蓋掉中文的部份,現在已經修正。
org.freedesktop.Notifications
這東西可有趣了,freedesktop 定義了這個 dbus 介面,只要有支援的程式都可以透過它來顯示 notifywindow,比如說,我可以簡單的幫 xchat 加上有人跟我說話時自動提醒的 plugin。
下載這隻 plugin 後只需要把它放在 $HOME/.xchat2/ 底下,這樣每次開啟 xchat 時就會自動讀取了。它目前還很簡單,如果要設定圖示或是顯示樣式或秒數等等,自己看 code 改應該很快
其中 class Notification 是從這裡抄來的。
Cowdancer - 用 cowbuilder 加快你的 pbuilder
Cowdancer 是一個利用 copy-on-write 技術,在 ‘cp -la’ 建出來的目錄中進行開發的好用軟體。cowbuilder 則是給 pdebuild 用的 pbuilder wrapper,透過 cowdancer 的幫忙,可以大大減少每次解開 base.tgz 所需的時間,加快利用 pdebuild 測試編譯套件的速度。
首先安裝 cowdancer
apt-get install cowdancer
然後建立 chroot 環境
cowbuilder --create
設定 pdebuild, 編輯 /etc/pbuilderrc 或是 ~/.pbuilderrc 加入
PDEBUILD_PBUILDER=cowbuilder
這樣以後使用 pdebuild 時就會自動呼叫 cowbuilder 了
實際使用,大約可以將解壓縮時間由三分鐘減至五十秒!
_______________
< Let's dancing >
---------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||




