分類▾
前端
透過 overflow-anchor 實作 pin to bottom 元件
前言 這篇文章是看完 Implementing a pin-to-bottom scrolling element with only CSS 後,並且介紹使用 JavaScript 的做法整理而成。 現在網頁越上越常出現每次加入新的內容時,就將 scroll…
(繼續閱讀...)前端
更安全的請求標頭 - Fetch Metadata Request Headers
有一天在開發頁面的時候,為了要檢查請求 Header 的欄位是否正確,打開開發工具一看,發現了請求多出了幾個可疑的 header: 有注意到可疑的地方嗎?仔細一看發現,怎麼有三個以 Sec-Fetch…
(繼續閱讀...)golang
Golang 當中的預設值以及 zero value
在 golang 當中,如果在初始化時沒有賦值,就會使用 zero value 。 不過用了一段時間會發現,如果每次都用 zero value 來代替,我們會分不清楚到底是使用者沒有輸入值導致 zero value,還是使用者原本就輸入了 zero value? 這時因為 Email, Name…
(繼續閱讀...)golang
如何搜集並集中 golang 應用中的 Log
這篇文章是看完 How to collect, standardize, and centralize Golang logs | Datadog 總結的心得。 使用 log 時通常有幾點要注意: 把 log 當作參數傳遞,需要使用到 log 時就傳參數進去 統一用 context…
(繼續閱讀...)Golang 筆記 — Type Assertion
在 golang 當中,對於 interface{} 的型別,你可以做型別斷定,來假設這個 interface 是某個型別,這樣一來你就可以操作這個型別中的方法。 這段程式碼可以將原本的 interface…
(繼續閱讀...)golang
Goworker 簡介 — 搭配 Redis 實作 worker
最近正在將專案從 Ruby On Rails 當中逐漸搬移到 golang,除了一方面是想要練習寫寫看醜醜的語法感覺怎麼樣,一方面是想感受一下 golang 的威力還有在沒有一個既有的框架下,要怎麼組織自己的程式碼。 今天要來介紹的是 goworker 。會看上他的原因是搜尋 go worker…
(繼續閱讀...)前端
requestIdleCallback - 善用空閑時間
許多網頁當中都有各式各樣的 script 需要執行,當然也會有優先程度,像是比較重要的:渲染 UI,註冊相關的互動事件,呼叫 API 拿取資料等等是高優先的任務,而像是比較不重要的任務有:Analytic 的腳本、lazy loading、初始化比較不重要的事件。 怎樣才算 Idle…
(繼續閱讀...)雜記
記一次 debug 流程 — connection refused
前言 大約從前幾個月開始,我的 google chrome 就時常有莫名其妙 connection refused 的情況發生,有時候有些網頁就是開不起來,但用其他裝置開卻正常。雖然覺得怪怪的,但想說可能是伺服器設定的問題,而且也沒有造成什麼困擾,就這樣繼續用下去了。 設定 custom…
(繼續閱讀...)前端
新的取消請求方式 - AbortController
在前端當中,我們主要可以透過兩種方式來發送請求: XHR 跟 Fetch 。XHR 是從,嗯...,很久以前就有的 API。不過因為設定上很麻煩,所以時常被包裝成更高階的 API 使用,像是 jQuery 的 getJSON 、 axios 、RxJS 的 AjaxObservable…
(繼續閱讀...)前端
和 CORS 與 cookie 打交道
前言 CORS 與 cookie 在前端是個蠻重要的問題,不過大多數在開發的時候,因為前後端的 domain 時常是相同的,所以很少去 care 這些問題。或者只要要求後端將 Access-Control-Allow-Origin…
(繼續閱讀...)#CORS#cookiegolang
在 Go 如何處理 connection lost?
研究了一下現在比較熱門的 sql 套件,發現幾乎都沒有像是可以即時在 connection lost 的時候跳 error 的功能。例如: nodejs 的 mysql 當中,我們可以用 connection.on(‘error’) 來監聽錯誤。 不過在 golang…
(繼續閱讀...)前端
如何 Code Review
前言 身為前端工程師,通常在整個團隊裡面會是最常發送 pull request 的人。為了讓自己的 PR 更容易被測試,以及讓 reviewer 更容易的 review,總結了一些注意事項。 pull request 的描述 這個 pull request 的目的。例如:修正 layout…
(繼續閱讀...)golang
【golang 筆記】 如何為你的專案設定環境變數
前言 在開發專案的時候常常需要切換不同的環境,也因此我們通常會設定不同的環境變數。不過如果直接寫死在程式當中每次修改起來實在太麻煩了,如果可以透過動態的方式傳入環境變數的話可以減少很多不必要的修改,程式也相對比較乾淨。 flag 一般在 golang 可以利用 flag 這個 package…
(繼續閱讀...)前端
透過 vuex 與 webpack dynamic import 動態載入 module
在最近的專案中用到 vue 來開發,而如果要管理比較複雜的資料流貨狀態,通常都是用 vuex 來當作 Single Truth of Source 的 store。在 vue 裡頭建立 store 時,都是把所有的 module 寫完後,再統一放到 vue 的 root…
(繼續閱讀...)#webpack#vuex#vuegolang
make 與 new 的差別
在 golang 有兩個保留字 make 與 new ,也是剛開始學習 golang 的時候容易搞混的地方,這邊做個簡單的筆記。 new new 可以用來初始化泛型, 並且返回儲存位址 。所以通常我們會用指標變數來接 new 過後的型別。特別要注意的是,new 會自動用 zeroed…
(繼續閱讀...)雜談
再談生日悖論(Birthday Paradox)
前言 生日悖論是個剛開始上統計學時,老師很喜歡拿來唬弄學生的招式。通常老師會徐徐從錢包拿出 100 元,並且問學生,在教室中有沒有兩個人同一天生日? 直覺上,我們可能會以為機率很低。不過事實上只要超過 23 人,2 人同一天生日的機率就有 5…
(繼續閱讀...)