2012-04-01
闇鍋プログラミング勉強会に参加してきた
闇鍋プログラミング勉強会というものが東京の八王子で開催されるという事で参加してきました。
今回の勉強会は特定の言語とか特定の技術に限定せずに様々な話題がなんでもありという内容でした。
個人的に目立ったなぁと思うのはやはりプログラミング言語Dart関連の発表。
まだ出来てから新しい言語ですが、本当に各言語のいいところどりという感じでしたね。
C++好きにもJavaScript好きでもある程度好きになれそうなところがあるのはいいと思いました。
今はD言語の次くらいに使ってみたいと思う言語のひとつ。
そして私自身はVim関連で「Vimを学びたい初心者のための5つの豆知識」という内容で発表してきました。
LT枠なのであまり内容はありませんが、最低限の話は出来たと思います。
周りのLTがすごい濃いネタばっかりだったのでもっと色々喋ってもいいかなぁと思いましたが、自重しました。
その後の懇親会も非常に楽しかったです!
今回主催をしてくれた id:krustf さん、大変そうでしたがお疲れさまでした!
2012-03-26
京都Vim勉強会#1に参加してきた
京都Vim勉強会というものが開催されるらしくて、関西Vimmerの私としては参加するしかないと思い参加してきました。
http://partake.in/events/f2afeb6f-aad1-40b3-b067-fbee40822c06
色々なVimmerと触れ合うことが出来て楽しかったです。
ついでに私も実は発表とかしたんですが、スライドも何も作ってなかったんでグダった感。
とりあえずvimshellの素晴しさとunite.vimのことなどが紹介出来てよかったです。
しかしなぜかそれ以上にSKKを使っていることが目立っていたという。
vimshellはやはり素晴しいのですが、なかなかその素晴しさが伝わることが少ないのでもう少しなんとかしたい。
ただ単純にvimshellはbashやzshとは比べられない。
それくらいvimshellは特殊なシェルなのです。
2012-03-18
hatena-vimを使って記事を書いてみる
はてなダイアリーの記事をVimから直接投稿出来るプラグインにhatena-vimというものがあるので試してみる。
https://github.com/motemen/hatena-vim
これは便利ではあるけど、細かい融通が効かないのが不便。
メモ程度に小さい記事を書く程度ならこれでガンガン投稿出来るけど、はてなダイアリーの細かい機能を使おうと思うとイマイチ。
即興で記事を書きたくなった時に便利かなぁ。
2012-02-20
Vimでバイナリ編集が出来るプラグインvinarise
Vimでバイナリ編集をする際にはxxdコマンドを使ってバイナリ表示をさせることになると思いますが、それは単体ではとても使いにくいもので、決して常用出来るものではないと思います。
しかし、現在のVimには直接バイナリが編集出来るプラグイン、vinariseがあります。
vinariseは現在最低限のバイナリ編集機能しかありませんが、xxdコマンドを使うよりも非常に使い勝手が良いです。
今回最先端のVim上で使用出来るバイナリエディタとしてvinariseを紹介したいと思います。
使用時の最低要件
vinariseを使用するには、vinariseのプラグイン自体は当然必要ですが、Pythonインタフェースが必要になります。
Pythonインタフェースについては以下を参考にしてください。
Hack #132: Pythonインタフェースを使う(1)
あとはvinariseをgithubなりからダウンロードして、配置すれば使用準備はOKです。
最低限の使い方
開きたいバイナリファイルを準備しておき、あとは以下のコマンドを実行します。
:Vinarise binary.bin
これでバイナリファイルを開くことが出来ます。
基本操作方法
基本的にVimの操作方法がそのまま使用出来ます。
バイナリ値をいじりたい場合は、指定アドレスの値上で"r"を入力します。
現在の値がVimのコマンドライン上に表示されるので、変更したい値を入力するとバイナリ値を編集出来ます。
その他のキーについては以下の表を参考に。
| キーマップ | 機能 |
|---|---|
| V | Vimでバイナリファイルを開き直す |
| q | 開いているバイナリファイルを隠す |
| Q | 開いているバイナリファイルを閉じる |
| l | 次の列へ移動 |
| h | 次の列へ移動 |
| j | 次の行へ移動 |
| k | 前の行へ移動 |
| gh | 行頭アドレスへ移動 |
| 0 | 行頭アドレスへ移動 |
| ^ | 行頭アドレスへ移動 |
| gl | 行末アドレスへ移動 |
| $ | 行末アドレスへ移動 |
| C-f | 一画面先へ移動 |
| C-b | 一画面前へ移動 |
| C-d | 半画面先へ移動 |
| C-u | 半画面前へ移動 |
| C-g | 現在位置アドレスの値を表示 |
| r | 現在位置アドレスの値を変更 |
| G | 入力したアドレス位置へ移動 |
| go | 現在位置アドレスからのオフセットアドレスへ移動 |
| gg | 先頭アドレスへ移動 |
| gG | 末尾アドレスへ移動 |
| / | バイナリ値を検索 |
| ? | バイナリ値を逆向き検索 |
| g/ | 文字列として検索 |
| g? | 文字列として逆向き検索 |
| e/ | Python正規表現検索 |
| n | 最後の検索パターンを実行 |
| N | 最後の検索パターンを逆向き実行 |
またvimfilerを使用している場合は、vimfilerで選択しているファイルを"B"と押すことでvinariseを使ってバイナリファイルを開く事が出来ます。
objdump表示機能
objdumpコマンドが使用出来る場合はオブジェクトファイル情報を表示することが出来ます。
:VinariseDump object.obj
vinariseが非常にみやすい形式に変換してくれるので、逆アセンブルやファイル情報解析にとても役立ちます。
まさしくバイナリアン向けな特徴的機能と言えるでしょう。
バイナリアンのためのバイナリエディタvinarise
vinariseはまだまだ発展途上でこれからといった感じのプラグインですが、基本的なバイナリ解析や、編集機能はあるので十分実用出来ます。
作者のShougoさんも現在精力的に開発中ですので、どんどん意見をフィードバックさせていきましょう!
2012/02/22追記
vinariseに新しいキーマップが追加されたので追記
2012-02-12
Boost.勉強会 #8 大阪で発表してきた
Boost.勉強会 #8 大阪へいってきました。
そして闇の軍団に囲まれながら喋ってきました。
内容はメモリを管理しつつ様々な恩恵を受けられるカスタムメモリマネージャの話と非常に高速に動作するメモリアロケータの話です。
ゲームでは割りと一般的な話ですが、あまり他の業界のプログラマには知られていないのかなと思い、今回の発表内容にしました。
更に今回の発表中にVimを使ったライブコーディング的な実演も挟みました。
その時に使ったコードもGitHubで公開しています。
実はまだこのメモリマネージャとメモリプールは問題が多いので実用は出来ないです。
具体的に言うと、
等々…
ちなみに発表した内容の機能はほとんど実装されていません。
もう少し機能拡張はしたいなと思っています。
とりあえずエラーチェック辺りは。
あとは単にmallocを使うのではなく、その内部も高速なものにしてみたいですね。


