Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RubyのWAFコードリーディング勉強会を開いてみた

 RubyのWAFコードリーディング勉強会を開いてみた

RubyのWAFコードリーディング勉強会を開いてみた@ 渋谷.rb[:20120516] on Zusaar http://www.zusaar.com/event/280051

RubyのWAFコードリーディング勉強会 on Zusaar http://www.zusaar.com/event/257001
についての発表

ainame

May 16, 2012
Tweet

More Decks by ainame

Other Decks in Programming

Transcript

  1. 自己紹介 •  名前   –  生井智司(Satoshi  NAMAI)   –  @ainame

      •  職業   –  Webプログラマ(新卒)/  Rubyに似た何かを書く仕事   •  Ruby歴   –  3年前に卒研で簡単なスクリプト書いた所から   –  本格的に勉強したのは昨年から   •  成果物   –  hDps://github.com/ainame/rixi
  2. RubyのWAFコードリーディング   勉強会とは •  きっかけ   –  思いつき   • 

    目標   –  オレオレ   フレームワーク   を作る   じゃあ,とりあえず   読んでみよう!!  
  3. 予定 •  Sinatra     –  Rack/Rackアプリの作り方:低レイヤーな部分   –  DSLの実装方法:黒魔術

      –  テンプレートエンジン:gemのTilt  ← イマココ   •  Padrino   –  Helperメソッド:テンプレートに提供するためには   –  モジュラー化:機能をモジュールに切り分ける方法   •  Ramaze   –  シンプルな実装:黒魔術少ない/コア(innate)は   2000行くらいらしい   •  Rails  3.X :目標
  4. 予定について •  あくまでも予定なので仮   •  良いWAFや、WAFの気になる箇所があれば   教えてください   • 

    WAFを作ることが目標なのであって   言語はあくまでも手段   •  ということでRubyでなくても可  
  5. ファイル構成について •  main.rb   –  Classic  Styleの   起動部分  

    –  32行   •  base.rb   –  Sinatra::*を定義   –  1773  行   •  showexcepXons.rb   –  エラー画面実装   –  Rack::ShowExcepXons   を継承  
  6. main.rb •  Classic  styleで         という感じで起動するための処理  

    •  extend  Sinatra::Delegetor  でDSLをmainの特異メソッドにして   トップレベルでget  ,  post,  … のDSLを実現   –  Classic  Sinatra  が定義するトップレベルメソッドの話    $  ruby  app.rb  –p  4567  –e  development  
  7. base.rb •  Sinatra::Requestクラス,    Sinatra::Responseクラス   –  Rack::Request,  Rack::Responseを継承  

    •  Sinatra::Baseクラス   –  Rackアプリ部分(iniXalize,  call,  call!)   –  以下のモジュールをinclude   •  Sinatra::Helpersモジュール   –  ルーティングやフィルター、view定義周りのメソッド   •  Sinatra::Templatesモジュール   –  GemのTiltとのやり取りをする部分  
  8. 告知 •  第2回について   –  日時   •  5月26日(土) 13:00〜18:00  

    –  場所   •  株式会社ミクシィ 7階 セミナールーム715   –  定員   •  30人(現在12名)   –  備考   •  電源,ネット環境あり   –  参加方法   •  RubyのWAFコードリーディング勉強会 第2回 on  Zusaar