淺談 Ruby 的 Fiber(四)
在上週的文章我們注意到 Fiber 的使用並不是那麼容易的,因為我們需要自行管理每一個 Fiber 被恢復(#resume
)的時機,這週就繼續來挑戰吧!
在上週的文章我們注意到 Fiber 的使用並不是那麼容易的,因為我們需要自行管理每一個 Fiber 被恢復(#resume
)的時機,這週就繼續來挑戰吧!
延續上一篇文章的實作,我們已經有一個簡易的 Thread 版本 TCP Socket 伺服器可以運作,那麼該怎麼用 Fiber 修改呢?
第一篇我們已經大致上了解 Fiber 的運作原理,不過要能夠實際上的掌握跟應用,我認為是需要靠實作來熟悉的。
所以,這一篇我們先來講學習 Socket 最常見的 TCP 伺服器實作吧!
前陣子再研究 Ruby 從 1.9.3 就開始提供的 Fiber 該怎麼使用,不過網路上的資料大多都只是簡單的討論。那麼 Fiber 到底是什麼呢?這系列的文章會詳細的介紹 Fiber 的基本概念,還有一些可以應用的方式。
今年的 RubyKaigi 比去年提早不少,作為 Ruby 開發者最大的盛會,今年也不意外的延續去年探討 Ruby 3 的可能性跟更多 Ruby 的深度應用。也因次,不意外的讓大家都聽的似懂非懂,而且還讓我感覺一年比一年的難度更高。
總之,來看看今年的 RubyKaigi 吧!
Ruby Conference Taiwan 到今年已經是第七年了,印象中我大概是從 2013 年左右開始參加了,應該也有四五次。今年也加入了 Elixir 一起合辦,因為是五倍紅寶石的員工,所以也當了兩年的工作人員。
那麼,就看看今年有什麼新鮮的事情吧!
上一篇文章已經討論過關於 Ruby 中的類別是怎樣運作的,這篇文章則會來討論如何拓展 Ruby 類別。
大部分的人寫 Ruby 有很大的原因是因為 Rails 但是上面像是 has_many
跟 before_action
這些可以直接在類別上做的事情,很明顯不是 Ruby 內建的,到底是怎麼運作的呢?
前幾天的晚上朋友在 Facebook 上問了一個問題。
1raise HTTPError, 'Not Found'
和
1raise HTTPError.new('Not Found')
哪個比較快?也因為這樣,我們意外的發現 Ruby 對上面兩段程式碼的定義上其實是不太一樣的。
週末看到一篇 Stripe 工程師所寫的文章,是一篇關於 Idempotency Key (幂等鍵)的設計機制。因為是一篇非常棒的文章,而且裡面的概念除了可以應用在 API 設計之外,很多程式設計上需要解決的問題都可以透過這個概念來處理。
原文非常的長而且很詳細,這篇文章只會做簡單的重點整理。
有興趣的話可以打開原文來讀,是一篇很有用的文章。
作者是很厲害的工程師,部落格上的文章都是非常精實的技術文。
以前還在讀書的時候,常常會思考所謂的「自由」是什麼,想著以後一定要過著自由的生活。不過現實就是到了社會,依舊還是有許多限制讓你無法自由自在。
不過,在 Ruby 中的類別卻是非常自由的。
有稍微接觸過 Ruby 的人應該都知道幾個特性: