小小專案之日記系統
我自己已經寫日記寫了四年了,再過幾天就是我自己所謂的日記日,也就是八月二十九日,我就是從這天開始寫的,一路寫到今天。
而這個暑假我想要來解決一個困惱我很久的問題,在最一開始的時候我是用 OneNote 寫的,那個時候我還在用 Windows 10,而後來有一陣子我是直接寫在 txt 檔案上。寫著寫著又覺得好像沒那麼方便,所以我就又換到「溫度日記」,我還因為幫他們回報了一個漏洞,所以有拿到一年的 VIP,但用到一年快要結束之後我就走了,因為日記的內容我覺得放在別人的伺服器讓我有點不放心就是了。
接下來就我又回到 txt 寫了好長一段時間,而我自己其實一直想要寫一套自己的日記系統,但是因為要有前後端等等我的電腦又不可能開一整天。一直到了這個暑假我決定好好的來處理一下,又很剛好的我學到了 Cloudflare R2,一切都是這麼的剛好我就想要學 Worker,我就發現到這個真的很適合用來當做練習的專案,所以就有了「龍的日記」。
Worker 好欸
一開始我就打算用 React 去做,因為這個做起來比香草 JS 爽太多了,所以我就用 Nextjs 寫完了大概的畫面,用完之後我就發現到 Nextjs 可以直接上 Worker,我當然就直接上了。
後端的部分我就沒有什麼比較特別的點,因為就是一個很單純的 Worker,但這部分我花了最多的時間在上面。
KV、D1、R2
單有 R2 其實是不夠的,當然一開始我是只有 R2 而已,但是因為我想要多一個功能就是「收藏」,所以我就開始想方法處理。我最一開始的方法是用 KV 來存所有的日記欄位,但這樣我一試就發現到完全不行,因為效能真的太爛了,而且我當晚就直接把所有的 KV 額度都用完了。
不用 KV 也就來用 D1 吧,我其實本來不想要用 D1 是因為我覺得 KV 感覺起來比較簡單,沒有想到完全不行。結果 D1 因為我真的不熟 wrangler 要怎麼操作,所以就一直卡在一開始的建表,所以我就又換回 KV 用了一段時間,換回到 KV 之後我就開始狂加優化,到這裡看起來沒有什麼問題了,結果又吃了一個 list 額度用完。
無限滾動,無限優化
這周我花了整整四天在處理無限滾動這個功能,前端的部分到也好處理,我從學習到實際應用也花了我一小時而已,但接下來我就發現到速度真的很慢,我自己在測試環境感覺不出來,一到生產環境直接死掉。
接著就是開始優化,但是因為當初用 KV 卡的有點死,我花了很多時間處理也沒有用好,主要是那個 list 操作真的有點太慢了,所以我就又換回到 D1 了。
回到 D1 之後我又是瘋狂的優化,在我在外面都在想要怎麼優化才會快,最後才有了下面的成品。
用起來已經很順了,當然後端還是有東西可以優化,但是目前這樣已經很夠我用了,做完真的超級開心,因為這個就是專屬於我的東西!
好的架構上天堂
仔細看會發現到我 KV 跟 D1 這樣切來切去,我不就改 code 改到死。一切正好相反,因為後端我早早就把核心的部分跟 utils 切開,所以改的時候沒花什麼時間,我測試也有寫滿所以有 BUG 也能馬上處理。
這裡真的要推一下 Clean Code 和 Clean Architecture 這兩本書,我自己覺得沒有看完這兩本我大概做到一半就放棄了。
當然這篇不是要來講這兩本書在說什麼,只是要推薦一下每個有在做專案的人都一定要看!
小結
這個暑假我本來是打算做到三個小專案,但是沒有想到這個就花了這麼多時間了,前前後後花了我十一天,真的滿久的就是了。主要是卡在優化那邊,我自己覺得有這個經驗之後做其它的東西應該會快很多。
接下來就是好好休息了,開學之後要開始大戰資安了。