構建自己的個人資訊資料庫

來源:互聯網
上載者:User
構建自己的個人資訊資料庫

 

金旭亮


作為一名軟體開發人員,比較命苦的一點就是——這行的技術更新實在太快了,想保住飯碗並且不被時代所淘汰,就得不斷地學習。另一個讓人鬱悶的是,要開發出一個真正有點用的軟體,用到的知識非常多,象我這種老碼農,記憶力什麼的無法與小年輕相比,經常會出現這種情況:


  •  XXX功能我以前實現過,但當年的程式碼我忘記放在哪個地方了,要在N個移動硬碟、幾百G的硬碟上中尋找N年前的代碼,實在無異於大海撈針……
  • 我記得在網上看到過某個牛人解決過我現在遇到的這個問題,他還寫了篇文章並有範例程式碼,問題是我到哪兒再把它翻出來?
  • 現在開發,離了Google、百度之類搜尋引擎幾乎沒法編程,但為解決一個小技術問題,Google、百度會給你一堆連結,看得頭暈……
  • 很多人都有囤積電子書的不良愛好,本人也屬此類。有些電子書看過了,覺得其中某些內容不錯,但如果不記錄下來的話,以後要查就再也想不起是哪本了,只能對著硬碟上從各處地方搜刮來的數十G電子書乾瞪眼……

知識必須積累,但同時需要整理,只有有條理的成體系的知識,才能帶來真正的價值。

知識天生是一種“網狀”結構,很類似於互連網上相互連結的網頁,各知識點之間有著複雜的相互關聯。然而,從高效掌握並應用知識的角度來看,將知識組織成為類似於電腦檔案系統的多叉樹比網狀結構更有效,這是由人的認知特性決定的。

為瞭解決上述問題,我決定寫一個小工具,協助自己收集各種資料,同時,也能方便地重構這些資料,使其變得更有條理。

於是在2013年的五一假期時間,我一個人宅在家中,大約用了四天時間完成了PersonalInfoForWPF這個工具的基本架構開發,後來又陸陸續續地修正了不少BUG,完善了現有功能,同時新增了一些小功能,覺得應該比較穩定了,就決定發布它,包括直接可用的可執行程式及所有源碼。

程式的運行如下:



如所示,這個小工具的使用相當直觀,左邊是一棵樹,右邊是一個文字編輯器。樹代表資料的類別,文字框中則是資料本身,可以隨時地進行編輯,其操作類似於Word。

一、樹節點操作

左邊的樹支援所有常見的節點操作(可以使用上部的工具列按鈕,或者是右擊樹節點從快顯功能表中選擇各種命令):

  • 建立、刪除、改名:這些就不用廢話了。
  • 升級:將節點提升一級,成為其父節點的兄弟。
  • 降級:將節點層次降低一級,成為其兄弟的兒子(瞧這輩份亂得!)
  • 上移/下移:就是梁山群雄排座次,確定哪個是大當家,哪個座第二把交椅,……
  •  剪下/複製:子樹搬家,就是將某個節點(包括其所有的子節點)移到另一個地方成為那個節點的新兒子。

 這棵樹個人覺得比較出彩的地方是可以設定每個節點的顏色和筆劃粗細,這樣可以反白特定的節點。

其實要提供更多的字型樣式是完全可以的,但我想,如果一棵擁有上千個節點的樹,它的節點文本用了十多種字型、顯示二十多種顏色、並且有N種字型大小,我一定會瘋掉的,所以只提供了這些功能,我覺得足夠了。

另一個比較“得意”的地方是樹節點的類型是可以無限擴充的,目前我只實現了三種:

  • 純文字(OnlyText)型:不包容任何附加資訊,所有內容直接顯示在樹節點上。
  • 詳細資料(DetailText)型:就是上面那張圖所展示的,節點關聯著一個可以編輯的文檔。
  • 檔案夾(Folder)型:在詳細資料(DetailText)型的基礎之上,增加了儲存檔案的功能,如所示:

 

檔案本身被我塞到了資料庫中,所以,你可以放心大膽地把原檔案刪除。這小工具可以隨時地將檔案加入或移除或匯出。

千萬要注意:不要貪心,把幾十兆的檔案加到資料庫,資料庫本身一定會怨氣衝天的。

還有一些新的節點類型,比如相簿型、程式捷徑型等,等我想清楚了再加入。

本軟體的一個亮點是:

節點可以轉換類型:比如純文字-->詳細資料-->檔案夾,轉換順序反過來也可以。

需要注意的是,資訊豐富的節點轉換為另一種類型時,其多出的資訊會被丟棄,比如,將檔案夾型節點硬轉換為純文字型,則其所關聯的檔案和文檔內容會被刪除,你別瞪著我,我也沒辦法,至少目前版本沒這功能,刪掉的資訊你是找不回來了!小心小心。

以後也許會建立一個資源回收筒,並支援Undo功能,如何?還沒想好。

二、 資訊的搜尋

資訊多了(我的樹中己經有上千個節點了),尋找是個大問題,為搜尋介面:

 

如所示,尋找主要有兩種方式:

(1)在樹中找,可以在文字框中直接輸入,下方網格中會即時動態地篩選,找到之後,就可以在樹中直接定位並顯示。

(2)另一個是到資料庫中找,不搜尋樹節點記錄,而是搜尋樹節點所關聯的資料。

注意樹節點路徑以“/”分隔,因此,樹節點文本中不能出現“/”,否則就亂套了,我寫了代碼“封掉”了這種情況。

這個表單的搜尋功能是利用WPF的資料繫結實現的,沒寫幾行代碼,實在大讚WPF的資料繫結功能!


另外補充說明一個小技巧:

在任意的文檔或網頁中複製一段文字,建立一個樹節點,會自動地把複製的文字作為新節點的文本,這是我出於“偷懶”目的而添加的。


三、資料的分散儲存

還有一個問題,隨著時間的積累,收集的資料越來越多,資料庫會越來越大,我的己經達到上G的層級,為了減肥,應該按大類採用多個資料庫進行儲存。

預設情況下,本程式檔案夾有一個名為infocenter.sdf的資料庫樣板檔案(不要刪除它喲!),當從“系統功能”菜單中選擇“建立新資料庫”時,會自動把這一樣板資料庫複寫一份,從而使用它來儲存資訊。

 

在使用過程中可以隨時切換資料庫(使用“系統功能”菜單中的“切換資料庫”命令)

 

是我當前的資料庫,從檔案名稱就可以看出各資料庫中所儲存的是哪些內容。

 怎樣把資料從一台電腦複製到另一台上?簡單,把sdf檔案用隨身碟拷走,在新機器上用本軟體開啟就行了。

 等到以後聯通電信等老大發善心,網速上去了,費用降下來了,就可以直接使用網盤儲存資料,到那時就不必用隨身碟拷來拷去了。

曾經想過把這個小工具做成多文檔樣式的,象Visual Studio一樣,用選項卡的方式展示多個資料庫的內容,但人比較懶,以後再說吧。

 四、安裝與源碼

1 這個軟體怎麼安裝?

本軟體使用C#開發,基於.NET 4.0,資料庫是SQL Server Compact 4.0,如果你本身是程式員,裝有Visual Studio 2012,則所有組件均己具備,直接運行就行了。

其他情況,按以下順序進行安裝:

(1)如果沒裝.NET 4.0,則點擊以下連結訪問微軟網站下載並安裝之

下載.NET Framework 4.0(http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=17718)

(2)如果沒裝SQL Server Compact 4.0,則點擊以下連結訪問微軟網站下載並安裝之

下載Microsoft SQL Server Compact 4.0 SP1(http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=30709)

(3)點此連結到新浪微盤下載可運行程式之壓縮包檔案

http://vdisk.weibo.com/s/IEkIl

展開之後,直接雙擊“PersonalInfoForWPF.exe”即可。


2 擷取源碼

我把這個項目發布到了GitHub,其URL如下。

https://github.com/JinXuLiang/PersonalInfoForWPF.git

其wiki中簡要介紹了成功編譯的方法。

由於我主要使用TFS來完成本軟體的版本管理,因此,放在GitHub上的不會是最新版本。

這世上沒有沒有Bug的軟體。發現BUG的,請告之我BUG的重現方法,我更正之後再Push到GitHub上。

這個小軟體可以改進之處甚多,比如效能我就不太滿意,還有很多可以加的功能,以後有時間再慢慢添加與最佳化吧,畢竟“吾生也有涯,而知也無涯,……”,對於我來說,軟體夠用就行了。

對這個小工具的開發與完善感興趣的朋友,盡可以動手去改,為方便起見,我會在下一篇文章中介紹這個小工具的架構設計與實現技術細節。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.