需求
友人說最近想學學日文目前稍微知道幾個單字都聽得懂會說但就是看不懂不知道日文五十音,於是乎我就想說做一個可以練習的網站讓他玩玩認識認識日本的五十音~
規劃
既然都要開發了內容大概就是簡單的打字練習,知道每個日文字是怎麼發音或怎麼用羅馬拼音打出來,後面還想接Google api去把每個日文字怎麼念給播放出來(還沒做),越想越多越想越複雜,此時覺得不要想那麼多了先做個初版出來,而開發部分就想說平常都用Django,不然就來練習Flask吧!
阿日文的data哪邊來呢,當然是Google看有沒有現成的資料,找到這個巴哈
後面在弄個爬蟲把data全部整理出來就搞定啦~
開發
花了1, 2個小時的時間摸索Flask兼開發弄了個初版,初版只有練習區沒有計時賽,自己一個寫寫寫測測測~摁~都沒什麼毛病,然後再花一點時間部署到fly.io,丟給朋友玩玩
我:AA~我弄了一個可以練習五十音的你玩玩~
友:好喔,感謝!
1分鐘後
友:ㄟ你那個有問題,我明明答對卻說我是錯的
我:讓我來看看
馬上就收到回饋說我明明打對他卻說我錯的!!摁~趕緊檢查發現程式bug,現階段沒用DB去存都讀取同一個物件,所以有兩個人使用就會出問題XDD,而這時開發到一半的時候就打算加計時的部分,外加紀錄練習過的字,所以話不多說趕緊弄個簡單的DB吧~DB就用SQLite3方便就好,Flask-SQLAlchemy,Flask-Migrate弄一弄發現最新版跟網路上查到的資料有些出入document看一看,寫寫寫到fly.io部署的時候
ModuleNotFoundError: No module named '_sqlite3' on a Python Flask application
挖哩fly.io部署都交給他了跳出這個,趕緊Google找解法,幸虧這問題很常見很快就有解答
ModuleNotFoundError: No module named ‘_sqlite3’ on a Python Flask application
解完成功部署後再丟一次連結給友人
我:AA,改好了你再試試
友:好
1分鐘後
友:你這個跳錯誤訊息耶,我看不懂
我:!!,我瞧瞧
不出意外馬上就要出意外了,抱錯500,去看fly.io後台給的log這時我才發現怎麼有兩台machine在run我不是只起一個app嗎?趕緊再去求助Google大神,很快就發現fly.io為了要維持高可用HA的關係預設會啟用兩台機器,我SQLite3目前還沒有移出來都跟著Flask這樣整包跑難怪會出問題,但目前我也不打算移出來把資料另外放,fly.io也有mount的功能,不過我目前最主要的需求是讓他正常運作,於是乎我把fly.io原始HA的設定弄掉改成一台就好,fly deploy完後丟給友人
我:AA,這次穩了你玩玩
友:好
1分鐘後
友:可以了可以了水喔
我:讚,再來開發計時賽再加個排行榜
友:排名有獎品喔?
我:當然沒有XDD
到這邊終於把初版弄完了,而計時賽跟排行榜的開發就沒什麼問題很順利的寫完~
最後
Flask一開始是只有一個app.py,後面也把他拆開來寫成flask factory的樣子,不然一個app後續要修改還新增寫到一半就感受到了,過程中當然就是Google+ChatGPT,雙重導師下開發其實沒什麼難度,想清楚再做就OK了,未來還有想要串前面提到的Google api TTS可以把文字變成語音,然後串ChatGPT api弄自動生成日文文章練習打字,當然目前想都可以想,做好也不知道什麼時候了~而且這樣串不知道會收多少$$