2013年10月3日 星期四

LoNote 3 華麗回歸!

在下的作品, 筆記軟體 LoNote 今天歡樂地更新到了第三版。

我已經忍不住要向各位炫燿這個新版本了~各位看倌還請快快坐好!挖鼻孔是不行的唷。



先來張圖:這就是 LoNote 3 的主介面!

註:如果您不清楚為什麼要用 LoNote 記筆記,或說不知道 LoNote 的特性為何,建議參考專案網站內的 設計哲學 等文件。您也可以參看 LoNote 2 推出時的介紹 ,看看新舊兩版外觀有哪裡不同。



LoNote 3 和 LoNote 2 一樣使用瀏覽器作為客戶端,但幾乎在所有層面上都進行了強化與優化。這包括:


  1. 壓倒性強大的搜尋引擎
  2. 更有擴展性與重用性的檔案設計
  3. 更快的速度與更少的資源消耗
  4. 更加精美的使用者介面
  5. 增強的瀏覽器相容性
  6. 精減並優化的導航系統
  7. 用拖曳替筆記頁排序
  8. 伺服器存取密碼
  9. ……等等等等。


要是全部拿來炫……咳……那個……說明過一遍,本文將會長得讓人有點傷腦筋,考量到各位的視力保健,咱就不囉唆啦。本文只著重介紹 LoNote 3 首度引入的全新概念,也就是Section 系統

Section 系統


早先有在用 LoNote 的朋友們,或許早就感覺到了,本人一直對筆記中的版本紀錄情有獨鍾,還因此特別努力去維護 LoNote 的版本紀錄系統。

不過……那個……老實說吧,就算是我本人,也一直覺得 LoNote 中的版本紀錄功能似乎很不好用!宛如雞肋!困擾的我因為嫌它不好用,這還不甘心地陸續開發出「定時自動版本紀錄」、「偵測變更自動版本紀錄」、「熱鍵版本紀錄」、「長期不改動則自動紀錄」等一堆複雜又很難說清楚的自動記錄花招(是的,這全是不甘心的成果),但……依然感覺不出什麼效果。


不過好在,這個問題終於在前陣子被我給想通了。LoNote 的版本紀錄不好用,與如何變著花招自動記錄沒有關係。我想,關鍵反倒是在於傳統版本記錄的概念不適用於筆記

也就是說:

使用者創建新版本時,通常不是想讓舊資料於日後「絕不被改變」,而僅僅是想讓某些筆記內容被「分支」出去。

什麼?啥?版本記錄這件事,不就是用來確保舊版本的資料可保留下來,被人重新查找參考嗎?而既然是要「保存」「舊」資料,那麼加上封印禁止使用者修改舊資料,不也就是一項理所當然的設計嗎?

分支又是啥意思?



請讓我用以下兩個情境來做個示範:

情境一:有多個版本同時寫作


今天您準備去國外玩,新建一個筆記叫「2013 旅遊計劃」來做規劃。但事實上,您可能有好幾套不同的計劃構想接連冒出來,包括「2013 旅遊美洲版本」、「2013 旅遊歐洲版本」、「2013 旅遊中國版本」

很顯然地,您不太可能完全完成美洲版本後再來考慮中國版本,您一定是同時在蒐集所有資料,評估所有可能的方案。這些計劃您同時都在考慮、書寫、刪改……但最後只有一個能夠具體成行,全部的計劃碎片,最終會彙整為一個獨立的完整計劃。



將以上問題分析一下,我們可以發現:


  1. 「同一個主題中有許多版本分支」
  2. 「次要版本最終會匯總出完成版」
  3. 「每個版本都需要隨時可供編輯」



……看得出來,明明在討論版本的問題,LoNote 的版本管理系統卻連一丁點忙兒也幫不上--畢竟,如果將計劃的某些早期版本用 LoNote 的版本控制功能 Freeze 下來,然後改去寫新計劃,則被「凍結」的舊計劃就失去了修改能力,就連糾個錯字都不行……這種事情根本就不能接受啊!


解決方案1


在 LoNote 2.X 時代中,上述的苦悶狀況有兩種解決法。

第一種是:將不同的「版本」分開到不同的筆記頁中。

舉例來說,您可以直接建立三張獨立的筆記頁,第一頁叫「旅遊計劃美洲版」、第二頁叫「旅遊計劃歐洲版」、第三頁叫「旅遊計劃中國版(決定版)」。

這樣好好分開後,任何一個版本都能獨立更改了。

不過很遺憾,這些後綴「XX版」的筆記,卻會把書架弄得臃腫肥大,讓人眼花。而且考慮到日後只會使用一個最終版本,而其他版本純做計劃內的參考,將他們曝露在外只是平白讓人混淆錯亂而已,雖然可行但不甚妥當。

解決方案2


另一種應對法是:將所有版本放在同一張筆記頁裡面

舉例來說,同一頁中有四個大段,第一大段是「美洲版」,第二大段是「歐洲版」,第三大段是「歐洲版方案二」,第四大段是「中國版」……諸如此類。

這個方法不會搞亂筆記目錄,但想當然爾會把頁面內部弄得一團糟,搞不清楚重點到底放在哪裡



(不管用哪種策略變著法子解決版本問題,「版本控制系統」始終在旁納涼,讓人火大……)

情境二:需要保存小片段


除了上述的情境,我也經常碰到需要從當前筆記頁中刪掉一些暫時用不上的片段的情況;這些片段雖然不該繼續在「筆記正文」中出現,但我卻依然想要將這片段好好保存,等以後有機會再用。

……想要保存什麼,聽起來像是版本控制系統的工作?不過仔細想想,版本控制系統一次會備份「一整頁」,而我只是想要剪貼保留一個小片段而已啊!

果然還是派不上用場嘛!版本控制系統這傢伙。


維基百科的啟發


以上這些麻煩在我觀察維基百科後,終於找到解答。

維基百科是怎麼解決這種問題的?其實超乎想像地簡單--維基百科的一頁並「不僅僅只是一頁」,它除了正文的頁面外,還有提供「紙張的背面」--「talk」頁!維基百科每條條目背後,都有一頁獨立的,可以用來擺放像是投票箱、討論內容、試寫殘餘物、與編輯吼叫聲的 talk 頁存在。

只要替筆記加入 talk 頁,則上述「保存小片段」的問題就能被完全解決,而「多個版本同時寫作」的問題也能因此大幅緩解--



「就是這個了!」--意識到這件事的我眼睛不禁亮了起來。



繼續思考下去,我很快就注意到,只要將「talk」頁的數量變成無限多,那麼想要同時編寫的版本無論再多也都不成問題。只要將「不同的版本」分散寫到「不同的 talk 頁」中,就能輕鬆搞定。

非但如此,在這個框架之下,筆記頁依然可以擁有一個像維基百科那樣的「預設的正面」,那是一個可以用來漂亮呈現出乾淨完美的「終極決定版」的預設頁面。

我將這些頁面總稱為「Section(部份)」。分別代表一張筆記紙(Paper)的不同部份。

想來也是嘛!一張紙當然可以有很多部份啦!能有 前面 也會有 背面 ,可有 todo 也能有 trash ,當然 object 279Area 51 之類的也可以有;甚至它還可以涵蓋原本版本管理系統的「備份舊版本」功能--只要將某個要保存的版本放入某個 Section 中,然後別去改它就行了。



以上!這就是於 LoNote 3 中全新引進的,用來取代 LoNote 2 版本記錄系統的 Section 系統完全狀態 DA☆ZE!

下載新版 LoNote


Section 介紹完畢,想玩的人請去 LoNote 專案的下載頁 下載它!

網站中也有還算詳細的使用說明書,有不懂的地方還請先看一下說明資料。當然您也可以留言問我啦~♬

那就歡樂地來玩吧!

24 則留言:

  1. 版主您好,我很喜歡您的筆記軟體,可是最近從Win7轉戰Ubuntu時,在上傳筆記的時候發生:
    Error: 500 Internal Server Error
    Sorry, the requested URL 'http://localhost:10204/func/uploadbook' caused an error:
    Internal Server Error
    起初我以為是lonote-3.2.10-win32.zip和lonote-3.2.10.zip不同所造成,但在測試用Ubuntu開啟lonote.py,下載檔案->刪除->上傳,也是有相同的問題發生,想請問版主有解決方法嗎?我沒學過Python,沒辦法做這方面的debug。

    回覆刪除
    回覆
    1. 補上我的OS:Windows 7 64-bit & Ubuntu 14.04 LTS

      刪除
    2. 剛剛發的不見了...補上...
      版主您好,我很喜歡您的筆記軟體,可是最近從Win7轉戰Ubuntu時,在上傳筆記的時候發生:
      Error: 500 Internal Server Error
      Sorry, the requested URL 'http://localhost:10204/func/uploadbook' caused an error:
      Internal Server Error
      起初我以為是lonote-3.2.10-win32.zip和lonote-3.2.10.zip不同所造成,但在測試用Ubuntu開啟lonote.py,下載檔案->刪除->上傳,也是有相同的問題發生,想請問版主有解決方法嗎?我沒學過Python,沒辦法做這方面的debug。

      刪除
    3. 我只是想問 Error: 500 Internal Server Error 的問題,怎麼發佈後一直消失@@

      刪除
    4. 之前的留言被廣告過濾系統吃掉了囧rz,我把他撈回來了OK。

      謝謝您回報問題。不過目前情報不夠,我還看不出來是怎麼回事。

      如果您在ubuntu下上傳檔案時遇到這個問題,請改用命令行 lonote.py --debug 來啟動伺服器,這會在出錯時顯示出更多訊息。請將那些訊息貼給我,我再看看。

      另外,如果您覺得這樣 debug 很麻煩,又不介意筆記簿內容被我知道,您也可以直接將筆記簿發給我一份,我來研究一下看問題在哪。

      刪除
    5. 多跑出了訊息:
      Exception:
      ValueError('read of closed file',)

      Traceback:
      Traceback (most recent call last):
      File "/home/pin/lonote-3.2.10/lonotelib/bottle.py", line 862, in _handle
      return route.call(**args)
      File "/home/pin/lonote-3.2.10/lonotelib/bottle.py", line 1727, in wrapper
      rv = callback(*a, **ka)
      File "/home/pin/lonote-3.2.10/lonotelib/lonote/translate.py", line 107, in wrapper
      return func(*args, **kwargs)
      File "/home/pin/lonote-3.2.10/lonotelib/lonote/server.py", line 1110, in upload_book
      f.write(fileupload.file.read())
      ValueError: read of closed file

      筆記簿我是重新創的,也需要給你嘛?
      (留言希望不會再被洗掉)

      刪除
    6. 補上 Python (v3.4) 希望對於 Debug 有幫助

      刪除
  2. OK,這下可以縮小問題範圍了。
    不過我在我的機器上來回測了幾次,依然沒法出現這種狀況。看程式邏輯似乎也不會出現這種狀況。

    以下問題如果可以請幫忙回答:
    1. 您是一次上傳一本筆記本嗎?或一次上傳多本筆記本?
    2. 請問一下您用的 python3 版本。只要下指令 python3 --version 就能得知版本。
    3. 如果可以請把有遇到問題的檔案寄給我,至少我可以檢查這問題是否與檔案有關,或許 LoNote 在您的機器上運行時會產生有問題的檔案?雖然可能性不大但我現在還沒有明確的方面,總之試試也好。

    回覆刪除
    回覆
    1. 1. 我只有創一本筆記本,就出現了那個 Error Message
      2. 在 Ubuntu Software Center 顯示的是 Python (v3.4) ,可是在 terminal 打上 python --version 顯示的卻是 Python 2.7.6,這沒問題吧?
      3. 我找不到版主的 Email,不知道怎麼樣寄過去@@

      刪除
    2. 沒關係,我重現問題了。是 python 3.4 造成的問題(我個人主要用在 python 3.3 上面)。我這邊先修,修好了會再留言。等我一下。

      還有先前希望您看的是 python3 的版本,而不是 python 的版本,指令打錯了而已,不用擔心!

      刪除
    3. 修復OK,請下載 3.2.11 使用看看。

      刪除
    4. 已下載,問題解決了^_^,感謝~

      刪除
  3. 妳好,請問我從lonote-2.2.3轉換到lonote-3.2.11,並將.lobook匯入至lonote-3.2.11內,會發生問題,如網址內所示,謝謝

    1.
    http://uploadpie.com/Uxm8A

    2.
    http://uploadpie.com/UYqtg

    3.
    http://uploadpie.com/vVtMI

    4.
    http://uploadpie.com/2ZuWY

    謝謝

    回覆刪除
  4. 你好,以下:
    1. OS version:
    OS version

    2. 記錄頁:
    記錄頁
    謝謝

    回覆刪除
    回覆
    1. 我注意到您有嘗試匯入其他的 .lobook 檔案,請問其他檔案有匯入成功嗎?或是全都失敗了呢?

      另外請問您的 lonote/config/lonote/book/ 資料夾下有相應 .lo3 的檔案嗎?

      刪除
    2. 你好,上傳完.lobook檔案之後,會產生一個.lo3檔案,我有看到
      匯了好幾個都是失敗的,麻煩你了,謝謝

      刪除
    3. 修好了!請下載 LoNote 3.2.12 使用。
      感謝您熱情回報錯誤!

      刪除
  5. 你好,上次麻煩你了,這次我又發生奇怪的問題,如下圖,又要麻煩你看看,謝謝
    http://uploadpie.com/kiEAS

    回覆刪除
    回覆
    1. 看起來是某個筆記檔案遺失了,這個檔案於紀錄中是存在的,但在實際的檔案系統中卻不見了。

      您有在使用類似 dropbox 之類的同步軟體嗎?也許稍等同步完成後再執行,問題就能解決。或也有可能是軟體同步失誤導致檔案損失,如果同步軟體有內建回溯舊版檔案的功能的話,或許能將檔案撈回。

      如果沒法解決,只能放棄這個檔案的內容,手動重建系統。
      以下解說落落長,但目的只是補一個空白的檔案回去--也就是您貼圖中最後一行的那個遺失的檔案。
      建議進行操作之前先備份資料夾,以免操作失誤導致災情擴大。

      1. 首先進入 config/lonote/book 下面,您會看到很多筆記簿對應的資料夾。
      2. 第一步,先檢查您丟失的檔案究竟存在在哪本筆記簿下面。請查找各筆記簿對應的 tree.xml 檔案,tree.xml 的位置會在 config/lonote/book/筆記簿名/筆記簿名/tree.xml 上。建議可以用瀏覽器打開這個檔案,然後用瀏覽器的 ctrl-f 來查找頁面,您可以輸入貼圖中的 7ecf9675-xxx-xxx-xxx 那一段文字來尋找匹配的 pid。
      3. 前述步驟的目的是尋找這個 pid 究竟是哪本書所有的。找到後繼續。
      4. 進入 "config/lonote/book/筆記簿名/筆記簿名/pages/剛剛說的pid/" 目錄下,目錄下應該會有 section.xml, resource.xml 檔案和 sections 資料夾
      5. 您可以從 sessions.xml 中找出問題的筆記頁名稱。您要有心理準備會損失這個筆記的內容。
      6. 根據您的錯誤訊息,在手邊的 sessions 資料夾中,應該缺少了一個叫做 "main" (無副檔名) 的檔案。原則上這個檔案是個 html 檔,不過可先建一個空的檔案把它加回去。

      然後,如果沒有其他問題的話,lonote 應該就可以正常啟動了。

      試試看吧。有問題再問我。如果操作過程中有些意外狀況(如應該要存在的資料夾找不到)請再和我說。

      刪除
    2. 對了,如果可能的話,還請幫我回憶一下近期是否有對這張筆記頁進行過甚麼操作,從創建 Section 到修改筆記內容都行。

      雖然我覺得不太可能,但如果這是我這邊的 bug 造成的,那就非常嚴重了。此類惡性 bug 非修不可。

      感謝您!

      刪除
  6. 你好,我重新安裝python又好了,謝謝

    回覆刪除
  7. 创作者你好!快捷键没有办法使用,不知道有什么解决办法吗?我自己也正在尝试。

    回覆刪除
    回覆
    1. 您好,快捷鍵無法使用是怎麼樣無法使用呢?是所有快捷鍵都無法使用還是某幾個快捷鍵無法使用?另外,您用的瀏覽器是什麼版本。

      一般來說,快捷鍵無法使用都是和瀏覽器快捷鍵衝突的結果。臨時想要繞過或追加的話,可以用這篇提到的快捷鍵自訂法額外設定一些映射進去應急。

      https://groups.google.com/forum/#!topic/lonote/T2dGitvHekU

      刪除

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