練習考試的一個方法就是多寫考古題,考古題的考點或是考題都有可能重新出現,也可以訓練考試的感覺,但最好是能讓考古題隨機出現,這樣就不用擔心每一次寫到一樣的題目時會覺得自己好像看過類似的題目。雖然已經有一些人做了工具或服務可以幫助做到這件事,像是考古豹之類的,但我自己就覺得有兩個缺點,第一個缺點是收費與開源的問題,因為無聊的心得,自己還是比較喜歡開源;第二個缺點是不是桌面軟體,資料庫都得是線上的,如果不在有網路的地方或是對方網站掛掉就沒有辦法使用,中間就遇過好幾次網站壞掉寫不了的問題。
知道需求之後當然就是想辦法實現,我自己從以前到現在完全沒有寫過桌面軟體,所以對我來說是完全沒有接觸過的領域,只有稍微碰過像是QT之類的老牌框架。雖然有聽過electron等工具但都沒有用過,只知道是用網頁當作前端的方式。查詢之後發現現在主流的工具主要都是用flutter為主,雖然看起來也很好用但實在是不想只為了寫這個小東西多學一個很難在其他領域用到而且每年都在說要收掉的項目,最終選擇用Tauri,一個對標electron的框架,利用系統自己的webviewer來減少體積(不用像electron一樣包下一整個瀏覽器),前端可以用新潮的各種框架,也有支援vite,後端則用我一直想學的rust,在各個方向上都對我來說很值得的情況下就選擇了。
目前花了一天靠著AI稍微摸出了一些東西,第一個是前後端的溝通有兩套系統,一套是event系統,一套則是前端invoke後端的函式,利用這兩套系統可以在兩邊都在獨自運作的情況下達成前後端的聯繫,可以直接invoke後端函式然後pass很多不同種的參數過去是真的蠻方便的,使用svelte也比想像中的簡單,跟之前稍微碰vue完全看不懂的感覺不同,把html、script、css寫成一個component全部放在一起,跑起來的速度也很快。rust則是出乎意料的方便,畢竟原本聽說是麻煩的語言,但寫起來卻比想像中的還好,一部分是因為處理error的部分跟麻煩的部分都丟給AI去幫我修改了,而且沒怎麼用到指標和記憶體分配的問題,相對起來最有感的反而是編譯速度,每次編譯都要等好一段時間,相比於常見對標得golang是真的天差地遠,以前用c++也都沒有這麼慢,但跑起來也是真的又快又小。最後是tauri,寫起來最痛苦的就是document跟坨屎差不了多少,都在講抽象跟概念,實際怎麼使用的卻沒有多少範例跟講解,環境安裝麻煩也就算了,可不可以不要連一些基本的使用情景都忽略阿,就算我知道有甚麼方便的component我也不知道怎麼用阿RRRR,都要東找找西找找別人的文章才能理解,很可惜欸,明明有個很好的底子卻被文件拖累。