弦而時習之

Ruby 的 Class Variable 深入解析

不該使用 Ruby 的 Class Variable 理由這篇文章中有大概提到 Class Variable 的意義在 Ruby 裡面跟我們在其他語言認知到的 static 關鍵字是不同的,那麼實際上到底差在哪裡呢?

在閱讀 mruby 原始碼之前我也想不通,然而在使用不同的技巧組合驗證特性之後,終於理解了 mruby 實作中對 RClass(Class 物件資料)裡面所定義的 iv_tbl(Instance Varable 對照表)的意義。

不該使用 Ruby 的 Class Variable 理由

前陣子跟卡米聊到一個神奇的 Ruby Class Variable 使用問題,才想起來從使用 Rubocop 之後會自動建議避免使用,就很久沒有使用 Class Variable 這個機制。

在 Ruby on Rails 中依舊還是有一部分實作會使用,因此並不是完全不使用。然而,在大多數的時候我們應該避免使用,除了對這個特性不夠了解之外,也是因為我們通常用不到。

輕鬆上手 NFT

年初的時候跟朋友聊到 NFT 覺得有趣想嘗試看看,不過當時搜集了一些資料還是搞不太懂該怎麼在 NFT 平台上面上架作品。

這次利用中秋節連假做了不少嘗試,其中一個就是上架一個 NFT 看看。

快速閱讀頁遊 Unlight 開源後的原始碼

最近一款有點年紀的頁遊 Unlight 在停止營運後幾年,突然公佈說要開放原始碼跟圖片素材。

這款遊戲嚴格說起來並沒有像我們熟悉的端遊、手遊之類的那樣華麗,但是非常有特色的人物設計跟對戰系統倒是讓很多玩家即使在好幾年後仍然在期待他能復活。

作為一個曾經的玩家,其實也是非常期待的,不過這次的開放原始碼路線大概是復活無望。不過從這幾天公開的資料來看,圖片、音效到客戶端和伺服端都公開的狀況下,還是很有希望被熱血的玩家復活的。

另一方面,既然伺服器是透過 Ruby 撰寫的,身為使用 Ruby 的開發者在遊戲類應用不常見的狀況下,能可以作為學習素材肯定是要看過一遍的。

Ruby 中 Constant 和 Class 的關係

下班前龍哥說在 Mailing List 看到了一段 Code 很有趣。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
a = Class.new

p a        #=> #<Class:0x0000558d34f68b48>
p a.name   #=> nil

B = a
p a.name   #=> 'B'

C = a
p C.name   #=> 'B'

裡面 C = a 到底發生了什麼事情,是很值得討論的,因為有了線索是 rb_const_set 可以找到原因,所以就利用下班時間來讀看看這段。

關於前面的用法可以參考之前寫過的自由的 Ruby 類別來了解原因。

你看懂五倍紅寶石粉專上的 Ruby 版台灣共識了嗎?

最近「台灣共識」很熱門,公司的粉專也分享了 Ruby 版的台灣共識。

我們在公司內部的群組大家其實討論了蠻久,如果只是單純的去實作跟其他語言一樣的內容,不就沒有意義了嗎?

我們之所以會選擇用 Ruby 來當作工作上的工具,就表示他有一些特別的地方吸引我們。

所以,上面用了哪些 Ruby 技巧讓我們一起來分析看看!

客製化你樹莓派上運行的 Linux

最近因為手邊有一個工作以外的專案需要搭配硬體做一些 IoT 類型的應用,雖然之前在五倍紅寶石開發的 Tamashii 系列應用已經足以應對在這個專案上開發所需的解決方案,但是依舊缺少了一些功能。

也就是我們過去並沒有考慮到的,如果裝置是交給一般使用者的狀況下,如何在透過網路的前提將裝置更新。

這是很多硬體都會有的功能,但是就目前而言 Tamashii 並不支援。

我的 Chrome 會說話

這是很多年前的事情了,當時看到別人的 Chrome 竟然會說話,讓我震驚了很久。但是花了很多年都沒有找到要怎麼做,不過最近因為一些關係,我終於知道了他的秘密!

如何在 2018 年被詐騙

這是關於某天晚上接到詐騙電話的分析,因為過程中太多細節的東西讓人掉入陷阱,跟同事聊過之後覺得還是寫一篇文章記錄會比較好,至少不會有人又踩到這樣的坑。

這篇文章重點也很簡單,「不要以為你不會被騙」