タグ

2011年12月7日のブックマーク (12件)

  • Rackのミドルウェアをconfig.ruやapplication.rbじゃないところでuseする - 昼メシ物語

    RackのMiddlewareを書いたらどこかでuseしなくちゃいけないんだけど、どこでuseするのかという話になる。 Rails3だと、 config.ru config/application.rb その他(ただし Application.initialize! より前) っていうパターンがある。 config.ruとかapplication.rbで書いておくのがいいんだと思うけど、config/initializers/ 以下に置いた初期化スクリプトの中でuseしちゃいたい、そんな日もある。 こう書く。 # config/initializers/my_awesome_rack_middleware.rb ::Rails.application.config.middleware.use MyAwesomeRackMiddleware こんなところでuseする利点としては、 appl

    Rackのミドルウェアをconfig.ruやapplication.rbじゃないところでuseする - 昼メシ物語
    kamipo
    kamipo 2011/12/07
  • ベンチどうしますか? - Articles Advent Calendar 2011 Dbix

    どうもnekokakです。 みなさんDBIを使っているコードのベンチマークってどうしてますか? SQLのチューニングであればいいのですが、ロジックのベンチマークを取りたい時に 実際にdatabaseにクエリなげてしまうと、ネットワーク通信等が発生し、細かいロジックのチューニングの邪魔になることがあります。 たとえば私はTengのチューニングをするときに、バックエンドのdatabase性能なんてどうでもよくて、 プログラムの性能をみたいわけです。 そんなときに便利なのがTest::Mock::Guardです。(え Testというnamespaceにありますが、やっていることはコードをさしかえることなので これをつかって実際にデータベースにクエリなげるところとかをフガフガします。 例えばTengのベンチマークを取る時に試したコードは以下のようなものです。 #! /usr/bin/perl us

    ベンチどうしますか? - Articles Advent Calendar 2011 Dbix
    kamipo
    kamipo 2011/12/07
  • Q4Mを簡単に導入する方法 - MySQL Casual Advent Calendar 2011 - blog.nomadscafe.jp

    xaicronとネタが被ったようだけど気にしない>< livedoorでOperations EngineerやってるkazeburoだYo。最近livedoorからオープンソース化された3億ファイルを管理してるオブジェクトストレージ「STF」でも使ってるMessage QueueのQ4Mのインストール方法を紹介するよ! カジュアルだからインストールだけ! 知ってる人も多いと思うけどQ4Mはkazuhoさんによって開発されたMySQLのストレージエンジンとして実装されてるMessage Queue。livedoorではもちろん、mixiやDeNAをはじめソーシャルゲーム各社でも使われている。 Message Queueの説明や使い方はDIS_COMMENTでテーブルスペースフルの神様が書いてるので参考になるね! Perl Hackers Hub 第10回 ジョブキューで後回し大作戦―Th

  • にひりずむ::しんぷる - Mac OSX に MySQL と Q4M と Handler Socket を一発で入れるスクリプト

    こんにちは! MySQL Casual Advent Calendar の三日目がやって参りました。皆様いかがお過ごしでしょうか。僕は例年通り、クリスマスをどうやってなくすかに頭を悩ませています。 さて、自分は MySQL のこととかあんまりよくわからないんですが、仕事で Q4M とか HandlerSocket とか使う機会があります。 更に言うと、手元の Mac の環境でそれらを手軽に使いたいので、簡単にセットアップが出来ると嬉しいですね。 というわけで、一発で MySQL と Q4M と HandlerSocket のセットアップが出来ちゃうシェルスクリプトを書きました!大変カジュアルですね!! 前提条件として、Xcode と homebrew は入っているものとします。 $ zsh -c "$(curl -fsSL https://raw.github.com/gist/14264

  • Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami

    この記事は http://atnd.org/events/21910 のために書かれたものです。 一つ前の5日目は @sora_h さんの钱柜娱乐_钱柜娱乐平台_钱柜娱乐777(唯一)官方网站でした。明日は、 @master_q さんの予定です。 nginx の内部の仕組みやモジュールの作り方について簡単に紹介してみます。 最近 nginx のコードを読んでハックを試みました。 nginx のコードについてはほとんどドキュメントがなく、日語でも見かけなかったため(もし書いている人がいたらすみません)、後から続く人にとって多少でも参考になれるようメモをまとめました。(2011/12/06 デバッグについて少し追記) 全部読みきったわけではないので、コードを読む上でのとりかかりぐらいの情報です。もし、間違いがあれば教えてください。 このメモは stable version である Nginx

    Nginx Inside Memo (カーネル/VM Advent Calendar) - 技術日記@kiwanami
    kamipo
    kamipo 2011/12/07
  • デバッグ力: よく知らないプログラムの直し方 - 2011-12-06 - ククログ

    クリアコードではMozilla製品やRuby関連の開発だけではなく、広くフリーソフトウェアのサポートもしています。もちろん、サポート対象のソフトウェアの多くは私達が開発したものではありません。しかし、それらのソフトウェアに問題があった場合は調査し、必要であれば修正しています。 このようなサポートが提供できるのは、もともと、私達がフリーソフトウェアを利用したり開発したりしているときに日常的に問題の調査・修正をしていたからです。ソフトウェアを利用していると、問題に遭遇することはよくあることです。そのソフトウェアがフリーソフトウェアの場合は、開発者に問題を報告し、可能ならパッチを添えます。このとき、そのソフトウェアの内容を完全に把握していることはほとんどありません。しかし、それでも修正することができます。 それはどうしてでしょうか?今まではどのようにやっているのかを自分達でもうまく説明できなかっ

    デバッグ力: よく知らないプログラムの直し方 - 2011-12-06 - ククログ
    kamipo
    kamipo 2011/12/07
  • Webサーバログ転送・ストリーム処理系私案 - たごもりすメモ

    HTTPアクセスログをHiveが読める書式への変換やその他必要なデータ変換などストリーム処理で行いつつ転送して最終的にHDFSに時間ごとに書き込むぜー、というシステムを作ってる途中なんだけど、だいたい部品が揃いつつあるところでいったんまとめて書き出してみて見落としがないかどうか考えてみるテスト。 実在のシステムとは異なる可能性があるので(特に後日これを読む人は)あまり真に受けないほうがよいです。あと解析処理自体はHadoop上でHiveでやるのが大前提で、そこにデータをもっていくまでがここに書く話です。 (12/1 考えた末、構成を変えることにしたのでエントリ後半に追記した。) 前提システム 既にscribeを使用したログ収集・配送・保管系がある。各Webサーバは scribeline を使用してログをストリーム転送する。 scribelineのprimaryサーバとして配送用サーバ、se

    Webサーバログ転送・ストリーム処理系私案 - たごもりすメモ
  • SYN ACKが返ってこない太郎

    すげ、こまったお。 LBの配下に、WEBサーバ(apache)を複数台置いて画像を配信してたら MAC(OS X10.8.6)、ubuntu(11.04)で画像が見れたり、見れなかったり。 状況kwsk ・LBの振分ルールはラウンドロビン。 ・LBからWEBサーバに対しては、SNATしてる。 ・WEBサーバは常時2000コネクションくらい張っているんだけど 接続がまったくない状態でも同じ現象が発生する。 ・逆にWEBサーバが1台やら2台だと再現しない。 ・上記端末から、画像取得ができない(WindowsXP、Vista、7)はさくさくいける。 ・ブラウザ依存じゃなかった(Firefox、Opera、Safari、Choromeでもだめ) ・IPV6はONでもOFFでもでる。 ・Wiresharkでキャプチャしたら、SYN+ACKが返ってこない・SYNのリトライたくさん。 原因は・・・ ・サ

  • What's new in Edge Rails: EXPLAIN

    The result of that method call is a string that carefully imitates the output of database shells. For example, under MySQL you get something similar to EXPLAIN for: SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `users`.`id` = 1 +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+ | id | select_type | tabl

    What's new in Edge Rails: EXPLAIN
    kamipo
    kamipo 2011/12/07
    これはイケてる
  • レプリケーションが追いつかないときに試すこと - Hatak::Techlog

    MySQL Casual Advent Calendar 2011” 7 日目を担当させていただく、hatak (@hisashi) です。 普段はモバイルゲームのインフラをメインにみているのですが、今回はそんな業務で経験したことを基に記事を書かせていただきます。 カジュアルすぎる内容かもしれませんが、お付き合いいただければと思います。 MySQL のレプリケーション MySQL のレプリケーションは、安定稼働やバックアップ、負荷分散などの目的に利用できる優れた機能です。 bin-log (バイナリログ) を利用して Master サーバから Slave サーバに更新を伝播させ、データの複製を行います。Slave サーバでは、2 つのスレッドが動作しています。 IO_THREAD – Master から送られてきたデータを受け取り、relay-log (リレーログ) として書き出す SQ

    kamipo
    kamipo 2011/12/07
    innodb_flush_log_at_trx_commitオンラインで変更できるの知らんかった…
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • MySQL/レコードロック - PukiWiki

    SELECT ... FOR UPDATE を使う方法 † SELECT文の末尾にFOR UPDATEをつけることで、選択対照となる行のみをロックします。この方法は他のデータベースでもサポートしているものが多い互換性の高いものです。 また、MySQLのInnoDBストレージエンジンでは、ロックエスカレーション(行レベルロックが多発した際に、ページロック、テーブルロックなどに粒度が上がってしまう現象)は発生しない実装となっています。 一方、デメリットとしては下記の点があります。 トランザクションの中でのみ利用可能です。つまり、トランザクションをサポートしたストレージエンジンによるテーブルでなければなりません。 既に該当の行にロックがかかっている状態で、同じ行に対してSELECT ... FOR UPDATEを実行すると、後発の処理は先発のロックが解放されるか、タイムアウトするまで待ち続けるこ

    kamipo
    kamipo 2011/12/07