怎麼在 rake task 裡面跑 task

最簡單: ```ruby task build: [ "migration:t15349:create_init_version_for_all_accounts", "migration:t15349:migrate_account_version", "migrati...

Wayne

Metaprograming 做 after method callback

Magic ```ruby class Example def self.after(*names) names.each do |name| m = instance_method(name.to_s) # override ol...

Wayne

rails 可以自己定義 model callback

滿實用的,但應該少用,正常的 lifecycle 能夠滿足就不應該增加新的東西 想到最有可能會用的的地方就是搭配 sub/pub design pattern 的時候,例如 publish 後要 broadcast `published` event http://vi...

Wayne

postgresql explain

可以看 sql 的複雜度和 cost,很方便的 sql command https://www.postgresql.org/docs/9.4/static/using-explain.html

Wayne

gem open gem_name -e editor

好方便的功能,不用再自己 clone 了 https://github.com/adamsanderson/open_gem

Wayne

devise and warden - 登入失敗寄信

使用 lockable 或是不使用 lockable 都行 `DeviseController#require_no_authentication` 時會 call `warden.authenticate?`,這時會引發 `Lockable#valid_for_aut...

Wayne

CSS Grid

推薦連結: https://www.youtube.com/watch?v=txZq7Laz7_4&feature=share TL;DR: CSS grid 先把畫面切隔成不同的區塊後再把 content 丟到區塊裡,符合設計直覺 只套用第一層子元素 做 RWD ...

Wayne

蒙地卡羅演算法

很簡單易懂的介紹,很棒 原理就是產生極多數的樣本,根據樣本的分佈狀態來預估真實狀態 其中交通堵塞的例子真的是很經典,很久以前就聽過但不知道是用蒙地卡羅演算法證明的 [http://mp.weixin.qq.com/s/Ca6-zfA3LzijrMFhJcfnMA]...

Wayne

Form object pattern

優點: 1. 把讓 controller 和 view 的邏輯拆開,讓 form object 負責,符合 single responsibility principle 2. 如果 include active_record 可以享用 validations, err...

Wayne

開發第一個智能合約 - 環境準備

首先安裝框架 http://truffleframework.com/docs/getting_started/client 測試環境 https://github.com/ethereumjs/testrpc package: https://www.ethpm....

Wayne

Ruby exceptions 進階

backtrace `error.backtrace` 可以看出是在哪裡報錯 如果 rescue 後再 raise 還可以看出是上一個 error 是什麼 ```rb def fail_and_reraise raise NoMethodError res...

Wayne

Null object pattern

在需要 check object 是否存在的時候使用 null object pattern,如果 object 不存在就用 null object,null object 提供跟原本 object 很像的 API 接口,並預設這些 API 的行為,讓程式可以安心的使用這...

Wayne

Ruby 可以在 class 內定義 exception method,這樣就可以 raise 這個 class

不囉唆,上 code Raising Non-Exceptions If we provide an exception method, any object can be raised as an exception. Imagine you have a cla...

Wayne

[網路原理重修系列][3] Socket, Process

應用層運行的程序叫做 process,每個 process 經過 socket 和傳輸層溝通,socket 其實就是提供給應用層跟傳輸層溝通的 API 如果 IP 是地址,port 就像房間號,主流的幾個 port 已經在操作系統中預先定義了例如 80 是 web appl...

Wayne

B+ tree (B plus tree)

前一篇學習了 什麼是 B- balance tree,立馬再來補習一下 B+ 其實 B+ tree 就是 B- 的升級版 主要的差別在於「子節點有母節點的資訊」,並且「出現在子節點中的母節點元素都是子節點中最大的元素」,不囉唆,看圖: ![](https://1.bp...

Wayne

什麼是 btree (balance tree) (b-)

常常看到 postgresql 的 index 都是用 btree 的方式 index,但一直沒時間去研究什麼是 btree,最近發現一個不錯的維信號用漫畫的方式解釋各種演算法相關的東西,剛好看到 b- b+ 的介紹,該是時候學習一下了~ 所謂的 b- 其實唸作 ba...

Wayne

在 rails 內避免數字因為 race condition 而有誤

例如我有個 Account model 內有 balance column,可以這樣做: ```ruby def increment_balance(amount) self.class.connection.execute "update accoun...

Wayne

Node js 的 stack

今天問了 Max https://github.com/maxyihsunchou 在 Node 開發環境現在建議做什麼設置,收穫良多 1. mongodb 的 wrapper https://github.com/Automattic/mongoose 2. Mac ...

Wayne

[網路原理重修系列][2] - OSI 模型 - 網路分層

第一層︰實體層(Physical Layer) 網卡之類的 第二層︰資料連結層(Data Link Layer) 傳送資料的層級,資料帶有 MAC address,由這層決定怎麼處理發送這些資料 第三層︰網路層(Network Layer) 讓資料在網路上傳遞的層級...

Wayne

[網路原理重修系列][1] - 重要的名詞定義

ISP (Internet service provider): 網路供應商,可以想成是提供線路的人,有高質國家層級、公司層級,也有 Local 層級的 Communication link Packet switch 分組交換器 http://acai-hsieh.b...

Wayne

使用工具檢查有沒有有問題的 gem

很不錯的文章,應該要來試試看 https://philna.sh/blog/2017/07/12/two-tests-you-should-run-against-your-ruby-project-now/

Wayne

Proxy server & Reverse proxy server

Proxy server 代理伺服器 http://linux.vbird.org/linux_server/0420squid.php 就是代理人的概念,把封包打到代理伺服器,讓代理伺服器去跟網路上的其他伺服器拿資料 資訊流動的方向是 自己的電腦 -> 代理伺服器 -...

Wayne

Rails 的 schema.rb file 的用處

https://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do 簡單來說: 1. production 環境 schema.rb 正不正確都沒差,但錯誤很容易會造成其他 developer...

Wayne

什麼是 Token 幣

在 etherium 上發行 token 幣,在交易所交易 token 幣,token 幣基本上就是買未來幣的發票(ICO 在做的就是這件事),所以 token 幣主要是對照該幣(ico 機構)的市場價值 例:EOS 就是發行於 ETH 上的 token,或說是智能合...

Wayne

Rails 5.2 似乎要自帶上傳功能囉 (ActiveStorage)

http://afreshcup.com/home/2017/7/6/introduction-to-active-storage.html https://github.com/rails/activestorage

Wayne