タグ

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

  • 例えば 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 (移転しました)
  • さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料 - 川o・-・)<2nd life

    日行われた Shibuya.js の発表資料をアップしました。 さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料 View more presentations from hotchpotch JS のテスティングフレームワークのおおざっぱな説明や JavaScript テストにおける問題、それについての解決方法の一つ、CUI でのテスト、Envjs、エンドツーエンドテストにおける JS / Ajax のテスト、終わりにちらっと Phantomjs の話があります。 スライドの最後にあるように、やはりまだコレだ!という JS のテスティングフレームワークは存在しなく、今後 JS のテストは『僕らが書きたいテスト』をどれだけ簡単に書ける・書く手法が確立されるかによって流行廃りは決まってくるんじゃないかなぁ、と思ってます。そのうちの一つがスライ

    さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料 - 川o・-・)<2nd life
    lizy
    lizy 2011/03/09
    Gecko/Chromiumをベースとしたテスト用ヘッドレスブラウザとかないのかな。完全にスクリプトからアクセス可能な感じのもの
  • watchr - ファイルに変更があったら何かする / もしくはオサーンについて - 2nd life (移転しました)

    みなさま、いかがお過ごしでしょうか。以前人のことをオサーンオサーン云いまくっていたけどその当時のオサーン年齢のもうすぐ三十路になります secondlife ですこんばんわ。言葉のしっぺ返しが痛い今日この頃です。 さて、若かりし頃には合わなかったけど今使ってみるとしっくり来る物もありますね。その一つが AutoTest(ZenTest) です。ファイルが更新したらこける / SyntaxError になると解っていてもテストが走りFFF、自分のテストサイクルでテストが実行できないのが我慢できませんでしたが、久しぶりに使ってみるとそんなのは気にならず、いちいちテスト実行しなくてよくなってとても気持ちがよい感じです。 しかしながら ZenTest に含まれる AutoTest はレールが敷かれているテスト環境では利用しやすいけど、ちょっと道を踏み外すと結構テストを実行するのがめんどくさいです。

    watchr - ファイルに変更があったら何かする / もしくはオサーンについて - 2nd life (移転しました)
  • はてなモノリス開発話 - 川o・-・)<2nd life

    日、はてなモノリスという Android / iPhone3GS 向けの簡単にモノのバーコードをスキャンして投稿(Twitter にも同時投稿できます)というサービスを作りました。是非対応端末をお使いの方は利用してみてくださいね。概要だけきいてもうーん、という感じですが実際に使ってみると簡単にモノのバーコードが認識できお気楽に投稿できるのは楽しいです! http://mono.hatena.ne.jp/ 約一ヶ月ほど専念して開発したんですが、その話でも。 開発の経緯 最近僕ははてなブックマークのディレクターと、はてなAndroid 開発周りを担当しています。とあるミーティングで今後 Android をどう展開していくか、という話を id:jkondo, id:naoya, id:cho45 と僕で行いました。Android の開発おもしろーい、と個人的に強く思ってることもあり And

  • Google Chrome 拡張ことはじめ - 2nd life (移転しました)

    2009年12月8日*1(日時間では12/9朝)、拡張機能が有効(除くOSX)な Google Chrome ベータ版がリリースされました。同時にこつこつ開発を続けてた、はてなブックマーク Google Chrome 拡張ベータ版も公開したので、良かったら使ってみてください :D http://hatena.g.hatena.ne.jp/hatenabookmark/20091209/1260314705 というわけで、Google Chrome 拡張を作ってみたのですが、その時に参考にした資料やドキュメントをまとめてみました。 Google Chrome 拡張APIドキュメント http://code.google.com/chrome/extensions/docs.html的に上のURLで必要なAPIのドキュメントはまとめられています。またページ中央下の「Doc versio

    Google Chrome 拡張ことはじめ - 2nd life (移転しました)
  • デブサミ2009 はてなの開発戦略 - 2nd life (移転しました)

    先日のデブサミ2009で発表した、はてなの開発戦略 (すごい名前だ…) のプレゼン資料を公開します。前半は主に git の話で、後半ははてなブックマークリニューアルの、Perl 層の開発をどんな感じで行っていったか、という話です。 デブサミ2009 はてなの開発戦略View more presentations from hotchpotch. はてなの git では、中央のマスタレポジトリサーバがあって、そこから各自 clone / fetch して開発を行ってるので、完全に github のような分散のメリットを生かしているわけではありません。 しかし完全に分散を生かさずとも、git に移行したメリットは十分にあって、資料の中でもふれていますが、やはり一番便利なのが git のブランチ機能です。もうこれ無しでの開発は考えられないなぁ、ぐらいで、さくっとブランチ切って開発、ブランチの切り

    デブサミ2009 はてなの開発戦略 - 2nd life (移転しました)
  • vim の text-object をより便利に使えるプラグイン - surround.vim - 2nd life (移転しました)

    http://www.vim.org/scripts/script.php?script_id=1697 vim7 から追加された text-object は大変便利で、今や手放せなくなっています。その text-object をより便利に使えるプラグイン、surround.vim が便利すぎるので紹介します。 いままで、text-object では (以下では、コードの『*』の位置に現在カーソルがあると考えてください。) foo 'b*ar' bazの位置にカーソルがあるとき、i' でシングルクオーテーションの中身を選択できたり、a' でシングルクオート含む部分を選択できました。しかし『'』そのものを削除したり、置換したりはできなく、ちょっと不便でした。しかし、surround.vim では ds cs ys vs それぞれにコマンドを割り当てて、様々なことができるようになってます。たと

    vim の text-object をより便利に使えるプラグイン - surround.vim - 2nd life (移転しました)
    lizy
    lizy 2009/01/25
  • Rails が即死する REXML の DoS 脆弱性について - 2nd life (移転しました)

    http://www.ruby-lang.org/ja/news/2008/08/23/dos-vulnerability-in-rexml/ 先日公開された、REXML の脆弱性ですが、「あーそうなんだ、でもうちの Rails のサービスじゃ REXML でパースする処理なんて書いてないから別にいいや」とか思っている方、大変危険です。みんなパッチあてようよ! XML entity explosion attackと呼ばれる攻撃手法により、ユーザから与えられたXMLを解析するようなアプリケーションをサービス不能(DoS)状態にすることができます。大部分のRailsアプリケーションはこの攻撃に対して脆弱です。 REXMLのDoS脆弱性 と書いてある通り『大部分のRailsアプリケーションはこの攻撃に対して脆弱』なのです。たぶん今世の中にある Rails な Web サービスの9割が現状でも、

    Rails が即死する REXML の DoS 脆弱性について - 2nd life (移転しました)
  • AS3 アプリケーションの国際化 - 川o・-・)<2nd life

    という内容で、Coolin Moock さんを囲むの会で as3gettext の発表してきました。アウェイな発表が出来て良かったです(ぇー)。コリンさんは日語もうまく(ギザとかテラとか使えるレベル)、ジョークを交えながらトークしてくれて面白かったです。まだ普段あまり会えなかった ASer の方々と懇談会などでお話しできて楽しかったです。ありがとうございました。 AS3 アプリケーションの国際化 と時間があったらその他… 自己紹介 舘野祐一 id:secondlife はてなエンジニア ActionScript3 JavaScript Ruby Shibuya.js 開いてます ActionScript と自分 AS 歴 AS3 から Flash に入って約一年 開発環境 Flex2/Flex3 SDK + rascut + vim ActionScript と仕事 JS/AS のブリッ

    AS3 アプリケーションの国際化 - 川o・-・)<2nd life
  • RMagick の htmlhelp 作りました - 2nd life (移転しました)

    http://rails2u.com/htmlhelp/rmagick.zip RMagick は画像作成/加工にかなり充実した api をそろえており、かつ公式でドキュメントをきちんと提供してくれてすばらしいのですが、ドキュメントのメソッド一覧が見れなかったり、同じ class のインスタンスメソッドなのに数ページに分かれていたりするため、目的のメソッド/機能を探すのに数分、下手するともっとかかったりもします。 最近仕事やら趣味やらで RMagick を多用してきてるので、そもそもドキュメントの検索効率を上げないときついかなぁ、と思い始めてきたので htmlhelp を作りました。昔から作っておけば良かった…><。 RMagick のドキュメントはよくある rdoc 形式じゃない*1ので作るのに苦戦…、するかと思いきや、舞波が作ってくれた String#scrapi でさくさくと ind

    RMagick の htmlhelp 作りました - 2nd life (移転しました)
  • JSProxy - AS3 から意識せずに JS を操作 - 川o・-・)<2nd life

    http://github.com/hotchpotch/as3rails2u/tree/master/src/com/rails2u/bridge/JSProxy.as AS3 から HTML の特定要素の内容を取得したり JS のメソッドを引数つけて呼び出したり、値をセットしたりがめんどくさくなってきたので作ってみました。 JSProxy.proxy もしくは new JSProxy() で JSProxy のインスタンスを作り、適当にプロパティを呼び出していって(この時点ではスタックにどういう処理を行うかを書いてるだけ)、最後JSを当に叩いて値を取得やメソッド呼び出しを行いたいときは、プロパティの頭に $ をつけます。 // アラート関数を実行 JSProxy.proxy.$alert('foo'); // body の文を取得 var body:String = JSProxy

    JSProxy - AS3 から意識せずに JS を操作 - 川o・-・)<2nd life
  • ruby のスクレイピングツールキット scrAPI - 川o・-・)<2nd life

    http://blog.labnotes.org/category/scrapi/ rubyスクレイピングして web の情報を取得するのには、今まで正規表現か xpath でやってたので、わりと面倒でした。で、ふと scrAPI というスクレイピングツールキットを知ったのですが、これがかなり便利そう。 このツールキットを使うと、CSS3 なセレクタを記述することで、要素を取得することができます。たとえばとあるサイトのリンクを全部取得したければ、 require 'rubygems' require 'scrapi' require 'open-uri' require 'nkf' require 'pp' $KCODE = 'u' links = Scraper.define do process "a[href]", "urls[]"=>"@href" result :urls e

    ruby のスクレイピングツールキット scrAPI - 川o・-・)<2nd life
  • 川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 サーバで統一されたインターフェイスの利用する
  • LLDN - 2nd life (移転しました)

    今回もいろんな人と知り合いになれて良かったなぁ。こういうイベントはイベントのおもしろさももちろん大事だけど、いろんな出会いがあるのが個人的にはもっと大事。出会い系イベントですよ!!! んでLLDNのまとめ。まともなレビューは他の人が書くと思うので(ぇー sf いやーsfがいろんな意味で大注目だったね!うっかりはてなキーワードに登録しちゃったよ。sfで検索してもまったく引っかからないから、、、。んでいま家からダウンロードしてみようと思ったら404だったよ何かの意図が…。 あとid:naoya:20050828:1125201739について補足。Railsではデフォルトで、dispatcherがdispatch.cgi, dispatch.fcgiと二種類作られて、開発する側はdispatch.cgiを使えばcgiとして、dispatch.fcgiを使えばFastCGIとしてまったく意図せず

    LLDN - 2nd life (移転しました)
  • 川o・-・)<2nd life

    Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 p ご存じの人も多い Kernel#p メソッド。これを使うとオブジェクトの内容を見やすい形で出力してくれます。 >> p ({:foobar => :baz}) {:foobar=>:baz}Object#inspect を使うと、p で出力するときと同じ文字列を String として取得できます。 >> puts ({:foobar => :baz}).inspect {:foobar=>:baz}初心者の頃この p での出力を使う方法がわからなくて困った記憶が…。 pp pp というライブラリを使うと、p より、より見やすい形式で出力してくれます。たとえば >> a = Array.new(10) { {:foobar => :

    川o・-・)<2nd life
  • 川o・-・)<2nd life - MochiKit

    http://mochikit.com/ http://mochikit.com/screencasts/MochiKit_Intro-1.html 名前はご存じの人も多いと思われるJavaScriptライブラリMochiKit。自分もJavaScriptライブラリはprototype.js + scriptaculousで決まり、みたいな感じでMochiKitには全然注目してなかったのですが、screencast見ると凄さが解るとtypoさんのCLONに書いてあったので見たらスゲーと思いました。まだ見てない人は必見! prototype.jsがクラスベースのOOPみたいなことをしてライブラリを形成してるとしたら、MochiKitJavaScriptらしく良い意味でどんどんグローバルな関数を定義して使い勝手を向上させてます。また標準のexampleに入ってるinterpreterがブラウ

    川o・-・)<2nd life - MochiKit
  • 1