blog.sorah.jp

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

SECCON CTF つくば大会 2日目

(昨日 の続きです)

最終的に 2507 点、13 チーム中 4 位で終わりました。やったね!

開始直後 2 位から、徹夜で問題を持ち帰っていじっていた連中が一気に通していった所為で 7 位に転落して諦めていたけど、なんだかんだ最終的に 4 位まで戻れた。

(うちのチームは家等で問題の続きをやったりは全くしなかった)

Continue reading...
Posted at 2012/05/20 21:51:22 +0900 | Permalink

SECCON CTF つくば大会 1日目

  1. MacBook Air が他者の影響により机から滑り落ちる
  2. MBA の上の HHKB も同じく滑り落ちる
  3. HHKB 側に刺さっていた USB miniB プラグが MBA の液晶に衝突
  4. 上記画像の通り

といた問題は 3つ。

  1. 練習問題
  2. Web 系の問題 (300 点, 一番乗り)
  3. バイナリ系の問題 (400 点, 一番乗り)

うちのチーム (IMOCAN) は 1007 点で 1 日目終了時点で 2 位。終了直前に 0 点から一気に 1100 点になったチームが居て怖いですね。

明日が終わったらには最下位になってそうだな。

Web 系の知識ないのに 300 点一番乗りで解けたし、答え分かっちゃうと拍子抜けする。しょうもないミスで 30 分くらい使ってたし。 (煽るつもりはないです)

(2日目の記事 に続く)

Posted at 2012/05/19 22:34:55 +0900 | Permalink

スピーカー買った

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