サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
d.hatena.ne.jp/kstn
しっかり時間を作って取り組んでみたいことが増えてきたので、4/25 の定時株主総会をもって KBMJ の取締役 CTO を退任させていただきました。今後は独立してエンジニア兼クッキー屋(妻と一緒に始めました!)として活動していく予定です。エンジニアとしてはある程度フリーで活動しつつ、KBMJ でも技術顧問として今後もサポートさせていただくつもりですのでよろしくお願いいたします。
PocketGuitar のダウンロード数のここ1週間くらいのデータが出てきたので国別のダウンロード数の割合を計算してみました。半分以上アメリカですが、まあ iPhone が売れてるのもほとんどアメリカだと思うのでそんなもんかな。リアルサッカー2009とかはヨーロッパのほうが多かったりするのかもしれませんね。あとはヨーロッパの各言語にローカライズするともうちょっと変わるのかも。 順位 国 割合% 累計% 1 United States 58.31 58.31 2 Great Britain (UK) 10.77 69.08 3 Germany 5.85 74.93 4 Japan 5.54 80.48 5 France 3.73 84.21 6 Australia 3.37 87.58 7 Canada 2.23 89.82 8 Italy 2.04 91.85 9 Netherlands
iPhone アプリのダウンロード数を集計してくれるアプリがいろいろあるそうです。http://www.sonasphere.com/blog/?p=964ただ、プログラマとしてはやはりマウスでカチカチして結果を見るよりは Terminal 上で集計して、あとでいろいろ再利用できるテキストファイルとして出力したいものです。というわけで、これまで PocketGuitar のダウンロード数を集計するのに使っている簡単なスクリプトを github に置いてみました。1日ごとのダウンロード数と国別の割合の集計ができます。http://github.com/kasatani/iphone-stats/tree/masterただし、まだ1つしかアプリを公開していないので複数のアプリに対応してませんので、適当に改良しちゃってください・・オプションでアプリケーション名を渡すとフィルタしてくれるようなのが
ぼちぼち iPhone 開発ネタも書いていこうかと。浮動小数点演算をバリバリ行うようなコードではコンパイラのオプションで Compile for Thumb (-mthumb) を無効にすると速くなるらしいので、実際どんなもんだろうと思ってベンチマークを取ってみました。ソースはこんな感じで、float と int のかけ算の処理をループさせたときの実行時間を測定しています。 #define CYCLES 100000000 void fp_test() { float a = 0.0000001f; float b = 1.0000001f; CFAbsoluteTime t1 = CFAbsoluteTimeGetCurrent(); for (int i = CYCLES; i >= 0; i--) { a = a * b; } CFAbsoluteTime t2 = CFAbsolu
PocketGuitar 1.0 がようやく App Store で公開されました!結局提出してから4週間近くかかりましたね。http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=287965124&mt=8これは 1.1 beta を試してくれた方の映像ですが、なかなかこんなにうまくは弾けないです。
サイクルコンピュータってすごく単純な仕組みだけど、iPod touch / iPhone で UI を作っていろいろセンサーをくっつけたらもっと楽しいんじゃないか?と思って、実験的に作ってみました。で、ちょうど id:akio0911 に ecogeek conference に誘われたので、エコといえば自転車だろということで一応動く形にして発表してきました。反射して見にくいですね。ごめんなさい。仕組みはこんな感じです。一般的なサイクルコンピュータではホイールに磁石が付いていて、それとリードスイッチという、磁石を近づけると on になるスイッチを組み合わせて、車輪の回転を検知することができます。これを使って距離や速度が出せるわけですが、今回はこれを Gainer のデジタル入力につないで、iPod touch 側のソフトウェアで計算を行っています。また、ついでに磁気センサもつなぐことで方位
http://d.hatena.ne.jp/kstn/20080306/1204815042 の続き。先日 Mountain View の Googleplex に Selenium (Core/RC/Grid/IDE + WebDriver) の開発者で集まってきました。というわけでリリースはその成果のひとつです。本当はこのときにリリースできれば良かったんですが、なかなかそううまくはいかないですね。Grid だけはちゃんと 1.0 をリリースしていましたが :)とはいえ、集まれただけでもいろいろ議論できてよかったです。さらに、http://google-opensource.blogspot.com/2008/02/selenium-users-event-coming-up.html で告知されていたように、ユーザを招待して Lightning Talks などもやってきました。動画も
iPod touch を jailbreak して以来、なんか楽器っぽいものを作ってみたいなーと思っていて、マルチタッチの実験も兼ねてギターを実装してみました。画面が狭くて正確に押さえるのが難しい上、ある程度の遅延は起こるので速弾きはちょっと無理っぽいですが、ゆっくり鳴らす分には一応使えます。ちなみに iPod touch のマルチタッチは5本まで指を認識するみたいです。jailbreak した iPod touch / iPhone をお持ちの方は Installer の Sources に http://podmap.net/apps を追加して、Toys カテゴリから PocketGuitar を選択するとインストールできます。iPod touch 1.1.1 で動作確認しています。1.1.2 とか iPhone では試していないので試した方は動くかどうか教えてもらえるとうれしいです
少し前から Gmail の容量が急激に増えだして、ログインページの JavaScript のソースをもとに来年には 6GB になるとか言われています。そろそろ足りなくなりそうだったので助かった・・http://googlejapan.blogspot.com/2007/10/gmail.htmlhttp://www.atmarkit.co.jp/news/200710/15/gmail.htmlで、実際その通りに増えているのかとか、自分の使用量がどのくらい変わっているかを見てみたかったので、容量のデータを蓄積してグラフを表示する Greasemonkey の user script を作ってみました。http://userscripts.org/scripts/show/131731日ごとデータを蓄積するので、インストールしてからそれなりのグラフが表示されるまで気長にお待ちください。どうぞ
java-ja いってきましたー。ライトニングトークといってもだいたいみんな5分オーバー。とはいえちょっと gdgd な感じも java-ja ぽくてよかったです。個人的には携帯プログラミングが衝撃でした。僕は iPod touch HACKS と題して発表しましたが、別にネイティブアプリが作れるわけではないので、iPod touch でドラッグしたりつまんだりする操作で無理矢理 Google Maps を操作できるサイトを作ってみましたよという話です。プレゼンの資料はこちら。Safari 3 推奨です。iPod touch で見るときは横向きにするとちょうど収まります。他のブラウザでも一応読めるはず。http://podmap.net/java-ja/世界初?の iPod touch プレゼンということでこんな感じに無理矢理 webcam で映しました。カメラを通してるので映像は汚いけど
hotentry や注目エントリーで引用されたテキストを tumblr に書き込む bot を作ってみた。http://hatebu.tumblr.com/id:keita_yamaguchi さんの ruby-tumblr を使わせていただきました。
■[Rails] SafeRecord 11:37 今頃気づいたのですが、先日開催された Web アプリケーションセキュリティフォーラムで、NaCl の前田さんが SafeRecord というプラグインを発表していたのですね。 http://shugo.net/jit/20070705.html#p01 (Mac の Preview では何故か PDF の文字が読めなかったので RD のほうを読みました。) 拙作 Safe ERB が view で文字列のエスケープを忘れると例外が発生するのと同様、SafeRecord では以下のようにパラメータを直接 SQL に渡すと例外が発生して SQL インジェクションを防げるようになっています。すばらしい。 post = Post.find(:first, :conditions => "title = '#{params[:title]}'")
今年も参加してきたので感想とか。IRC の画面を流してたのは楽しかったマスコット駆動開発Dave Thomas の基調講演ではスタンディングオベーション。本当に Ruby とそのコミュニティが好きなのが伝わってきた。別に Ruby に限らずオープンソースコミュニティがどうあるべきかについて考えさせられる。最初の質問に対して、Rails のコミュニティは3週間前まで好きじゃなかったけど RailsConf で変わったというのがまた感動的RejectKaigi すばらしい。去年は半分くらい Rails の話だった気がするけど今年はほとんどなし。RejectKaigi でかくたにさんが言っていた RailsKaigi があってもいいなー。というわけで今回も楽しませていただきました。スタッフやスピーカのみなさま、お疲れさまでした。
JS Commander 0.1.0 をリリースしました。mswin32 と JRuby でそれなりに動くようになった他、Stomp を使って他の言語からも操作できるようになりました。インストールjscmd を gem install または gem update でインストールまたはアップデートしたあと、mswin32 では eventmachine-win32 と win32-process を gem install してください。必須ではないですが UNIX でも gem install eventmachine しておくと以下の Stomp サーバが使えるようになって便利です。Stomp を使った通信JS Commander は基本的にはブラウザと JavaScript を実行させるクライアントの間でメッセージをやり取りしているだけなので、メッセージングサーバを使うと色々なプログ
昨日公開した JS Commander を使うと、今 PC で見ているページを Wii に送るブックマークレットなんかが作れますよという例です。別に Wii じゃなくてもいいけど。jscmd を gem でインストールしたあと、下記のファイルをダウンロードして ruby send_page.rb として実行してください。http://www.kbmj.com/~shinya/jscmd/send_page.rbプロキシサーバが立ち上がるので、Wii の Opera のプロキシサーバを PC のアドレスの 9000 番に指定してください。PC のブラウザ側でブックマークを新規作成し、URL に以下のアドレスをコピペしてください。名前は「Wiiで見る」とか適当に。 javascript:void(window.open('http://localhost:9001/send/'+escape(
コンソール上から JavaScript で Web ブラウザを操作できる、JS Commander というプログラムを作ってみました。JS Commander を立ち上げるとプロキシサーバが同時に起動し、このプロキシサーバを使うように Web ブラウザを設定すると、コンソール上で JavaScript のコードが入力できるようになります。Web ブラウザ上の JavaScript を自由に実行できるコンソールには FireBug, FireBug Lite, jsh, MozRepl などがありますが、JS Commander の特徴は以下のような感じです。ブラウザ非依存 - XmlHttpRequest が使えるブラウザであればたぶん動きます。readline を使った操作 - bash などのシェルと同じような emacs 風キーバインドが使えます。別のマシンにあるブラウザも操作可能
先日行ったセミナーの資料を公開しますー。http://www.kbmj.com/~shinya/rails_seminar/slides/キーボードの左右でスライドを移動できます。プレゼン自体は Safari で行いましたが、Firefox 2 / IE 7 でも動くようです。プレゼンツールについてプレゼンのツールとして HTML Slidy を使っていますが、HTML のタグを書くのが面倒だったので pre タグの中に wiki っぽく書いて、JavaScript でそれを HTML のタグに変換しています。詳しくはソースを。あと、ソースコードの色づけは syntax を使ってこんなスクリプトにこのファイルを食わせて生成してます。
ThoughtWorks から CruiseControl.rb 1.0.0 がリリースされている!というわけで試してみました。http://cruisecontrolrb.thoughtworks.com/CruiseControl.rb は Rails で書かれた Continuous Integration ツールです。元の CruiseControl のほうは Java で書かれていて XML でいろいろ設定するツールで、個人的にはどうもとっつきにくかった印象があったのですが、CruiseControl.rb はほとんど設定がいらなくて、解凍して以下のコマンドを実行するだけであとは適当にビルドしてくれます。 ./cruise add HogeProject --url http://svn-repository-server/repos/hoge/trunk ./cruise st
Rails で ActionMailer::Base#receive を実装したものの、いちいち postfix の設定をしたりしてテストをするのが面倒すぎるので、ActionMailServer なるものを作ってみました。1 ./plugin/install svn://rubyforge.org/var/svn/railsmailserver/plugins/actionmailserver2 config/environment.rb に以下の設定を追加 $mail_server = MailServer.new('127.0.0.1', 10025) do |server| server.filter_rcpt {|rcpt| rcpt =~ /@example\.com$/i } server.handle {|data| TheMailHandler.receive(data)
0.8.1 に、TestRunner.html でテストを実行したときに baseURL などのパラメータが無視されるという致命的なバグがあったため、修正して 0.8.2 をリリースしました。で、バグを修正する際にテストを書いたのですが、これがちょっと面倒でした。Selenium IDE 自体のテストは JsUnit で単体テストを書いたり Selenium Core で記録部分のテストを書いたりしているのですが、テストコードから TestRunner を実行しようとすると TestRunner が終わるまで待つ必要があり、JsUnit から実行しようと思ってもテストのコードの中では sleep することができないためテストを書くのが困難です。そこで、script.aculo.us の unittest.js を使ってみました。これには wait という function があり、テスト中
Rails のアプリケーションで DB や HTTP リクエストから取ってきた文字列を rhtml で出力するときに h メソッドなどでエスケープしないとエラーを出すというプラグインを作ってみました。実装方法としては Ruby の Object#tainted? メソッドを使って文字列がエスケープ処理を通過しているかどうか判定するという単純なものです。自動的にエスケープ処理を入れるわけではないので既存のアプリケーションと互換性を保ちつつ、XSS などを引きおこす Script Insertion を許してしまう可能性をかなり下げられると思います。README: http://wiki.rubyonrails.org/rails/pages/Safe+ERBダウンロード: http://www.kbmj.com/users/shinya/rails/safe_erb-0.1.zipRuby
■[Rails][Selenium] Rails と Selenium 01:28 Rails で開発しているアプリケーションに Selenium のテストを組み込むやり方というのはいくつかあるので、ちょっと整理してみる。 Selenium on Rails http://andthennothing.net/archives/2006/05/02/selenium-on-rails-is-getting-dryer うちの社内で使っているのがこれ。テストの書き方として Selenese という書式と RSelenese という書式が使えて、Selenese は |type|q|hogehoge| |clickAndWait|search| みたいに wiki っぽく書ける。Selenium IDE でも http://wiki.openqa.org/display/SIDE/Seleni
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く