2006年2月10日 星期五

兩層式的文章月份彙整

在論壇裡,有網友 hsuzy 問到如何修改樣版讓文章的月份彙整加上一層年份的分類?(請看討論串)我研究了一下,在現行的 LT 架構下,沒辦法像"我的連結部份"直接由樣版變數實作,必需要修改程式或另做 pluign 處理。當然,也可以用 smarty 的樣版語言"蠻幹"做出來。請原諒我用這兩個字,如果你不同意的話,其實 hsuzy 兄確實用 smarty 的樣版語言實作出來了。但是在我認為,用樣版語言做程式該處理的事情,終非正途。

修改程式來完成這個要求,我實作出來了,但是,除非未來 LT 官方改用相同的方式來實作,否則,這只能用來玩玩而已,因為後續的維護成本不值得這樣做(後面再說明)。

還是先看看做出來的樣子吧(以我使用的 almost-spring 模版為例):

使用年份做第二層的文章分月彙整

若有興趣玩玩看,請往下看…

2006年2月8日 星期三

關於 MagpieRSS

什麼是 MagpieRSS ?

MagpieRSS 是一個用 PHP 寫成的 RSS 分析器,他可以分析的 RSS 規格包括 RSS 0.9 、 RSS 1.0 、 RSS 2.0 、 Atom(有少許限制) 。而 LifeType 的 RSS 分析器便是進一步將 MagpieRSS 封裝成 RSSParser 類別來加以使用。

LifeType 在什麼地方用到 MagpieRSS ?

講到這就有點尷尬了,為什麼?因為一般的使用者是完全用不到的,至少我就是。若不是阿欣來問新聞閱讀器( FeedReader plugin)的亂碼問題,我還沒研究到他。等等, LifeType 不是有提供網站的各種格式的 RSSFeed 嗎?是沒錯啦!不過 LifeType 的 RSSFeed 是直接用與前台頁面相同的模版技術產生的,跟 MagpieRSS 一點關係也沒有,因為, MagpieRSS 的用途,是用來分析由 RSSFeed 取得的資料用的,也就是說,訂閱別人的 RSSFeed 用的。

2006年2月2日 星期四

避開中山高台中段的替代道路

每年初二陪老婆回娘家時,在中山高的台中至員林段總免不了要塞車。每回塞車時,看著旁邊的高架道路上順暢的車流,總想著,那如果是我的替代道路多好。今年花了點工夫研究了一下,果然是一個不錯的替代方案,跟大家分享一下。

這段替代道路適用南部路段可以使用南二高的人,也就是使用下面路段:

中山高->台中大雅交流道->中彰快速道路->快官交流道->南二高

我也準備了地圖跟大家分享。

2006年1月24日 星期二

升級至 LifeType 1.0.3

翻譯完官方的 LifeType 1.0.3 released ,並發佈在中文網站上發佈中文的 LifeType 1.0.3 發佈 之後,早上學校網路無預警的連不上,估計是無預警停電造成的。下午去忙了,直到現在才有空做 LifeType 1.0.3 的升級和寫這篇文章。

既然官方有提供 lifetype-1.0.2-upgrade-1.0.3.zip 升級包,加上上回在論壇有人對升級包存有意見,這回就讓我試試升級包吧!

升級之前,先回憶一下,自己的 LT 曾做過那些官方還沒列入的 hack ,免得升級後要重做時痛苦萬分。還有,既然使用升級包,當然要先看看升級包裡面的東西與我加在網站上的 hack 有沒有重複?若沒有重複,直接使用便完成升級了,豈不美哉?!

2006年1月20日 星期五

More Raw Request Mode Hack v0.5

謝謝 3gboke 兄,他又抓到 bug 了

這回是一般簡潔網址模式下,資料夾的檔案無法下載,我另外再查一下一般自訂網址模式果然也有相同的問題,而且更慘的是,連小型/中型縮圖也看不到。

這回問題出在 Oscar 把 ResourceServer 的 op 寫死在 resserver.php 裡面。為了不循環做 include 動作,網址的分析我全交給 index.php 處理,不再 include resserver.php 和 blog.php ,結果就少了 ResourceServer 的 op 而自動使用 default op ,回到 blog 的首頁了。

為了解決這個問題,多修改了 prettyrequestparser.class.php 和 customurlhandler.class.php ,在分析下載檔案的網址時,直接加上 ResourceServer op 便可以解決這個問題了。

changelog:

  1. 同時包含一般簡潔網址模式(pretty raw request mode)和一般自訂網址模式(custom raw request mode)的修正檔,分別放在兩個資料夾裡。
  2. 修正一般簡潔網址模式不能下載資料夾裡檔案的錯誤。
  3. 修正一般自訂網址模式不能顯示小型/中型預覽圖和下載資料夾裡檔案的錯誤。
  4. 在 hack 包裡加上中英文的 readme 和 changelog 。

2006年1月15日 星期日

More_Raw_Request_Mode_v0.4a

這個 hack v0.4a 並不是因為 hack v0.4 有 bug ,不同於 hack v0.4 使用一般簡潔網址模式,而是用一般自訂網址模式來取代一般網址模式。

會再出這個版本,主要是覺得自訂網址模式好像比一般網址模式受歡迎,而 Oscar 只說 LT v1.1 會考慮使用兩者之一取代一般網址模式,並沒有說要用那一種。 hack v0.4 使用一般簡潔網址模式純粹是我個人的喜好,不能代表大家的喜好吧!所以覺得還是把他做出來,讓開發小組去做選擇吧!

我偏好簡潔網址模式的原因,最主要是自訂網址模式不支援中文。其實網址上使用中文本來就有很大的問題,但是自訂網址其實可以處理,像文章就有「短標題」部份可以輸入文章的英文標題當網址用;而作者可以使用 id。為德不卒的是,只有文章和作者可以用,其它的像網誌名稱、文章分類名稱、資料夾名稱…都還沒有。所幸 LT v1.1 據說將全面支援這些「短名稱」,那自訂網址的實用性便大增了。但是,那也得作者不嫌麻煩地加另一個標題

另一個問題是效能。簡潔網址和自訂網址都需要一個 RequestParser 的類別做網址的分析。簡潔網址因為有一定的格式,所以他的 parer 就比較單純;自訂網址因為「自訂」的彈性,他的 parser 就寫的複雜多了。流量不大的小站或許沒什麼問題,若是用戶萬人,一天幾萬到幾十萬擊點數的大站,理論上效能是有差的。有興趣的人可以比較 class/net 目錄下的 prettyrequestparser.class.php 和 customurlhandler.class.php 兩個檔案就知道了。

不廢話了,有興趣測試的人,請由此下載: more_raw_request_mode_hack_v0.4a.zip (更新!搬家到 blogger ,這又是舊版用檔案,不再提供了。)

測試方法跟 hack v0.4 相同,就不廢話了,請自行參考之前的文章吧!

路過的人,願意留下意見,說說看你喜歡那個網址模式嗎?

2006年1月12日 星期四

More Raw Request Mode hack v0.4

新功能還是得要大家幫忙測試的, hack v0.3 果然有一個 bug ,如下的 blog 網址無法正常被解析:

http://your.server/lifetype/index.php?action=/blog/{blogId}

造成所有的 blog 首頁網址會一律跳到預設的 blog 。

謝謝 3gboke 發現這個 bug,要解決這個問題,必需要多修改一個檔案。

另外, Oscar 在英文官方論壇有這樣的回應

I need to take a look at these changes. We might integrate them in 1.1

所以,在 1.1 版時,這個可能會取代一般網址模式囉,請大家期待 LifeType 1.1 吧!

回歸正題,hack v0.4 出爐了。

2006年1月8日 星期日

More Raw Request Mode hack v0.3

這個 hack 發表後,有興趣的人似乎不多?!倒是 Oscar 有這樣的回應

Isn't 6 request generators a bit too many? We could replace the current "raw" one with one of these two. After all, current "raw" urls will always work no matter what method is currently being used...

也就是這,這兩種模式的其中之一未來可能會取代目前的一般網址模式,還有,目前的一般網址模式也要能夠正常運作。當然,這是向下相容的必要做法。

所以,依據 Oscar 的要求, hack v0.3 版出爐了。

2006年1月4日 星期三

如何預設啟用外掛程式?

2006/04/18 更新:

maomaode 在論壇裡提到了本文所列出的程式碼不夠完善,並提出了他修改後的程式碼跟大家分享。我想,這就是自由軟體的好處吧!大家都有使用軟體的自由,也因此,讓軟體進步的更快快去看看吧!

很多人都在想安裝了一些防圾垃干擾外掛後讓每個 blog 都預設啟用它們。但是大部份的 plugin 都沒有把這個寫進去。今天 maomaode 又在論壇問起,基於因一時記錯,給錯資訊的罪惡感,於是拿 authimage 來試試。

其實做法非常簡單,每個 plugin 都會有一個 Plugin{pluginname} 的類別,裡面有一個 register() 方法。在 api 文件裡面這樣說

This function is called only once when the plugin is registered. Please use this method in case your plugin needs to perform some initializations before it is used, specially if the initialization process requires access to the plugin/blog settings......

More Raw Request Mode hack V0.2

安裝 LifeType 時,經常看到的問題是,想使用簡潔網址ModRewrite 網址模式、或自訂網址模式時,因為 WWW 主機沒有開放修改 .htaccess 的權限,或是使用了 IIS 主機而缺乏必要的支援,結果只能使用一般網址模式。

一般網址模式也沒什麼不好啦,就是網址經常又臭又長,不易記,不易用,不利搜尋引擎搜尋。這裡提供兩種新的網址模式,讓你的一般網址也能像簡潔網址般簡單,或是擁有自訂網址模式般的靈活運用。這兩種新的網址模式為:

  • 一般簡潔網址模式 ( Pretty Raw Request Mode ) 網址範例: http://your.server/lilfetype/index.php?action=/get/1/1
  • 一般自訂網址模式 ( Custom Raw Request Mode ) 網址範例: http://your.server/llifetype/index.php?action=/yourblog/1/2006/01/01/73

從上面的範例網址,你應該看出來了。沒錯,它跟一般網址不同的地方在於,都只用了一個 request 變數,而變數的內容為 blog 的相關網址,他們完全相容於簡潔網址模式和自訂網址模式,甚至,一般自訂網址模式使用與自訂網址模式完全相同的網址設定

有興趣嗎?請繼續往下看。

2006年1月2日 星期一

Pretty Raw Request Mode 試作

2006/01/04 補充說明:

因為我已經改過網址的格式,所以文章裡的下載連結取消,新版 hack 請參閱另一篇文章「More Raw Request Mode hack V0.2」。

LifeType 目前有四種網址模式如下:

  • 一般網址模式 ( NORMAL_REQUEST_MODE ) 所有的網址以 request 變數的方式放在網址中,主要是以各種 Id 組成。
  • 簡潔網址模式 ( SEARCH_ENGINE_FRIENDLY_MODE ) 將 request 變數裡的各種 Id 組合成 Path Info ,讓網址成為搜尋引擎易於搜尋的模樣。這必需要 WWW 主機有支援並開啟 Path InfoErrorDocument 重導向的功能。
  • 網址重寫模式 ( MODREWRITE_MODE ) 其實這個模式很少看到有中譯名。這種模式利用 apache 的 rewrite url module 將易讀的網址重寫回一般網址的型式後,再以一般網址模式處理。這必需要使用 apache server ,並且支援及啟用 rewrite url module 才行
  • 自訂網址模式 ( CUSTOM_REQUEST_MODE ) 網站管理者可以依特訂的方式自訂各種網址,必需要 WWW 主機支援 ErrorDocument 重導向才能使用。

以上四種網址模式,除了一般網址模式之外,都需要 WWW 主機額外的一些支援。這些支援對租用虛擬主機架設 LT 的人來說,經常會受到限制,尤其是對不支援自訂 .htaccess 設定的虛擬主機而言,一般網址模式成為唯一的選擇。

一般網址模式並不是不好,但是過多的 request 變數,讓網址不易記,不易看,也不易用( 例如論壇裡 3gboke 關於 flash mp3 player 的討論 ),也較不利搜尋引擎搜尋。於是我想提出第五種網址模式,他只需要一般網址模式的環境,而且網址裡面只有一個 request 變數,希望能夠讓一般網址更易記易用

目前已有初步的成果,只要修改兩個檔案,新增一個檔案,並修改一個資料庫設定值就可以啟用了。若有興趣,請往下看。

2005年12月30日 星期五

赫伯老爸的名言

赫伯老爸是誰?

今天看了機器人歷險記,很好看的一部動畫卡通,雖然看的是中文配音版,但是難得的是另有一番味道,不會像有些中文配音的片子看起來很奇怪,不自然。

在模版裡調用 PHP 的 Request 變數

如果想在模版裡面調用 PHP 的 Request 變數讓模版使用,例如「如何每個分類文章頁面頂端都會不同的FLASH或圖片」的討論串裡,要取得 postCategoryId 這個 $_GET 陣列元素在 header.template 裡面使用?

答案是:使用 Smarty 保留變數( reserved variables )

2005年12月28日 星期三

使用 hack 的代價

我的 blog 站使用了兩個 hack ,一個是摘要頁面公告核心補強 v0.1,另一個是更換 WYSIWYG 編輯器為 TinyMCE 。這兩個都還不是 LifeType 的正式功能,所以昇級時,真是辛苦。除了一般的昇級過程之外,升級之後還得要重新做上面的兩個 hack ,還得確定這兩個 hack 需不需要再修改

答案是什麼?還好,不需要修改,重做 hack 就行了。 Lucky !

2005年12月26日 星期一

LifeType 1.0.2 正式版釋出

這是開發團隊給 LTers 的聖誕節禮物。

這次的更新版本有兩項特色:
1.首次提供了 1.0.1 版昇級至 1.0.2 版的昇級包。
2.由開發中的 1.1 版移植了兩項隱藏功能:
2.1 跳過「管理面版」直接進入「發表新文章」界面。
2.2 在註冊程序中加入 CAPTCHA 機制,使用驗證碼來避免註冊機器人的干擾。

詳細說明請參考官方發佈訊息:

各位 LTers 更新的時間到了,加油吧!

譯完了官方發佈消息之後,接下來該我自己昇級了。