é€™ç¯‡æ–‡ç« å¯«æ–¼å…©å¹´å‰ï¼Œä¸»é¡ŒéŽ–定在以 Python 寫 Linux çš„ script。討論了 Python script 的慣用寫法ã€å—串處ç†ã€å—元編碼ã€æª”案與目錄處ç†ã€å‘¼å«å¤–部程å¼ï¼Œä»¥åŠåˆ©ç”¨å…§å»ºç¨‹å¼åº«é€²è¡Œç¶²è·¯é€šè¨Šã€‚
» continue readingPython:
Python@TW planet
Python.Org.Tw
Python.Org
Other:
Planet Linux of Taiwan
Planet DebianTW

#!/usr/bin/env python from mercurial import demandimport; demandimport.enable() import cgitb; cgitb.enable() import os; os.environ["HGENCODING"] = "UTF-8" from mercurial.hgweb.hgwebdir_mod import hgwebdir from mercurial.hgweb.request import wsgiapplication import mercurial.hgweb.wsgicgi as wsgicgi def make_web_app(): return hgwebdir({ 'name1': '/path/to/the/repository', 'name2': '/path/to/the/repository', }) wsgicgi.launch(wsgiapplication(make_web_app))» continue reading
昨天試了åŠå¤©ï¼Œçµæžœä»Šå¤©é€€ç”¨ 5.4.2 就沒事了。
» continue reading最近我把 $HOME è£é€² Mercurial 了。
應該有很多人會這樣作。還沒有試的人å¯ä»¥è©¦è©¦çœ‹ï¼Œå‘³é“ä¸éŒ¯ã€‚下個 hg init ~/ 來在 $HOME 裡建立 .hg 貯庫,然後 .bashrcã€.vimrc å’Œ .irssi/ å°±å¯ä»¥é€šé€šå¡žé€²åŽ»äº†ã€‚
» continue reading今天ä¸å°å¿ƒã€‚
» continue readingbash èªå¾— TZ 這個環境變數。
åœ¨ä½ çš„ .bash_profile/.bashrc 裡è¨å®šï¼š
export TZ=US/Mountain
就會把 shell 的時å€è¨æˆç±³åœ‹å±±å€æ™‚間。許多地方都å¯ä»¥ç…§è²“畫虎è¨å‡ºä¾†ï¼Œä¸éŽå¦‚果有張å°ç…§è¡¨çš„話還是方便。
Update 20070906: 說 shell 的時å€å¥½åƒä¸ç›¡æ£ç¢ºï¼Œèªªæ˜¯ç³»çµ±æ™‚å€å¥½äº†ã€‚
» continue reading/etc/mercurial/hgrc.d/hgext.rc 這個檔怪里怪氣的,看 /usr/share/doc/mercurial/README.Debian 的日期,說是éŽæ™‚太久了也ä¸ä¸€å®šã€‚
這個奇怪的 hgext.rc 會載入一些在 lenny (current testing of Debian) çš„ mercurial 0.9.4 裡沒有包的 extension。åƒæ˜¯ hgext/churn。çµæžœæœƒè®“ mercurial 在執行的時候跑出來一些煩人的è¦å‘Šè¨Šæ¯ã€‚幸好無害。
ä¸éŽï¼Œå®ƒçš„有害影響是讓 hg view (hgk) 無法動作。這就讓人困擾了。為了æ£ç¢ºåœ¨ Debian 上啟動 hgk,我用 export HGRCPATH="$HOME/.hgrc" 來使 mercurial ä¸è¦åŽ»è®€å–系統裡的 mercurial è¨å®šæª” (就是那個奇怪的è¨å®šæª”)。
當然,ä¸è¦å¿˜äº† apt-get install tk8.4,ä¸ç„¶æ²’有 wish,hgk 也ä¸æœƒå•Ÿå‹•å–”。
$ apt-get install zlib1g-dev libbz2-dev \ libdb4.4-dev libncursesw5-dev libreadline5-dev \ libsqlite3-dev libssl-dev
忘記的話會很煩,一直é‡ç·¨ã€‚
版權沒有,翻å°ä¸ç©¶ã€‚
# -*- coding: UTF-8 -*- import sys, os from urllib import urlretrieve def ratio_changed(ratio, last_ratio, tick): return int(ratio/tick)-int(last_ratio/tick) > 0 last_ratio = 0. def report(block, size, total): global last_ratio ratio = float(block)*size/total*100 if ratio_changed(ratio, last_ratio, 10): sys.stdout.write("%.1f%%"%ratio) elif ratio_changed(ratio, last_ratio, 1): sys.stdout.write(".") last_ratio = ratio if len(sys.argv) < 2: sys.stdout.write("Please specify a url.\n") sys.exit() url = sys.argv[1] filename = url.split('/')[-1] os.unlink(filename) sys.stdout.write("[start]") urlretrieve(url,filename,report) sys.stdout.write("[done]\n") sys.stdout.write("%s saved.\n"%filename)
以å‰çµ¦é›œèªŒç¤¾å¯«çš„稿å:http://tech.seety.org/python/python_linux_admin.html。已經éŽäº†ç¦æ¢é‡æ–°ç™¼ä½ˆçš„é™åˆ¶æ™‚間了;當時一共寫了好幾篇,ç¾åœ¨å¯ä»¥æ…¢æ…¢è²¼å‡ºä¾†ã€‚
指令行的好處就是æ·ä¹…ä¸è¡°ã€‚寫作的當時我還æ»å®ˆ Python 2.3,所以也è€åˆ°æ²’有什麼éŽæ™‚çš„å•é¡Œ (笑)。