很久以前就想要好好地重整一下我的 blog 了,剛好趁著搬家重灌系統的機會,好好地整理一番。那時的目標有
真正的版本控制
資料庫瘦身
升級後台編輯用的 FCKeditor
與 Sidebar Widget 相容
IE 下的畫面極為慘烈
其中,「升級後台編輯用的 FCKeditor」已經在《Wordpress 編輯器升級到 FCKeditor 2.5.x》時搞定,theme 的問題暫時先不解決,所以剩下「真正的版本控制」與「資料庫瘦身」兩個目標。
真正的版本控制
以前的作法是,用 Subversion 管理我的 Wordpress 目錄,不過只是簡單的直接 checkout 出 Wordpress 程式。雖然升級或更換版本很方便,svn update 或 svn switch 一下即可,不過自己在 local 端,因應自己的喜好而做的更改,就沒辦法有好的版本控制機制,加以管理了。
也就是說,我希望在能夠隨時將 Wordpress 主網站的更新同步回來之外,還能夠保有自己因喜好而產生的一些小改變。如果 Wordpress 主程式和我自己的改變,是存放在同一個 subversion repository 裡,那這一切就可以做到。
簡單講就是,如上圖,我希望能夠隨時 incrementally 從 Wordpress 主 subversion repository 將最新的修正,mirror 到自己電腦上的 subversion repository 裡,成為一條 mirror branch。然後,又能夠有自己的一條 local branch,儲存自己的喜好,同時又能夠隨時視需要,將 mirror branch 裡的東西,merge 進我的 local [...]
因為搬家要移機,所以公告停機一陣子,沒想到真的停了一個星期多,現在終於可以「暫時」正式上線了。
這次移機,碰到了最不應該碰到的麻煩:硬碟毀損兼備份資料缺失。還好,本站的每日備份還有正常運作,但我的 subversion repository 的備份機制,在不知道什麼時候失效了。現在只能祈禱硬碟只有開機磁區壞掉,還能夠把 subversion repositories 與 mail archives 救回來。
然後,又發現 server 的主機板也壞掉了,只好緊急徵用寶貝的 desktop 來架站,等 server 的硬體補齊之後,再換回去。
因此,基於上述兩個原因,本站只能夠「暫時」恢復運作,要等到新機器測好沒問題後,才能正常運行。另外,為了救資料,最近可能偶爾會重開機一下,如果連不到,就請暫時等待一下囉。
我的 Recent Backlinks 自從升級到 wordpress 2.3 之後,就一直有問題,會多顯示出 kramer_pre%--> 的字樣。用這個奇怪的字樣去找,發現是 Kramer 這個 plug-in 的問題。當初會裝主要是因為 trackback 壞掉了,所以乾脆裝了 Kramer,會直接到網上找 back links,找到後代替 trackback auto-discovery 機制,插入資料到 wp_comments 表格。既然 Kramer 壞掉了,只好先拔掉再說。
沒想到拔掉 Kramer 之後,問題依舊,即使關掉 get-recent-comments 的 cache 也一樣。於是就直接進 database 裡找,發現不曉得為甚麼,Kramer 把製造出來的 wp_comments.comment_content 內容,前後加上了 <!--%kramer-pre%--> 與 <!--%kramer_post%-->。所以,只好辛苦地,寫個 script 修正 database:
#!/usr/bin/perl -w
use strict;
use utf8;
use File::Basename;
use Getopt::Long;
use DBI;
my ($__exe_name__) = (basename($0));
my ($__revision__) = ('$Rev: 26 [...]
雖然自從 Wordpress 2.x 開始,就內建了 TinyMCE 這套 WYSIWYG 的編輯器,但因為之前使用 EditorMonkey 裡面的 FCKeditor 功能實在強大,又能依據我的需要進行 customization,因此我仍然還是使用 EditorMonkey。可是,EditorMonkey 內附的 FCKeditor 是 2.2 版,已經很舊了,在使用的過程中,也一再地發現某些 bug,甚至培養出了迴避這些 bug 的編輯行為。
是故,我一直在思考著,是不是什麼時候,來升級一下。就在編寫 dprintf() 系列文章的過程中,實在是受不了了舊版 FCKeditor 的一些 bug 的情況下,再加上 FCKeditor 就在 2007-10-10,剛剛釋出了 2.5 Beta 版,所以一不小心,就把 editormonkey 拔掉,搞出了個 FCKeditor 2.5.x 的 wordpress plug-in 來。
當然,我並沒有那麼厲害,能夠無中生有的憑空造出一個 plug-in 來,主要還是參考了 Dean's FCKEditor For Wordpress,這是官方的 wordpress plugin directory 裡用 fckeditor 當關鍵字,所可以找到的唯一一套真正的 fckeditor [...]
好像太簡單了:備份一下 database,下個 svn switch 就完工,成功升級到 Wordpress 2.2。XD
SHELL> svn info
路徑: .
URL: http://svn.automattic.com/wordpress/branches/2.1
檔案庫根目錄: http://svn.automattic.com/wordpress
檔案庫 UUID: 1a063a9b-81f0-0310-95a4-ce76da25c4cd
修訂版: 5173
節點種類: 目錄
排程: 正常
最後更新作者: ryan
最後修改修訂版: 5172
最後修改日期: 2007-04-03 08:33:57 +0800 (二, 03 4 2007)
SHELL> svn switch http://svn.automattic.com/wordpress/branches/2.2
U wp-rss.php
U wp-login.php
U wp-comments-post.php
U wp-blog-header.php
U wp-rdf.php
A wp-includes/feed-rss2.php
G [...]
從 clsung 那邊看到,WordPress 2.1 “Ella” 出了,想想也蠻久沒升級了,再加上是應該要處理一下 WordPress 2.0.7 解掉的 security hole,所以就來升級我的 blog 版本。
照往例一樣是採 svn update 的方法升級[1]:
先備份資料庫。
然後到主目錄下 svn update,升級到最新 trunk 版。這次我是從 r4497 升級到 r4784,差距蠻大的,
用 svn diff 檢查了一下 local modification 沒有爛掉。
用瀏覽器進管理介面,畫面顯示訊息說要 upgrade database,執行後就一切正常了。
這次的升級,應該是成功的,至少到目前為止,看起來沒什麼異狀發生。整個過程不到 5 min,簡單快速,爽。
見《Wordpress 升級到 1.5.1.3》與《升級到 wordpress 2.0.1》兩篇。 ↩
敝小站的 trackback 爛很久了,趁著今天放假有空[1],追了一下程式,發現原來是啟用「Did You Pass Math?」時安裝的 Did you pass math 這個 plug-in 的問題。
簡單講,這個問題出在於,Did you pass math 乃是註冊 comment_post 這個 action,以進行驗證數學的答案的工作。但 trackback/pingback 時,也都會進行 comment_post,因此就被 Did you pass math 擋了下來,讓 trackback/pingback 失敗。
事實上,每一種 spam checking 的 plug-in,應該都會碰到這個問題。解法很簡單,就是偵測是否此次 comment_post 是否為 trackback/pingback,如果是,就直接通過,否則就進行數學答案的驗證。
但是要怎麼偵測此次 comment_post 是否為 trackback/pingback 呢?我不是 wordpress 達人,所以只好偷看一下 Captcha! 的程式碼,原來關鍵在於,也註冊 pingback_post 與 trackback_post 這兩個 actions,於處理此兩個 actions 時記錄於 $this->is_trackback,然後在處理 comment_post 時,若是 [...]
最近對 JeffHung.Blog 動了一些手術,裝了在《今日連結 (2006-09-20)》時看到的 Sandbox 的這套 theme,並予以改造,準備將外觀改回原來的樣子。Sandbox 是一個 semantic-rich 的 wordpress theme,其設計極端注重語意的保留,是一個很好的,設計自己的佈景主題的起點。
對於 blog 的佈景主題,之前換成 beeblebrox 布景時,我就已經有了基本的想法,最主要的就是要能夠讓我得以清晰的擺放程式碼在文章裡。這當然是因為,實在是文筆不好,只好多填些程式碼充數的關係。再又經過一段時間的觀察與沈澱之後,想法多了一些,以下簡單條列於下,算是再次整理:
在版面配置上,如果有邊欄 (side-bar, side-panel, ... what ever) 的話,必須要放在左邊。這是因為程式碼以及我會使用到的語言,方向都是由左至右的 (left-to-right),而程式碼有時候又有「不可換行」的特性,當有這樣子的狀況發生時,版面就會被撐大,若邊欄放在右邊,在「由左至右」以及「不可換行」兩個因素的限制之下,邊欄就會對本文的閱讀造成影響。
在版面配置上,本文區塊應當要是 fluid,也就是會隨著瀏覽器的大小而變動。理由正是由於上述程式碼有「不可換行」的特性之故。當版面被撐大時,fluid 的版面配置,就不會讓版面受到破壞。
本文字體大小必須是瀏覽器預設的大小,這是預設閱讀起來最舒適的字體大小。Gslin 在這篇《字形的問題》有聊到相關的考量。以前小時候,總喜歡在一個頁面裡,塞下越多的資訊越好。但現在老了,眼力不行了,所以字還是大一點,看起來比較舒適。
非本文的內容,在樣式上,應該盡可能地不喧賓奪主。這可以用較小的字體,或較淺的前景色來達成。尤其是在邊欄放在左邊的情形下,邊欄的內容更是容易讓使用者分心,因此適度的淡化處理,是必須的。
邊欄存在的目的,應該只是提醒使用者,「還有這些東西可以看」,而不是直接把內容呈現給使用者,內含真正內容的邊欄,只會使使用者分心。因此,放在邊欄的 recent-comments 與 recent-trackbacks 等,應該要只放連結與標題就好,毋需列出部份內容。
內頁的 HTML <title> 必須包含文章標題,考量到 tab browsing 時,tab width 通常不寬,因此文章標題應該置於 blog 名稱之前,如:「Sandbox, look.urs, and blogging frequency [JeffHung.Blog]」。
Search form 應該擺在越上面越好。我通常會擺在 header 的右方。Searching 已經超越 surfing 成為現今主流的瀏覽方式,所以應該放在最立即所得,但又不影響主體的地方,就好像 firefox 的 search [...]
睡到一半口渴睡不著,所以就來裝裝 wordpress plugins,找到一個 PostTeaser 看起來還不錯,所以就裝起來試試看。PostTeaser 是一個 excerpt 的加強版,其簡介是說:
Post Teaser generates a preview or "teaser" of a post for the main, archive and category pages, with a link underneath to go to the full post page. It includes features to generate a word count, image count, and an estimated reading time.
可惜,裝起來後發現,他的 word count 對中文字感冒,連帶地也算不準 excerpt 的長度。如果是中文字比較多的文章,很容易就帶出一大票文字,喪失了使用 [...]
前幾天我在裝「Did You Pass Math?」的時候,其實也一併裝了「footnotes」,不過這個套件可以討論的東西比較多,所以遲至現在才發表。
我一直認為,寫文章用 HTML 實在是用錯了格式。如果可以的話,我希望 blog 裡的文章,是使用 DocBook 格式為其原始格式,然後再經過某種機制,好比說 XSLT,轉換成 HTML 在 blog 裡呈現。理想狀況是,blog 的後台,內建 Web-based WYSIWYG DocBook editor。但這是理想,在現實上,連 stand-alone 的版本都沒有了[1],遑論 blog 後台的整合。因此,遷就於工具的問題,也只好將就[2]。
是故,退而求其次,我希望至少能夠在 (X)HTML 裡,呈現出我常用的文章樣式。對偏向技術性文章的我來說,最重要的就是 program listing 與 inline code 的呈現了。這個我已經藉由 FCKEditor 可自訂 CSS 的功能達到[3],若需要更進一步的 syntax coloring 或 line numbering 的花俏功能,我認為直接在 client 端藉由 javascript 達成[4]即可。
而第二常用的文章樣式,則是 footnote,我個人喜歡使用論文 reference 的寫法,於指涉處與註解處,皆使用方刮號 ( [ 和 ] ) 包裹註解編號,並加上超連結在兩者之間跳躍。這篇《升級到 [...]