SlideShare ist ein Scribd-Unternehmen logo
1 von 22
“mission critical”な
 システムでも使える
 Thread の作り方

            江森 真由美
プロフィール

 江森   真由美 (@emorima)

 (株)ケーシーエスキャロット
           ユニットマネージャ

 2004年からRubyを使用
“mission critical”
       な
 システムとは?
“mission “critical”

24時間365日、止まらないことを要求され
 る基幹業務、あるいは、そのような業務
 遂行のために使用されるコンピュータシ
 ステムのこと。(中略)
このような業務に使用されるシステムには、
 極めて高い信頼性や耐障害性、障害発生
 時に被害を最小に食い止める様々な機能、
 万全のサポート体制などが必要となる。
            (IT用語辞典 e-Wordsより)
Threadを作る上でのポイント

 メインスレッドでは、
起動したスレッドの状態を監視する。

 起動したスレッドの状態が異常の場合、
スレッドを再起動する。
def self.thread_main(idx)
  loop do
    # スレッド処理
  end
end


def self.main(argv)
  th_infos = Hash.new
  for i in 0…100
    th_infos[i] = Thread.new(i){|idx| thread_main(idx)}
  end

  check_threads(th_infos)
end
def self.check_threads(th_infos)
  loop do
    th_infos.each do |i, th|
      f_restart = false
      case th.status
        when “run”, “sleep”
        else
          f_restart = true
      end

      if f_restart
        th.kill
        th.join
        th_infos[i] =
              Thread.new(i) {|idx| thread_main(idx)}
      end
    end
    sleep 1
  end
end
でも、これでは不十分

 「万が一」
    を
考える必要がある
「万が一」
  Threadが
 刺さっても
   何とか
しないといけない
どうするか?


少し状況を変えて
考えてみましょう
順調です        順調です
                  (嘘だけど)



Aさん
  日報・週報
     Bさん
      遅れて
      ます

    提出
                  ???




Cさん         Dさん
                        管理者
Threadのループ内で
  情報更新(報告)

その内容で判断する
class ThreadWatch
  def initialize(timer)
    @update_time = nil
    @alive_timer = timer
    @mutex        = Mutex.new
  end
  def update
    @mutex.synchronize do
      @update_time = Time.now
    end
  end
  def valid?
    @mutex.synchronize do
      return false if !@update_time.nil? &&
              (Time.now - @update_time) > @alive_timer)
    end
    true
  end
end
def self.thread_main(idx, watch)
  loop do
    watch.update
    # スレッド処理
  end
end


def self.main(argv)
  th_infos = Hash.new
  for i in 0…100
    w = ThreadWatch.new(600)
    th = Thread.new(i, w) do |idx, watch|
      thread_main(idx, watch)
    end
    th_infos[i] = [th, w]
  end
  check_threads(th_infos)
end
def self.check_threads(th_infos)
  loop do
    th_infos.each do |i, info|
      th, w = info
      f_restart = false
      case th.status
        when “run”, “sleep”
          f_restart = true unless w.valid?
        else
          f_restart = true
      end
      if f_restart
        th.kill
        th.join
        th = Thread.new(i, w) do |idx, watch|
          thread_main(idx, watch)
        end
        th_infos[i] = [th, w]
      end
    end
テスト


  テストの話も
   しないと…
  Rubyだし。
テスト


  無限ループの
   テストって
 どうすれば???
無限ループのテスト

 loop do がある限り、処理が返ってこな
 いため、テスト確認ができない。




 ループ処理は、変数やメソッドでループ
  の実行判定をするようにする。
def self.thread_main(idx, watch)
  while run?
    watch.update
    # スレッド処理
  end
end

def self.run?
  true
end
describe OedoThread, “thread_main” do
  class OedoThread
    @@counter = 0
    def self.run?
      @@counter += 1
      return false if @@counter > 3
      true
    end
  end

  it “call 3 times” do
    m_watch = mock(“thread watch”)
    m_watch.should_receive(:update).exactly(3)
    OedoThread.thread_main(1, m_watch)
  end
end
まとめ

 “mission critical”なシステムでThreadを使
 う場合
  Threadのチェックは、Thread.statusの状態
   チェックだけではなく、Thread側での更新
   チェックも実装する。
  チェック結果が異常な場合には、Threadは再
   起動する。
  loop do を使うとテストが書けないため、ルー
   プを実行するかどうかを判定するメソッド(ま
   たは変数)を作成する。
ご静聴
ありがとう
ございました

Weitere ähnliche Inhalte

Was ist angesagt?

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用Ryuta Kamizono
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQLyoku0825
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7yoku0825
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技yoku0825
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術yoku0825
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plusyoku0825
 
あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話nullnilaki
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 

Was ist angesagt? (20)

Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用
 
Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQL
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
 
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
Lockfree Queue
Lockfree QueueLockfree Queue
Lockfree Queue
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 

Andere mochten auch

改善したほうがいい私の7つの開発習慣
改善したほうがいい私の7つの開発習慣改善したほうがいい私の7つの開発習慣
改善したほうがいい私の7つの開発習慣Noriaki Kadota
 
Ruby, lucky, harley
Ruby, lucky, harleyRuby, lucky, harley
Ruby, lucky, harleyelizabrary
 
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB
 
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版博宣 今村
 
35 Attitudes and Behaviours Ideal for Success in today's World of Work
35 Attitudes and Behaviours Ideal for Success in today's World of Work35 Attitudes and Behaviours Ideal for Success in today's World of Work
35 Attitudes and Behaviours Ideal for Success in today's World of WorkSharon Shakung
 
Arizona state university stp 231 homework help
Arizona state university stp 231 homework helpArizona state university stp 231 homework help
Arizona state university stp 231 homework helpleesa marteen
 
Breakfast Moment Insights Deliver Business Benefits
Breakfast Moment Insights Deliver Business BenefitsBreakfast Moment Insights Deliver Business Benefits
Breakfast Moment Insights Deliver Business BenefitsAnup Deshmukh
 
Autism and learning disorders
Autism and learning disordersAutism and learning disorders
Autism and learning disordersRichard Karera
 
Whitepaper - 4 Stages of Highly Successful Omnichannel Retailing
Whitepaper - 4 Stages of Highly Successful Omnichannel RetailingWhitepaper - 4 Stages of Highly Successful Omnichannel Retailing
Whitepaper - 4 Stages of Highly Successful Omnichannel RetailingExpedux Technologies
 
Plano de curso filos
Plano de curso filosPlano de curso filos
Plano de curso filoskelton68
 
R. Villano - Thesaurus satira-proverbi-dialoghi
  R. Villano - Thesaurus satira-proverbi-dialoghi  R. Villano - Thesaurus satira-proverbi-dialoghi
R. Villano - Thesaurus satira-proverbi-dialoghiRaimondo Villano
 

Andere mochten auch (14)

改善したほうがいい私の7つの開発習慣
改善したほうがいい私の7つの開発習慣改善したほうがいい私の7つの開発習慣
改善したほうがいい私の7つの開発習慣
 
Ruby, lucky, harley
Ruby, lucky, harleyRuby, lucky, harley
Ruby, lucky, harley
 
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
 
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版
本気で語り合おうオープンソースのドローン開発とIoTの事(2017 01-10) 公開版
 
35 Attitudes and Behaviours Ideal for Success in today's World of Work
35 Attitudes and Behaviours Ideal for Success in today's World of Work35 Attitudes and Behaviours Ideal for Success in today's World of Work
35 Attitudes and Behaviours Ideal for Success in today's World of Work
 
Arizona state university stp 231 homework help
Arizona state university stp 231 homework helpArizona state university stp 231 homework help
Arizona state university stp 231 homework help
 
Breakfast Moment Insights Deliver Business Benefits
Breakfast Moment Insights Deliver Business BenefitsBreakfast Moment Insights Deliver Business Benefits
Breakfast Moment Insights Deliver Business Benefits
 
Autism and learning disorders
Autism and learning disordersAutism and learning disorders
Autism and learning disorders
 
Verlosser&Bruid16
Verlosser&Bruid16Verlosser&Bruid16
Verlosser&Bruid16
 
Whitepaper - 4 Stages of Highly Successful Omnichannel Retailing
Whitepaper - 4 Stages of Highly Successful Omnichannel RetailingWhitepaper - 4 Stages of Highly Successful Omnichannel Retailing
Whitepaper - 4 Stages of Highly Successful Omnichannel Retailing
 
Plano de curso filos
Plano de curso filosPlano de curso filos
Plano de curso filos
 
Pleura introducere
Pleura introducerePleura introducere
Pleura introducere
 
R. Villano - Thesaurus satira-proverbi-dialoghi
  R. Villano - Thesaurus satira-proverbi-dialoghi  R. Villano - Thesaurus satira-proverbi-dialoghi
R. Villano - Thesaurus satira-proverbi-dialoghi
 
EasyVeg piatti pronti Vegani
EasyVeg piatti pronti VeganiEasyVeg piatti pronti Vegani
EasyVeg piatti pronti Vegani
 

Ähnlich wie 大江戸Ruby会議01 "mission critical"なシステムでも使えるThreadの作り方

TotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチTotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチRWSJapan
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理keki3
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会zakihaya
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。Satoshi Mimura
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101Nobuaki Oshiro
 
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会Koichi Sakata
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 sandai
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 sessionfreedom404
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1聡 中川
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動Shinichi Kozake
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolateskoichik
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 

Ähnlich wie 大江戸Ruby会議01 "mission critical"なシステムでも使えるThreadの作り方 (20)

TotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチTotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチ
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
 
AWS Lambdaを紐解く
AWS Lambdaを紐解くAWS Lambdaを紐解く
AWS Lambdaを紐解く
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 session
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 

Mehr von Mayumi Emori

大江戸Ruby会議08 くノ一 トーク
大江戸Ruby会議08 くノ一 トーク大江戸Ruby会議08 くノ一 トーク
大江戸Ruby会議08 くノ一 トークMayumi Emori
 
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話Mayumi Emori
 
20150328 humansociria
20150328 humansociria20150328 humansociria
20150328 humansociriaMayumi Emori
 
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~Mayumi Emori
 
Rakuten Technology Conference 2013 Lightning Talks
Rakuten Technology Conference 2013 Lightning TalksRakuten Technology Conference 2013 Lightning Talks
Rakuten Technology Conference 2013 Lightning TalksMayumi Emori
 
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについてRubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについてMayumi Emori
 

Mehr von Mayumi Emori (6)

大江戸Ruby会議08 くノ一 トーク
大江戸Ruby会議08 くノ一 トーク大江戸Ruby会議08 くノ一 トーク
大江戸Ruby会議08 くノ一 トーク
 
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話
Rails Girlsのお話や、初めての方向けのコミュニティについてなどお話
 
20150328 humansociria
20150328 humansociria20150328 humansociria
20150328 humansociria
 
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~
Girl MeetS Rails 世界は変わる ~Railsと出会ったGirlsの物語~
 
Rakuten Technology Conference 2013 Lightning Talks
Rakuten Technology Conference 2013 Lightning TalksRakuten Technology Conference 2013 Lightning Talks
Rakuten Technology Conference 2013 Lightning Talks
 
Rubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについてRubyで作った"mission critical"システムについて
Rubyで作った"mission critical"システムについて
 

大江戸Ruby会議01 "mission critical"なシステムでも使えるThreadの作り方