念念不忘,必有迴響。有一口氣,點一盞燈,有燈就有人。

Vue CLI 之 Mode 與 .env

Vue CLI 之 Mode 與 .env

實務上一定會遇到在不同 server ( developmentlabstagingproduction) ,且各有各的 環境變數,該如何設定這些環境變數並且自動切換呢 ?

Haskell 之 Variable

Haskell 之 Variable

在 Haskell 中的 variable 因為是 Immutable,所以算是 definition,負責程式碼中重複的部分;且有別於一般程式語言的是,由於 Haskell 將 function 也視為 data,因此 variable 也能是 function。

若使用 IIFE,則有另外一種使用 Lambda 方式。

Haskell 之 Function

Haskell 之 Function

Function 為 Haskell 最重要的元素,首先來看 Haskell 如何定義 function,也順便複習 F# 、ECMAScript 與 C#。

如何執行 Haskell ?

如何執行 Haskell ?

Haskell 提供各種執行方式,除了可編譯之外,還提供 REPL、Script,也可直接在 IDE 內執行,非常方便。

ECMAScript 之 Asynchronous

ECMAScript 之 Asynchronous

ECMAScript 對 Asynchronous 總共有 Promise、Generator 與 Async Await 三種支援,其中 Generator 屬於較進階的應用,主要是在寫 library,但 Promise 與 Async Await 則非常重要,寫 application 也很常用到。

ECMAScript 之 Event Loop Model

ECMAScript 之 Event Loop Model

由於 JavaScript 是 Single Thread 語言,由於其 Single Thread 特色,對於繁重的運算動作,就無法如 C# 使用 Multi Thread 解決,因此 Asynchronous 在 JavaScript 格外重要。

Browser 使用獨特的 Event Loop Model 實現 Asynchronous,要能徹底了解其背後運作原理,才能掌握 JavaScript 的 Asynchronous。

ECMAScript 之 ES Module

ECMAScript 之 ES Module

ES5 很難寫大程式,主要是因為 JavaScript 沒有 Module 概念,常常一個檔案寫兩三千行程式,且大量使用 Global Variable 造成 Side Effect 很難維護。

早期 JavaScript 是使用 Module Pattern 解決,稍後更有 CommonJS 與 AMD 試圖制定 Module 標準,一直到 TC39 出手,在 ECMAScript 2015 定義 Module 後,JavaScript 的模組化總算塵埃落定,是 JavaScript 發展的重要里程碑。

Refactor to LINQ => Select

Refactor to LINQ => Select

LINQ 是 C# 3.0 實現 FP 重要里程碑,提供大量的 Operator,讓我們以 Pure Function 將 data 以 Dataflow 與 Pipeline 方式實現。本系列將先以 Imperative 實作,然後再重構成 FP,最後再重構成 LINQ Operator。

本文將討論 Select Operator。

ECMAScript 之 Const

ECMAScript 之 Const

const 也是 ECMAScript 2015+ 的代表 keyword,應盡量使用 const 避免 Side Effect,除非真的要修改變數。

FP 之 Yield 與 Lazy Evaluation

FP 之 Yield 與 Lazy Evaluation

為了使 function 重複使用能力更高,我們會盡量將 function 寫成 composable function,也因為如此,function 之間不斷地建立 data,且每個 function 又必須各自執行 for loop,這些都是執行效能殺手,而 YieldLazy Evaluation 讓我們優雅的解決這兩大難題。