有關部落格文章發布時間的問題
看到 Alex Hsu 的文章,說如果部落格的文章只有日期,沒有寫時間,會自動變成 UTC 零時發表的,這樣會有問題。他還建議了一個解決方法,可以自動去抓發表文章的時間,否則「每次都要輸入發布時間嗎?那樣不是很麻煩?」
這麼說起來,我還真的很不厭其煩。其實我自己在發布每篇文章之前,都會在瀏覽器中打開開發者工具,然後在 console 裡面打「new Date().toISOString()」,這樣就會出現當下的時間,再把這串時間複製
,貼到文章的檔案裡面。只有我這樣嗎?
這還不是唯一一個發表文章的時候需要複製的東西。在 RSS 裡面,每篇文章都應該有一個獨特的識別碼。很多人是直接用文章的網址當作識別碼。但是我又不厭其煩了。每次寫文章的時候,我都會在終端機裡面輸入「uuidgen」來產生一個獨特識別碼,一樣是徒手複製貼上到文章的檔案裡面。這樣做的好處是,如果哪天網址改了,還是會被判定成是同一篇文章。
但是這些都算不了什麼。反正我都捨棄 Markdown,直接用 HTML 來寫文章了。更不用說我寫的 HTML 還比大多數人用的更繁瑣,因為出現英文或數字的時候,還要考慮在直排下如何處理的問題。
很多人看到我的部落格的時候都會注意到他的字是直排的。不過我覺得與直排同樣不太常見的特徵還有一個,就是 pullquote。當初主要是因為版面看起來很單調,所以才加了這個沒用的東西。其實還滿做作的。每篇文章都要找出幾個金句裱框起來,有點荒謬。但是這個東西倒也沒那麼麻煩,只要在寫文章的時候在句子上面加「<span class="pullquote">」就行了,程式會自己把這些句子複製起來,平均地插入到文章中。至於產生 RSS 的時候,就不插入,只有在網頁上才顯示。
複製、插入句子之所以很容易,主要是因為我選擇用功能完整的 DOM 來處理網頁內容,而不是處理 HTML 字串或甚至是 Markdown 字串。DOM 直接讓程式可以操控網頁內容的樹狀結構,還能利用各種的 CSS 選擇器。如果要用一般人喜歡的系統來處理這個東西,當然也是可以,只是⸺雖然應該只是我個人的偏見⸺光想就覺得很麻煩,可能要寫個什麼外掛,甚至有人會發明特別的語法。而且到頭來,你還是免不了要操作樹狀結構。
這就是我一直搞不懂的:為什麼沒人喜歡用瀏覽器內的 DOM API?簡單又好用,又不用依賴第三方的程式碼。可笑的是,在瀏覽器之外,居然沒有任何一個通用的 JavaScript runtime 有提供內建的 DOMParser,無論是老牌的 Node.js 還是後來的 Deno、Bun 都沒有,如果要用的話通常只能安裝 JSDOM 或類似的東西,實在令人難以理解。難道說,全世界成千上萬絕頂聰明的開發者,包含人類與 AI,全部只想用 React、Vue,用各種稀奇古怪的 framework,然後完全無視這些 Web API 的存在嗎?就只有我一個白痴超愛這些瀏覽器內建的 API 嗎?
很多人可能會解釋:因為大家很懶,所以總是選擇比較方便快速的工具。我倒覺得是大家太勤勞了。明明瀏覽器自己就有個 DOM,你偏偏就要無視他,自己搞一個 virtual DOM,耗費的心力之大,絕對不是懶惰的人所能做到的。反過來說,回到本文最初的問題:我當然也可以設法讓每篇文章自動產生日期、識別碼,那鐵定會比手動的方式方便、可靠。問題是現在手動的方式也不會太麻煩,出錯的話改一下就是了,反而要花力氣去自動化的話,光想就覺得很懶。
同樣的道理,之所以不用 Hugo 之類現成的部落格軟體,而選擇自己寫,不太可能是因為我很勤勞⸺總共也才兩三百行程式碼而已,根本花不了多少力氣⸺恰恰是因為我又笨又懶,現在流行的那些工具那麼複雜,人生苦短,誰有那麼多閒工夫研究這些無聊的東西?何況像我這麼笨的人就算花再多力氣,恐怕永遠也學不會。所以就只剩下這最簡單的方式了。