0335期:Yahoo Pipes 的日期時間處理
昨天寫的 Yahoo Pipes 文章(0334期)中提到了用一個 Datee Formatter 來轉換日期時間格式,原始的版本在 http://pipes.yahoo.com/pipes/pipe.info?_id=xMo_xxo23BGLjCC91fC6Jw ,不過回家後細想了一下,原作者似乎只是為了創造一個 RSS 的物件而去做讀取網頁的動作,所以讀取的網頁必須穩定,而且回應很快速(預設去抓 Google News),然後他再去對 pubDate 及 y:published 的所有欄位作取代的動作。

回頭思考一下邏輯與效能,每一次轉換都要做網頁的讀取是很奇怪的思考,萬一要轉換 100 筆資料,不就讀了 100 次網頁,如果我們能自己製作出單筆的 RSS Item,那就可以省下這些讀取的時間。其實 Yahoo Pipes 有一些其他內建的元件可以取代。
於是我改寫了 Date Formatter ,用原本的 RSS Item Builder 元件來製作單一筆 RSS Item ,將轉換後的時間拋進 RSS Item Builder ,我一開始時是將 Date Input 轉換出來的時間值直接放在 pubDate 中,RSS Item Builder 元件會產出 pubDate 及 y:published ,兩個都是日期時間格式,與 Yahoo Pipes 要求正規的 pubDate 是字串, y:published 是日期不同,於是再 Rename 元件任意的把任意字串放進 pubDate ,再以 Date Formatter 產出的日期字串覆蓋上去。

最後的版本(程式的網址請見 http://pipes.yahoo.com/cgspipes/dateformat )又再思考了一下,其實 RSS Item Builder 如果直接設定格式化好的日期字串進去,pubDate及 y:published 就不用轉換了,於是我改寫了最後的版本如下。用 Date Input 元件輸入日期,然後製作成標準的日期字串,再送進 RSS Item Builder 做成 RSS Item 即可。

偶爾都會有人會問我程式設計是如何學習,程式效能又是如何去改變,就拿這個日期程式不斷調整的過程為例,通常我自己為盡量使用我所知道的方法來解決問題,但是如果試了一陣子,由於自己的思路是有所局限,回頭看看別人怎麼解決類似的問題,就像我會先去找到一個 Date Formatter ,經過這樣的程式處理,產生出來的日期時間是正確無誤的。
接下來我們就可以慢慢的研究對方的程式是如何運行的,可以把這樣的技巧先改寫到自己的程式之中,讓程式先產生出來正確的結果,最後再想辦法來調整效能的問題。透過不同的模仿與嘗試,自己對程式開發的工具也會更了解和熟悉。
先求正確的解答,再來求好求快,中間可能也會遇到改寫後,發生一些新的問題,慢慢的調整與改變,最後總能找到一個比較令人滿意的解答,為什麼程式剛寫出來的第一版通常不會是最好的版本,大約到了第三、四版才會令人驚豔,有時也是相同的道理。

回頭思考一下邏輯與效能,每一次轉換都要做網頁的讀取是很奇怪的思考,萬一要轉換 100 筆資料,不就讀了 100 次網頁,如果我們能自己製作出單筆的 RSS Item,那就可以省下這些讀取的時間。其實 Yahoo Pipes 有一些其他內建的元件可以取代。
於是我改寫了 Date Formatter ,用原本的 RSS Item Builder 元件來製作單一筆 RSS Item ,將轉換後的時間拋進 RSS Item Builder ,我一開始時是將 Date Input 轉換出來的時間值直接放在 pubDate 中,RSS Item Builder 元件會產出 pubDate 及 y:published ,兩個都是日期時間格式,與 Yahoo Pipes 要求正規的 pubDate 是字串, y:published 是日期不同,於是再 Rename 元件任意的把任意字串放進 pubDate ,再以 Date Formatter 產出的日期字串覆蓋上去。

最後的版本(程式的網址請見 http://pipes.yahoo.com/cgspipes/dateformat )又再思考了一下,其實 RSS Item Builder 如果直接設定格式化好的日期字串進去,pubDate及 y:published 就不用轉換了,於是我改寫了最後的版本如下。用 Date Input 元件輸入日期,然後製作成標準的日期字串,再送進 RSS Item Builder 做成 RSS Item 即可。

偶爾都會有人會問我程式設計是如何學習,程式效能又是如何去改變,就拿這個日期程式不斷調整的過程為例,通常我自己為盡量使用我所知道的方法來解決問題,但是如果試了一陣子,由於自己的思路是有所局限,回頭看看別人怎麼解決類似的問題,就像我會先去找到一個 Date Formatter ,經過這樣的程式處理,產生出來的日期時間是正確無誤的。
接下來我們就可以慢慢的研究對方的程式是如何運行的,可以把這樣的技巧先改寫到自己的程式之中,讓程式先產生出來正確的結果,最後再想辦法來調整效能的問題。透過不同的模仿與嘗試,自己對程式開發的工具也會更了解和熟悉。
先求正確的解答,再來求好求快,中間可能也會遇到改寫後,發生一些新的問題,慢慢的調整與改變,最後總能找到一個比較令人滿意的解答,為什麼程式剛寫出來的第一版通常不會是最好的版本,大約到了第三、四版才會令人驚豔,有時也是相同的道理。
















