第23回Ruby/Rails勉強会に参加しました。
病院に寄っていたら1時間くらい遅刻しました。残念。
以下、個人的なメモです。
Rails以外のWebアプリケーションフレームワーク by yharaさん
- merb。ストヤンさんがめるぶと呼んでいた。作り直したRails。3倍早い。Railsはeval使いまくり。遅い。シンプルな作り。シンプルなままでいられるか。
- Camping。超軽量。ファイルを1つつくれば開発を始められる。RubyのソースコードでHTMLを書く。Campingの変態的なところ。ルーティングが変態的。/edit/以下をEditコントローラに割り当てたい。class Edit < R '/edit/(\d+)', '/edit'。4Kライブラリ。コアが4000バイト? Golfされてました。
- ramaze。らまぜ。ロゴに読み方が書いてある。×ラマーズ。シンプルなMVC。モジュール化されている。中規模向け。ソースコードが綺麗。チュートリアル・サンプルが豊富。設定ファイルが箇条書き。oっていうメソッドが定義されている。この発想はなかった。お茶目な一面。
- それぞれ目標が違っていて面白い。
- 一番のおすすめは。Ruby on Rails。本が多い。情報が多い。人に聞きやすい。完成度は一番高い。大は小を兼ねる。
Rubyのリフレクション by 大林さん
- 想定バージョンは1.8.6。
- Rubyの基本。大半の機能が実行時処理。実行前の処理に手を出せない。構文木をいじる方法がない。Lispのマクロのようなものがない。以下のクラスが中心的役割を果たす。Module/Class、Object。
- 変数定義とか。存在するメソッドの調査。クラス階層。eval関係。hook関係。
- クラス階層と継承と特異クラス。特異クラスとは?
- 今日は難易度の高い話題が多いなぁ。
- Module#define_method。今回のテーマ。メソッドを定義するメソッド。インスタンス変数もどき。クラス変数もどき。ローカル変数を共有するのがポイント。
- こつ。必要な情報はどのクラスが持っているかを意識する。どのクラス/オブジェクトに情報を持たせるか意識する。
- その他。アクセサのないインスタンス変数の読み書き。privateメソッドの外部からの呼び出し。メソッドつくったり。
- おまけ。MethodとUnboundMethod。
- メソッドをオブジェクト化する。(1 .. 10).map(&3.method(:+))。ほう。
- UnboundMethod。クラスからメソッドを取り出す。そのままでは呼び出せない。適当なクラスにバインドする。Time.instance_method(:to_s).bind(Time.now).call。ほう。
- 特徴。Procと互換。メソッドの名前ではなく実体を持つ。上書きしても元の情報を持っている。
- リフレクションを学ぶのによい標準添付ライブラリは? delegate? forwardable? 何だろう。。。
Ruby初級者レッスン第17回
- イテレータの種類。要素アクセス型、アクセスユーティリティ型、範囲型、登録型、パラメータ型、仕事分割型、コンテキスト型。
- 演習問題。for、whileは禁止。九九の表。100マス計算、色見本作成。とりあえず九九だけ。
n_range = (1 .. 9) m_range = (1 .. 9) puts(' |' + n_range.map {|n| '%2d' % n }.join(' ')) puts('---+--------------------------') m_range.each do |m| puts(('%2d' % m) + ' |' + n_range.map {|n| '%2d' % (m * n) }.join(' ')) end # => | 1 2 3 4 5 6 7 8 9 # ---+-------------------------- # 1 | 1 2 3 4 5 6 7 8 9 # 2 | 2 4 6 8 10 12 14 16 18 # 3 | 3 6 9 12 15 18 21 24 27 # 4 | 4 8 12 16 20 24 28 32 36 # 5 | 5 10 15 20 25 30 35 40 45 # 6 | 6 12 18 24 30 36 42 48 54 # 7 | 7 14 21 28 35 42 49 56 63 # 8 | 8 16 24 32 40 48 56 64 72 # 9 | 9 18 27 36 45 54 63 72 81