タグ

ブックマーク / secondlife.hatenablog.jp (15)

  • 例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)

    最近クックパッドでは、アプリケーションサーバの大半が Rails 2.3 から Rails 3 に置き換わったのですが*1、リリース前のベンチマークの時点ではあまりパフォーマンスが出ず四苦八苦していました。具体的には Rails 2.3 の時と比べ MRI 1.8.7 だとレスポンスタムが200%ぐらい遅い結果でした。Rails 3 になって実装が Merb core を取り入れ疎結合で綺麗になった反面、より多くのオブジェクトと・メモリを利用する様になった影響かと思います。 そこで Ruby インタプリタの変更*2を行い検証をしたところ MRI 1.8.7 (Rails 2.3と比べ) 約200%遅い MRI 1.8.7 -> Ruby Enterprise Edition 1.8.7 2011.03 (tcmalloc 無効) 約180%低速 MRI 1.8.7 -> Ruby Ente

    例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)
    ogijun
    ogijun 2011/10/07
    すばらし
  • さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)

    先日のももクロハッカソンで出会った wantedly を作ってる仲さんが と言ってたので、面白そうなので wantedly を速くしてみました。 wantedly ちなみにデータが数百万オーダーもなさそうなのに、どのページもログインすると2-5秒ぐらいかかっていたので、確実に速くできそうだなぁという感覚はやる前からありました。 アプリケーションサイドのチューニング 初心者*1にありがちな問題として SQL に適切にインデックス張ってない キャッシュすべき場所をキャッシュしていない 無駄なデータを引きすぎてる ことがよくあります。ので順に実装を見ていきました。 SQLに適切なインデックスを張ってない 張ってありました!びっくり!\(^o^)/ キャッシュすべき場所をキャッシュしていない Facebook API を利用したアプリケーションなんですが、ユーザのデータの取得を毎回馬鹿正直に HT

    さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)
    ogijun
    ogijun 2011/09/20
    ちょうためになる!!
  • はてな退職しました - 2nd life (移転しました)

    7/16 が最終出社日*1となり、はてな退職しました。はてなブックマークでのチュートリアル機能がはてなでの最後の仕事となりました。 はてなに入ってからを振り返ってみると2006年1月にはてなに15番目の社員として入社し、4年7ヶ月はてなのメンバーと一緒に働いてきました。当時はまだ誰も辞めていなかったため、過去はてなで働いた人すべて一緒に仕事をしてきたことになります。入社時はまだオフィスが東京にあり、毎日全員が朝会でディスカッション、時には数時間も熱く語るというエキサイティングな職場だったのがとても印象的でした。 当時は当に自由な環境でいろいろな事を試行錯誤していた日々でした。入社約2ヶ月で、会社のフレームワークに DI の概念を実装したころで Perl もう無理と投げ出して Perl を書かない仕事ばっかりやっていたのも今となっては良い(?)思い出です。今だったらあり得ないですねほんと

    はてな退職しました - 2nd life (移転しました)
    ogijun
    ogijun 2010/07/18
    反応遅れたけど、お疲れさまでした。引っ越しして落ち着いたら飲みましょう!
  • ブックマークレットサービス・Hatena::Let を作りました - 2nd life (移転しました)

    ブックマークレットをかんたんに作成・公開できるラボサービス、その名も Hatena::Let を作りました。 http://let.hatelabo.jp/ 未だにブックマークレットを作るときには、アドレスバーに javascritp:... を打ち込んで実行したり、 Firebug で実行して試しつつも外部の bookmarklet 化サービスを使って文字列削ったり、IE対策のため500ちょい文字を超えると gist にファイルを置きつつもおきまりの var script = document.createElement('scrit');... で JS のローダー書いたり、とやりたいことは同じなのにめんどくさい手順を毎回行っていたました。 ここらへんの手順を毎回繰り返すことなくさくっと作って公開したい!と思い id:cho45 と半年ぐらい前の開発合宿*1で作って眠らせていたのを、ち

    ブックマークレットサービス・Hatena::Let を作りました - 2nd life (移転しました)
    ogijun
    ogijun 2010/05/24
  • github に gem を公開する - 2nd life (移転しました)

    http://github.com/ 最近一部で話題沸騰の githubgithubRails で作られたアプリケーションでは、自分が知りうる限り一番の完成度と使いやすさを誇るんじゃないか、と思っています。 ソースコードツリーの見やすさ、(g)zipでくれ機能、各種 git の情報へのアクセスしやすさ、最初に git レポジトリを作ったとき表示されるチュートリアルと云った基的なことはもちろんですが、オープンソースプロジェクト・コミュニティを加速させるであろう、分散レポジトリを利用した様々な機能がすばらしいですね。 誰かが公開してるレポジトリを fork ボタン一つで自分のレポジトリにクローンし、いろいろ変更を加え、大に取り込んで欲しいなぁ、と思ったら pull request。大のコミッタは気に入れば pull で取り込めばよいし、もし気に入らなかったとしても、変更者がそのフ

    github に gem を公開する - 2nd life (移転しました)
  • 昔話 - 川o・-・)<2nd life

    昔話でもしようか。 自分は6年前はプログラミングが全くできなかった。プログラム書ける人は一部の天才だと思っていた。プログラミングができないことに劣等感を覚えた自分は、Linux が使えると格好いいんじゃと思い、Debian で自宅サーバを構築し、アンテナ*1や tDiary で日記サイトを運営したり始めた。 そんなとき、id:antipop と出会った*2。島に住んで、特にITもなにも関係ない仕事をしていた彼が、全く知識が無いところから勉強し Linux で自宅サーバを動かし、php + postgres で blog っぽいシステムを日々バージョンアップさせ、Button Maker for Japanese などのツールを作っていくのを blog 経由でリアルタイムで見ていて、プログラミングもやれば誰でもできるんじゃないかと感じ、自分の日記ツールが tDiary ということもあって、R

    昔話 - 川o・-・)<2nd life
    ogijun
    ogijun 2008/05/12
  • 日記の本文のメロディーを再生してみよう! - 2nd life (移転しました)

    日リリースされたMML記法ですが、実は適当な文章を入れるだけでもメロディーを再生しちゃうことが出来ます。ポイントは アルファベットがたくさんある方が良い ; とかが適当に文章にあると複数の音が鳴ったりする 一行目に t240 と入れておくとテンポが速くなって良いことが多い あたりでしょうか。さてみなさんも自分の日記文のメロディーを楽しんでみてはいかがでしょうか。ちなみに↓のは自分の昔の日記、vim7の新機能 Omni completionのメロディです。なんかおもしろーい。 t240 vim7の新機能 Omni completion これヤバス!eclipseなどでおなじみのインテリジェンスな補完を提供する機能みたい。詳しくは:h new-omni-completion で。今のところCとXHTMLCSSしか用意されてないんで、htmlで早速使ってみた。機能はこんな感じ。 after

    日記の本文のメロディーを再生してみよう! - 2nd life (移転しました)
    ogijun
    ogijun 2007/10/14
    やべこれちょうおもろい
  • 川o・-・)<2nd life - Visitors, a fast web log analyzer

    http://www.hping.org/visitors/ 高速なapache log analyzer。公式には No installation required, can process up to 150,000 lines of log entries per second in fast computers (20MB/s with my log files average length). と、一秒で150,000行さばけるとうたっている。うちの環境で実際に10万行ほどのログをわせたところ1秒ちょいと非常に高速にさばけた。出力ではhtml(サンプル)だけならずテキスト(サンプル)も選べる。 ログアナライザとして必要な機能は一通りそろってるし、Googleからの検索キーワードも表示できてGood。日語検索ワードだとeuc-jpやsjisやutf-8だったりするのでnkfをか

    川o・-・)<2nd life - Visitors, a fast web log analyzer
    ogijun
    ogijun 2007/10/08
  • 川o・-・)<2nd life - Rack を使って Web サーバで統一されたインターフェイスの利用する

    http://rack.rubyforge.org/ 先日登場した Rack というライブラリを使うと、Web サーバごとに同一のインターフェイスを利用できるようになります。通常、Ruby で Web アプリケーション を動作させるとき、cgi なのか、fcgi なのか、もしくは mongrel や webrick を使うのか、ということを考えなければなりません。cgi のみで動作決めうち、など良いのですが、ガワである Web アプリケーションフレームワークや一般に配布するアプリケーションなど、既存のフレームワークを用いずに作るときは、さまざまな動作環境でも動くように考慮しなくてはなりません。 たとえば既存のフレームワークである Rails や Camping はそれぞれ個別に cgi/fcgi/mongrel/webrick などの対応を行っています。しかし Rack で定義されているイ

    川o・-・)<2nd life - Rack を使って Web サーバで統一されたインターフェイスの利用する
    ogijun
    ogijun 2007/03/07
  • 川o・-・)<2nd life - RubyGems パッケージの作り方 - rubyforge 登録まで

    語の解説で RubyGems パッケージの作り方や rubyforge 登録までの一連の方法が書いてあるところを見かけたことがないため、エントリーにしてみます。なれると割と簡単です。 優しい RubyGems パッケージの作り方 newgem コマンドでのひな形作成 http://drnicwilliams.com/2006/10/11/generating-new-gems/ perl には module-starter など、CPAN モジュールのひな形を作ってくれる便利なユーティリティがありますが、gem でそれにあたるのが newgem というパッケージです。 使い方は簡単で、 # gem install newgemで newgem をインストールしてから newgem コマンドを実行するだけで以下のようにひな形を作ってくれます。 $ newgem packagename c

    川o・-・)<2nd life - RubyGems パッケージの作り方 - rubyforge 登録まで
    ogijun
    ogijun 2006/11/06
  • 川o・-・)<2nd life - Developer Enviroments Conference の発表資料

    9/8 に開かれた DEcon で windows enviroments and vim という内容で発表してきました。主に自分が使ってる windows の開発に便利なツールと、vim についてプレゼンしてきました。時間大幅に押してしまいましてスイマセン…。 また、スピーカと参加者のみなさん、お疲れ様でした。他の方の開発環境やポリシーが聴けて大変参考になりました。あとカンジマン(id:tnx)には毎度の事ながら様々な準備お疲れ様でした。 自分のプレゼンには自作のはてな記法つかったプレゼンツールを使ったのですが、よくよく考えるとそれをエントリーに貼り付ければいいじゃん!ということに気づいたので、以下に発表資料を貼り付けておきます。 windows environments and vim secondlife 発表内容 windows での環境 どんなツールがあると便利か vim vim

    川o・-・)<2nd life - Developer Enviroments Conference の発表資料
    ogijun
    ogijun 2006/09/09
  • 川o・-・)<2nd life - はてな注目キーワードをグラフ化する GreaseMonkey

    http://rails2u.com/misc/hatena_hotkeyword_graph.user.js はてなの注目キーワードではその日どんなキーワードを注目されているかが解って結構面白いです。視覚的に解るともっと面白いかもー、というわけで PlotKit + GreaseMonkey でサクッと作ってみました。 こんな感じで表示されます。1画面内のグラフに主だったキーワードが表示されるので、「あっ、そういえばこの日こんな事あったよー」というのが解って割と面白いと思います。もちろんジャンル事の表示などにも対応してます。また例えば先日の大停電の日のグラフですが このように、普段あまり使われてない「東電」というキーワードが一時的にめちゃくちゃ使われてる事が解って面白いです。 技術的なところでは、GreaseMonkey の開発ならヤツに丸投げまかせろ!でお馴染みな砂糖さん の外部ライブ

    川o・-・)<2nd life - はてな注目キーワードをグラフ化する GreaseMonkey
    ogijun
    ogijun 2006/08/18
  • 川o・-・)<2nd life - Rails 1.0 -> 1.1 の ActiveSupport 変更点まとめ

    Ruby on Rails 1.0 までは AWDwR を読んで使い方が解ってる人も多いと思うのですが、1.1 以降でどんな詳細な機能が加わったのかはあまり知られてません。 そのために ActiveSupport の CHANGELOG を淡々と読んでまとめてみました。間違ってる可能性もあるのでそういう箇所があったらご指摘下さい。 Add CachingTools::HashCaching to simplify the creation of nested, autofilling hashes. [Nicholas Seckar] CachingTools::HashCaching という Hash を利用したシンプルなキャッシュ機能のモジュールが加わりました。このモジュールを利用したいクラスで extend して hash_cache :methodnameとすると、そのメソッドが

    川o・-・)<2nd life - Rails 1.0 -> 1.1 の ActiveSupport 変更点まとめ
    ogijun
    ogijun 2006/05/28
    たんたん
  • prototype.js の Ajax.Responders.register - 2nd life (移転しました)

    最近のprototype.js(1.4_rc1かな?)から追加されたAjax.Responders.registerがかゆいところに手が届く感じで便利です。何をする物かと云うと、prototype.jsを使ってAjaxる場合、Ajax.Requestを通して通信を行います。そのAjax.Requestすべての通信開始時と終了時に任意のfunctionを登録できる機能です。早速 http://rails2u.com:8008/ (safariリンククリック注意!ブラウザがハングアップするという話) でRESTWikiに組み込んでみました。これで裏で非同期に通信を行ってるとき、ブラウザの右上に視覚的に'loading...'の文字が表示されます。 実装方法は非常に簡単で Ajax.Responders.register({ onCreate: function() { if($('busy')

    prototype.js の Ajax.Responders.register - 2nd life (移転しました)
    ogijun
    ogijun 2005/12/31
  • 川o・-・)<2nd life - zshでgem installの補完

    最近俺の中でRoR*1が熱い!っていうんで必然的にgemを使う機会が増えるわけで。んでgem install packageでパッケージをインストールするんだけどいちいち手で入力するのは面倒。apt-get install [tab]みたいな感で補完とかしたい!つんで、昔ながらのcompctlを使った方法で補完してみる。 ailas gem-update='gem update;gem list -r 2> /dev/null|egrep '\''^[a-zA-Z]'\'' |awk '\''{print }'\'' > ~/tmp/gem_list' compctl -k '(help install uninstall check build query list search update rDoc environment specification unpack)' \ -x 'c

    川o・-・)<2nd life - zshでgem installの補完
    ogijun
    ogijun 2005/05/27
    やらねば
  • 1