Ruby World Conference 2019 見聞

今年把在六月到八月做的一個小專案拿去投稿 Ruby World Conference 意外的獲得了 15 分鐘的時間,於是又展開了一次日本出差之旅,剛好彌補一下今年因為客戶專案需要趕上線而無法參加 RubyKaigi 的遺憾。

跟 RubyKaigi 不太一樣的地方是 Ruby World Conference 雖然叫做「World Conference」但是除了台上的講者之外,幾乎都是日本人(而且是稍微有年紀的大叔)去參加的。

RubyConf Taiwan 2019 會後感想、議程概覽

跟前幾年一樣基本上就是工作人員,這幾年參加研討會也都比較沒有在仔細聽了,所以大多是邊顧邊寫點程式。

比較不一樣的大概是今年更累了,從週四下午場佈到 Pre Party 然後兩天的活動、Official Party 最後到今年嘗試的 After Hack 幾乎是四天左右的連續接力,每天早上醒來都要先懷疑自己是否能撐過這一天。

關於 Rails 中的 Form Object / Presenter 這些物件該怎麼用(一)

前陣子在 Review 新專案中同事的程式碼時,發現同事對像是 Service Object / Form Object 這類物件不太有概念。不過這個新專案因為是接手其他公司的專案,所以有不少地方要微調。至少那個值得吐槽的「因為 Controller 程式碼太長不知道放哪裡,就都丟去 Service Object 好了!」的神奇用法,完全沒有幫助改善程式碼。

也因為這個機會,我用了一點時間跟專案的同事分享了一下我對這些物件的看法。畢竟當出我也是搞不太懂,不過隨著了解物件導向和 Ruby 的語言特性,從這些角度切入後,就比較能理解該怎麼使用。

利用 Ruby 的 Lambda 做條件判斷

週末在思考一些 Ruby 特性可以應用的小技巧時,想到龍哥大概跟我講了三次以上的一個特性。

1
2
3
4
5
fn = ->(other) { other == 1 }
fn == 1
# => false
fn === 1
# => true

剛好最近工作的專案上有個問題,似乎挺適合用這個技巧。

我在 Ruby 埋了一個陷阱 - Signal 的應用

在 Ruby 之中,其實隱藏了很多非常實用的標準函式庫,而 Signal 就是其中一個。

我們在寫 Ruby 大多數時候都是 Ruby on Rails 框架的應用,但是你們有想過當我們在一些 Gem 運行的時候,使用 Ctrl + C 為什麼不會出現錯誤嗎?

例如我們常常用到的 irbpry 為什麼按下 Ctrl + C 的時候不是直接中斷,卻還能繼續運作?

探索 Ruby 的 each 方法(一)

原本是想討論 Enumerable 這個 Module 的機制跟運作原理,不過越寫越發現光是一篇文章很難講明白。

所以就一邊查資料跟 Ruby 原始碼,慢慢的把 Enumerable / Enumerator 這兩個讓 #each 運作起來的機制討論清楚。

在 Ruby 裡面我們已經很熟悉使用 #each 來對陣列相關的物件進行操作,不過在大部分的語言我們都需要透過迴圈的方式來取出陣列的元素,那麼 #each 這個方法到底是怎麼讓我們用這麼方便的機制來操作陣列的呢?

用 Ruby 來尋找區網中的 Airplay、Chromecast

從雲端開始熱門起來後,為了能能讓提供不同服務的伺服器能夠被自動的偵測,我們在許多雲端相關的工具都會看到 Service Discovery 這個名詞。

不過,除了雲端上的服務能夠透過這樣的機制互相「發現」對方,我們也可以在區網中用類似的方法找到「提供服務」的裝置。

這就要從 mDNS (Multicast DNS) 和 DNS-SD (DNS-based Service Discovery) 開始談起。

為什麼要學習 Bootstrap 呢?

最近在工作上或者跟有在做網站開發的朋友聊天,都剛好會討論到 Bootstrap 這個 CSS 框架。

在業界,我想大部分的公司也大多會以 Bootstrap 為基礎來開發網站,而這幾年網路上可以買到的版型也多以 Bootstrap 為主。

從這些跡象看起來,會使用 Bootstrap 很重要,中間的過程跟原因是什麼呢?

轉職工程師:尋找自己的價值

這系列的文章已經稍微討論過我自己在學習寫程式過程中的心態方法困難,最後就來討論最後一個我認為很重要的問題。

不論學了什麼,或者有多麽厲害的技術,作為一個工程師我們的價值在哪裡?

轉職工程師:為什麼馬上就遇到瓶頸?

前面已經討論了起步的心態起步的方法兩個問題,好不容易開始寫程式了,卻發現⋯⋯

照著教學做,但是沒有教學就完全不會

不管是去上更多的課,還是看更多的教學,怎麼樣都無法擺脫這個問題。這到底是什麼原因呢?