Hi,我是 Kalan👋🏻

部落格改版囉!

最新文章 (第 4 頁)

雜談

日本軟體工程師求職心得

之前就很喜歡日本文化,所以在大學時就逐漸萌生要到日本工作的想法。不過礙於兵役跟經濟的關係,所以一直沒有實行。在這之前我當服完兵役,在服兵役之前則是在公司裡頭擔任前端工程師。最近當完兵回來,總算可以毫無後顧之憂找日本工作了。 剛好現在也是個蠻不錯的時期,日本因為高齡少子化的緣故正在大幅招攬 IT…

繼續閱讀

開發筆記

幫專案設定環境變數 - VIPER

大概在好幾個月前,我寫了一篇關於如何在 golang 設定環境變數的文章,怎麼優雅地設定環境變數是一件相當重要的事情,因此我寫了一個簡單的函式來做這件事。 當初的考量很簡單,如果有提供對應的 config 檔,就把裡頭的 key/value 用 os.Setenv 設定。之後在整個 App…

繼續閱讀

前端

透過 overflow-anchor 實作 pin to bottom 元件

這篇文章是看完 Implementing a pin-to-bottom scrolling element with only CSS 後,並且介紹使用 JavaScript 的做法整理而成。 現在網頁越上越常出現每次加入新的內容時,就將 scroll 的位置調整到最底下。像是 Twitch…

繼續閱讀

開發筆記

Golang 當中的預設值以及 zero value

在 golang 當中,如果在初始化時沒有賦值,就會使用 zero value。 不過用了一段時間會發現,如果每次都用 zero value 來代替,我們會分不清楚到底是使用者沒有輸入值導致 zero value,還是使用者原本就輸入了 zero value? 這時因為 Email, Name…

繼續閱讀

開發筆記

如何搜集並集中 golang 應用中的 Log

這篇文章是看完 How to collect, standardize, and centralize Golang logs | Datadog 總結的心得。 使用 log 時通常有幾點要注意: 把 log 當作參數傳遞,需要使用到 log 時就傳參數進去 統一用 context…

繼續閱讀

開發筆記

Golang 筆記 — Type Assertion

在 golang 當中,對於 interface{} 的型別,你可以做型別斷定,來假設這個 interface 是某個型別,這樣一來你就可以操作這個型別中的方法。 這段程式碼可以將原本的 interface…

繼續閱讀

開發筆記

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…

繼續閱讀

前端

和 CORS 與 cookie 打交道

CORS 與 cookie 在前端是個蠻重要的問題,不過大多數在開發的時候,因為前後端的 domain 時常是相同的,所以很少去 care 這些問題。或者只要要求後端將 Access-Control-Allow-Origin…

繼續閱讀

開發筆記

在 Go 如何處理 connection lost?

研究了一下現在比較熱門的 sql 套件,發現幾乎都沒有像是可以即時在 connection lost 的時候跳 error 的功能。例如:nodejs 的 mysql 當中,我們可以用 connection.on(‘error’) 來監聽錯誤。 不過在 golang…

繼續閱讀

開發筆記

如何為你的 Golang 專案設定環境變數

在開發專案的時候常常需要切換不同的環境,也因此我們通常會設定不同的環境變數。不過如果直接寫死在程式當中每次修改起來實在太麻煩了,如果可以透過動態的方式傳入環境變數的話可以減少很多不必要的修改,程式也相對比較乾淨。 flag 一般在 golang 可以利用 flag 這個 package…

繼續閱讀

前端

透過 Vuex 與 webpack dynamic import 動態載入 module

在最近的專案中用到 vue 來開發,而如果要管理比較複雜的資料流貨狀態,通常都是用 vuex 來當作 Single Truth of Source 的 store。在 vue 裡頭建立 store 時,都是把所有的 module 寫完後,再統一放到 vue 的 root…

繼續閱讀

開發筆記

make 與 new 的差別

在 golang 有兩個保留字 make 與 new,也是剛開始學習 golang 的時候容易搞混的地方,這邊做個簡單的筆記。 new new 可以用來初始化泛型,並且返回儲存位址。所以通常我們會用指標變數來接 new 過後的型別。特別要注意的是,new 會自動用 zeroed value…

繼續閱讀

雜談

再談生日悖論(Birthday Paradox)

生日悖論是個剛開始上統計學時,老師很喜歡拿來唬弄學生的招式。通常老師會徐徐從錢包拿出 100 元,並且問學生,在教室中有沒有兩個人同一天生日? 直覺上,我們可能會以為機率很低。不過事實上只要超過 23 人,2 人同一天生日的機率就有 5…

繼續閱讀

回顧系列

2017 年度總結

哈囉大家,2018 新年快樂 🎉。 昨天和女友選擇過一個很平凡的跨年,早上各自做彼此的事,晚上在家裡開伙吃飯,再一起跑步,最後一邊寫程式一邊看紅白,結束了 2018

繼續閱讀

開發筆記

如何 Code Review

身為前端工程師,通常在整個團隊裡面會是最常發送 pull request 的人。為了讓自己的 PR 更容易被測試,以及讓 reviewer 更容易的 review,總結了一些注意事項。 pull request 的描述 這個 pull request 的目的。例如:修正 layout…

繼續閱讀

前端

Array.sort 淺析

Array.sort 淺析 這篇文章不是談論在 Javascript 原生的 sort 要注意的事項。例如: 因為預設的 sort 方法會把值轉為 String,並按照 char code 做排序,所以才會出現上面的結果。 今天要來探討 Javascript 的 sort 背後的實作方式

繼續閱讀

開發筆記

PostgreSQL 筆記 — INDEX 篇

在資料庫當中,為了改進查詢效率,在資料量大的時候,可以透過建立索引讓資料庫加速查詢效率。本篇文章將會探討 PostgreSQL 的 index。雖然在大部分的情況,直接使用 `CREATE INDEX` 的語法已經能夠應付常見的開發場景,但是在 PostgreSQL 當中,其實還提供了許多不同的 index types 使用。

繼續閱讀

前端

如何設計恰如其分的表格

認清一件事實,table 是拿來看,不是被當作絢麗的視覺使用的 最近在後台頻繁有使用表格的需求,如何設計對使用者良好的 table 是一項挑戰,尤其在資料筆數多、欄位多的情況下,使用者很容易就會被額外的元素吸引。其實對於呈現資料上,table…

繼續閱讀

開發筆記

用 AWS lambda 上傳 Medium 文章

Medium 本身不支援 code block 編輯,雖然不知道背後的原因為何(或許工程師並非主要客群),所以如果要高亮程式碼,一個作法是直接貼圖片,一個是貼在 gist 上後再 embed

繼續閱讀

前端

React16 重點整理

react 終於正式發佈 v16 了,其實官方部落格的介紹已經相當完整(而且賞心悅目)。本篇文章作為筆記與統整,精簡了部分的細節。 1. componentDidPatch(error, info) react16 最亮眼的部分,加入 ErrorBoundary 的功能,確保在 lifecycle…

繼續閱讀

前端

2017 年前端面試心得

終於有時間整理最近的面試歷程了。先總結一些看到的事情: 通常公司面試只考 Javascript 的熟悉度,多數關於演算法或是解釋原型鍊等等,很少考 DOM 或是 Event 的操作。 幾乎不考 CSS,就算有也只是簡單判斷 class、ID 優先度這種基本題目而已。 沒有面試考 HTML…

繼續閱讀

前端

淺談 ramda 中的幾個 API

ramda 是個相當好用的函式庫,如果聽過 lodash 或是 underscore 的話,可以將 ramda 想成 functional programming 的 lodash,他們的 API 有許多相似性,差別在於 ramda 本身有 FP 的功能,任何的 API…

繼續閱讀

開發筆記

淺談降維方法中的 PCA 與 t-SNE

在機器學習當中,如果特徵數過多時,有可能會造成一些問題,像是: 過擬合 (overfitting…

繼續閱讀

開發筆記

Rails app 自動化部屬 - hubot 與 heaven

目前所在的公司裡頭是直接在本地端的 terminal 跑 cap staging deploy 指令。 capistrano 作為自動部署化的工具非常方便,但難免會遇到幾個問題: 不是團隊中的每個人都有相同的環境 大家都在部署,結果 staging 上現在到底是哪個 branch…

繼續閱讀

前端

IT 鐵人幫完賽心得

今天是鐵人賽的最後一天,感覺自己最後結尾的部分收得不是很好,也有很多部分都因為時間上的關係沒有很完整地介紹完。

繼續閱讀

前端

高度相同的排版解決方案

在前端的頁面中,我們經常會碰到需要相同高度的排版。最直覺的方法就是將容器裡的所有元素設為 float 或是 inline-block。 float 及 inline-block 如果是使用 float 排版,不但要先撐開父元素容器(clearfix),還要針對子元素設定 margin…

繼續閱讀

雜談

2016 g0v summit 心得

因為一則廣告而創立的 g0v g0v 的由來其實是因為經濟動能推升方案(就是那個史上最腦殘的廣告) 這群熱血的工程師決定組成 g0v。致力於推動政府開放,並且以網路的方式推廣給大眾。 g0v 能夠紅,是從 318 學運開始。因為 hackfold…

繼續閱讀

讀書、課程筆記

易讀程式碼之美學

比較短的程式碼比較好嗎? 雖然減少程式碼會提高易讀性,但縮短讀程式碼的時間才是重點。 表層結構 清楚的命名方法跟變數名稱 方法不需要用 do 選擇詞彙的時候不要用模擬兩可的名稱,ex: pop popItem 在方法名稱加入更多的資訊 找尋更明確的詞彙

繼續閱讀