blog.sorah.jp

Shota Fukumori (sora_h)'s blog about Ruby, Gentoo, etc.

スピーカー買った

P5164689.JPG

Logitech の Mini Boombox というスピーカーを買った。今月頭にやったハッカソンで、持ち歩けるサイズのよさげなスピーカーを探した結果。

Continue reading...
Posted at 2012/05/16 21:25:03 +0900 | Permalink

Divvy が便利すぎる

http://mizage.com/divvy/

@r7kamura 氏が言及していたので調べて導入したのだけど、これは便利すぎる。

何をするソフトウェアかと言うと、ディスプレイをタイルに分割して、ウィンドウをタイル(範囲)にピシッとリサイズ・移動するという簡単な物。もちろん何分割するかは縦横それぞれ決められる。

任意の範囲に対してショートカットを割り当てる事もできて、もちろん Divvy の呼び出しにもグローバルなホットキーを指定できる。たとえば画面の左半分を H キーに割り当てておけば、ホットキーを叩いた後 H を叩けば左半分に画面がリサイズ・移動してくれる。左右にウィンドウを綺麗に楽におけて便利。

あとはオプションで toggle なんたら、を有効にしておけば、同じショートカットをもう一度叩けばサブスクリーンに移動してくれる。サブディスプレイ繋ぎ直した時にキーボードだけでウィンドウを整理できるから重宝する。

というわけで、Divvy 購入して損無いと思う。Mac App Store で 1200 円でした。

http://mizage.com/divvy/

Posted at 2012/05/11 23:21:45 +0900 | Permalink

Show response time in Rack app (Sinatra)

Sinatra::Base + Thin doesn’t show request path and response time.

You can show response time by writing this class and modifying your run line in your config.ru

日本語

Sinatra と Thin 使うと、レスポンスタイム出してくれないから、Rack の run に渡すクラスに、一つオブジェクトを挟めてレスポンス返すまでの秒数を計測するクラスを書いた。

config.ruStats クラスを書き込んで、run の行をちょっといじれば表示してくれます。

Posted at 2012/05/10 00:32:07 +0900 | Permalink

Ruby から iTunes DJ の次の曲を指定する

play に対抗する物を作っていて、同じように iTunes DJ を使おうとして play 氏がどうやって iTunes DJ に次の曲として指定してるのか みたら、Add to queue で次の曲ではなくキューの最後に追加するだけ、という仕様で全く参考にならなかった。

自分は単純にボタンを押したら次に再生されるようにしたかったので、頑張って次の曲に追加するスクリプトを rb-appscript 使って書いた。

iTunes の Applescript インターフェース、プレイリストに曲を追加するのは末尾に追加しかできなくて、要するに以下の手順を踏まないと間に曲を差し込むことができない:

  1. 末尾に追加したい曲を入れる: [曲1, 曲2, 曲3, 追加したい曲]
  2. 末尾に既存の曲を入れる: [曲1, 曲2, 曲3, 追加したい曲, 曲1*, 曲2*, 曲3*]
  3. 先頭にある既存の曲を消す: [追加したい曲, 曲1*, 曲2*, 曲3*]

この方法しか無いんじゃないかと思ってググってたらやっぱりこれしか方法がなくて、 しかしググったおかげか、ループを使って消してくのかと思ったらたった 3 行で実現できるぽくて、ループでやると滅茶苦茶遅い事が判明した。

http://hints.macworld.com/article.php?story=20040830035448525

Applescript 本当に面白い仕様だと思う。

iTunes の設定

iTunes DJ で voting を有効にしてるとダメなので設定をオフにしましょう。

Voting を有効にしてると、プレイリストが曲の重複を許さなくなり、上述の方法が通用しなくなり道が閉ざされる。

Posted at 2012/05/06 11:37:38 +0900 | Permalink

ハッカソンした

@r7kamura 氏と前からハッカソンしたいですね、という話になっていて、 GW だし美少女 @aereal さんも関西からきてたので、ちょうど良いタイミングだと思い急遽ハッカソンした。

自分は android-plugin を使って Scala で Android アプリを書いていた。 一応帰宅後もぼちぼちコードを書いて完成させました。

成果物

IC カードとかを重ねると設定した URL を開いてくれます。便利ですね。

アプリケーションを起動して NFC の API で読み取れるカードとかを、Galaxy Nexus 等 NFC と純正 API を持ったデバイスに重ねてやると、 カードの ID 的な物を読み取って、URL とカードの名前 (編集時の識別用) を聞かれるので、開きたい URL と名前を入力して保存。

その後ホーム等に戻ってカードを重ねてやると登録した URL が開きます。便利ですね。

もちろん Android の intent を使っているので、たとえば http://m.foursquare.com/venue/... みたいな URL を登録しておけば よく使う venue へのチェックインが容易になりますね、やったね!

Felica Lite の空のカードかって URL 焼けばいいだけの話なんだけど面倒だったので作りました。

アイコンなんとかしたらたぶんマーケットに投げる。Scala で Android アプリ書いて得た知見はまたそのうち別にエントリします。

BGM

sorah の iTunes ライブラリを開放して、スピーカーがなかったのでヘッドホンをスピーカー代わりにして流していた。

iTunes DJ という機能がとても便利で、iPhone 等から他人が曲のキューに追加できるし、とても便利。 ついでにレート高めの曲を優先的にする、みたいな設定があるので、一人でシャッフル再生する時にも活用しています。

まずスピーカーまともなの欲しいと思っていたので、これとか欲しいですね。 (wishlist)

LOGICOOL ポータブルスピーカー ノートPC向け Z205
ロジクール (2010-04-23)
売り上げランキング: 1289

しかし iPhone からしかリクエストができないので、PC からもリクエストが出来ると便利、という話が出た。

それについては github の人が書いた play とかを知っていて、r7kamura さんもそれを推してきたので 帰宅後に調べてみたら、iTunes DJ が使われてるからオオッ、と思ったんだけど ruby 1.8.7 でしかうまく動かなくて、 Pusher 等外部サービスに結構依存してて自分的にはあまり好みじゃない感じ。

単純にキューに追加したりする機能とリアルタイム通知機能だけを持った sinatra アプリケーションを作ろうかなと思った。 次のハッカソンまでに用意します!

お昼

IMG_1819

バーガーマニア に行ってプラチナバーガーを食べた。おいしかった。 プラチナ、たぶん白金台だからかな…

IMG_1817

まとめ

r7kamura さん会場提供誠にありがとうございました。

またやりたい! 一緒に何か作るのもよさそう。

関連リンク

Posted at 2012/05/04 23:59:59 +0900 | Permalink

Building mruby for android

android-ndk を standalone に使えるようにした のはこのためなのだけれど、

mruby (a.k.a. RiteVM, 軽量 Ruby) を動かせるかと思ってセットアップした。結果的には普通に動きました。

ただ、ビルドするときに mrbc をホストで実行できる必要があるみたいなので、ちょっと弄った。

make-standalone-toolchain.sh で作られた gcc 等 に PATH が通ってる事を前提として、以下の手順でビルドできました:

$ git clone https://github.com/mruby/mruby.git
$ cd mruby
$ make
$ cp bin/mrbc .
$ make clean && rm **/*.o

$ make CC=arm-linux-androideabi-gcc LL=arm-linux-androideabi-gcc
...
/bin/sh: ../bin/mrbc: cannot execute binary file

$ cp ./mrbc bin/mrbc

$ make CC=arm-linux-androideabi-gcc LL=arm-linux-androideabi-gcc 
# ↑ will fail at building mrubysample. you can just ignore because it's not needed.

$ file bin/mruby
bin/mruby: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

あとは ./bin/mrubyadb push 等で Android に転送して実行できるようにしてあげればいいと思います。

Have fun!

Posted at 2012/05/01 23:52:08 +0900 | Permalink

Using toolchains standalone in android-ndk

Android には NDK (Native Development Tools) がある。要するに C とか C++ でちょっと高速なアプリケーションを書いたりできるらしい。まぁ、察せるとおりクロスコンパイラが入っている。

Android で動くバイナリとかを吐く一番速い手段がたぶんコレ。

OS X だと homebrew を使って

$ brew install android-ndk

のようにしてインストールする事ができる。

homebrew だと brew --cellar android-ndk で表示されるディレクトリの下にバージョン名のディレクトリがあり、その下の toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin とかに gcc が転がっている。

が、これを普通に叩いてもちゃんと動いてくれない。インクルードパスとか。

しかしパッケージ内にちゃんと standalone に gcc とかを使えるようにしてくれるスクリプトがあったのでメモ:

# r7c はインストールされているバージョンに置き換えること
$ cd `brew --cellar android-ndk`/r7c
$ ./build/tools/make-standalone-toolchain.sh --ndk-dir=`pwd` --install-dir=$HOME/opt/android-ndk-standalone

これで ~/opt/android-ndk-standalone/bin にちゃんと単体で動く gcc 等が入るので、$PATH を通したりすれば OK.

Posted at 2012/05/01 23:36:50 +0900 | Permalink

Cycled Yokohama

P4304589

横浜の方にちょっと自転車を持って行って自転車でふらふらしてきた。場所によっては徒歩だけど。

Continue reading...
Posted at 2012/04/30 23:16:55 +0900 | Permalink

Ruby に最初に触れた時に使ったチュートリアル

Ruby をはじめるきっかけは覚えていないのだけれど、最初にどういうチュートリアルを見たかは内容と ruby-lang.org からリンクが貼られていた、という事しか覚えてなく、そして今それがリンク切れしていて名前が長年分からなかったのだけれど、最近思い出すきっかけがあったので今度は忘れないようにメモ。

で、何を使ったかというと、Learn To Program の日本語訳です。今は日本語訳リンク切れしてますね…

これは「はじめてのプログラミング」という意味ですが割とちょっとプログラミングかじってても良いチュートリアルだと思います。

オブジェクト指向便利ーみたいな事おもってました。 (あれ、当時 PHP 使ってたぞ???)

日本語訳はオライリーから出てますね。

初めてのプログラミング 第2版
Chris Pine
オライリージャパン
売り上げランキング: 104026

↓ 原著書籍版

Learn to Program (The Facets of Ruby Series)
Chris Pine
Pragmatic Bookshelf
売り上げランキング: 160309

まぁ、プログラミングをある程度経験してる人なら @yugui 本のほうが良いと思う

初めてのRuby
初めてのRuby
posted with amazlet at 12.04.27
Yugui
オライリージャパン
売り上げランキング: 6285
Posted at 2012/04/27 01:25:35 +0900 | Permalink

SONY の Bluetooth ヘッドセットが便利

P4264569.JPG

SONY の Bluetooth ヘッドセットには、数年前から自分で好きなイヤホンを差し込んで使えるという物があって、好きなイヤホンやヘッドホンを刺して音楽を聴けるのでとても重宝していた。

最近、というか自分が持っているモデルの後からは USB で充電できるようになっていて前から買い換えたいなーと思っていて、片道 2 時間通勤を始めるにあたって買い換えた。

比較

P4264575.JPG

↑ DRC-BT15P

もともと自分が持っていたのは DRC-BT15P で、これと比較すると

  • USB で充電できるようになった
  • バッテリーが 4 時間くらいから 7 時間くらい持つようになった (そのかわり一回り大きくなった)
  • クリップが大きくなって取り外し不可になりクリップの信頼性が向上
  • ジョグスイッチが DRC-BT15P に比べ現行モデルのほうが飛び出て大きいので、メッセンジャーバッグをおろしたりする時や電車の中でぶつかると曲が送られたりする
  • マルチポイントに対応し、ヘッドセットプロファイルと A2DP 等の音楽再生のプロファイルそれぞれ 1 つずつ、同時接続できるようになった

という感じ。

全体的にとても良い買い物だと思う。

職場でもマシンから音楽を飛ばすのに使っていて、その時にちょっと飲み物を飲みに行こうとすると距離の所為かさすがに音声が途切れ途切れになる。いずれにせよケーブルがまとわりつかないので便利。

SHURE のイヤホンちょっとケーブル長いですね。短いケーブル欲しい…

マルチポイント

上記のようにマルチポイントに対応していて、例えば iPhone と MacBook を同時に接続できる。MacBook で iTunes を使い音楽を再生しながら、iPhone で通話を受け取る、といった事ができる (同時に両方の音源を再生するのはできない。待受でもう一本セッションを保持できるといった感じ)

ただ、その所為か iOS 側の Bluetooth 接続の挙動とうまくやっていく必要が生じる。 MacBook (OS X Lion) と iPhone 4S (iOS 5) で、iPhone をハンズフリー、MacBook を A2DP としてうまく接続する時以下のようにしてつないでいる。

  1. OS X 側で Bluetooth メニューを開いて DRC-BT30 のサブメニューにある “Use as Audio Device” をクリック
  2. iTunes 等にフォーカスをあわせて、再生等を速攻でできるようにしておく
  3. すかさず DRC-BT30 の電源を入れ、起動音が鳴ったら iTunes だったらスペースバーを叩いて音源を送信し始める
  4. たぶん音楽が流れ始める。

いちいち iPhone の BT 切るのが面倒だとはいえ、割と面倒。良い方法があれば教えてください。

具体的にどういう事かというと、 iPhone が A2DP プロファイルでのセッションを確立する前に OS X の方でセッションを確立してる。そんでもって初めて音声を送信しはじめないと接続してくれないので iTunes 等で再生してやる必要がある。Chrome の <video> とかだとうまくいかない事が多いので、iTunes を使ってます。

iOS のほうで音楽再生しない限り A2DP セッションはらないでおくとかいう挙動にできたら良いんだけどなぁ。

Posted at 2012/04/26 01:27:55 +0900 | Permalink