Add utterances to Hugo

為你的部落格加上留言回應功能吧!

2022, November 23 · 1 min · 88 words · Me

Memorization

什麼情境 在網站開發過程中,除了是靜態網頁(例如現在觀看的部落格)之外,免不了會有依使用者瀏覽行為,而動態響應的資料。 常見的動態資料來源有 JS 動態產生 向內部資料庫查詢 向外部網站查詢 而當程式重複執行條件相同的查詢時,雖然會因資料庫設計,返回快取結果,但如果能在本地確認這筆查詢已經做過,並直接讀取,即可加速網站讀取的速度。 這種記錄執行結果並在之後可以重複讀取的手法便稱為 Memorization 。 如何使用 例如在頁面中利用方法 current_user 來向資料庫查詢並回傳一個 User 物件,並在頁面中多次呼叫 current_user 來產生 User 相關的資料,為了避免重複查詢資料庫,可以將以下程式碼 1 2 3 def current_user @_user = User.find_by(id: session[:user_session]) end 修改成 1 2 3 def current_user @_user ||= User.find_by(id: session[:user_session]) end 其中的 A ||= B 等價於 A = (A || B) 因為在 ||(or) 判斷中,由左至右,如果元素為真(Truthy),則返回該元素,之後的程式碼將略過不執行,以此來看上面執行的結果, current_user 的回傳值會是: 若 @_user 為真,回傳 @_user ,否則回傳 User.find_by(id: session[:user_session]) 對於網站來說,假設一個搜尋站內商品的輸入框,透過觀察使用者輸入文字變化後,至後臺撈取符合前綴的查詢結果,渲染至畫面上以表現 autocomplete 的效果。此時便能以 Memorization 手法記錄曾經查詢的結果,當使用者按下刪除鍵移除字元時,不須再次查詢資料庫而是從記憶體直接取出。 順帶一提 在處理遞迴程式碼時,如果觀察到拆解出的部分結果都相等,也可以運用此手法加速並降低呼叫堆疊數。以經典的遞迴題目-求費氏數列的值為例...

2022, August 6 · 1 min · 167 words · Me

Install Hugo

安裝 Hugo 環境 1 2 3 4 5 # (wsl) # Distributor ID: Ubuntu # Description: Ubuntu 20.04.4 LTS # Release: 20.04 # Codename: focal 下載 1 2 $ wget https://github.com/gohugoio/hugo/releases/download/v0.101.0/hugo_0.101.0_Linux-64bit.deb $ wget https://github.com/gohugoio/hugo/releases/download/v0.101.0/hugo_extended_0.101.0_Linux-64bit.deb 安裝 1 2 $ sudo dpkg -i hugo_0.101.0_Linux-64bit.deb $ sudo dpkg -i hugo_extended_0.101.0_Linux-64bit.deb 檢查是否成功 1 2 3 4 5 6 $ hugo version hugo v0.101.0-466fa43c16709b4483689930a4f9ac8add5c9f66+extended linux/amd64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio $ hugo new site {project_name} $ cd {project_name} $ hugo server 安裝佈景主題 (use PaperMod) 1 2 3 # in {project_name} root $ git init $ git clone https://github....

2022, July 30 · 1 min · 156 words · Me