Bud! 參一腳

核心資料結構

曾經設計過仿造 StumbleUpon 的終端機版本,見山寨 StumbleUpon ,學到了一件事情,即 儲存網址資訊的好方式是 hash-map。底下的資料結構是程式內的,不過我想轉換成 SQL 資料庫可以接受的格式應該不難。

{"http://lib.cmu.edu.tw/"
 {:title "中國醫藥大學 圖書館 China Medical University Library, Taiwan"
  :date #(java.util.Date)
  :from #({:url "http://www.cmu.edu.tw"
           :date #(java.util.Date)})
  :to #({:url "http://etds-lib.cmu.edu.tw/main/index"
         :date #(java.util.Date)}
        {:url "http://lib.cmu.edu.tw/download.html"
         :date #(java.util.Date)})}

這個資料格式記錄了哪些項目呢?

  1. 網址與 title
  2. 開啟這個網址的最新日期
    1. java.util.Date 是一個日期物件,以物件為載入方式會比較方便
    2. #() 是 clojure 的不重複、非有序性串列,數學上稱為「集合(set)」
  3. :to 跟 :from
    1. 點開超聯結的時候會自動更新當前頁面的「:to」與新頁面的 「:from」
    2. 建立歷史樹狀圖用

資料庫、搜尋模式

資料以純文字儲存於 SQLite3 的資料庫中。另外搜尋的時候可能會採用遞增搜尋。考慮到 豆泥可能會想要把所有看過的網頁都快取下來方便搜尋 ,因此這裡要強調搜尋除非電腦容量跟速度與 Google 的伺服器一樣快,否則暫時是基於網頁標題 title 以及網址來做搜尋的動作。遞增式搜尋,允許動態搜尋,邊打邊找。

介面引擎

考慮到 豆泥各種不正常、詭異、會讓駭客感到呵呵的審美觀 ,決定採用 node-webkit 作為 desktop application rendering 的引擎。雖然我本人對 javascript 完全不熟,不過多虧了強大而且變態的 clojurescript,我們也能分一杯雲端時代產物 nodejs 的羹。

Reference

  1. StrongLoop | Creating Desktop Applications With node-webkit

Comments

comments powered by Disqus