SlideShare une entreprise Scribd logo
1  sur  53
実録!
Railsのはまりポイント10選
        2012/03/26
    第2回 渋谷Edge Rails勉強会
         藤田 武雄




                          Copyright © Drecom Co., Ltd.
自己紹介
• 藤田 武雄
• 株式会社ドリコム
• ソーシャルゲーム事業本部
• アプリケーションエンジニア
 • 最近は主に社内ライブラリの開発を
  担当


               Copyright © Drecom Co., Ltd.
今日の内容
• Railsを使用したソーシャルゲームの開
 発時にはまったポイントをご紹介

• 実際に社内であった事例です
• ほとんどRails3採用後の話


                    Copyright © Drecom Co., Ltd.
Case1
and/or



         Copyright © Drecom Co., Ltd.
はまり例
a = b or c
 • こういう意味にしたかった
    a = (b or c)
 • 実際の動きは
    (a = b) or c
   • bの値をaに代入し、それが偽であればc
     を評価する

                    Copyright © Drecom Co., Ltd.
演算子の優先順位
• and/orは優先順位が一番低い
• 対策1: 括弧をつける
  a = (b or c)

• 対策2: &&/¦¦を使う
  a = b || c



                     Copyright © Drecom Co., Ltd.
ちなみにRails本体は
• Contributing to Ruby on Rails
• 5.3 Follow the Coding Conventionsに
  は

 • Prefer &&/¦¦ over and/or
• と書かれている
• http://guides.rubyonrails.org/
  contributing_to_ruby_on_rails.html

                               Copyright © Drecom Co., Ltd.
Case2
scope



        Copyright © Drecom Co., Ltd.
はまり例
scope :started, where(‘start_at <= ?’, Time.now)

 • どういうことが起こりうるか
  • 開始時刻になってもキャンペーンがス
      タートしない

   • 設定した時刻にバナーが切り替わら
      ない



                                         Copyright © Drecom Co., Ltd.
なぜ?
• クラスがロードされた時点でwhereの
 中にあるTime.nowの評価が行われる

• 結果、アプリケーションサーバを起動
 した時間で固定されてしまう




                 Copyright © Drecom Co., Ltd.
lambdaを渡す
scope :started, lambda { where('start_at
<= ?', Time.now) }
 • lambdaの中身は都度評価される
 • edgeではwhereを直接書くやり方は
   deprecatedとなった

 • https://github.com/rails/rails/commit/
   0a12a5f8169685915cbb7bf4d0a7bb48
   2f7f2fd2


                                   Copyright © Drecom Co., Ltd.
Case3
クラスのインスタンス変数



            Copyright © Drecom Co., Ltd.
インスタンス変数の遅延
初期化
@foo ||= bar
 • 初期化の手間を省くためによく使われ
   る

 • barの実行結果をキャッシュする効果も
 • クラスのインスタンス変数では注意が
   必要



                 Copyright © Drecom Co., Ltd.
よくない例
class Baz
 def self.foo
   @foo ||= bar
 end
end
 • barがDBから取得した値だとDBを更新
   しても返り値が変化しない!


                   Copyright © Drecom Co., Ltd.
起こったこと
• データを追加したのに反映されない
• よくわからんからunicornを再起動
• うまくいった

• そんなこともありました

                  Copyright © Drecom Co., Ltd.
なぜ?
• 通常はオブジェクトのインスタンスの
 寿命は1リクエストの間だけ

• 一方、クラス自体はリクエストを返し
 た後も生き続ける

• クラスのインスタンス変数に入れる
  とずっと保持される



                 Copyright © Drecom Co., Ltd.
対策
• むやみにクラスのインスタンス変数に
 入れない

• 意味をわかっていてやるのであればOK



                Copyright © Drecom Co., Ltd.
Case4
textあふれ



          Copyright © Drecom Co., Ltd.
データ破損
• textカラムにJSONを格納していた
• ある日突然データが壊れた!




                  Copyright © Drecom Co., Ltd.
原因
• mysqlのtextは65535バイトまで
• それ以上のものを保存すると後ろが切
 れるが保存自体エラーにはならない

• 読み込むとJSONとしては壊れているの
 でパースエラー




                   Copyright © Drecom Co., Ltd.
対策
• その1: validates_length_ofを設定
• その2: 文字数を減らす
• その3: mediumtext(16MBまで)などに
 変更する

• どれぐらい増えるか見積もりしておけば
 はみ出ないように設計見直しできるはず

• AR::Store(YAML)にも気をつけよう
                       Copyright © Drecom Co., Ltd.
Case5
index名長さ制限



         Copyright © Drecom Co., Ltd.
index名の長さ
• 複数カラムにindexを張った時に長さ制
  限に引っかかった

• mysqlは64バイトまでしか使えない
index_テーブル名_on_カラム名_and_カラ
ム名_…




                     Copyright © Drecom Co., Ltd.
index名を短くする
• デフォルトを変更するモンキーパッチ
  をあてた

• テーブルごとにuniqueになればよいの
  でテーブル名不要
カラム名_and_カラム名_...




                    Copyright © Drecom Co., Ltd.
パッチ
module ActiveRecord
 module ConnectionAdapters
  module SchemaStatements
   def index_name(table_name, options)
    if Hash === options
      if options[:column]
        "#{Array.wrap(options[:column]) * '_and_'}"
      elsif options[:name]
        options[:name]
      else
        raise ArgumentError, "You must specify the index name"
      end
    else
      index_name(table_name, :column => options)
    end
   end
  end
 end
end
                                                           Copyright © Drecom Co., Ltd.
Case6
tinyint



          Copyright © Drecom Co., Ltd.
tinyintの扱いの罠
• アプリリリース前にDBAの協力の下、
 テーブル構成をチューニングした

 • int → tinyint
• するとアプリの動作がおかしくなった
• DBに入っている数値は変わってないの
 に取ってきた値が全然違う!



                 Copyright © Drecom Co., Ltd.
原因と対策
• ActiveRecordはtinyintのカラムを
 booleanとして扱う

• 対策: boolean以外ではtinyintを使わな
 い(smallintにするなど)




                        Copyright © Drecom Co., Ltd.
Case7
参照分散時のミス



       Copyright © Drecom Co., Ltd.
data_fabric
• 参照分散のためのplugin
• 利用者数が増え、masterだけでさばききれな
 くなったため導入

• action単位でaround_filterをかけて振り分け
 • slaveの情報を元にmaster側を更新しない
   ようにaction単位にした

• アクセスの多いマイページなどはslaveへ逃が
 す


                        Copyright © Drecom Co., Ltd.
事故発生!
• あるときレプリケーション遅延が起
 こってslaveの古い情報を元にmasterに
 更新がかかってしまった

• データ不整合発生!
• そんな実装はしていない認識だった
• 調査するとマイページのviewで呼び出
 しているhelperからupdateが…

                    Copyright © Drecom Co., Ltd.
対策
• helperからupdateしない!
• 参照振り分け用around_filterの外側に
 before_filterを設定し、update処理部
 分を移した




                     Copyright © Drecom Co., Ltd.
Case8
ランキング集計



          Copyright © Drecom Co., Ltd.
ランキング集計
• イベントランキングを毎時集計
• 一人ずつselectして順位をupdateする実装
 になっていた

• 参加ユーザ数が増えると集計時間がどんど
 ん長くなる

• 集計時間が30分を超えた時点で状況を検知
• 前月までは大丈夫だったのに…
                     Copyright © Drecom Co., Ltd.
対応前のサーバ負荷
• DBサーバのCPU使用率




                 Copyright © Drecom Co., Ltd.
対策
• 方針としてはtransaction数を減らす
• 裏で新規テーブルを作成して、1000件
  ずつbulk insert

• 全部入ったらrenameで入れ替え
• bulk insertにはactiverecord-import
  を使用



                            Copyright © Drecom Co., Ltd.
コード例
CREATE TABLE IF NOT EXISTS
tmp_scores LIKE scores;
TRUNCATE TABLE tmp_scores;
class TmpScore < ActiveRecord::Base; end
TmpScore.import([:user_id, :value, :rank],
scores)
RENAME TABLE scores TO scores_old,
tmp_scores TO scores;
DROP TABLE scores_old;
                                 Copyright © Drecom Co., Ltd.
対応後のサーバ負荷




            Copyright © Drecom Co., Ltd.
別の方法
• Redisのsorted setを使う
• リアルタイムにランキングを更新でき
 る

• 数万人規模でも大丈夫
• そのままでは同率順位を表現できない

                 Copyright © Drecom Co., Ltd.
Case9
double submit
 protection


            Copyright © Drecom Co., Ltd.
double submit protection

• 二重送信を検知してくれるplugin
• 二重送信を防ぎたいフォーム(orリンク)
  のあるページでsessionにtokenを保存
  し、パラメータにも同じ物をつける

• 次のページでは両者を付きあわせて、
  session内のtokenを無効にする



                     Copyright © Drecom Co., Ltd.
sessionの罠
• Railsのsessionの扱いではまった
• レスポンスを返すまでsessionの実体が
 更新されない!

• 処理に時間がかかるとすり抜けてしま
 う




                  Copyright © Drecom Co., Ltd.
処理の流れ
user             app          session      memcache
       request         load

                       write

                   ココが問題
   response                             write




                                           Copyright © Drecom Co., Ltd.
対策
• レスポンス返すまで待っていられない
 のでsessionを使うのをやめる

• pluginに手を入れてtokenをRedisに保
 存するように変更




                      Copyright © Drecom Co., Ltd.
Case10
daemon-spawn +
    resque


            Copyright © Drecom Co., Ltd.
daemon-spawn
• rubyプログラムをデーモン化するため
 のライブラリ

• resqueのworkerをデーモン化した時に
 問題が起こった




                   Copyright © Drecom Co., Ltd.
何が起こったか
• rails runnerで起動していた
• redisへのコネクションを張るpluginが
 あった

• forkするときにコネクションがコピー
 されて全workerで共有されてしまい
 redisへの接続が不安定に



                    Copyright © Drecom Co., Ltd.
対策
• rails runnerを使わなくした
• 自前で必要なものをrequireするスクリ
 プトに書き換え




                  Copyright © Drecom Co., Ltd.
もうひとつの問題
• stopした時に処理中のプロセスが落と
 される

• 処理中ステータスの変なデータが残っ
 てしまった




                 Copyright © Drecom Co., Ltd.
原因
• daemon-spawnのstop時のシグナルが
 デフォルトではTERM

• rescueはTERMを受け取ると処理中で
 も即終了してしまう




                    Copyright © Drecom Co., Ltd.
対策
• daemon-spawnの起動スクリプトで明
 示的にQUITを指定した

 • ドキュメントに載ってない
 • 実装を読んでみて指定できることがわ
  かった




                   Copyright © Drecom Co., Ltd.
まとめ
• 社内ではまった例をご紹介しました
• pluginではまったときは実装を追いか
 けることも必要




                  Copyright © Drecom Co., Ltd.
ご清聴ありがとうございました




            Copyright © Drecom Co., Ltd.

Contenu connexe

Tendances

Tendances (20)

ゼロから始めたE2Eテスト
ゼロから始めたE2Eテストゼロから始めたE2Eテスト
ゼロから始めたE2Eテスト
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
Yahoo! JAPANのデータパイプラインで起きた障害とチューニング - Apache Kafka Meetup Japan #5 -
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方
 
勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
 
「いい検索」を考える
「いい検索」を考える「いい検索」を考える
「いい検索」を考える
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
 
Babelfish Compatibility
Babelfish CompatibilityBabelfish Compatibility
Babelfish Compatibility
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
「機械学習:技術的負債の高利子クレジットカード」のまとめ
「機械学習:技術的負債の高利子クレジットカード」のまとめ「機械学習:技術的負債の高利子クレジットカード」のまとめ
「機械学習:技術的負債の高利子クレジットカード」のまとめ
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Pythonによる機械学習実験の管理
Pythonによる機械学習実験の管理Pythonによる機械学習実験の管理
Pythonによる機械学習実験の管理
 

En vedette

ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティスト
Drecom Co., Ltd.
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
Drecom Co., Ltd.
 
ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史
Drecom Co., Ltd.
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
 
MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用
CROOZ, inc.
 

En vedette (20)

高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティスト
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
エンジニア生存戦略
エンジニア生存戦略エンジニア生存戦略
エンジニア生存戦略
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 
ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史ソーシャルゲームスケールアウトの歴史
ソーシャルゲームスケールアウトの歴史
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
地獄Spec
地獄Spec地獄Spec
地獄Spec
 
ドリコム流。教育アプリにおけるゲーミフィケーションノウハウ
ドリコム流。教育アプリにおけるゲーミフィケーションノウハウドリコム流。教育アプリにおけるゲーミフィケーションノウハウ
ドリコム流。教育アプリにおけるゲーミフィケーションノウハウ
 
MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
 

Similaire à 実録!Railsのはまりポイント10選

drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
Mitsuki Kenichi
 
[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB
Amazon Web Services Japan
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
 
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
Kazuki Matsuda
 

Similaire à 実録!Railsのはまりポイント10選 (20)

Awsデータレイク事例祭り dmm.com YUKI SASITO.pdf
Awsデータレイク事例祭り dmm.com YUKI SASITO.pdfAwsデータレイク事例祭り dmm.com YUKI SASITO.pdf
Awsデータレイク事例祭り dmm.com YUKI SASITO.pdf
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
db tech showcase 東京 2014 - Couchbase Serverを用いた大規模データ収集基盤
db tech showcase 東京 2014 - Couchbase Serverを用いた大規模データ収集基盤db tech showcase 東京 2014 - Couchbase Serverを用いた大規模データ収集基盤
db tech showcase 東京 2014 - Couchbase Serverを用いた大規模データ収集基盤
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
 
Running Apache Spark on AWS
Running Apache Spark on AWSRunning Apache Spark on AWS
Running Apache Spark on AWS
 
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング #cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
#cwt2016 Cloudera Managerを用いた Hadoop のトラブルシューティング
 
[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
 
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 

Plus de Drecom Co., Ltd.

Plus de Drecom Co., Ltd. (17)

コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活
 
サービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfサービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdf
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
 
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
 
HTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発についてHTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発について
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜
 
AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜
 
rails-developers-meetup-day4
rails-developers-meetup-day4rails-developers-meetup-day4
rails-developers-meetup-day4
 
html5conf2018-sponsor-session
html5conf2018-sponsor-sessionhtml5conf2018-sponsor-session
html5conf2018-sponsor-session
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
 
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
 
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチLoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくし
 

実録!Railsのはまりポイント10選

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n