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

深入探討 FP 的 Point-Free Style

深入探討 FP 的 Point-Free Style

Curry Function 最主要的目的在於 Function Composition,所以儘管是 個 argument,最後也可變成多個 單一 argument 的 function 方便 composition。

那 argument 該怎樣的設計才適合 composition 呢 ? 這就是本文的主題:Point-Free Style。

如何在 Angular 使用 Ramda ?

如何在 Angular 使用 Ramda ?

Ramda 是 Clojure 在 JavaScript 的實作,讓我們可以將更多 FP 特性在 JavaScript 實現。

本文將以 Angular 與 TypeScript 為例,示範如何在 Angular 使用 Ramda。

如何使用 SonarQube 檢查 Java 專案 ?

如何使用 SonarQube 檢查 Java 專案 ?

SonarQube 是一套 程式碼品質檢查工具,可以幫我們檢查 code 的 bugs、 vulenrability、code smell 與 duplication,也屬於 持續整合 重要的一環。

SonarQube 已經內建 SonarJava,可以直接對 Java 進行檢查,本文將以 Java + Gradle 為例,並在 Eclipse 中使用 SonarLint 對 Java 專案進行檢查。

深入淺出 FP 設計模式:Currying

深入淺出 FP 設計模式:Currying

不只 OOP 有 Design Pattern,事實上 FP 也有不少 Pattern,而 Currying 算是 FP 最基礎、且用的最多的 Pattern。

一些正統 FP 語言,如 Haskell、Clojure、F#、ReasonML … 都在語言內直接支援 Currying;JavaScript 雖然沒有直接支援,但因為 JavaScript 有 First-class Function 與 Closure,使得 Currying 在 JavaScript 中使用成為可能。

如何將 .NET Core 發佈到 Linux ?

如何將 .NET Core 發佈到 Linux ?

.NET Core 為跨平台解決方案,我們可在 macOS 或 Windows 開發 .NET Core App,最後再發佈到 Linux 主機上。

.NET Core 提供 FDD 與 SCD 兩種發佈方式。

深入淺出 JavaScript 之 Mixin

深入淺出 JavaScript 之 Mixin

實務上常會發現需要兩個物件的 method,但礙於 JavaScript 只能 單一繼承 於 prototype,我們無法同時繼承兩個物件;但透過 Mixin,我們可實現類似 多重繼承 的功能。

如何使用 Higher Order Function 抽出共用 ?

如何使用 Higher Order Function 抽出共用 ?

無論使用 TDD 或 Design Pattern,最後一定會經歷 Refactoring 階段,處理程式碼共用部分,避免違反 DRY 原則。

在傳統 OOP,我們會使用 Pull Member Up 將共用 method 抽到 abstract class;但若使用 FP,我們則有新的武器:將共用部分抽成 Higher Order Function,將不共用部分以 Lambda 傳入。

如何使 iTunes 不要對 iOS Device 備份 ?

如何使 iTunes 不要對 iOS Device 備份 ?

若要對 iOS device 同步 mp3,預設會先對 iOS device 備份,會浪費很多時間,如何讓 iTune 永遠不要備份呢 ?

如何使 Finder 顯示隱藏檔 ?

如何使 Finder 顯示隱藏檔 ?

Finder 預設不會顯示隱藏檔,也沒有 GUI 可以設定,必須直接在 terminal 下指令。

如何解決 SonarLint 的 Analyzer Not Loaded 錯誤訊息 ?

如何解決 SonarLint 的 Analyzer Not Loaded 錯誤訊息 ?

當在 IntelliJ 平台使用 SonarLint 時,只要在 SonarLint General Settings 下按 Update Binding 就會出現 Analyzer Not Loaded 的錯誤訊息,這該如何解決呢?