因為最近開始看一點英文書了。發現要在 直書 / 橫書 之間跳來跳去十分不便,所以想做一個方便一點的功能。
-> 基於文章自動判定 直書 / 橫書 的功能
-> 由於判定未必準確,得做一個設定讓用戶調整
-> 修改源碼時發現 直書 / 橫書 的設定寫到系統上面去了 ( 也就是説要將這個設定分配給每一本書的話,我得新造一個存放這個新設定的位置 )
系統上的設定當然需要保留,但新設定在每本書都不同,所以沒辦法放到系統設定上去。於是我想「隨便調用一個新的 XRegistry ( xml 設定的模組 ) 放進去不就好了?」
$ ls -l Settings/
-rwxrwx---+ 1 penguin penguin 50 Dec 20 11:01 Deathblow.xml
-rwx------+ 1 penguin penguin 62 Dec 6 12:57 Help.xml
-rwxrwx---+ 1 penguin penguin 282 Dec 20 11:00 Layout_BookInfoView.xml
-rwx------+ 1 penguin penguin 209 Dec 8 12:43 Layout_ContentReader.xml
-rwx------+ 1 penguin penguin 422 Dec 8 12:43 Layout_MainPage.xml
-rwx------+ 1 penguin penguin 63 Dec 8 12:43 Layout_NavLPage.xml
-rwx------+ 1 penguin penguin 111 Dec 25 22:32 Layout_StaffPicks.xml
-rwx------+ 1 penguin penguin 11245 Dec 20 11:01 LocalBookStorage.xml
-rwx------+ 1 penguin penguin 193 Dec 20 11:01 ReadingHistory.xml
-rwx------+ 1 penguin penguin 10 Dec 25 17:19 Server.xml
-rwx------+ 1 penguin penguin 162 Dec 25 22:32 Tasks.xml
然而並沒有這麼簡單,Layout_<Page> 是屬於頁面設定,如果放在 Layout_ContentReader 的話,那麼每一本書的設定都要同時放個這個設定裏,然後又要手動將書籤的設定連結在一起,還有 OneDrive 同步等問題……
再説每次做新設定都弄一個 xml 的話維護上會變得困難。現在的源碼連我自己都得花點時間才搞得懂是想做什麼,這樣下去做新功能的成本會越來越高。
説起來我一開始就不該什麼都用 xml 啊,圖方便亂調用 XRegistry 的自己實在太可恨了。
引入 Entity Framework !
Entity Framework 本來是 ASP.Net 的東西,在 2016 年 6 月開始有整合 Sqlite 並做給 UWP 用的 EF Core 1.0。( wenku10 是 2015 年 9 月開始的,所以我做的時候還沒有這東西 )
研究了一下,發現非常適合讓 wenku10 使用。其實我在幾個月前初步嘗試實作了一下:
* | | 5687c26 5 months ago [斟酌 鵬兄] | Using EntityFramework
結果失敗了,發現需要修改的部分屬於底層源碼,一改就要牽一發動全身。於是 migrate-ef 這個 branch 就這麼給刪掉了。
一個禮拜前我又想起 EF Core,越看越覺得這東西超適合的呀!源碼會變得很容易看,流程上的處理也可以簡化,檔案格式也不用我愁了。怎麼想都是好處多多,於是我下定決心,這幾天一直努力修改著……
而且之前的初步整合 ( migrate-ef ) 居然還沒有刪掉 ( 沒刪乾淨),這算是賺到了?
* 4d4b2b8 4 hours ago [斟酌 鵬兄] | Rewrite Book / Volume / Chapter Loaders in Ex-mode (HEAD -> migrate-ef, origin/migrate-ef)
* 21e3daf 12 hours ago [斟酌 鵬兄] | Simplify Cache Logic for BookEx, Redefine Book Model
* 3c79a40 10 days ago [斟酌 鵬兄] | Added back migration drafts
* 5554721 10 days ago [斟酌 鵬兄] | Renamed library name to GR
* c3372d8 2 weeks ago [斟酌 鵬兄] | Merge branch 'master' into migrate-ef
|\
* | a9f7d6c 2 weeks ago [斟酌 鵬兄] | Commiting some WIP codes from other machine
| * 32459fd 4 weeks ago [斟酌 鵬兄] | Use everything when we go fullscreen (origin/master, origin/HEAD, master)
| * 613bd74 4 weeks ago [斟酌 鵬兄] | Removed ReadingAnchors handling
| | * a873423 3 months ago [斟酌 鵬兄] | Merge branch 'master' into unsigned-master (origin/unsigned-master, unsigned-master)
重寫的部分雖然很多,但重寫過的地方絶對比之前寫的方式好多了……然後今天終於看到一點曙光了!
tgckpg@DESKTOP-P0HOOGO ~/Packages/60674Astropenguin.wenku8testingchannel_pmxzykgekyr70/LocalState
$ sqlite3 books.db
sqlite> SELECT * FROM Chapters ORDER BY VolumeId ASC, "Index" ASC;
Id BookId DateModified Index Json_Meta Title VolumeId
---------- ---------- ------------------- ---------- --------------- ---------- ----------
1 1 2017-12-29 12:04:38 0 {"cid":"64902"} 序幕 1
22 1 2017-12-29 12:04:38 1 {"cid":"64903"} 第一章 契約 1
23 1 2017-12-29 12:04:38 2 {"cid":"64904"} 第二章 野心 1
24 1 2017-12-29 12:04:38 3 {"cid":"64905"} 第三章 災厄 1
25 1 2017-12-29 12:04:38 4 {"cid":"64906"} 第四章 戰旗 1
26 1 2017-12-29 12:04:38 5 {"cid":"64907"} 第五章 決斷 1
27 1 2017-12-29 12:04:38 6 {"cid":"64908"} 後記 1
28 1 2017-12-29 12:04:38 7 {"cid":"65101"} 插圖 1
30 1 2017-12-29 12:04:38 0 {"cid":"68079"} 序幕 2
38 1 2017-12-29 12:04:38 1 {"cid":"68080"} 第一章 流轉 2
31 1 2017-12-29 12:04:38 2 {"cid":"68081"} 第二章 預兆 2
32 1 2017-12-29 12:04:38 3 {"cid":"68082"} 第三章 搜索 2
33 1 2017-12-29 12:04:38 4 {"cid":"68083"} 第四章 覺醒 2
34 1 2017-12-29 12:04:38 5 {"cid":"68084"} 後記 2
35 1 2017-12-29 12:04:38 6 {"cid":"68883"} 插圖 2
實在太感動,我不禁寫起文章來了ww 斟酌 鵬兄
Fri Dec 29 2017 17:56:54 GMT+0000 (Coordinated Universal Time)
Last modified: Fri Dec 29 2017 18:01:32 GMT+0000 (Coordinated Universal Time)