2009年10月17日 星期六

在 Ubuntu 9.04 上面手動安裝 hgview

這次要安裝的是 http://www.logilab.org/project/hgview
首先直接從 repository 抓下來
hg clone http://hg.logilab.org/hgview
然後建一個 symbolic link 到 ${HOME}/bin/ 下面
ln -snf $(readlink -f hgview/bin/hgview) ${HOME}/bin/
然後安裝相依的套件
sudo aptitude install pyqt4-dev-tools python-qscintilla2 python-egenix-mxdatetime
然後就可以在 Mercurial 的開發目錄底下直接執行 hgview 了~ ;)

2009年10月1日 星期四

Vim 編輯 Python 的設定

最近空閒時間都在學習寫 Google App Engine 上面的 Python 程式
剛剛研究了一會整理出這個簡單的設定
function! s:python_custom()
    function! s:man(keyword)
        execute '!pydoc ' . a:keyword
    endfunction
    setlocal tabstop=4 expandtab shiftwidth=4
    setlocal foldmethod=indent foldcolumn=4 foldlevel=3 foldnestmax=3
    command! -nargs=1 Man call s:man(<f-args>)
    cnoremap K :!pydoc <cword><CR>

endfunction
if has("autocmd")
    autocmd Filetype python call s:python_custom()
endif
開啟 Python 檔案時自動用縮排來 Folding 最多三層
縮排跟 Tab 都設定為 4 個空白
在關鍵字上按下 K 會透過 pydoc 去查詢使用說明
或是直接輸入 :Man list 這樣的指令
把上面那段 script 加到 .vimrc 裡面就可以使用了

2009年8月28日 星期五

快速製作 Ubuntu 9.04 (Jaunty) alternate 安裝用的 USB Stick

並不是每台電腦都有光碟機的,加上燒錄光碟片也不太環保,所以能用 USB Stick 來安裝 Ubuntu Linux 作業系統就盡量使用 USB Stick 囉。
  1. 首先準備一個可以完全亂玩的 USB Stick
  2. 下載 boot.img.gz
    $ wget http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/current/images/hd-media/boot.img.gz
  3. 將 boot.img 內容 dump 至 USB Stick
    $ sudo su -c "zcat boot.img.gz > /dev/sdb"
  4. 拔起 USB Stick 重新接到電腦上
    $ df -h /dev/sdb
    Filesystem Size Used Avail Use% Mounted on
    /dev/sdb 782M 23M 760M 3% /media/Ubuntu Inst
  5. 然後把 ubuntu-9.04-alternate-i386.iso 複製到 USB Stick 裡面
    $ cp -av ubuntu-9.04-alternate-i386.iso /media/Ubuntu\ Inst/
    $ df -h /dev/sdb
    Filesystem Size Used Avail Use% Mounted on
    /dev/sdb 782M 722M 61M 93% /media/Ubuntu Inst
以前在 Debian 也使用過同樣的方法 使用 USB stick 來安裝 Debian GNU/Linux 5.0 (Lenny) rc1

2009年8月26日 星期三

將 Subversion Repository 搬進 Google Code 裡面

由於 http://pcmanx.csie.net 的管理者 lwhsu 好像去玩國軍 Online 了
加上網頁一直無法更新還有常常會遇到網站掛點的狀況
所以動起了幫 PCManX GTK+ 搬家的念頭
以下是筆記將 Subversion Repository 搬進 Google Code 的過程
  1. 首先建立本地端的 mirror
    $ svnadmin create pcmanx
    $ cat <<'EOF' > pcmanx/hooks/pre-revprop-change
    #!/bin/sh
    USER="$3"
    if [ "$USER" = "svnsync" ]; then exit 0; fi
    echo "Only the svnsync user can change revprops" >&2
    exit 1
    EOF
    $ chmod +x pcmanx/hooks/pre-revprop-change
    $ svnsync init file://`pwd`/pcmanx https://svn.csie.net/pcmanx
    $ svnsync sync file://`pwd`/pcmanx
  2. 然後將 mirror 同步到 Google Code 上面
    $ svnsync init --username fourdollars https://pcmanx-gtk2.googlecode.com/svn file://`pwd`/pcmanx
    $ svnsync sync --username fourdollars https://pcmanx-gtk2.googlecode.com/svn
  3. 如果中途中斷遇到 lock 問題, 可以這樣解決, 不過要確定沒有人在使用該 Subversion Repository
    $ svn pdel --revprop -r 0 svn:sync-lock https://pcmanx-gtk2.googlecode.com/svn
    $ svnsync sync --username fourdollars https://pcmanx-gtk2.googlecode.com/svn
這樣就大功告成啦~ 以後如果有類似的狀況可以把粗體字的部份換掉就可以了~ :D

2009年8月22日 星期六

利用 caff 來加速 GPG sign 的過程

在 Debian Birthday Party 2009 in Taiwan 上面 PaulLiu 介紹了 GPG 簽章的過程
當中提到了為了防止有人偽造他人的 Email 所以我們在得到對方的 Finger Print 之後
進行簽署的過程當中的最後不應該直接把簽好的金鑰上傳到伺服器上面
反而是要使用對方的公鑰加密寄到對方的 Email 信箱當中
由對方去上傳你/妳已經簽署過的金鑰
而這之間的冗長又重覆的動作可以透過 signing-party 套件當中的 caff 來簡化這些動作
$ sudo apt-get install signing-party
例如你/妳拿到 $4 的金鑰的 Finger Print 後
D51B 8601 C9AE 0E87 A0BE  7795 BCB0 2784 A55D A068
然後執行
$ caff A55DA068
這樣就會自動從網路上面取得 $4 的公鑰, 然後進入 gpg command mode
Command> sign
Command> save
就會自動直接將加密好的文章跟簽署過的金鑰寄給我
(前提是你/妳已經設定好文字模式下的寄信方法, 像是上一篇 "利用 ssmtp 透過 Gmail 在文字模式下寄信" 所提的)

利用 ssmtp 透過 Gmail 在文字模式下寄信

sudo aptitude install ssmtp
然後編輯 /etc/ssmtp/ssmtp.conf 加入
AuthUser=user.name@gmail.com
AuthPass=password
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
之後就可以透過 mailutils 套件中的 mail 指令來寄信
$ echo "This is a test mail." | mail -s "test mail" user.name@gmail.com
當在你/妳收到自己寄出來的信就可以確認是正常運作的