なんとなく日記

Everyday studying...

作りかけのもので作ってみました.

とりあえず購入日記再開. くるねこ 著者: くるねこ大和 出版日: 2008-01-15 出版社/メーカー: エンターブレイン カテゴリ: Book くるねこ 2 著者: くるねこ 大和 出版日: 2008-06-20 出版社/メーカー: エンターブレイン カテゴリ: Book くるねこ 3 著者: くるねこ大和 出版日: 2008-12-20 出版社/メーカー: エンターブレイン カテゴリ: Book 蟲師(10) (アフタヌーンKC) 著者: 漆原 友紀 出版日: 2008-11-21 出版社/メーカー: 講談社 カテゴリ: Book ピアノの森(16) (モーニング KC) 著者: 一色 まこと

MySQL ユーザカンファレンス 2008 1st Day

というわけで行ってきました.かなり大勢の人が来ていたので,かなり熱い戦いカンファレンスになりました.聞いてきたセッションのほとんどが英語だったので,もう少しヒアリングできればなと,少し後悔しています. かなり長いのですが,2日分のログを. ##基調講演 ビジネスボリュームはかなり大きくなっている. ##創設者 David の挨拶 History 1982 First database code 1995 MySQL code 1996 public release 2001 ‘Real’ Company start 2008 Sun acquires MySQL 特徴 Pluggable Storage Engines それぞれに特徴あるストレージエンジンを,状況に応じて使い分けることができる しかし Connector/Parser などは共通なので開発者に優しい Storage Engines External Archive InnoDB PBXT InfoBright automatic indexing NitroSecrity IBM DB2 Internal Falcon Maria MyISAM の上位番 Data Warehousing Appliance Kickfire たくさんのイノベーションを自由に利用できるのが MySQL の特徴

MySQL ユーザカンファレンス 2008 2nd Day

#[MySQL]MySQL ユーザカンファレンス 2008 2nd Day ##MySQL Performance Tuning #1 ###Introduction Through put どこに問題が 輻輳 Slow queries インデックスの問題 書き直したほうがいいんじゃないか Optimizerがどう動くのか Application Roundtrips ##The Slow Query Log 遅いクエリーを記録するログ 問題 どの部分が遅いのかがわからない INFORMATION_SCHEMA が出てくるときがある Details Execution TIme 実行された時間にをみる User Account 誰が実行しているのか Query_time 全実行時間 Lock_time ロック時間 SET timestamp= サーバで実行された timestamp 5.1 では テーブルに保存できる 再起動なしに On/Off ミリ秒まで可 全ログを記録可能 Configurations long-queries-not-using-indexes インデックス使わないクエリー min-examined-ro-limit 最小行数 mysqldumpslow Slow Query の統計をとることができる ログ中の統計 全実行時間 平均実行時間 ###EXPLAIN Basics

Rails 2.2の threadsafe と ConnectionPool を読んでみる#1

まず thread safe にする設定は config/environments/production.rb にある # Enable threaded mode # config.threadsafe! からなので,これを調べると railties/lib/initializer.rb の def threadsafe! self.cache_classes = true self.dependency_loading = false self.action_controller.allow_concurrency = true self end なので,actionpack/lib/action_controller/base.rb を見ると @@allow_concurrency = false cattr_accessor :allow_concurrency とあるだけ.ならばと rak ‘allow_concurrency’ とかやってみると activerecord/test/cases/pooled_connections_test.rb 79| def test_allow_concurrency_is_deprecated 80| assert_deprecated('ActiveRecord::Base.allow_concurrency') do 81| ActiveRecord::Base.allow_concurrency 83| assert_deprecated('ActiveRecord::Base.allow_concurrency=') do 84| ActiveRecord::Base.allow_concurrency = true activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb 181| # * <tt>:allow_concurrency</tt> - If true, use async query methods so Ruby threads don't deadlock; otherwise, use blocking query methods.

Rails 2.2の threadsafe と ConnectionPool を読んでみる#2

続き.actionpack/lib/action_controller/dispatcher.rb を見ると 5 | @@guard = Mutex.new 104 | def dispatch_unlocked 105 | begin 106 | run_callbacks :before_dispatch 107 | handle_request 108 | rescue Exception => exception 109 | failsafe_rescue exception 110 | ensure 111 | run_callbacks :after_dispatch, :enumerator => :reverse_each 112 | end 113 | end 114 | 115 | def dispatch 116 | if ActionController::Base.allow_concurrency 117 | dispatch_unlocked 118 | else 119 | @@guard.synchronize do 120 | dispatch_unlocked 121 | end 122 | end 123 | end と言うことなので,いままでは Mutex で共有ロックかけてるのがわかる.んで,dispatch_unlocked が呼び出されて,例えば development 環境であれば run_callbacks :before_dispatch から reload_application が実行されたりする.

Rails 2.2の threadsafe と ConnectionPool を読んでみる#3

次は ConnectionPool について.ひとまず関連部分を出すために % rak ‘ConnectionPool’ –ruby で activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb 19| # connection back in. ConnectionPool is completely thread-safe, and will 21| # as long as ConnectionPool's contract is correctly followed. It will also 24| # connection anyway, then ConnectionPool will wait until some other thread 57| class ConnectionPool 60| # Creates a new ConnectionPool object. +spec+ is a ConnectionSpecification 63| # this ConnectionPool. 65| # The default ConnectionPool maximum size is 5.

Rails 2.2の threadsafe と ConnectionPool を読んでみる#4

と言うことは,threadsafe! によっては ActionController 側では同期しなくなっただけ. ActiveRecord 側では,ConnectionPool によって接続を使いまわすようになっただけ. かな? 次は IRC で上がってた http://m.onkey.org/2008/10/23/thread-safety-for-your-rails を読んでみる.

Jpmobile で user_agent を設定してテストするには

get/post などの前に, @request.user_agent = "DoCoMo/2.0" としてユーザエージェントを設定する.@request.env[‘USER_AGENT’] では,TestRequest 生成時に上書きされた値が使われてしまうようだ.

Rails勉強会@東京第34回に行ってきた

日曜に参加してきました.そして初懇親会だったのですが,かなり楽しかったです.皆さんお疲れ様でした. ##まとめ gettextとi18nのどっちにすべきだろうか. Rails 2.2でとりあえず作っておいた方がいいかな. リファレンスマニュアルには秘密がたくさん.もっと読もう. ##セッション 前半 Rails 2.2 をほげる@松田さん Scaffoldの半歩先へ@Yuumi3 後半 plugin について語る リファレンスマニュアルを読む ==== ##Rails 2.2 をほげる Rails 2.2.0 がでた http://guides.rubyonrails.org/2_2_release_notes.html RC1 扱い 特徴 Internationalization 高速化 Internationalization 省略 RoR がマルチスレッド化 ETagサポート Connection Pooling Thread Safe なので Connection 使い回さないと大変なことに Memoizable インスタンス変数へキャッシュする def full_name @full_name ||= "#{first_name} #{last_name}" end --after-- def full_name "#{first_name} #{last_name}" end - @full_name へキャッシュされて,2回目以降に文字列結合は実行されない. - 更新するときは,full_name(true) で. PostgreSQL 使うと db:migrate で失敗しても Rollback するようになった. config.