Friday, July 25, 2008, 8:24 pm
TSP久沒更新,其實都是我懶,不是苦無點子。從連入連結和 technorati 就能看見不少人嫌舊版TSP安裝麻煩,改theme /主題改得亂七八糟。老早發現其實 WordPress 有兩個 filter API可以幫忙省免大部份麻煩的步驟,在另一插件 MCEComments 出現之前就有了構思,不過自從 Pingback/Trackback 成為垃圾郵件業者的新武器,就差不多沒有人在用。這年頭連進來的訪客都寥寥可數,沒有留言建議不在話下。況且,不少主題現在都內置(例如 K2)這種功能,這個插件就更沒必要存在了。
幾天前看見舊版面有點亂,就打算把整個主題推倒重來,再到官方主題站挑個新的。選了這套 Big Blue,清爽圖片少,就覺得很適合。字體有點小,不過調一下CSS就可以,問題不大。反倒是留言,雖然有內置分離功能,不過從主頁看留言數卻跟內文顯示的不同,不順眼。
所以有了動機。程式碼其實都不太難,改寫幾句就 OK。但是,卻被 PHP 這種本來是樣版語言的設計踹了一腳。我不小心的放了兩個 \n 在插件的 PHP 後面,自然它們也出現在準備輸出成網頁的那截記憶體裡。XML 的設計又很龜毛,哪管是空白字元,只要有東西在 <?xml version=”1.0″ ?> 之前就得去死,所以改好插件的頭兩天 feed 都變成了奇怪的亂碼 (我不知道為甚麼,明明只是空白字元而已)。還好有大雄經 twitter 提醒,不然讓這不到 200 個的忠實讀者受罪,那叫我如何受得起?
軟件這種東西永遠有 room for improvement。或許放一頁設定內頁,或許可以把外連列表 (listtrackping)都改成自動加上…
後記:插件是故意寫成 non-backward compatible,因為兩個版本(1.1.1 和 2.0)在功能上是毫無分別的。
Sunday, January 1, 2006, 10:59 am
這三天裏,我休閒得很,也悶得很。Project 順利度過了 UAT,再加上身邊的同事全部選擇去享受他們儲起來的假期,我在辦公室裏所以也沒事可做。
沒有東西可以做實在無聊透頂,而為了補足在工作間的空虛感,我居然動手寫程式 — 為了興趣吧。第一日我在收拾這裏不符合 XHTML 1.1 的地方,也花了我整天時間。第二和第三日呢,我把我的注意力集中放在香港天文台 — 它的氣象服務。原來天文台有提供 XML 天氣資訊服務,但費用實在貴得令人咋舌 (年費港幣 $3,310)。我想由於無人問津,服務也在零五年一月終止。
不過其實也不用透過 XML 才可以從程式取得天氣資訊吧?文字版的天文台網頁格式很整潔,所以也很容易從程式取出有用的資訊,諸如氣溫呀,濕度呀,紫外線指數呀,分區氣溫等等。這幾天我便以 Java 寫這樣的一個類別,以 Regular Expression(常規表達式)取出不同資料。
對了,我在家還把整個 Java class 的程式碼移到 PHP,那便可以在這個伺服器發放相應的 Web Service,給其他網站使用。不過天文台的資訊有版權,所以如果要公開的話我也要取得相關許可才能這樣做。
但不知道發放提取程式的源碼如何呢?情況有點像 BT 或其他 P2P 軟件 — 提取工具本身並不犯法,但提取有版權保護的資訊才會涉及侵權。我想我也可以公開源碼吧,就把那個 Java class 貼出來好了。
還有,祝大家在新的一年,有一個新的開始。新年快樂… 噢,不要「快落」,新年愉快才對。
程式碼在這裏下載。
Friday, July 29, 2005, 10:30 pm
XSLT 的作用大家應該知道了,便是把 XML 的格式從一種轉成另一種。比如說,把 RSS 或 ATOM 轉為可在瀏覽器上直接觀看的 XHTML (Feedburner 的功能之一),又或者把 XML 格式簡化,程式更容易套取資料。但是,你可有想過以 XSLT 把格式原封不動的弄出來?
或許你會問,這樣是多此一舉,既然一樣啦,為甚麼還要 Transform?
除錯。可能大家沒有這樣的經驗:看不到源 XML。源 XML 是從呼叫 SAX 各個 handler 的函數虛擬出來,根本便沒有 XML 產生過,除錯的時候很來找到問題的所在。用 Identity Transform 就好了,甚麼 XML 經 Transformer 一過便列了出來。
有些時候想把特定的元件改變,但其他則維持原狀,也可以透過從 Identity Transformation 樣版匯入其他樣版達到目的。此外,就是弄出不同排位次序但資料不變的 XML 檔案。
把 identity transformation template 貼出來看看:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
延伸閱讀:XML.com: Using XSLT to Assist Regression Testing
Sunday, July 24, 2005, 1:45 pm
因為工作需要,硬著頭皮「速成」了 XSL (XML Stylesheet Language Family)。XSL 是一套將 XML 資料變成另一種 XML 資料,及顯示 XML 資料的工具(本身也是 XML),有三名成員:
- XSLT(XSL Transformations,XSL 轉換)
XSLT 給我的感覺很像 Regular Expression + Template,簡單的流程是在源 XML 找出要用的資料,再放到新 template 裏的變數裏去。例如 XML 格式裏有某個節點的資料要找出來,放進 HTML table 顯示給用家 (用家看不慣密麻麻的 XML 嘛)。XSLT 有點 programming 的意味 (有 foreach,也有 if else),但是本身也是一套格式表達的語言呢。
- XPath (XML Path Language,XML 路徑語言)
這套不是 XML,卻是一套存取 XML 文件裏各元件資料 (包括元件值及屬性) 的語言。把 XPath 當成是在 XML 上使用的 SQL 較容易掌握。
- XSL – FO (XSL Formatting Object,XSL 格式化物件
一套專門描述格式試定的 XML… 說穿了其實那是 XHTML 跟 CSS 合在一起,再刪減某些和格式無關的部份。
Saturday, July 2, 2005, 6:07 pm
終於踏出了利用 Google Maps + Blogcasting 的第一部!本想在之前的文章更新再寫,不過有很多要說,結果又開了新文章。
網址在此:http://mk-notes.com/sitesnearme.php
這段 script 會透過 geourl.org 尋找在你網誌方圓 70 公里範圍內的所有網站標在衛星圖片上,而網址預設是我的 (http://mk.netgenes.org),但可加進 url 這個 variable 變成你的(你要在 geourl.org 登記你的網站才成)。就如 http://mk-notes.com/sitesnearme.php?url=http%3A%2F%2Ffoobar.com (以 foobar.com 為中心)。由於 Google Maps API 不允許其他網址在 url 上出現,先要把冒號翻成 %3A,slash 翻成 %2F 才可以騙過 Google,讓網頁找到你的家。
(以下為技術文章)
麻煩死了,初想簡簡單單用一段 fetch XML script 把 geourl.org 的rdf 扯到我的 server 裏去,不過發現裏面太多我不想要的東西,用 javascript 讀起來會很麻煩,便試試用 PHP 把那段 rdf transform 一次 (對,我不懂 XSLT,又懶學)。試著用 xml_parser(),不知為甚麼內容統統不見。dom_xml 更奇怪,居然連續抱怨一空白行上不存在的 variable!後來想起伺服器支援 PHP 5,便索性用 simpleXML,簡單方便的寫完!只是在處理命名空間上有點麻煩,不過相對 xml_parser 及 dom_xml 那只是個小問題。
至於 javascript 嘛,不太難。Google Maps API 也頗實用,只是官網上的文件有錯處,害我撞進死胡同 (其實是設定為衛星圖片的常數多了一個 ‘G’ 開頭)。
Update:
剛弄了套較美觀的介面,除此之外還有給放到網頁上的版本。