RubyTapas #048, #049, #050, #055, #056
048 Memoize
★★★
おおMemoize
今会社のプロジェクトでまさに改善が必要で取り組んでいるトピックだ
ラッキーすぎる
流れが来ている
benchmarkの部分
require 'benchmark'
puts Benchmark.measure {
module Memoizableが思ったよりいろいろやっている
ケースバイケースで @var ||=
みたいなシンプルで良いと思うけど
@memoized_vars.key?(key)
は重要だな
fetchもうまく使えるのかもしれない
049 Utility Function
★
しばしばクラスメソッドとインスタンスメソッド両方で動くものを作ることがある
includeなどを使うこともできるが
module_function
も使えるらしい
ただ名前は直感的でなくあまりよく知られていないとも言っている
railsの中で見てみたけどactivesupportで少し使われていた程度
050 Include Namespace Module
?
前回の続き
なんかよくわからないけどinternal moduleにもincludeするにはということで
親のmoduleをnestしてincludeするように書いても問題ないと言うことかな
module ROFLWeb
module_function
def unique_id(object)
module UrlHelpers
include ROFLWeb
# ...
end
class MemoryRepository
include ROFLWeb
# ...
end
overkill やり過ぎ、行き過ぎ http://eow.alc.co.jp/overkill/utf-8/
055 Runnable Library
★
__FILE__
$PROGRAM_NAME # = $0
runnerble libraryは通常はファイルの最後で
if $PROGRAM_NAME == __FILE__
rfc822_to_json($stdin)
end
などと書く
pythonではcommon techniqueらしい
from time to time 時々 http://eow.alc.co.jp/from%20time%20to%20time/utf-8/
056 xmpfilter
★★★
謎が解けた
インラインで結果を出しているのが何かと言うことで
#=>
をスクリプトに入れておいて実行すると結果が => の後に表示されるというもの
$ xmpfilter math.rb
2 + 2 # => 4
rcodetoolsというgemらしい
エディタにもバインディングできる
'The "XMP" in the name is for "example".'
この情報はここだけの秘密secretを強調している
venerable 尊い、立派な、尊敬する http://eow.alc.co.jp/venerable/utf-8/