WordPress 新系統上線 (from b2evolution migrate-to wordpress)

整整花了有一個月的時間在新系統的建置上!

因為原來所使用的 b2evolution 系統,在去年七月升級失敗後,且越來越有感於 b2evolution 的越來越難以維護。或者說,一開始就是被開發設計用來適用於多人部落格的該系統並不太適合我,再則越來越傾向選擇自由度較高、較簡潔、有眾多 plugin 外掛支援的 wordpress 系統。 於是今年過年後 (原來是打算過年期間動工的,但出外旅遊貪玩而延宕),約二月底開始著手系統移轉的作業。

原來天真的以為,大約一個星期、最晚不會超過兩個星期的移轉工作,沒想到整整拖延了一個月有餘,可以說是陷入泥沼,太多的細節要調整了,包括舊系統 (b2evolution)的資料移轉 (migration)、新系統的建置等。 尤以後者,花在佈景 (theme) 的 CSS 設計,根本就是從無到有、一點一滴全部自己來動手架成的,主因是看了上百個佈景樣式,竟然沒有一個滿意的,沒有我預想的 layout 與 style;再則我思考過,轉移到 wordpress 系統後,原則上我希望就沿著該系統的版本一直更新即可,希望能用上 10 年之久! 所以乾脆花個時間來學 CSS 設計,以方便爾後自由地更改 style 與 layout。

整個移轉的過程,從 b2evolution 的系統,改寫 migrate.php 至 wordpress 新系統、CSS 設計、wordpress 系統建置設定等工作,完全沒有問過任何一個人、發問過任何一個問題,全部都是透過 google 查詢。經常是為了一個小小的設定問題,瀏覽了國內外數十頁網站淂來的。 這也算是印證,幾乎這些 How-to 的設定問題,都是可以透過 google 找得到答案的 (只是還挺辛苦的)。

許許多多關於上述如移轉問題、系統架設與建置設定、CSS 的一些竅門 …等,趁著我還有記憶時,近日內也會逐漸地發表安裝設定備忘錄。 對了,原來其它網站有貼了我舊系統的文章鍊結 (permalink),也不用調整更改,仍然是可以連結得上的。 這也算是我頗值得欣慰的地方。

目前完成的進度約有十之八九吧,還有一些小細節等需要調整。當然,也應該會有一些 Bug 或介面操作等問題,這些可能就麻煩有瀏覽我網站的讀者們多多包涵、也希望能留言或來信給予建議指教了。

※ 舊系統 b2evolution 的 screenshot。
http://www.flickr.com/photos/kenming_wang/tags/b2evolution/

認真考慮改架設 WordPress Blog 系統

自從上次升級 b2Evolution 失敗後,請參考:【系統升級】b2evolution 失敗的升級 (from 1.10.3 to 2.4.2)。 到目前為止,官方最新版本為 2.4.5(2008/11/19),與我現在所使用的版本已差上一個大版,又感現在執行升級等程序已越來越困難,原因在於我個人似乎 “Hack” 了許多的功能設定,老實說,若沒有自己動手 DIY “Hack”,可以參考其它利用 b2Evolution 架設的 Blog 平台,看起來好像就是那個樣子,似乎單調了些。

早在很早以前,從 MT 系統要改為當時更為開放的 php-based 的 Blog 平台,其實就是拿 b2evolution and wordpress 來比較。 後來選擇 b2evolution 的原因就在於那個時候的版本已經有支援 UTF-8,而 wordpress 則否。 為了中文編碼的問題,我才選擇了國內甚少人使用的 b2evolution。

前幾天與那個可愛漂亮的花小妹聊天,她蠻推崇 WordPress 平台的,又介紹說最近出了一本:「 WordPress部落格架設與經營:站長親授的十堂課」,她還註文推薦呢,所以我也從網路書局訂購了一本來瞧瞧(還沒寄來)。 看來 WordPress 國內挺多用戶使用它的,各類功能的 plugin 模組聽說有上千種之多呢,這使得我現在真的認真考慮要轉移 Blog 平台了。

最大的兩個問題,一為我的文章有很多參考自己其它文章的超鏈結,整個要改掉;另一個就是似乎有許多其他的網站,也有參考我許多文章的鏈結,這些就都一定會失效了。 至於資料的轉檔問題,因為蠻久以前,在我擔任 Oracle DBA 的時期,做的事情也有包括到轉檔的工作,我想應該還不至於陌生的。

第一個問題很傷腦筋,好像沒有一個明確的規則,很可能要一篇一篇的過濾,手動來編輯鏈結的變更。只是喔,我的文章累積起來可能也快有 2000 篇了,這種 “粗重” 一篇一篇改的笨功夫,不知道要花上多少時間? (若是花上個兩、三天,我是還可以接受的啦。)

第二個問題呢,就不知道影響會有多廣了? 我也無法推測! 這其中也必然會牽連到包括 Google 等搜索引擎的查詢。

是還有另外一個折衷的方法,就是原來我的 b2evolution 系統全部不動,也停止更新,然後架設一個新的 wordpress 平台,除了把舊的文章轉移(migrate)過去外,爾後新發表的文章就是在 wordpress 平台上了。 這個是衍生出兩個問題,一個就是新的平台最好是申請另一個新的網域(domain),例如, http://www.kenming.tw (我現在用的是 http://www.kenming.idv.tw/ ; 另一個問題就是,虛擬主機那邊還要多花錢來申請一個子網域,同時也要承擔到流量的負載問題。

那一種方法比較好? 我還在思考中,但是 Blog 平台的轉移,我是傾向要動工,而且是打算轉移到 wordpress 後,起碼有五年以上的時間,不會再考慮其它的平台的。

不過,嗯,這可真的是大功夫,包括上述的問題要克服外,架站還有 CSS Layout等都要重新設計的,這可要花上不少的時間呢。

若是要動工的話,應該就是利用春節的期間,窩在家裡專注地來作這些 “粗重” 的工作囉。

[b2evolution] 安裝 Code Highlight Plugin 模組

有時在 Blog 的內容內,會有含程式碼的範例,若要讓其能正常顯示,一般是設定 html 的〈pre〉標籤。 不過呢,想當然其 format 樣式是不會好看的,若希望能如在 程式碼 IDE 編輯器上所顯示的那般,不同的關鍵字、不同的程式語言,就能顯示不同的顏色。甚至呢,還可以顯示出行號來。

有兩種方法,可以讓網頁的程式碼片段(code snippets)內容,顯示出行號與關鍵字顏色等比較看起來像是真的在看程式碼的內容般。 一種是在 Client 端能解析網頁內程式碼的內容。 最具知名度的應該是這個吧: Syntax highlighter。它是 Javascript 的程式,是伴隨著網頁內容一同下載到 Browser 端,再由其編譯器來解析。 這種方法好處是很方便,不用更改到 server 端的設定,就是只要在網頁的 header 區貼上該段程式碼即可。 而主要的缺點就是要多下載約快 200k 的 javascript 程式,耗費傳輸頻寬,也稍微增加了 Browser 端的解析負擔,還有呢,也會與所使用的 Browser 各種版本所使用的 javascript 編譯器有關,使得解析出來的結果,在各種瀏覽器所看到顯示結果的會不太一樣。

另外一種方式就是在 server 端,也就是在 Blog 平台上,安裝 “code lightlight” 解析器的 plugin。 然後當 blog 文章要輸出時,整個網頁內容會在 server 端這邊作一個完整的解析。這個過程應該是稱之為 “Text Rendering”。 好處就是網頁內容在傳輸輸出前,就已經處理過,並轉為完整 HTML (XHTML) 格式的網頁。 但是缺點就是,必須在 server 端上設定安裝,而這與各個平台版本是否有支援這類的 plugin 機制是有關係的。

我傾向後者的方式,主要的原因是我的 Blog 內容,在每一個頁面(page),並不會常出現程式碼的片段內容; 再則,我總覺得從 server-side “空降” 一個 javascript 的解析器,有說不出的彆扭感,且每次傳輸要多上近 200K,實在覺得說不過去。

所以,決定後,我的方向就是轉向尋找 b2evolution 有無支援 “code hightlight” 的 plugin 模組。 原來官方版本就有提供一個預設的了,但是蠻陽春的,好像只支援 php 與 html 的程式碼顯示而已。 還好的一點是,在官方網站上有看到其中一位國外網友改寫了這個陽春的模組,將其解析的核心改為 GeSHI。 這太棒了! 這個 GeSHI 解析器(php-based),可以解析的程式語言可是高達上百種,而且還在持續的維護更版中。

這個網友改寫的模組在這裡: b2evolution code highlighter plugin modded to use GeSHi。 安裝超級容易,就是依照該網站的安裝提示,下載該網站所提供的 plugin 模組,以及最新版本的 GeSHI 程式,再一同解壓縮至 “blogroot/plugins/code_highlight_plugin/” 目錄即可,然後在 Blog 個管理平台啟動該模組就可以了。

閱讀全文 »

【系統升級】b2evolution 失敗的升級 (from 1.10.3 to 2.4.2)

昨晚約 10:00 左右,想說我的部落格系統已有約 10 個月時間沒升級了,再來則是 b2evolution 釋出最新的穩定版本 2.4.2,已經與我現在使用的版本差了一個大版的號碼,功能等應該有增進不少。 依著以往的經驗,升級的時間約兩個小時內應該可以完成的。

參考原先我寫的升級備忘錄: [系統升級] b2evolution from 1.10.2 to 1.10.3,與 【系統升級】b2evolution from 1.8.2 to 1.10-beta

沒想到,整個升級的過程相當不順利。 先是執行 phpmyadmin 所下載回來的資料庫 Dump SQL 檔,全都是亂碼。找了許久,才發現到連線校對系統給我的預設為 utf8-unicode-ci, 我沒看清楚,以為是正確的,結果應該是設定為 utf8-general-ci 才對。 然後,執行升級的程序(script)後,資料庫是可以順利升級沒錯,但是,部落格首頁(以及系統頁面的 Blog設定標籤)總是在最後面會出現錯誤訊息:

An unexpected error has occured!
If this error persits, please report it to the administrator.
Go back to home page
Additional information about this error:
Requested User does not exist!

從官方網站討論區找解答,仍是找不出所以然。 然後又想啟動 DEBUG 模式,結果呢,一啟動 DEBUG 本身也是 Bug,它會出現:

MySQL error!
Variable ‘sql_mode’ can’t be set to the value of ‘TRADITIONAL'(Errno=1231)
Your query:
SET sql_mode = “TRADITIONAL”

又再去查了資料,發現到應該是與 MySQL 版本(只有 v5 以上才支援上述的模式)有關,但是目前我使用的 v4 版本實在不知道如何設定...。

弄到凌晨兩點多,不想再弄了,想說倒回去還原好了。 結果呢,資料庫因為新舊版的 Schema 定義並不一樣,必須砍掉再從我原來的備份檔上傳載入(Import)。使用原來我一直用來很順利的 BigDump.php ,這次竟然不靈,在 Dump 備份檔的過程中,它一直顯示出問題,好像是某一些 INSERT 的資料行有太多的 LF RETURN 符號所致? 只好改用 phpmyadmin,但是又因為備份檔高達 27MB,結果導致 Import 上傳會 Time-out,弄得到後來我只好分批切幾個備份檔,再一一載入,才完成還原的工作。 至於 blog 檔案目錄,就很簡單了,把原先備份在 server 的目錄(已更名),再更名回來就可以了。 弄得灰頭土臉,到今日近 5:00 時才又恢復原來的系統,實在是耗費了一整夜的白工!

這一次最大的教訓就是,應該把原來的資料庫直接給複製到 Server 端另一個資料庫系統就好了,透過 Dump 檔執行還原工作,耗費時間且不是太保險(當然,無論如何還是要 export 備份出來)。 再來就是,應該先在我自己 Local 的 VM(Virtual Machine) 環境內,先預先作過完整的升級過程,待沒有問題的話,再至 Server 端執行升級作業,如此,才能確保升級的順暢,也不致影響部落格平台的運作。

Kenming’s 微型部落格開張了—Twitter@矇矇的秘密基地

Kenming's Twitter@矇矇的秘密基地

近日我也去申請了最近挺熱門的 Twitter,姑且就把我的 Twitter 稱之為 Kenming’s 微型部落格吧。 😉

“Twitter” 這個英文字彙的原意好像是 “唧唧喳喳地講話”,更通俗地來說,也就是 “碎碎念” 的意思。 不過,我個人倒是有另外的解釋: Twitter 可以是 “微言大義”。 只利用少數的字數 (官方網站限制最多每篇 140 個字),來提出 精微的言論,切要的義理

嗯,我是準備爾後可以方便記錄時常浮現在腦海的點子,趕緊把它寫下來;也可以紀錄從書中或他處所看到的銘言、智慧語錄等。 盡量不要給自己束縛,就是把它給 Write Down 下來就對了(可以透過登入至官方網站,或是透過 Firefox Addon,也可以透過手機撥入,互動輸入介面很多種,真的很有彈性)。

簡單又方便,我覺得還挺不錯的。 也可以直接從官方網站 copy 那個 Badget HTML 程式碼,然後貼到個人的部落格如 SideBar 區域。目前我的首頁右邊 SideBar 其中就有一個區塊同步顯示 Twitter 的 Post 訊息。 若對官方所提供預設的 Layout 不太滿意的話,國內有位玩家設計了很多 Twitter 的公佈欄樣式,參考: Twitter幫你說:現在在做什麼+自己設計twitter專用公告欄。 不過我試著下載回所提供的公佈欄樣式 swf 檔案,並照該網站的教學貼上 HTML 程式碼,卻無法顯示我的 Twitter 訊息,只好作罷。

{系統移機} from ServerZoo to Why3s

其實在去年底我的部落格等系統就已移機了,好像感覺不到吧? 我是 “悄悄地” 先在目的端設定好系統相關設定,測試沒有問題後就轉移過去了,轉移的過程大概不到兩天就可以完成,不過花最多的時間則是在虛擬主機廠商的尋覓上了。

系統轉移最重要的反而不是檔案,而是資料庫,一定要先把資料庫資料給備份下來! 可以先利用 phpmyadmin 將整個資料庫給下載儲存回來,當然其實它的原始檔為文字格式的 SQL 敘述,不過即使是壓縮檔,我的資料可真不少,約超過 5MB 之多吧,所以可是無法使用 phpmyadmin 給執行匯入(import)進去的。還好,先前有提及使用了 BigDump 這個如此簡單的 php 小工具,先上傳原始檔(文字格式,最好不要壓縮)至虛擬主機的目錄,再執行該 PHP 程式,就可以輕而易舉完成資料庫匯入的程序了。

我同時利用移機的時機也完成了 Blog 系統的升級,一切程序都挺簡單的。但是為什麼又要移機了? 喔,我可是最不喜歡作這些工作的了,實在無奈! 起因就是在原來的虛擬主機廠商 ServerZoo 的 XOOPS 系統變得超級不正常。哪時候開始不正常呢? 只要 ServerZoo 的主機維修公告後沒多久,我的系統經常也要跟著作某種程度的變動(例如,XOOPS 系統無法寄信)。但這一次,實在太過嚴重了,XOOPS 系統連管理員權限登入後,只要轉移到另一個頁面,又要我重新登入,根本無法進入管理員選單作設定。

這一類的問題,我當然會從 google 爬文來查原因的,相信我,國內外的各類文章我大部分看過了,也算是夠用心了,但就是無法解決此問題。我改了什麼設定才變得這樣嗎? 沒有,完全沒有! 就是從 ServerZoo 他們系統維護(升級)後發生的。說實話,ServerZoo 的服務態度其實蠻不錯的,我經常透過 msn 詢問技術人員,口氣上什麼的都蠻好的,也願意協助解決問題。喔,半年多來,我只有與他們最高主管通電話時最不愉快了,我打電話去 “抱怨” 怎麼系統是如此的不穩定,當然,他總是不會認為是他們的錯,而是客戶自己系統設定等等之類的問題。最後的語氣就是:”如果你不滿意,我們可以辦理退費!” 喔,我最是不能接受這樣的態度了,雖然沒有馬上辦理退費,不過當然今年一月初期限一到,是不可給它續約的,趕緊給跑到另一個虛擬主機廠商了。

另一個我也相當在乎的問題是,我最怕技術人員意有所指的認為,別人都沒有問題,就是你的才常出問題。本來我還真的以為就是只有我最常出問題了,結果透過我介紹租借 ServerZoo 的朋友,約有三、四位了,其中一半也曾向我抱怨過,尤其是 生魚片,他說他的系統莫名其妙全不見了,至於什麼原因,他也不知道。這麼不穩,讓他嚇到了,所以他也打算到期後也要終止租借了。

我還是蠻肯定 ServerZoo 的技術人員們的協助了,他們的服務態度我也覺得是不錯,這點可不能給人家抹黑的;不過,對客戶最重要的穩定感,則真的作得不夠。還沒說到後來 ServerZoo 是如何幫我解決 XOOPS 系統的,就是在根目錄與每一個模組目錄內,都要擺上 php.ini 設定檔。這… 還真的暫時有解決了管理員無法登入系統,但是,難道不會覺得有夠奇怪嗎? 我本人無論如何是沒有辦法承受這樣的解決方案的。

起碼花了一個多星期的時間,仔細慎選國內虛擬主機廠商。對於國外主機,我還是對於傳輸效能會怕怕,所以還是不予考慮。其實就是只有兩大重點:穩定與效能。對了,基本的客製化還是需要提供的。這一點,我與 Why3s 的客服技術人員通話後,是覺得挺不錯的 (當然,現在講這個還是太早了點),包括還先讓我在尚未轉移 Domain 時,先幫我設定一個暫時的虛擬 Domain 讓我作系統測試,這可是相當方便! 前述也提過,我並不喜歡移機來移機去的,花在系統轉移與設定的時間,真的不是很願意,要的就是穩定與效能。所以呢,這此我與 Why3s 是一次簽了三年,時間也算是長的。

當然還是希望啦,只要夠穩定與效能不錯 (嗯,合理可以接受的價格是前提),這樣就可以接受了。爾後呢,應該會打算租借真正的 “虛擬主機”,也就是在主機商他們那邊可能是跑 Vmware,一個實體主機切好幾個 “OS”,每一個 OS 由客戶來主控,當然,由主機商那邊協助管理會更好。這當然還是要等價格更便宜後再來考量囉。

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal