昨天在某頻道和 thinker 與 ping 大戰 Python 程式碼該如何縮排。老實說這還真是觸動所有 Python 程式員敏感神經的事。幸好,我們三人各執一端,看來是把可能出現的狀況都吵了一遍 (呃,至少吵得差不多了吧)。
因此,我把 Python 縮排上需要注意的地方,以及昨天討論的成果作個整理。當然,從後文你或許看得出來我是如何進行縮排的 (笑),所以描述上若有偏頗的地方全都是我的錯 (畢竟我懶得改編輯器的設定啦)。
» continue reading昨天在某頻道和 thinker 與 ping 大戰 Python 程式碼該如何縮排。老實說這還真是觸動所有 Python 程式員敏感神經的事。幸好,我們三人各執一端,看來是把可能出現的狀況都吵了一遍 (呃,至少吵得差不多了吧)。
因此,我把 Python 縮排上需要注意的地方,以及昨天討論的成果作個整理。當然,從後文你或許看得出來我是如何進行縮排的 (笑),所以描述上若有偏頗的地方全都是我的錯 (畢竟我懶得改編輯器的設定啦)。
» continue reading版權沒有,翻印不究。
# -*- 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)
Python 2.4, 2.5 官方的 installation 版是用 Visual Studio .Net 2003 編的,所以,如果想用 gcc/mingw 來對官方版 Python 寫 extension,有點小麻煩;我一直弄不大起來。
有人作了一包 Gcc 4.1.x 的 mingw,把這件事簡化了。裝了這懶人包 mingw 之後,就可以看到快樂的畫面:
喔,對了。雖然此懶人包會把 C:\mingw\bin 加到 path 裡,但 cc1.exe 不在其中。請把 C:\mingw\libexec\gcc\i686-pc-mingw32\4.1.2 也加到 path 裡喔。不然,你可能會遇到 _spawnvp: No such file or directory 這一類的錯誤。
什麼 6.0? (嘿
【必死】堀江由衣所屬「ArtsVision」社長,被控猥褻聲優志願少女。
這個世界難道還缺少罪惡和不公嗎。社會真實的面貌除了不堪就是不堪啊。
Mercurial 的 merge 程式在 Windows 上是跑不起來的。幸好,因為我們雖然有了 mercurial,也不能隨便丟掉 subversion 和它的好兄弟烏龜。所以我們可以偷用 TortoiseMerge。
請在你的 Mercurial.ini 裡加入下列設定:
[ui] merge = "C:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe"
Good job. 現在我們可以快快樂樂地 hg merge。come on baby.
這是一篇對 Python 2.3 的介紹文章:http://tech.seety.org/python/python_intro.html。真的是相當古老,不過 Python 歷久彌新,用在 2.5 上也不會有什麼問題。
在 Windows 上,Python 2.5 對 2.3 最讓我心歡的進步,應該是預設圖示吧 (笑
有圖有真相:
hgk 是一支圖形介面程式,用來瀏覽 mercurial 的 repository。分散式版本控制系統可以弄到關係很複雜,關係很複雜的東西,有圖形介面不但比較好,有時候還很必要。hgk 是學 gitk 來的,以 TCL 撰寫,從圖裡你就可以看到它會把 mercurial repository 給畫了出來;順便給你看一些 metadata。
在 Windows 上用 hgk,除了照 hgk 的說明 (Windows NT 那一段) 來作之外,還要安裝 TCL。我用 ActiveTCL。裝好 TCL,設好 hgk (設在 C:\Documents and Settings\yourname\Mercurial.ini 裡) 以後,就可以用 hg view 來看你的 repository 囉。
以前給雜誌社寫的稿子:http://tech.seety.org/python/python_linux_admin.html。已經過了禁止重新發佈的限制時間了;當時一共寫了好幾篇,現在可以慢慢貼出來。
指令行的好處就是歷久不衰。寫作的當時我還死守 Python 2.3,所以也老到沒有什麼過時的問題 (笑)。
很少人用 rst (reStructuredText) 來當文件格式。
不過,rst 很棒!除了還看不懂 TeX 數式之外,幾乎適用於所有種類的文稿。可以用來寫日記、寫心得、寫報告、寫書。當然,rst 是「文稿」格式,所以不符合排版需要。但是,rst 可以轉成 LaTeX 再作後處理!
我用 rst 寫文稿寫了好多年;這個 blog 主要的稿子都是用 rst 寫就的。當然,本站的讀者看不到 rst markup (想想真可惜,rst 格式比較簡潔,也許以後改版加上 rst format download link?),因為每發佈一次文章,後台就會把該文稿用 docutils 把 rst 格式轉為 HTML 格式。
docutils 是什麼?其實就是 rst 文稿處理器,現在已經算是 Python 世界裡 de facto 的文稿處理標準了。
docutils 為 rst 提供了好些轉換程式,讓 rst 非常好寫好用。可是,這樣還不能解放 rst 完整的威力!如果要用 rst 再強化我們的文稿撰寫效率,那就要自己寫程式轉檔,這樣才能載入批次威能,引入ベルカ式系統能力。
為了在撰寫 script 批次轉換 rst 檔為 HTML 的時候,可以把 docutils 組態寫在 script 本體裡面 (就不要再多一個 docutils.conf 組態檔啦,累贅),就這麼作:
settings_overrides = { # general. 'language_code': 'zh_tw', 'input_encoding': 'utf-8', 'output_encoding': 'utf-8', 'footnote_backlinks': 1, 'toc_backlinks': 'top', # html4css1 writer. 'compact_lists': True, 'embed_stylesheet': True, 'stylesheet_path': os.path.splitext(__file__)[0]+'.css', 'footnote_references': 'superscript', } src = "source text" dst = "destination path" writer_name = "html" publish_file( source_path=src, destination_path=dst, writer_name=writer_name, settings_overrides=settings_overrides, )
快樂 docutils scripting!