Category Archives: Ruby

A brief introduction to Machine Learning 投影片

這是我在今年 RubyConf China 2017 演講的投影片,錄影官方也釋出了在 Youtube。這場分享總結了這兩年業餘接觸機器學習的一些知識點和心得,希望能在 Ruby 圈推廣一下資料科學和機器領域,以及主流的 Python 工具鍊。同一天另一場還有一場關於機器學習的 姜鹏 – 金数据是如何鉴黄的 也講的非常好,介紹一個真實的應用案例,也推薦大家一看。

老實說,就像做 Web 用 Rails 很棒,做數據分析和機器學習,就是要用 Python 這套方案。這不代表整套 production code 都要從 Ruby 換成 Python ,就像 Apple 做機器學習的 Core ML 也是用 Python 方案作數據分析和機器學習訓練,在得到模型和參數後,實際運作的 production code 當然還是用 Apple 自家的 Swift 語言來進行預測。

另外,我覺得為什麼 Ruby 圈老是去黑 Python 呢?(的確,如果眼界只在做 Web 的話,我以前也是覺得學了 Ruby 就用不到 Python 了),我認為就培養個人技能來說,應該挑互補的,而不是挑做一樣的事。Python 可以做 A.I. 可以做數據分析,Ruby 有很好的 OO 物件導向設計,做應用程式非常適合,是可以互補的。反而例如去學 Elixir 跟用 Ruby 一樣是做 Web 開發,對個人的技能發展我認為是重疊的。

如何真正讓 Ruby Constants 常數無法被修改

大概翻了一下 Effective Ruby (中文原文),覺得其中第四個 Be Aware That Constants Are Mutable 有點意思,記錄下來。

在 Ruby 裡面大寫開頭的叫做常數,Ruby 開發者可能知道這個常數是可以被事後修改的,雖然會有警告啦,但是還是被修改到了,那有沒有辦法可以真正無法被修改呢? 原來要用 freeze,而且還需要點技巧。

讓我們看一下代碼:

Continue reading 如何真正讓 Ruby Constants 常數無法被修改

更快更安全: 每個網站都應該升級到 HTTP/2

(本文 crossposting 於 ALPHACamp Blog)

如果說有一項技術可以讓你的網站瀏覽起來更快、更安全、SEO 加分,而且網站工程師不需要改 code 就可以全站使用。更重要的是,還不用額外花錢,天底下有這麼好的事情嗎?

話說 HTTP 通訊協定是全球資訊網(WWW)的基礎,是瀏覽器和網站伺服器之間的通訊協定。而 HTTP/2 是 HTTP/1.1 從 1999 年發布以來,十六年來的最重要的一次升級,這次升級的主要目的,就是為了改善瀏覽器的網頁下載速度(Page Load Time)。

眼見為憑,以下是一些測試網站,比較 HTTP/1.1 和 HTTP/2 的速度差異,這在圖多的情況最為明顯:

Continue reading 更快更安全: 每個網站都應該升級到 HTTP/2

程式設計師升級必練內功:TDD Kata

(本文 crossposting 於 ALPHACamp Blog)

測試驅動開發(Test-Driven Development,簡稱 TDD)是一種程式開發的技巧,簡單來說就是先寫測試程式,然後才實作功能。具體的流程則是透過 Red–Green–Refactor cycle 的循環:

  1. Red – 先寫測試程式,此時因為還沒有實作功能,所以這個測試是會失敗
  2. Green – 快速實作出功能,讓上述的測試通過
  3. Refactor – 重構程式碼,去除多餘重複的代碼,提高程式碼品質,同時維持測試通過

Continue reading 程式設計師升級必練內功:TDD Kata