Jedi Noel

Courage is contagious

Ruby 與 Thread

前言 執行緒是什麼?你的程式有使用到執行緒嗎?如果有的話,那它有保證是 Thread-Safe 嗎?身為一個軟體工程師應該多少都聽過這些問題,又發現或著曾經在學校的課堂上、或是作業系統的考卷上看過這個名詞。但我們真的能回答的出這些問題嗎?至少我曾經也是對它一無所知的,雖然不懂執行緒也依然可以開發產品,但如果能深入地去理解、認識,那將能幫我們打開一扇新的窗,給予我們更多了能力與選擇去拓展我們的......

Ruby 與字符編碼

前言: 編碼一直是個有趣和容易讓人似懂非懂的議題,我們多少總有碰過亂碼的檔案,或是需要在不同編碼中轉或語系的需求;也許只需要去 Google 一下方法,或是藉由 Iconv 來做轉碼,但是對於亂碼的問題,或是編碼的含義依然一半解,又或著過了一陣子之後又得重新再 Google 找解法。與其不斷地盲目亂找治標不治本的答案或解法,倒不如真正有系統地去探索問題背後的緣由或脈絡,真正地去解決問題。 何......

Ruby 如何打造出自己的 DSL

前言 當 Ruby 的 gem 使用得夠多,不時會發現有許多既方便又神奇的語法,例如 RSpec 裡面提供了許多方法,如下方的語法範例: 12345678910RSpec.describe Jedi::FightService do describe '#initialize' do context 'with valid args provided' do let(:......

pixel 介紹

前言 日前在處理動態繪製 PDF 時,因為設計師出的圖的長、寬皆是以 pixel 為單位的,但當時對於 pixel 的確實長度與意義並不了解,為求出產生的 pdf 的內容尺寸與實際紙張大小符合,才能正確地列印出來,因此特地研究了一番,並記錄與分享。 意義 pixel => picture + element 圖像或顯示器上顯示的 最小單位 若把圖無限放大,會顯示成一格一格組成起來的樣......

Ruby 使用 Monkey Patch 的建議

何謂 Monkey Patch (猴子補丁) 網路上的介紹已經很多且詳盡,故不在此詳細探討,若還不熟的朋友建議可以看 游擊補強或猴子補丁? 一文;但簡單的意思就是: 指執行時期動態改變程式碼 更白話一點就是 : 不修改既有原始碼情況下,動態修改程式運作行為的能力 Ruby 與 Monkey Patch 而 Ruby 作為動態語言以及擁有非常強大的 meta programming......

Service Object 設計建議

前言 隨著大家ServiceObject越用越多,也產生了不同的設計習慣與使用方式,為了讓大家有一制的設計原則,方便後人使用或減少修改成本、遵行風格建立下去,我們可以來集思廣益、訂立一套良好的準則,希望大家可以遵守之,並且耳濡目染之下相互影響。當然,如果有發現不良的地方或更好的方式都歡迎提出討論。 命名方式 具體的動名詞或名詞 + Service 範例: FireFighterServi......

Rails 探訪 html_safe

介紹 Rails3 開始為了安全性的考量(XSS),怕使用者張貼一些有特殊目的HTML到網站上進而影響其他使用者或網站運作,所以會自動把所有<%= %>裡的字串都做溢出,當字串包含先特殊符號如:< , >等等都會被處理掉,這樣自然就不會被瀏覽器,非常地安全,而如果想不被溢出,我們此時可以使用html_safe這個 helper 來避免,詳情可以參考ihower網路安全......

Rails為何要使用 escape_javascript?

前言: 在 Rails 裡,為了某些 AJAX 效果,我們會使用RJS(Remote Javascript),簡單地說就是發送了個 js 請求給 server,rails controller 做了某些事情後會render像是 *.js.erb 的檔案,在這檔案裡我們可以混用 ruby 與 js,所以可以做些我們想做的事之後再編譯成 js code 並回傳給 browser,然後 brows......

Ruby Arguments 小技巧

在ruby裡,函式參數的定義與使用可以多變且靈活,這裡我們來分享一些比較特別的但實用的例子 參數的定義使用 當如果參數是要使用 hash 的話,我們都知道可以這樣用 123456789def hello (options = {}) first_name = options[:first_name] last_name = options[:last_name] ......

ruby 類別變數

類別變數,有時也稱靜態變數,簡單說就是專屬於類別的變數,不依實體不同而有所差異,類別成員下皆共享的,因為是存在特定的記憶體區塊,所以不會因實體的存活期間所影響。 各個 oop 語言的類別變數大致的理念都是相同的,用法上可能會略有不同,今次是就來探討ruby的使用狀況。 類別變數種類 ruby的類別變數有區分以下兩種,而兩者都可以被類別方法正常存取與使用,但還是有差異如下: @@var =......