SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
2008-05-21(水); Apple Store Sapporo
                                                 Ruby Sapporo Night vol.6




                       Rails        入門
                    セキュリティ
                                               Ruby on Rails Security


                         日本Rubyの会

島田浩二                     Ruby札幌
                         snoozer.05@ruby-sapporo.org
SHIMADA Koji; Nihon Ruby-no-kai; RubySapporo
Tell The Topic of Ruby,
     RubySapporo!

   Ruby札幌、Rubyの話しろ!
しまだこうじ
http://iddy.jp/profile/snoozer05



✓ ふつうのフリーランス・プログラマ

✓ 日本Rubyの会
  ✓   Ruby札幌 運営
  ✓   RubyKaigi スタッフ/実行委員
✓ プログラミングの楽しさを共有したい

✓ 自分の知らないコトやヒトに出会いたい
どうぞ
 よろしく
お願いします
まとめ

✓   Railsは標準でさまざまなセキュリ
    ティ対策をサポートしている
✓ 重要なのはRailsによる対策のポイン
 トを理解すること
✓ 用法・用量を守って正しくお使い下
    さい
今日のゴール

✓   Railsアプリがセキュアかどうかを
    確認するための、いくつかの基本的な
    チェック項目について知る
✓ それぞれのチェック項目を満たすため
    の作戦を知る
チェックリスト
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
一つずつ
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目1



見せなくてよい情報を
 公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか
見せなくてよい情報を
公開していないか




  422ステータスのテンプレートが
  デフォルトで用意されているのは
        Rails2.0∼
何が起きるか
✓ 攻撃者に攻撃方法を考えるヒントを
 与えてしまう
✓ フレームワークや固有のバージョン
 の脆弱性をつかれる可能性がある
対策
✓ 攻撃のヒントになる可能性のある情報
は、極力表に出さない
✓ デフォルトのページなどをそのままにしない

✓ アクセス制御をきちんと
対策
config/routes.rb


ActionController::Routing:: Routes.draw do ¦map¦
  …
  map.root :controller => "welcome"
  …
end




          トップページが指定された場合の
            ルーティング先を定義
対策




 各種デフォルトのテンプレートを
    きちんと差し替える
対策
httpd.conf

…
<DirectoryMatch "^/.*/.svn/">
  ErrorDocument 403 /404.html
  Order allow,deny
  Deny from all
  Satisfy All
</DirectoryMatch>
…
             Webサーバでファイルのアクセス
               に関する適切な設定を行う
見せなくてよい情報を
 公開していないか
✓ 攻撃のヒントになる可能性のある情報
は、極力表に出さない
✓ デフォルトのページなどをそのままにしない
 ✓ ステータスページ等

✓ アクセス制御をきちんと
 ✓ サーバの設定などをきちんと確認
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目2



重要なモデル属性を
 保護できているか
重要なモデル属性を
   保護できているか
db/migrate/00X_create_users.rb

 create_table :users do ¦t¦
   t.string :login
   t.string :name
   t.string :password
   t.integer :admin, :default => 0
 end

app/models/user.rb             制御に絡む属性

 class Users < ActiveRecord::Base
 end
重要なモデル属性を
   保護できているか
db/migrate/00X_create_users.rb

 create_table :users do ¦t¦
   t.string :login
   t.string :name
   t.string :password
   t.integer :admin, :default => 0
 end

app/models/user.rb        何のガードもしていない
                            制御に絡む属性

 class Users < ActiveRecord::Base
 end
重要なモデル属性を
   保護できているか
http://example.com/users/new
重要なモデル属性を
   保護できているか
http://example.com/users/new
何が起きるか
✓ 攻撃者の視点
✓ このフォームを使って何か攻撃できないか
✓ フィールドにありそうな属性でも追加
 してみるか
✓ ユーザ情報だったら管理者権限か

✓ とりあえずadminあたりから
何が起きるか

オリジナルのフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
何が起きるか

改変されたフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
   <input name="user[admin]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
何が起きるか

改変されたフォーム

 <form action="/users" method="post">
   <input name="user[login]" type="text" />
      フォームを改変されて使用されると
   <input name="user[name]" type="text" />
   <input name="user[password]" type="text" />
    公開していない属性でも上書きされてしまう
   <input name="user[admin]" type="text" />
   <input name="commit" type="submit" value="Create" />
 </form>
対策
✓ 制御に絡む属性はきちんと保護する
✓ フォームからのリクエストで直で更新しない
✓ ARが提供している仕組みを利用する
 ✓ attr_protected, attr_accesible
対策
attr_protectedのサンプル
class Users < ActiveRecord::Base
  attr_protected :admin
end
         指定した属性は一括代入時には無視される

attr_accesibleのサンプル
class Users < ActiveRecord::Base
  attr_accesible :login, :name, :password
end
      指定した属性以外は一括代入時には無視される
重要なモデル属性を
 保護できているか
✓ 制御に絡む属性はきちんと保護する
✓ フォームからのリクエストで直で更新しない
✓ ARが提供している仕組みを利用する
 ✓ attr_protected, attr_accesible
 ✓ 開発当初はattr_protectedを使用し、開発
   が進み制御に絡む属性が増えてきたら
   attr_accesibleへ切り替えるのが吉
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目3



コントローラメソッド
が公開されていないか
コントローラメソッドが
   公開されていないか
app/controllers/users_controller.rb

class UsersController < ApplicationController
  # 外部に公開しているアクション
  def activate
    mark_as_activate if valid_request
  end

  # 具体的にアクティベート化を行う処理
  def mark_as_activate
    ...
 end            publicメソッドとして定義してしまっている
end
何が起きるか
✓ 内部処理が外部からアクションとして
 呼べてしまう
✓ ブラウザ等から容易に実行できてしまう
✓ 悪意がなくても踏んでしまう危険性が
 ある
✓ 一度でも呼ばれると、システムの整合性
 は保証できない
対策
✓ コントローラメソッドのアクセス制
 御をきちんと管理する
✓ アクションではないメソッドはpublic
 にしない
✓ アクセス制御の明示
 ✓ private, protected
対策
app/controllers/users_controller.rb


class UsersController < ApplicationController
  def activate
    mark_as_activate if valid_request
  end

  private
  def mark_as_activate
    ...
 end
end
コントローラメソッドが
 公開されていないか

✓ コントローラメソッドのアクセス制
 御をきちんと管理する
✓ アクションではないメソッドはpublic
 にしない
✓ アクセス制御の明示
 ✓ private, protected
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目4


   出力ページの
 エスケープ処理に
   漏れはないか
出力ページのエスケープ処理に
      漏れはないか
app/views/users/show.erb.rhtml

...
<p>
  <b>Name:<b>
  <%= @user.name %>
</p>
...

             hメソッドによる、特殊文字のHTMLエンティ
              ティとしてのエスケープ処理が漏れている
何が起きるか
✓ クロスサイト・スクリプティング
攻撃(XSS)
✓ 攻撃者が埋め込んだ任意のスクリプトが
 出力ページ内に挿入されてしまう
✓ ページの訪問者のCookie情報が盗み取られ
 る等、致命的な被害を引き起こす入り口
対策
✓ 出力ページのエスケープ処理について
 漏れがないことを確認する
✓ SafeERBプラグインを使用しエスケープ
 漏れを検出
✓ sanitizeメソッドを使用しホワイトリス
 ト形式で出力時にスクリプトを除去
対策
✓ SafeERB
✓   http://agilewebdevelopment.com/plugins/safe_erb

✓ taint機構を使ってエスケープ漏れを
 チェック
✓ エスケープ漏れがあると例外
    ✓ SQLiteから取り出した値はtaintedではない
     ので例外が出ないので注意→確認する場合は
     PostgresやMySQLで
対策
✓ sanitizeメソッド
 ✓ ホワイトリスト方式を使用し任意のタグ
  を除去
app/views/users/show.erb.rhtml

 ...
 <p>
   <b>Name:<b>
   <%= sanitaize(@user.name) %>
 </p>
 ...
出力ページのエスケープ処理に
 漏れはないか
✓ 出力ページのエスケープ処理について
 漏れがないことを確認する
✓ SafeERBプラグインを使用しエスケープ
 漏れを検出
✓ sanitizeメソッドを使用しホワイトリス
 ト形式で出力時にスクリプトを除去
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目5


  DBへ渡す入力の
 エスケープ処理に
   漏れはないか
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb




          ユーザ入力をそのままSQLへ変換してしまって
           いるためエスケープ処理が行われていない
DBへ渡す入力のエスケープ処理に
 漏れはないか

app/controllers/user_controller.rb




          ユーザ入力をそのままSQLへ変換してしまって
           いるためエスケープ処理が行われていない
何が起きるか
✓ SQLインジェクション

✓ サーバ上で実行されるSQLを攻撃者が
 制御可能になってしまう
✓ データベースを不正操作され致命的な被
 害を引き起こす
対策
✓ SQLの組み立てにはバインド変数を使
 用しSQLのメタ文字をエスケープする
✓ ?プレースホルダの使用して値を指定

✓ 名前付きバインド変数のハッシュを使用
対策
✓ プレースホルダの使用

User.find(:first,
         :conditions =>
         [ name = ? , params[:name]])



User.find(:all,
         :conditions =>
         [ category IN (?) ,[1, 2, 3]])
対策
✓ 名前付きバインド変数の使用

User.find(:first,
         :name => params[:name],
         :password => params[:password])



User.find(:first, :conditions =>
       [ name = :name , :name => params[:name]])
DBへ渡す入力のエスケープ処理に
漏れはないか

✓ SQLの組み立てにはバインド変数を使
 用しSQLのメタ文字をエスケープする
✓ ?プレースホルダの使用して値を指定

✓ 名前付きバインド変数のハッシュを使用
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェック項目7


 外部ページからの
不正なリクエストを
ガードできているか
外部からの不正なリクエストを
   ガードできているか
app/views/blog/edit.rhtml

<% form_for(@blog) do ¦f¦ %>
  ...
<% end %>

app/controllers/blogs_controller.rb

class BlogsController < ApplicationController
  ...
  def update
      ...                 リクエスト処理に対して
  end                    何もガードをかけていない
  ...
end
何が起きるか
✓ クロスサイトリクエストフォージ
(CSRF)
✓ 攻撃者の誘導により、ユーザが外部ペー
 ジから攻撃者の用意したリクエストを
 実行してしまう
対策
✓ リクエストの有効性を検証する
✓ Rails2.0からはデフォルトで対策の処理
 が入っている
✓ protect_from_forgery
 ✓ ApplicationControllerクラスで指定
 ✓ Railsの生成するフォームと対で検証用
  のトークンを持ち、それらを比較するこ
  とでリクエストの有効性を評価
対策
✓ protect_from_forgeryの使用

class ApplicationController < ActionController::Base
  protect_from_forgery
end



class BlogController < ApplicationController::Base
  protect_from_forgery :only => [:create,:update]
end
外部からの不正なリクエストを
 ガードできているか
✓ リクエストの有効性を検証する
✓ Rails2.0からはデフォルトで対策の処理
 が入っている
✓ protect_from_forgery
 ✓ ApplicationControllerクラスで指定
 ✓ Railsの生成するフォームと対で検証用
  のトークンを持ち、それらを比較するこ
  とでリクエストの有効性を評価
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
チェックリスト

1. 見せなくてよい情報を公開していないか

2. 重要なモデル属性を保護できているか

3. コントローラメソッドが公開されていないか

4. 出力ページのエスケープ処理に漏れはないか

5. DBへ渡す入力のエスケープ処理に漏れはないか

6. 外部ページからの不正なリクエストをガードできているか
今日のゴール

✓   Railsアプリがセキュアかどうかを
    確認するための、いくつかの基本的な
    チェック項目について知る
✓ それぞれのチェック項目を満たすため
    の作戦を知る
セキュリティについて
もう少し知りたくなったら

    OSC2008-do
    Ruby/Rails
    セキュリティハンズオン(仮)
    開催日:2008年6月28日(土)
     場所:さっぽろ産業振興センター
    参加費:無料
セキュリティ以外について
  知りたくなったら

    Railsレシピブック
    高橋征義, 諸橋恭介(著)
    発売日:2008年5月31日
    出版社:ソフトバンククリエイティブ
     価格:2940円(税込)
まとめ

✓   Railsは標準でさまざまなセキュリ
    ティ対策をサポートしている
✓ 重要なのはRailsによる対策のポイン
 トを理解すること
✓ 用法・用量を守って正しくお使い下
    さい
ご清聴
 ありがとう
ございました

Contenu connexe

En vedette

The postmethod condition
The postmethod conditionThe postmethod condition
The postmethod condition
Md Arman
 

En vedette (17)

CUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final ReportCUTGroup #8 - Waitbot Final Report
CUTGroup #8 - Waitbot Final Report
 
Saturation
SaturationSaturation
Saturation
 
Standard methods
Standard methodsStandard methods
Standard methods
 
Create entity from swagger in drupal8
Create entity from swagger in drupal8Create entity from swagger in drupal8
Create entity from swagger in drupal8
 
Tips For Success 3
Tips  For Success 3Tips  For Success 3
Tips For Success 3
 
iPass Wi-Fi Cost Index
iPass Wi-Fi Cost IndexiPass Wi-Fi Cost Index
iPass Wi-Fi Cost Index
 
Colors2
Colors2Colors2
Colors2
 
Colors in-english
Colors in-englishColors in-english
Colors in-english
 
ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)ILAP (held at the 3rd Digital Oilfield Summit)
ILAP (held at the 3rd Digital Oilfield Summit)
 
XML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO BeginnersXML Sitemap and Robots.TXT Guide for SEO Beginners
XML Sitemap and Robots.TXT Guide for SEO Beginners
 
Facts and Benefits of Family Planning
Facts and Benefits of Family PlanningFacts and Benefits of Family Planning
Facts and Benefits of Family Planning
 
The postmethod condition
The postmethod conditionThe postmethod condition
The postmethod condition
 
ブロケード FC ファブリックスイッチ オペレーション講座(後編)
ブロケード FC  ファブリックスイッチ オペレーション講座(後編)ブロケード FC  ファブリックスイッチ オペレーション講座(後編)
ブロケード FC ファブリックスイッチ オペレーション講座(後編)
 
Post Method In ELT
Post Method In ELTPost Method In ELT
Post Method In ELT
 
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
1018: ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
 
Fluid Saturation
Fluid SaturationFluid Saturation
Fluid Saturation
 
Post method pedagogy
Post method pedagogyPost method pedagogy
Post method pedagogy
 

Similaire à 20080521-Ruby-on-Rails-Security

PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
Yusuke Ando
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
Yukio NAGAO
 

Similaire à 20080521-Ruby-on-Rails-Security (20)

PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料Ruby on Rails 4.0 勉強会資料
Ruby on Rails 4.0 勉強会資料
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Haikara
HaikaraHaikara
Haikara
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
Laravelとテストについて
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
 
ROMAについて
ROMAについてROMAについて
ROMAについて
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
すぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTipsすぐできるWeb制作時のセキュリティTips
すぐできるWeb制作時のセキュリティTips
 
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Development
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 

Plus de Koji SHIMADA

20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitech
Koji SHIMADA
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
Koji SHIMADA
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public
Koji SHIMADA
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail
Koji SHIMADA
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned
Koji SHIMADA
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby
Koji SHIMADA
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo
Koji SHIMADA
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-Act
Koji SHIMADA
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive Programmer
Koji SHIMADA
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
Koji SHIMADA
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No Name
Koji SHIMADA
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
Koji SHIMADA
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Koji SHIMADA
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009do
Koji SHIMADA
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby
Koji SHIMADA
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo
Koji SHIMADA
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008
Koji SHIMADA
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
Koji SHIMADA
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon
Koji SHIMADA
 

Plus de Koji SHIMADA (20)

Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application Architecture
 
20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitech
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-Act
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive Programmer
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No Name
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009do
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon
 

Dernier

Dernier (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

20080521-Ruby-on-Rails-Security