2014年3月11日 星期二

靜態部落格與輕量標記語言的殘念手記

有持續關注我部落格的朋友們應該能注意到,咱最近又很可恥地把部落格搬回 Blogger 上面了。



稍微回顧一下吧。去年七月的時候,我歡天喜地地申請了新域名,寫了一篇文章宣佈網站搬家,改用「Pelican」這款靜態部落格產生系統,來製作自己的全新部落格。

Pelican 的使用方式,是讓使用者以 markdownreStructuredTextAsciiDoc輕量級標記語言來寫作部落格文章當作底稿,然後透過某些方法將這些文章轉換成一頁頁的網頁,並套用各種模版將它組織起來,變成部落格的模樣。

Pelican 可以從輕量級標記語言的原始檔,來自動生成靜態網頁

因為系統中所有頁面都是「預先產生」的,全是「不會更改」的靜態頁面,所以這種部落格系統又被稱為靜態部落格系統。



靜態部落格有一些好處,而輕量級標記語言的好處也不少,雙劍合壁因此讓人趨之若騖。《像黑客一样写博客——Jekyll入门》與《使用Pelican搭建Blog》這兩篇都有講到為什麼要這麼做。

總而言之:簡單的語法格式!極低的 Server 要求!高效的性能!容易佈署!用自己喜歡的文字編輯器編輯!可直接閱讀的原始碼!可進行版本管理!容易被搜索引擎找到!原始格式完全掌控在自己手上!版面造型彈性很高!……



以上都是正確的大實話,我也是被這些特徵誘拐過去的。不過如此寫上大半年後,我畢竟是受不了了決定斷尾求生。為什麼呢?

以下就來說說我在使用這套系統時碰上的問題。雖然問題主要是針對 Pelican 和 reStructuredText,不過大部份抱怨應該也能或輕或重地反應其他系統的狀況。

那麼開始吧。





輕量級標記語言方面的問題

特殊格式不是難打就是打不出來

輕量級標記語言,相對於 HTML 這種一般的標記語言來說,優點是容易撰寫也容易閱讀,所以經常被用來書寫些簡單的文件。不過這種方便當然是有代價的,有些格式很難用輕量級標記語言來呈現,甚至根本就無法呈現。

想表達的東西根本呈現不出來,這是我寫作過程中很難受的一件事。



舉例來說,我在 reStructuredText 中想要使用 劃掉 效果來吐個嘈,就必須這樣寫……

.. raw:: html

    <style>
        .strike {
          text-decoration: line-through;
        }
    </style>

.. role:: strike
    :class: strike

文字文字文字文字 :strike:`劃掉` 文字文字文字文字。

喂!喂喂……我只是想要劃掉一點蠢台詞而已,非得寫這麼長長一大串東西嗎?

還有約定好的 可讀性 呢?可讀性 跑哪裡去了?



另外還有一些格式則根本打不出來,比方說「 旁註文字(ruby text) 」這種。

用 Chrome 瀏覽時的效果。這是 W3C 標準,但 Firefox 與一些其他瀏覽器還不支援……


一般格式要打也不簡單

我現在說的不是上面那種罕見的特殊格式,而是一般的格式,比方說經常用在強調的黑體斜體等。



在 reStructuredText 中,如果我想讓文字表現為「我很重視這串文字」,我必須要寫成……

我很\ **重視**\ 這串文字

為什麼要寫成這樣呢?其中包括一大堆很複雜的原因,這包括「語義化」、「文字用空白分隔」、「空白跳脫」、「預設值」、「中文是被歧視的語言」等等。我在這裡無法詳細解說,因為那會很長。



如果您會修改某些預設 CSS 的話,您可以把它縮減成:

我很\ *重視*\ 這串文字

不過如此一來,您在剪貼頁面時又會遇到一些難以處理的靈異問題。此處先不提……



Anyway,它很麻煩……應該說是超麻煩的。我只是要把字塗黑而已,有那麼困難嗎?

反過來說,用一般的所見即所得編輯器又如何呢?Ctrl + B 就搞定了。



貼圖麻煩

以下是 reStructuredText 中的貼圖指令:

.. image:: images/1.jpg

上面是最基本的貼圖格式。



此處問題已經很明顯了,那就是您非得記住「圖檔檔名是什麼」才有可能正確貼圖。

1.jpg 很好記,2qa01w4_pic.jpg 就絕非如此。當然您也可以手動改檔名或是剪貼檔名,但那又是另一種麻煩……



麻煩2上面看不出來,因為上面什麼東西都沒設定。我們看下面:

.. image:: images/1.jpg
    :width: 500
    :align: center
    :target: images/1.jpg

這張圖片被設定為寬度 500px、水平置中、按圖片會顯示出大圖……

很一般的設定是吧?但我非得寫這麼多東西才能讓它正常運作。如果我寫一篇文章要貼五幅圖,光是管理這些貼圖指令就會給我帶來許多麻煩。



更多麻煩的指令一大堆

引言:

.. epigraph:: 假如你告訴那些大人們說:「我看見一間用玫瑰色紅磚蓋成的房子,窗裡有天竺葵,屋頂上有鴿子……」他們無法想像得出這間房子。你應該告訴他們說:「我看到一間值得十萬法郎的房子。」然後他們才叫道:「多麼美呀!」


閱讀更多:

.. raw:: html

    <!-- READMORE -->

空行:

正文正文

|

正文正文

超連結:

`原討論串 <http://www.cool3c.com/article/69460>`_



……我就不繼續舉例了。總之一個比一個難打,而且也難記。用起來累死我了。

上面還只是單獨看。你能想像一個段落裡面套用了五個超連結後,段落會變成多麼妖艷的樣子嗎?工具限制了我們的表達能力,就是這個意思。



容錯率低

使用輕量級標記語言時你必須要完美寫對。寫錯一個字符,整篇文章就可能直接爆炸。

有時候是編譯不過跳出 Error,有時候是格式全面跑掉。因為輕量級標記語言沒有所見即所得,所以文章生成後的結果,可能會和作者想像中大不相同。



要求完美帶來心理壓力,這讓我寫作時總是十分謹慎,審視再三,寫作的樂趣被剝奪大半。

輕量級標記語言的理想之一是讓作者忽略格式,專注寫作,但這事實上卻反而讓人不得不更加關注格式。因為那怕錯一個字符甚至一個空格,都有可能讓文章完全走樣,甚至根本渲染不出來。



可轉移性不如想像中高

使用輕量級標記語言的其中一項優點,就是它是純文字的,因此不會被綁死在當前系統裡。

理論上是如此。但另一方面,輕量級標記語言設計初衷並非為了寫部落格,如今為了供部落格使用,有必要在文章中插入了不少額外的自訂語法標記。



舉例來說……
:status: draft

:date: 2013-11-27
:category: 書籍
:tags: 化學, 科普
:slug: bookreview-05

以上這種也就罷了,好歹還在框架的設計範圍之內。



.. image:: |filename|images/1.jpg

這條語句就傷腦筋了……|filename| 關鍵字是 Pelican 用來幫助文章產生「相對連結」用的,這對文章的附件(如圖檔)有其必要性。但 reStructuredText 的標準生成器 docutil 卻不認識這個關鍵字,如果餵給它吃這篇文章,就會得到警告與錯誤。

這結果暗示了,我的文章其實不如我想像中地那麼容易轉移。



靜態部落格系統的問題

支援文章數有限

這分成幾個方面。首先先講「生成文章」的問題。

在 Pelican 中,每次要加入新文章時,都會需要生成整個站點中全部的文章。假設生成一篇文章需要 0.2 秒,站點中有一百篇文章就要花二十秒,三百篇文章就要一分鐘……

看出問題在哪裡了嗎?

隨著文章數量愈來愈多,生成所需要花費的時間也會跟著增加。



更糟的是,Pelican 沒有「所見即所得」編輯器,故無法直觀地看出網頁最終呈現的樣貌,因此更加依賴生成來調試結果。結果修兩個錯字就得重複生成一次,這耗時相當可觀,簡直是噩夢,而且這噩夢還會隨文章數量增加而愈來愈嚴重。



其次,文章愈多,修改與管理都會愈來愈辛苦。因為資料夾中會逐漸塞滿文章與附件圖檔,這些東西又很難讓它依照時間排列。

要修改上回與上上回寫過的文章?記得檔名或資料夾名(與網誌上的標題名不同)的話還可以試著找找,不然就只能用 grep 指令先查出檔名再找找看了,這是哪門子茹毛飲血的使用方式啊……

怎麼翻查修改文章?……果然還是 grep 萬歲?


我想這就是網上那些用靜態部落格系統的朋友,很少能寫上上百篇文章的原因了。



基本功能有限

我不清楚理由,但這類靜態部落格系統中,官方預設提供的功能通常都較少。就算看似很基本的功能,常常也必須透過外掛才能支援提供。比方說 Pelican 中「摘要/閱讀更多」功能就是如此。

沒必要的功能不用裝,這是不錯,但許多功能得手動裝裝拆拆,也意味著額外的複雜性。

這種複雜性平常沒什麼,升級時就頭痛了,特別是主系統與外掛升級節奏不匹配時更是如此。此外,某些外掛還會提供特殊語法讓使用者在文章中使用,結果就是事後把外掛移除的話,整套系統就無法工作。這些外掛只能裝不能拆,相當要命,升級升不上去時更加讓人抓狂。


系統複雜無法隨處更新網誌

我家有三台電腦,但更新部落格時只能用其中一台來更新,這是因為有兩台的 Pelican 環境用了不同的 Pelican 版本(Pelican 3.3 與 Pelican 3.2 有差異),又或是依賴不完整,想把環境安裝好難度較高的緣故。

除此之外,儘管理論上輕量級標記語言可以隨處繕打,但現實中,在缺乏執行環境的機器上打字,就算打了一些文字也無法藉由預覽來查找錯誤,因此無法完稿,結果終究只能在特定機器上使用,讓我非常著惱。



寫新文章時桌面混亂&前置作業一大堆

每次要開始撰寫新文章之前,我的桌面上得開兩個終端機:


  1. 其中一個用來生成靜態文稿
  2. 另一個用來維持一個預覽用的臨時 local server;
  3. 此外還要開瀏覽器、文字編輯器、檔案瀏覽器各一

寫部落格時讓人抓狂的混亂桌面狀態


每次要寫部落格時都得開個半打程式,桌面亂成一團。




部落格系統升級時的混亂

我的部落格採用 Pelican 3.2 版本,但 3.2 的部落格無法透過 3.3 版程式來生成。而眾 Linux 發行版pip 中,預提供的 Pelican 卻陸續升級到 3.3,這逼得我升級不是不升級也不是。之所以不想升級的原因,是因為升級過程中要調試一堆東西,一度試了半天還沒法讓自訂的模版與插件升上去,因此暫時放棄。

升級不是無痛,是很痛。

當然,動態部落格也是會有升級的問題。不過我可以選擇不升級擱置它,或是把問題丟給服務提供商解決,而不一定非要自己處理。



抱怨這麼多,Blogger 就那麼好嗎?

才怪!Blogger 問題還是有不少,不然我當初也不會把它丟掉逃跑了。



Blogger 版面造型限制很大、頁面中莫名其妙的標記與結構很多、程式碼看起來十分骯髒、讀取載入速度相對慢,這都是問題。

其中的編輯器,大概是最有助於讓人微笑著取出柴刀的項目--連個 <p> 標記都打不出來是怎樣?全用 <br /> 像話嗎?如果手動修改 HTML 原始碼,它還會很自動地把我的原始碼給改掉恢復原狀,真是智能得讓人涕泗橫流啊,混帳。

大概是被 LoNote 的編輯介面養刁了胃口吧……這篇文章我也是用 LoNote 寫好底稿再貼進來改的。



罵歸罵,總地來說,Blogger 的問題還是比較好解決的。反正在剛 逃出老婆毒手 的伊邪那岐眼中,黃泉比良坂看上去也和天國相差彷彿?大概就是這種感覺吧?



我也想聽聽其他靜態部落格用戶的想法,有心得的話就快來說幾句吧。



對了,本站的 RSS 地址在側欄上方有,有興趣的記得去訂一下。

21 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
    回覆
    1. 原來要用那麼多 Script 才會好用啊,嘖嘖嘖,那些推坑文都沒講清楚嘛。不過連圖檔格式都得用 Script 產生還蠻累的。

      應該就像您說的,搭配一台固定伺服器來用恐怕是個比較方便的主意,哪天我也來調整我家的 RaspberryPi 試試看好了。話說家中有擺一台 Raspberry 伺服器這種時候就很方便呢。

      也感謝您新做的研究啦。收下參考。



      話說……為什麼刪掉了啊 XD

      刪除
    2. 不好意思,因為用錯帳號留言了...XD,這個才是本尊。歡迎參考與指教。:-)

      刪除
  2. 很棒的經驗分享! 可讓許多人少走一些彎路。話說我寫筆記都是使用 kompozer 寫成 html 格式,所以寫的時候也就不用太煩惱語法的問題,再加上最近我解決了 kompozer 自動斷行和文字間自動幫你空格的問題之後,是越來越愛用 kompozer 了。

    回覆刪除
  3. 我最近正想要用 Pelican 試架一個站,所以非常感謝您的經驗。

    reST 我試了一次就不用了,他的中文支援如您所述實在爛到不行(再說他本身語法就很令人懷疑他到底是來幫忙的還是來亂的)。Markdown 似乎還不錯,至少粗體、斜體、刪除線等等都能正常用。只是我想寫的東西會用到表格,而表格就正是 Markdown 的罩門。最後 AsciiDoc……我還在研究要怎麼裝,因為我用的是 Windows。這世界似乎沒有人是在 Windows 上用 Pelican 配 AsciiDoc 的,偏偏我又是個大外行。

    文章數方面,Pelican 只會處理有更新的文章倒是還好,除非你每頁都要擺最新文章清單或是標籤雲之類的,不然除非改樣板或網站結構,應該是不會去碰到舊文的吧?

    而在撰寫工作流程方面,記得 Linux 很多編輯器都能配執行指令做編譯偵錯那類的循環不是嗎?文章的基本資料也是寫好範本就可以反覆使用了。應該是可以做到直接在 GVim 編譯+預覽吧?很久很久以前似乎聽過有強者整個 compile-debug-commit 流程都可以在 Vim 裡面完成的。

    Blogger 我也認真考慮,幾乎可說我不想用 Blogger 最大原因也是為了那 br 標記。當然,還有怕用下去結果哪天碰到個莫名其妙的限制。聽說 Windows Live Writer 可以完美支援 Blogger 用 p 標記,不過總覺得用下去就沒有「我很專業」的自嗨感了。再說,用了這種東西去強迫 Blogger 接受 p 標記後,實在很難保哪天還原備份還是 Blogger 後端改版之類的不會又把所有舊文的 p 給吃掉。哦,還有就是用過了 Markdown 後實在很非常喜歡這種標記語法。

    但是再回頭想想,這就好像木雕師傅一直計較那第一刀怎麼刻,結果從來沒有雕出個作品(網站)一樣,本末倒置了。

    哦,Blogger 還有最後一個就是,很久很久以前,我想大概是 2004 還是 2006 年之間吧,Blogger 有一個很致命的缺陷,在長一點的中文段落會偷插空格,實在難看到極點。我用了一陣子後就開始玩起 WordPress,從此陷入第一刀該怎麼刻的輪迴,再也沒有寫過完整文章了。

    對了你的舊文有不少破圖,像是概念少女分類的前幾篇、男性向女性向的魔法少女那篇……啊,糟了,這好像曝露了我的興趣。

    回覆刪除
    回覆
    1. Heil, Magical Girl !

      多謝您這麼長的心得分享啦,我也來補充一些~

      【關於輕量標記語言】

      reST 其實沒那麼差啦,他支援的格式比較豐富,語法當然也會比較複雜。寫嚴謹而正式的文章時,也不算太難用,使用場合比較特殊就是了。

      markdown 是目前的王者,不過真要用時可能還是得找些擴展去用才會好用吧?pandoc 與 github 這兩個專案都發展得蠻好的,應該可以試試。

      ASCIIDOC 我覺得有機會成為 markdown 的繼任者,持續有在關注。不過話說回來我的預言一向不準,這……

      輕量級標記語言我用起來有點不滿,還有一個重要因素,是因為文中的語義標記經常打斷我的文字流與意識流,且不管是哪種輕量級標記語言都不例外。在我看來,這是一類方便書寫卻不方便閱讀(閱讀原始碼)的語言。

      我知道這是它的非戰之罪啦,不過畢竟身為作者大部份時間是在和原始碼打交道,來回重讀時還真是非常討厭。

      【關於 GVim 編譯預覽】

      用 GVim 跑完整個編譯流程是可行的,Vim 的 Script 是無敵的嘛 (^_~)>,不過想預覽多半是不行,畢竟 GVim 是文字編輯器,只能出現純文字內容。就算真能這麼做,硬幹好像也沒啥好處。

      預覽或許還是開個網頁瀏覽器比較好?我是這樣想啦。

      另外,如果寫 Script 的話,那麼就只能在當前的編輯器下編輯了。我是很喜歡 Vim 沒錯,但我也不想被它綁住啊。畢竟咱用輕量級平台的一個重要目的就是想要降低偶合,但是結果反而增強偶合,那實在有點沒意思說。

      【關於更新】

      像這種靜態部落格,其實不太容易讓它只去重編譯「有更新」的文章,這是因為部落格裡「每篇文章的頁面」都可能會根其他篇文章有關聯。而許多關聯性常常必須要由系統去動態計算。

      比方說本站右邊的「網誌存檔」--每一頁都有這些訊息,且每次更新一篇文章,所有頁面的「網誌存檔」都得更新,對靜態頁面來說,這就是重新渲染全部頁面的意思。

      當然啦,如果使用者套用的某些模版,頁面之間的關聯度沒這麼高,或許能在某方面避免這種問題,但這種做法應該不會成為預設值,畢竟這需要 hack、設定、模版、外掛等多方系統搭配才行。要不然就是整套靜態部落格系統從設計之初,就不允許把像是「網誌存檔」這種訊息渲染在個別頁面之上。這種也是有的。

      前面這些都是您說過的,我只是加強說明而已,不過我還有注意到一點,那就是主目錄頁面。

      主目錄頁面是部落格的首頁,它列出了最新的五或十篇文章。其下有多個分頁。每當更新一篇文章時,整個目錄與其分頁都會更新,而這目錄中,通常還會出現某種程度的預覽。

      這些頁面需要引用您部落格中所有文章的資料來產生(產生包括預覽和標題等東西),結果就是重新產生主目錄時,會要全面重 parse 您的現有文章來取得所需資料,這和重新編譯幾乎沒兩樣。(當然理論上有加速的方法,比方說將 parse 後的資料 cache 在 sqlite 資料庫中等等,但這種東西真的有實作嗎……)

      【關於 Blogger 破圖與空格】

      本站某些老文章破圖是因為那時我用了其他圖床啦,沒用 blogger 的圖床。雖然 blogger 爛的地方不少,不過這點倒是不能怪到她頭上。

      偷插空格倒不是 Blogger 專有的問題,而是基於網頁的 HTML 編輯器面對 rich text 剪貼時共有的問題,這似乎與瀏覽器實作有關。空格一般是偷插在「剪貼前文章」軟換行 (auto wrapper) 的地方。

      如果真心想要避免,建議直接貼入純文字 (Ctrl + Shift + V,Fx 與 Chrome 都可用) 再改格式,不然就是讓用搜尋工具將螢幕上所有空白染色,這樣就能輕易將空白抓出來。



      (時間用完了,沒法多校對,就請將就看看啦)

      刪除
  4. 哦,以前偷插空格倒不是剪下貼上造成的,而是真的你打進去一整個沒有空格的段落之後,會在固定字數後插一個空格,現在好像沒有了,應該是當初剛買下 Blogger 原廠的問題吧。

    的確那些連結的更新是最大問題,不過我因為最早以前是寫 HTML3 的,習慣上是會把那些東西拿掉,所以沒考慮到那些。

    Blogger 還有就是整體雲端系統的優勢,這就不是任何其他解決方案贏得了的東西了……15GB 儲存空間加上全球快速存取,說實在的很令人心動。XD

    對了 Blogger 有辦法改 WYSIWYG 編輯器的樣式嗎?本質上雖然是 WYSIWYG,可是一旦跟自己網站用的樣板差異太大,感覺反而妨礙書寫……

    回覆刪除
    回覆
    1. 改編輯器樣式這我也一直有在想 XD,不過目前還沒能找到好辦法。

      試試看某些專門用來寫部落格的瀏覽器外掛或許會有解法吧?不過無法抱有希望就是了。

      要是發現好方法,就提醒我一聲吧~

      刪除
  5. 哈,不太會用繁/正體字,見諒啊。

    我已經用 reStructuredText 寫了兩百多篇博文了,reStructuredText 的起源和缺點我也瞭解得比較深入了。reST 本身是爲編寫英文的 Python 官方文檔而設計的,空格對於中文寫作來說絕對是一個大問題。

    至於我爲何能夠堅持寫那麼多篇文章,主要是因爲 Markdown 過於簡單,而且語法歧義比較多;而 reST 則功能較多,歧義性問題也比較好解決,能夠令文章的結構更清晰。而且我認爲暫時也沒有別的標記語言能夠和 reST 相比較(AsciiDoc 的腳註語法很差)。我也不希望過於依賴博客系統,希望令文章原文和博客儘量分離。

    在使用 reST 等標記語言來進行日常寫作的過程中,我深深地體會到好的寫作是不需要太多花巧的標記的,所以我已經逐漸地朝更專業的寫作方向前進了。空行和圖片我是能不用就儘量不用的。(用標記語言寫作也已經默認放棄複雜的排版了,我就不說複雜排版的好處了。)當然,reST 對於非編程社區說明文檔寫作來說還是有太多不常用的語法了,我還是希望有新的輕量標記語言誕生的。

    「閱讀更多」的標記方法其實可以更簡單的,因爲 reST 自帶 HTML 註釋的語法(用 Docutils 工具轉換):

    .. READMORE

    說到可移植性,各種靜態博客生成工具都有其特點,在正式投稿使用前就應該搞清楚的,或許工具的作者根本沒考慮到可移植性。假如是要移植到 Blogger 等使用 HTML 爲源格式的網站,可以直接將原文轉換爲 HTML 內容複製過去。

    說了那麼多,其實我覺得最重要的是,寫作者要清楚自己平時主要是寫哪種類型的文章的,根據該點來選擇使用 WYSIWYG 的編輯工具還是以輕量標記語言來實現另類的 WYSIWYG 效果。

    而我,平時多數寫 IT 相關的文章,所以是更偏向輕量標記語言的。我最近也因爲 Markdown 缺點太多而設計了一門新的輕量標記語言,只不過我還是忘記考慮避免和輸入法常用標點符號對應的鍵盤按鍵衝突了,哈。這門語言及其轉換工具可見該網址:https://github.com/jakwings/strictdown

    不過我還是比較喜歡 reST 的結構化思想,所以最近還在設計另一門新的輕量標記語言,還要不少時間才能設計完畢和編寫相應轉換工具並公佈出來。

    回覆刪除
    回覆
    1. 多謝你的好留言!其中有許多值得參考的好東西呢。

      雖然說好像是對輕量標記語言抱怨了一大堆,其實我還是很喜歡 reST 的,只是覺得用它來寫 blog 有些不便而已。或許就像您所說的那樣,這和部落格的類型有關--雖然我確實很喜歡程式,但也沒法忍受被框死在程式的世界裡,多少想為自己留點餘地。

      至於更專業的寫作這點……其實我不太理解這種觀念,畢竟何謂專業呢?營利嗎?易讀嗎?還是不犯錯呢?我去年藉由寫作賺了六位數稿費,我能算專業寫作人嗎?無論答案為何,寫作格式是否專業這點從沒困擾過我。為了溝通,我們確實百分之九十九的時候都得在常規的格式範圍內撰寫東西,但當有需要的時候,畫龍點睛的那一筆畢竟是有其存在價值的。格式有需要就用,沒需要就捨,能輕鬆自然地傳達出作者想法的文章應該就是好文章了。好文章的定義豈非如是?

      您居然設計了一門輕量標記語言,而且是用 js 寫的,這我光想就頭痛了。真是超有幹勁的。之後有時間我再玩玩看,謝謝推坑。

      哦對了,既然都留了言,不順便分享一下您的部落格嗎?

      繁簡問題請不用擔心,本站完全不介意這個。文字只是溝通的工具,請儘管留言就對了!

      刪除
    2. 既然看得懂简体中文就方便多了~我的个人博客在 http://blog.likelikeslike.com (哲学方面的文章就当纯粹的猜想来看好了,呃……)

      我说的专业,比较接近小说或者新闻写作那种程度吧,即是能够在有限的排版下依然行文流畅,能够让文字有独特的灵魂。我语文没学好,经常看到那些名校出身的人都能写得一手好文章,真的很羡慕的。我之前那些评论内容真的组织得比较差呢,还忘记用小标题分隔一下来掩饰一下了。语文都没学好就经常写 IT 那类比较复杂的东西还是有点难为自己呢。

      其实现在网页浏览器的 JS 运行速度越来越快啦,JS 对 UTF-8 的支持也比较好,所以写起文本分析的程序来会比某些不是一开始就支持 UTF-8 编码的文本的编程语言方便。不过要写这种语法不严格的轻量标记语言的确会很令人头痛的,有很多细节要考虑。

      听你说你还写书,好厉害,既然你对排版的需求还是比较大,其实可以试试 LaTeX 语言这个坑的。只是要上手的话比较花时间就是了。网上有一份不错的中文 LaTeX 排版参考资料:http://hahack.com/tools/latex%E6%9C%AD%E8%AE%B0/

      刪除
    3. 這篇真是針針見血啊!!


      Blogger 刪 P 問題實在是令人有狠狠掐死他的衝突,不過鑑於老闆谷歌大神平時好事做得多,加上也非無解,本人還是買帳了 orz

      那要怎麼解呢?只要掌握一個問題本質就行:刪 P 只會發生在 WYSIWYG 模式──換言之,堅決只使用 HTML 原始碼模式就沒問題了,而且原始碼模式提供了插入簡單格式與超連結、圖片的工具,還能不感激涕零嗎 XD

      當然平時還是可以用其他 WYSIWYG 去處理那些 HTML 原始碼,個人推幾個:

      1. Windows Live Writer (WLW):有不錯的 WYSIWYG 支援(當然是支援 P 的),能使用原始碼模式,能直接設計部落格文章的日期、標籤及上下載同步儲存草稿等問題,對於寫部落格而言堪稱市場上最方便的工具,雖然是微軟大神的東西,看起來也不專業,不過本人掂掂自己專業......大概沒有省下的時間值錢吧 XD

      它有個缺點是上傳 Blogger 時會壓縮空白,比如 </p> 和 <p> 之間的換行會變成單空白,原始碼變成一行文,這有一點困擾,不過由於不影響語義,且要重新編輯也有很多現成的 HTML 原始碼重排工具可用,因此個人目前還沒放棄他。

      2. BlueGriffon:跨平台、開源、有綠色版、支援 HTML5+CSS3,據說是 Kompozer 的後嗣,沒有祖宗中文亂插空白及原始碼亂處理的問題。奉行完美主義如我對它也是相當滿意,只是它畢竟適合編輯靜態網站,不便處理部落格文章上下載。

      3. 臨時使用的話,個人會借用 CKEditor 線上 demo 的界面來 WYSIWYG 一下複雜的 HTML 原始碼段落,比如表格。應該有其他類似的替代品,只是個人習慣用他。


      還有一個很想吐槽的 Blogger 問題是文章檔名不允許底線,匯入 abc_123.html 會變成 acb123.html,可偏偏他預設的文章檔名是 Blog-post_##.html,導致這些文章一但匯出就不能再匯入為相同名稱,不同名就是連結掛點,對本人這種有時會匯出 XML 備份檔大動手術再匯入回去的完美主義者來說可不太妙......

      當然解決方法不是沒有──每則文章都自訂連結名稱就行。麻煩在於本人愛用的 WLW 不支援改文章檔名,得先到 Blogger 後台去開文章、設連結、儲存草稿,再用 WLW 同步下來重新編輯上傳,這頗費工。


      然後關於靜態站台生成器 SSG,雪凡指出的包括輕量標記語言實質上的方便性、平台綁定升級轉移多工性、管理檔案方便性、預覽與重新編譯的時間耗費等等,的確都很值得想一頭熱鑽入的人再三思後行呢!!

      關於靜態站台生成器,個人以為低伺服器需求及原始檔操之在手、版本管理的確是很吸引人的優點,但比起 md 或 reST 這類繁複的(偽?)輕量標記語言,個人還是偏好類似老牌 Dreamweaver 的模板功能,把導覽列之類的共用元素丟給模版處理,其他用 WYSIWYG 或純粹的 HTML 語法才是王道。當然 DW 不開源,而要支持部落格的動態文章或標籤列表,可能也要強化很多的模板才夠力,這點不知現在有沒有工具能辦到(別叫我回歸 php/asp 動態網站XD)。


      最後關於「中文是被歧視的語言」,上面又有人提到中文被亂插空白的問題了......這喚起了一個讓人不開心的回憶──除了幾個 HTML 編輯器有問題以外,更重要更重要更重要的是 Firefox 複製中文文字就會有這問題啊,而且經過 N 多年還沒有修好,此蟲回報於此,歡迎加碼催化。

      別看小小的幾個空白,這有時是很麻煩的,畢竟「林雪凡」當關鍵字就是搜不到「林雪 凡」嘛......這問題 IE, GC, Opera, Safari 通通不會遇到,為了這問題,凡要複製內容,得在其他瀏覽器另開視窗解決,實在是優秀火狐瀏覽器的超大粒老鼠屎......如有高手路過,誠心懇求出招。

      (最新測試情報:複製後貼到能處理 HTML 原始碼的富文本編輯器上,可發現最多 73 個字元就會自動插入軟換行,猜測是 Gecko 核心在將富文本送到剪貼簿的自動「優化」功能導致,也許可取消此功能或加個客製選項解決?)



      刪除
    4. 丹尼這麼長篇的超特精華留言居然被塞進 spam 留言中了,趕快將其撈出來。感謝您的好留言啦!

      「堅決只使用 HTML 原始碼模式就沒問題了」
      雖然是無敵的選項,可是我不想要全手刻 HTML 啦 XD
      ……好吧,嚴格來說也不是全手刻?

      糟糕了,仔細想想好像也覺得挺讚的,或許我也可以試試?

      「CKEditor」
      這個好像相當簡單實用,待我仔細觀來

      「BlueGriffon」
      已經不是第一次被推坑了這個,這次就來試玩看看,剛好我最近有一篇特長文要上,看看能不能派上用場。

      「換行 bug」
      看起來丹尼一更新 bug 就大有進展囉。
      話說我還沒讀過 Fx 的 Code……

      刪除
    5. 噢,我居然把留言放到 Jak 蓋的樓裡了,真是抱歉 orz

      1. 當然不是全手刻,只是不用 Blogger 內附的 WYSIWYG 而已。往好的方面想,其實很多線上 WYSIWYG 編輯界面都是很爛而必須自己 workground。再者咱寫維基百科那麼久也從來都是編輯原始碼加預覽的。

      2. 糟糕,剛講完就發現了槽點,CKEditor 有個怪癖和 Blogger 剛好相反,他會強制把 BR 通通改成 P,真是……大概我平時太少會它處理整段 BR 系文章,所以沒注意到吧 XD

      3. 超感謝熱心的網友提供訊息,只是很多資訊拿出來後官方好像還是愛理不理的……咱 CJK 去掉 K (不是我民族意識,誰叫現代韓文背棄老祖宗擁抱洋人那套空白分詞呢?)也有少說 15 億人口,要怎樣他們才會重視這塊市場勒?

      刪除
  6. 作者已經移除這則留言。

    回覆刪除
    回覆
    1. 哈,其實我發現所有新留言我都收到提醒。沒關係的~郵件裡衹提供了「取消訂閱此文章的意見」的鏈接。

      刪除
  7. 哈,上次說的新標記語言終於設計好了,目前有用 JavaScript/Node.js 編就的轉換工具。
    https://github.com/jakwings/Kaj-Markup-Language

    我還想問問港臺的人一般上什麼 IT 方面的 BBS 呢?

    回覆刪除
    回覆
    1. 哈哈,感謝分享!

      話說我剛好是那種不會用BBS的人,沒法回答呢。

      刪除
    2. 台灣現在大概也只剩 PTT (telnet://ptt.cc) 比較多人在用了XD
      IT 相關討論版可參考 CompScience 等群組。

      PTT 現在已經有 web 版界面了,比如 CompScience 可到這裡: https://www.ptt.cc/bbs/1186.html

      刪除
    3. 多謝。PTT 我平時搜尋資料經常看到的,不過群組很多,讓我有點無所適從啊,發言方式也稍麻煩。看來地球是越來越小了,大家可能全球 BBS/Q&A 都逛吧。

      刪除

☆每日吐嘈,有益身心☆
…不過還是請手下留情別太狠啊。