アーカイブ
-
javaのjsonライブラリのデコーダのベンチマーク
メジャーそうなライブラリのベンチマークを取ってみました。 jsonorg(twitter4j.internal 2.1.9 snapshot) jsonic gson jackson maven経由で取れる最新版で試してます(jsonicは無いので、1.2.5を突っ込んで動かしてます) 対象となるデータはTwitterのpublictimelineから拾ってきたデータ(20件の配列で中身連想配列) コードはgithubに置きました。 jsonorgはPOJOに変換とか便利な機能は付いてなかったです(json-libは付いてるみたいだけど)。 JSONエンコーダのインスタンスを作るものに関しては、一度生成した物を使いまわしています。 自分のマシンだと結構早い方だと思うので、sakuraのvpsで動かしました。 計測結果サマリ ライブラリ 1回目 1000のアベレージ jsonic 440 2.1835 gson 184 4.2541 jackson 313 0.7926 jsonorg 37 1.7359 @shin1ogawa経由で見つけた計測同様、jacksonがぶっちぎり。 jsonorgの1回目がやたら早いけど、内部実装がどうなってるかまでは追いかけて無いからgetHogeしたときに具体的な事してるとかだったらどうしよ・・・w 計測結果ベタ
-
mod_proxyでHTTP_HOSTの値がローカルアドレス(バランシング先に設定したURL)で困る件
よく巷で見かける設定だとこんな感じで これだと $_SERVER['HTTP_HOST'] が 192.168.0.10 になっちゃうので、場合によっては困っちゃう。 自作の場合は気をつければいいんだけど、他人のを動かすと結構はまる(xoops, wordpress)どーすっかなーと思ったらコレを追加するだけでよかった。
-
各種PHPのWebFramework上でhello worldベンチ(apcもあるよ)。
表題のまんま。 対象フレームワーク CodeIgniter 1.7.3 ZendFramework 1.11.1 CakePHP 1.3.6 KohanaPHP 3.0.8 って取り終えてからsymfony抜けてるのに気付いた・・・まぁいいや。 ソース とりあえずgithubにおいてみた https://github.com/withgod/php_framework_benchmark cakephpはやたらファイルが多いのでいったん保留。 git add したときに空のフォルダがすっ飛んでるのでそのままじゃ動かないかも。 実行環境 vmware上のdebian lenny(2.6.26-2-amd64) 多すぎても実際に動かすサーバとの差異が出そうなので、コア2個、メモリ2G(ホストはCorei7,Mem8G) PHP 5.2.16-0.dotdeb.0 Apache 2.2.9-10+lenny8 計測側は 別マシン(GigaBaseLan経由)のdebian sidからabでポチっと。 計測に使ったコードも一応晒すかと思ったんだけど、CakePHPがappsだけうまく切り離すのが面倒で良く解らなかったので止めた。 テンプレートは全部で使ってません。 #zfはzf createして出来たコードに iniでresources.frontController.noViewRenderer = 1 して Controllerで echo ‘helloworld’みたいな感じ。 計測方法 こんなシェル回すだけ、、、つって最初はかなり適当にやってたんだけど、値がおかしいので設定をもう少しつめました。 具体的には下記のような感じ。 apache 接続数が足りてなくてスループット出ないので変更、評価アプリが単純なのと相まって凄いスループット出てる・・・w 最初から全部400とか立ち上げるとSwapOut発生しまくりだったのでとりあえずこんな感じで。 再起動時にワーニング出るんだけど(gracefullだと駄目です、ちゃんとstop/start出来るコマンドで。してもWarningで照るんだけどね・・・)、ps axf | grep -c ‘apache2′するとちゃんと立ち上がってるみたいなので気にしない。 ulimit file descriptors [...]
-
debian unstable上のhudsonでnetwork unreachable
mavenのレポジトリにアクセス出来なくてプラグインが落ちてこなかったり、テスト中のソケット生成に失敗しまくる件について解決。 何故か手では動くんだけど・・・ の1を0に変更↓ 再起動できない場合は次も。
-
Services_Twitter_Uploaderを使って簡単Post
自作自演エントリをでっちあげてみる。 Basic認証が廃止されたせいで、Twitpicやyfrogへのポストが凄く面倒になってる人にお勧めのライブラリ。 javaだと twitter4j.media のお陰で簡単にアップロード出来るのに、お手軽なはずのphpだと出来無いじゃん!って事でt4j.mediaのリファクタ後の勢いに任せて作ってみました。 PHPからOAuth Echoを使って、画像投稿サイト(yfrogは動画も投稿出来るけど)に簡単にPHPから投稿出来るライブラリです。 対応サイトはこんな感じ imgly plixi twipple twitgoo twitpic yfrog mobypicture twipl posterous 使い方 Services_Twitter_Uploader から最新版を落としてきて、適当なフォルダに突っ込む。 必要なモジュール HTTP_OAuthとHTTP_Request2。 で入ってくれるはず。 コード
-
JSONObjectのgetLongの挙動がおかしい
せっかくあるんだし、って事で使わせて貰ってるんだけど動作がおかしいところを見つけたので、@yusukeyに共有するためにポスト。 こんな感じのコードを用意して 実行するとこんな感じに、末尾が1だった場合に落ちてる。 13857270119014400 13958500480716800 13958500480716800 13995264494796800 13117320041865216 13996071046881280 再現環境 windows 7 64bit jdk 1.6.0_23 twitter4j 2.1.4で発生して、2.1.8でも確認。 mac slでも確認。 追記 取りあえず問題点は解った、文字列(“”で囲ってる)に対して getLong してるせいで落ちてるみたい。 #全然追ってないけど、getDoubleとか呼び出されてる jsonがおかしいというか、getLongがおかしいというか・・・ getLongが失敗するか、適切に変換した上で返してほしいなあ、と思って試しに文字列を入れるとnot numberつってExceptionが出るので、コード書いた人的には数値文字列ならちゃんと値返すよ!って思って書いてるような気がする。 t4jでは問題が無い もしかしたら影響有るかも、ってことで@yusukeyに報告上げたけど、特に問題は無いらしい。 @withgod json.orgのライブラリの問題?ですね。Twitter4Jでは JSONObject#getLong() は使っていないです。 twitter4j.internal.util.ParseUtil#getLong(name,json) 使うといいかも。 15分前 YoruFukurouから withgod宛 http://twitter.com/yusukey/status/14317321774432256 こんな動作に対応するためにそういう実装になってるらしい。 @withgod そうですそうです。Twitter API は “100+” とか返してくることもあるので文字としていったんとっていたんだと思います。 6分前 YoruFukurouから withgod宛 http://twitter.com/yusukey/status/14321262973157377 そういやそんな動作あったなあ・・・
-
makegood を試す
俺は基本vim+zsh+screenなんだけど、他の要員の事も考えてよさげな makegoodを試してみる。 環境 win 7 64bit php 5.2.14, xdebug 2.1.0, phpunit 3.5.5 makegod 1.1.0(update site install) 動かしてみたのはこないだから書いてる Services_OAuthUploaderを動かしてみた 取りあえず何も考えずmakegodの設定をこうして全てのテスト実行 テスティングフレームワーク PHPUnit XML設定ファイル /Services_OAuthUploader/tests/phpunit.xml プリロードスクリプト 空 この状態で動かすと、include_pathの問題で次のエラー PHP executableでphp.ini指定してあって、include_pathも設定してるんだけどその設定は出てきてない・・・ eclipse経由で php -i とか出来たら確実なんだろうけど、PDT普段から使って無いので解らず。 仕方ないので makegod 側で prepare.php を次のように置いてmakegodの設定を変更 プリロードスクリプト /Services_OAuthUploader/tests/prepare.php この状態で実行すると次のエラー 何でこうなのかはよく解らんが、適当にgrepして Stagehand\TestRunner\TestRunnerCLIController.php に require_once(‘Stagehand/CLIController.php’);を付けて上記エラーは対応。 が、この状態で実行しても経過時間がひたすら過ぎてくだけの状態。 他の箇所ならともかく、 testFactory なので何が問題なんだろう・・・と思いつつ取りあえず phpunit.xml を外してみたら動いた。 このエントリを作者に投げてやり取りしたところ、問題点はproccessIsolationらしい。 @iteman: @withgod 結論としてはStagehand_TestRunnerがprocessIsolationをサポートしていないことが原因ですね。将来的にはMakeGoodからはprocessIsolationは常に無効化するつもりですが。代替手段は提供します。 http://twitter.com/iteman/status/12793420296757248
-
Services_OAuthUploader 作った
t4jへのpatchの投稿とか、そのまま勢いに任せてリファクタリングとかしてた関係で、oauth echoに対応したuploaderに妙に詳しくなったので、そのままの勢いで Services_OAuthUploader とか作ってみた。 まぁぶっちゃけt4jのmedia関係をそのままphpに移植したと言っても過言では無いんだけど、まぁその辺はご愛嬌。 とりあえずコード書いて、コメント書いて、テスト書いてみた、ってレベルなのでまだpearへの登録とかはしてない(ってか、仕方しらない) 対応サイトはこんな感じ。 imgly plixi twipple twitgoo twitpic yfrog 使い方はtest見てください、って事で・・・ 実装・テスト書くよりも、コメントだとかredmine,hudson周りの方が時間食ってたと思う(‘A` 取りあえず作ってみた、ってレベルなので今後の予定は未定。 何気なく振ってる1.0.0ってのはpear的にはβとかじゃなくて正式版扱いになると思うので、バージョンは明日にでも変えます。 取りあえず test 周りが結構適当なので、その辺を綺麗にしようかな・・・
-
intellij IDEAのフリーカーソルを止める
文末の改行より横に行けちゃうのがキモイ、ってつぶやいてたら@yusukey からmention貰ったのでこっちでも共有。 http://twitter.com/#!/yusukey/status/8894843900141568 @withgod フリーカーソルは”caret”で設定画面を検索すると設定項目が見つかりますよ。cursorだとみつからない(>_
-
intellij IDEA 9をwin7上で64bitで動かす
とある縁から intellij IDEA の ultimate license を貰えたので、ためしに使ってみることに。 インストール時に (x86)に入るので残念だなあ、って事で調べてみたら64bitで使う方法があったので共有。 ここからファイルを貰ってくる。 C:\Program Files (x86)\JetBrains\IntelliJ IDEA 9.0.4\bin に配置。 同じディレクトリにあるidea.exe.vmoptionsを idea64.exe.vmoptions とコピーして、値を増やす(64bit環境だと32bitと同じMaxPermSizeだと動かなかったです) 取り合えず俺はこんな感じ。 -Xms512m -Xmx2g -XX:MaxPermSize=1280m -ea 環境変数 IDEA_JDKに64bit JDK_HOME を追加。 後はidea64.exe を起動するだけでOK。 しかしIDEAは全然日本語の情報が無いのが困るな。
最近のコメント