Home > All, Blog, Programming, Python, Testing, Web, Wiki > 寫 Blog 好幫手 TD-Post!

寫 Blog 好幫手 TD-Post!

April 25th, 2009

為了方便寫 Blog,寫了個小程式讀 wiki code 產生 WordPress 吃的格式,順便藉機練習 TDD,沒想到寫了十小時才完成。剛好最近在看虎x龍的動畫,就將它命名為TD-Post (Tiger x Dragon Post) 吧。

緣起

換過多家 WordPress 用的編輯器後,我還是找不到滿意的工具。為縮短寫 Blog 的時間,我決定自己做一個。

寫 Blog 最惱人的事有幾點:

  1. 得輸入麻煩的 HTML,特別是要匹配結束標籤特別麻煩。而且 HTML code 不易閱讀,改文章時很不方便。
  2. 加超鏈結很麻煩,常用的幾個超鏈結,得重附貼多次,像 TDD 我就重貼了許多次。
  3. 無法用自己慣用的編輯器。若能用 Vim 寫 Blog,速度必能大增啊!

功能簡介

對我來說,寫 wiki code 相當方便,所以輸入格式決定用 wiki code。但 wiki 格式有許多種,我比較常用的有 PmWikiDokuWikiTWiki,其中以 PmWiki 語法最簡單,但原始碼沒後兩者好讀。最後聽從 York 的建議,採用 Tracwiki 格式。選它的主要原因除好讀好寫外,我特別喜歡它 Preformatted Text 的格式,很適合用來貼程式碼。

接著,針對第二點問題,加上自動補超鏈結的功能,只要寫過一次超鏈結,TD-Post 就會自動記下來,自動補上對應的位置。像在這段裡,因為我在第一段已寫過 TD-Post 的位置, TD-Post 的超鏈結都會自動補上。初步估計,以後寫一篇 Blog 至少可以省十分鐘,所以差不多用個六十次...這幾天的辛勞就.就回本啦。

程式下載

本程式採 BSD License ( 簡單說就是隨便使用 ),歡迎大家玩玩。雖然沒什麼註解,但我照 TDD 流程寫的,測試碼應該很完整。這裡是一些相關資訊:

  • 下載:http://code.google.com/p/td-post/downloads/list
  • 程式語言:Python
  • 程式碼總行數:682 行
  • 測式碼:346 行 ( 主要是準備測試的例子 )
  • 非測試碼:336 行
  • 實作時間:原本預估兩小時完成,卻花了約十小時。大概是一小時查語法、一到兩小時寫測試。其中花最多的時間在解決 list 和 performatted text 的衝突,這部份從開始實作到結束花了三小時才解決。

其它

有原始碼有真相,最後附上本文的原始碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
為了方便寫 Blog,寫了個小程式讀 wiki code 產生 [http://wordpress.org/ WordPress] 吃的格式,順便藉機練習 [http://en.wikipedia.org/wiki/Test-driven_development TDD],沒想到寫了十小時才完成。剛好最近在看[http://zh.wikipedia.org/wiki/虎與龍_(小說) 虎x龍]的動畫,就將它命名為[http://code.google.com/p/td-post/ TD-Post] (Tiger x Dragon Post) 吧。
 
==== 緣起 ====
換過多家 [WordPress] 用的編輯器後,我還是找不到滿意的工具。為縮短寫 Blog 的時間,我決定自己做一個。
 
寫 Blog 最惱人的事有幾點:
 1. 得輸入麻煩的 HTML,特別是要匹配結束標籤特別麻煩。而且 HTML code 不易閱讀,改文章時很不方便。
 1. 加超鏈結很麻煩,常用的幾個超鏈結,得重附貼多次,像 [TDD] 我就重貼了許多次。
 1. 無法用自己慣用的編輯器。若能用 [http://www.vim.org/ Vim] 寫 Blog,速度必能大增啊!
 
==== 功能簡介 ====
對我來說,寫 wiki code 相當方便,所以輸入格式決定用 wiki code。但 wiki 格式有許多種,我比較常用的有 [http://www.pmwiki.org/ PmWiki]、[http://www.dokuwiki.org/ DokuWiki]、[http://twiki.org/ TWiki],其中以 [PmWiki] 語法最簡單,但原始碼沒後兩者好讀。最後聽從 York 的建議,採用 [http://trac.edgewall.org/ Trac] 的 [http://trac.edgewall.org/wiki/WikiFormatting wiki 格式]。選它的主要原因除好讀好寫外,我特別喜歡它 Preformatted Text 的格式,很適合用來貼程式碼。
 
接著,針對第二點問題,加上自動補超鏈結的功能,只要寫過一次超鏈結,[TD-Post] 就會自動記下來,自動補上對應的位置。像在這段裡,因為我在第一段已寫過 [TD-Post] 的位置, [TD-Post] 的超鏈結都會自動補上。初步估計,以後寫一篇 Blog 至少可以省十分鐘,所以差不多用個六十次...這幾天的辛勞就.就回本啦。
 
==== 程式下載 ====
本程式採 [http://zh.wikipedia.org/w/index.php?title=BSD许可证&variant=zh-tw BSD License] ( 簡單說就是隨便使用 ),歡迎大家玩玩。雖然沒什麼註解,但我照 [TDD] 流程寫的,測試碼應該很完整。這裡是一些相關資訊:
 * 下載:http://code.google.com/p/td-post/downloads/list
 * 程式語言:[http://www.python.org/ Python]
 * 程式碼總行數:682 行
 * 測式碼:346 行 ( 主要是準備測試的例子 )
 * 非測試碼:336 行
 * 實作時間:原本預估兩小時完成,卻花了約十小時。大概是一小時查語法、一到兩小時寫測試。其中花最多的時間在解決 list 和 performatted text 的衝突,這部份從開始實作到結束花了三小時才解決。
 
==== 其它 ====
 
有原始碼有真相,最後附上本文的原始碼:{{{
#!html
_QUINE_
}}}
 
身為資工人,這段原始碼當然也是自動貼上的啦,不過我沒用像 [http://en.wikipedia.org/wiki/Quine_(computing) Quine] 那樣的技巧,只是單純地取代關鍵字。

身為資工人,這段原始碼當然也是自動貼上的啦,不過我沒用像 Quine 那樣的技巧,只是單純地取代關鍵字。

fcamel All, Blog, Programming, Python, Testing, Web, Wiki

  1. Scott Tsai
    April 26th, 2009 at 23:06 | #1

    Nice job!
    考不考慮申請在 google code 上使用 mercurial:
    http://spreadsheets.google.com/viewform?hl=en&formkey=cEJnWHctQjRjV3hyNkRCb3RzbzY4RFE6MA..

    這樣我會比較想加上 blogger.com 用的plugin

    See Also: http://google-code-updates.blogspot.com/2009/04/mercurial-support-for-project-hosting.html

  2. April 26th, 2009 at 23:32 | #2

    嗯…, 我考慮看看, 目前我比較熟 git, 再來是 svn, 其它 VCS 都沒用過。所以原本是打算自己改時用 git-svn 銜接的。也許這是個好機會玩 mercurial? 不過之前看它和 git 的比較文章, 似乎沒特別吸引我的地方, 有什麼理由偏好 mercurial嗎?

  3. Scott Tsai
    April 27th, 2009 at 00:38 | #3

    @fcamel
    > 有什麼理由偏好 mercurial嗎?
    觀念類似git而且Google Code支援。 Firefox開發使用mercurial所以總是有機會碰到:
    http://hg.mozilla.org

  4. April 29th, 2009 at 23:45 | #4

    我申請試用 mercurial 啦, 看看會不會過。

  5. Scott Tsai
    April 30th, 2009 at 20:53 | #5

    @fcamel
    You can always add my gmail account through google code and say the project has two developers ;)

  6. Scott Tsai
    May 31st, 2009 at 03:54 | #6

    @fcamel, I’ve been reading your TD-Post commits and I feel compelled to share this “A Note About Git Commit Messages”:
    http://www.tpope.net/node/106
    post with you.

    Take a look at the upstream mercurial repository itself:
    http://selenic.com/repo/hg
    for examples of good commit messages.
    Try looking at the TD-Post repository with TortoiseHG’s log viewer and see how important the short summary on the first line is.

  7. May 31st, 2009 at 09:49 | #7

    Thanks for sharing. I noted the correct commit log format recently, but I did td-post before that. Sorry for writing bad logs before. I’ll follow the correct form afterward.

  8. August 27th, 2009 at 09:20 | #8

    我也准备在我自己写的Django的Blog弄个类似的东西,markup有现成的库,但附件整合还是有点难度。

  9. August 27th, 2009 at 22:33 | #9

    我就是覺得整合某個系統太麻煩了,編輯器也不會比自己慣用的好用 (我用 Vim),乾脆獨立寫,省事又方便。只是寫完後若又想改文就有些不方便。

  1. No trackbacks yet.