実はDrizzleの開発に参加してます

長い間ブログを更新できてなくてすみませんでした。これまでずっと何年もかかって、自分にとっての適度な複雑さ(壁を乗り越える喜び)を持った問題を探し求めてました。Linux Kernel解読、Ruby開発、Emacsコードリーディング、などなど微々たるものですが色々…

GNU Emacs に内蔵されている Lisp インタプリタを C インタフェースから操作する実験

はじめに 今から約 1 ヶ月前、GNU Emacs のコードリーディングをはじめました。祝日などの時間を使って少しずつ GNU Emacs の解析を進めました。今日、ようやくコードリーディングを開始した時に立てた目標が達成できたので、このエントリーを書くことにしま…

Emacs のコードリーディングのための Carbon Emacs のビルド

Mac OS X で Carbon Emacs を自力でビルドできるかどうか試してみたところ、あっさりできました。 なぜ、Carbon Emacs を自力でビルドしたくなったのかと言うと、梅田望夫さんの例の本を読んで、Richard Stallman によって書かれた Emacs のコードを趣味で読…

ディレクトリスタックを zsh 間で共有してみよう

zsh を hack して、ディレクトリスタックを zsh 間で共有できるようにしてみました。 # 長い間お蔵入りになっていたネタを引っぱりだしてきました。 zsh を使っている方の多くは、zsh と GNU Screen と組み合わせて利用されているケースが多いと思います。そ…

こんなブログでも

読んでくれる方がいるのだから、少しずつ記事を書ける状態を作っていきたい。

特別な一日

今日は僕にとって特別な一日でした。 id:amachang からの熱いメッセージを聞いて本当に感動しました。 いっぱい共感しました。こんなに共感できたのは久しぶりです。 自分の中で忘れかけていた感覚を思い起こしてくれました。 id:amachang へ 今日は本当にお…

多面的に人や会社を見ようよ。良い所を見つめようよ。絶対その方が面白いよ。

知性なき「はてな」−本の読めない技術者・伊藤直也 (セックスなんてくそくらえ)久しぶり「カチン」ときた。これはスルーすべきじゃないと思った。僕は、日本語が得意じゃないから、誤解やうまく表現できないこともあると思うけど、ちょっと思ったことを書い…

Vim: 「*」キーでハイライト検索した時にカーソルが次の候補に移動しないようにする方法

検索する際に,"hlsearch" オプションを有効にして,検索語をハイライトし,視認性を高める."*" コマンドでカーソル位置の単語をサクッと検索する. Peace Pipe: 効率的なテキスト編集の7つの習慣 確かに「*」キーでハイライト検索するとサクッと検索できて…

Vim: GNU Screenの環境下でctagsによるタグジャンプの操作を快適にする設定

ctagsとvimを連携させて使うと、C言語などのプログラムをコーディング中に、関数など定義位置に簡単にジャンプできて便利です。デフォルトのvimの設定では、"Ctrl + ]"で関数などの定義位置に移動し、"Ctrl + t"で元の位置に戻れます。GNU Screenで新しいウ…

YARV: GDBとちょっとしたHackによる仮想マシン内のスタックの状態変化の観察

はじめに 仮想マシンが導入されたRubyの動作を理解するには、仮想マシン内のスタックの状態変化を頭の中でイメージできるようになることが重要です。そこで今回は、仮想マシン内のスタックの状態変化を追いやすくする小さなツールを作り、そのツールをGDBと…

YARV: 命令列のシリアライズによるRubyプログラムの難読化

はじめに YARVコアの入ったrubyでは、YARVの命令列のシリアライズ機構を用いることでRubyプログラムを簡単に難読化できます。今回は、hello worldなRubyプログラムを難読化してみます。なお、今回の説明ではリビジョン11607を使い、YARVコアの入ったrubyがビ…

YARV: hello worldなRubyプログラムをVMの命令列に変換する実験

はじめに Rubyのtrunkでは最近YARVがマージされました。YARVが入ったrubyで遊んでみたい人も多いはず。そこで、今回はバージョン管理されているRubyの最新版のソースコードをゲットして、おなじみのhello worldなプログラムをYARV仮想マシンの命令列に変換し…

Rubyを改造してAOPに対応した実装「あそびぃ」を公開しました

Rubyの中をHackして、アスペクト指向プログラミング(AOP)をネーティブに対応させてみました。実は去年の9月くらいから今までの4ヶ月間、これをずっとをやってました。(開発の途中でも、ブログでアウトプットすれば良かったのですが、中々見せられるような状…

新年のごあいさつとお知らせ

あけましておめでとうございます。 今年は低レイヤー技術をもっと勉強したいなぁと思っています。 Webプログラマー+バイナリアンな人になれるよう頑張ります。 さて、1つお知らせがあります。 実は去年の9月頃から、ある新しい機能を組み込んだRubyの研究…

Vimを使い終わったらGNU Screenのステータスラインのタイトルを「** free **」に

この前のDeveloper Enviroments Conferenceでid:secondlifeさんが発表された資料を見て、 キーリピート加速ツール「kbdacc」 GNU Screenのステータスラインのタイトルを、VimのBufEnterフックで現在編集しているバッファ名に のtipsを普段使うようになりまし…

zsh: diffの結果をvimで色付けして表示するグローバルエイリアス

コードを書いていると、以前のコードと現在のコードとのdiffを取りたいことがよくあります。 でも、diffの結果はちょっと読みにくい。もしdiffの結果が色付けされていたら、もっと読みやすいじゃないかと、今日ふと思いました。そこで、zshのグローバルエイ…

zshな環境でGNU Screenのセッションのレジューム機能を最小限の労力で利用する方法

今日, GNU Screenのセッションのレジュームをしようとした時にzshの有難さを再認識しました. zshとGNU Screenを一緒に使われている方は, 今回紹介するtipはすでにご存知かもしれません. 今まで, GNU Screenのセッションをレジュームしたい時には, 以下のよう…

はてなブックマークカウンターを任意のサイトに設置するGreasemonkeyスクリプト

提供が開始された はてなブックマークカウンターをネタにして、久しぶりにGreasemonkeyスクリプトを作ってみました。これから、はてなブックマークカウンターを設置するブログサイトが増えると思いますが、それまで待てないので、今見ているサイトのページの…

SoftEtherの登さんのインタビューを観よう

ビデオ出演: Microsoft の MSDN channel 9 普段、Webアプリケーションのような高レイヤーでPerlとかRubyとかJavaScriptとかばっかりさわっている技術者は、是非このインタビューを観ることをお勧めします。というのも、今、低レイヤーの技術の重要性を再認識…

GDBと作業プロセスの記述の重要性

GDBは積極的に活用しないと、もったいない。今では、そう思うようになりました。GDBをさわるようになるまでは、C言語で実装したプログラムのデバッグは、いわゆるprintデバッグで行うことが多かったです。printデバッグは簡単だし、ちょっとしたデバッグをし…

「WEBRickをGDBでいじる」を実際に試して、バイナリーハックを体験してみよう

DECONで高林さんが紹介された「Binary Hacks in Action」のスライドを見ていて、「WEBRickをGDBでいじる」という所がとても興味深く感じました。本当にそんなことができるのか?と一瞬思いました。そこで、ちょっと試してみました。最初はうまくいかなかった…

今月号のオープンソースマガジンはSICPとの併読がおすすめ

今月号のオープンソースマガジンの「プログラミング言語の進化を追え」の特集が面白そうだったので、買ってみました。その特集の中でも特に「Part 3 クロージャとオブジェクトの微妙な関係」が興味深かったです。このPart 3の記事をもっと楽しむには、SICPも…

AJAJA: Perlモジュールを使えるようにするpmconnectが熱い(かもしれない)

AJAJAのsvnリポジトリに面白いコードが追加されました。pmconnectという新しいモジュールです。http://ajaja.alphageek.jp/trac/changeset/32これは、PerlモジュールをAJAJAから利用できるようにする試みのようです。面白いですね。Linuxの環境が手元にない…

AJAJA: memcachedを使えるようにしてみよう

大よそ、C言語でのAJAJAのモジュールの書き方がわかってきたので、例題としてmemcachedをAJAJAで使えるようにしてみました。(何でこのタイミングでmemcachedのバインディングを書いたのか?と聞かれると困ります(汗。単に興味があったからやってみただけです…

AJAJA: Systemモジュールを拡張してsleepできるようにしてみよう

AJAJAのSystemモジュールがロードされるまでの制御フローは大よそ理解できたので、今度はSystemモジュールを拡張してsleepできるようにしてみました。なぜsleepを取り上げたかと言うと、 入出力を伴わないので簡単に実装できそう JavaScriptから下層レイヤー…

AJAJA: Systemモジュールがロードされるまでの制御フローの解析

AJAJAを実際に走らせてみて、AJAJAの動作をもう少し詳しく知りたくなりました。特に、AJAJAでCGIを実現するのに利用されているSystemモジュールが、どのようにしてユーザーランドから利用できるようにしているのか、興味を持ちました。そこで今回は、System…

AJAJA: 勉強材料としての可能性とSQLiteを使ったちょっとした実験

AJAJA: Asynchronous JavaScript and JavaScript/ASPAJAJA は「ブラウザだけでなくサーバサイドでも JavaScript を使おう!」というプロジェクトです。 できること - JavaScript を埋め込んだ ASP ファイルを処理する - JavaScript から SQLite などのシステ…

LLR2006: HaskellでCollatz予想に挑戦

お待たせしました! キミならどう書く 2.0 ROUND 2の開催です!!今回のLL Ringでは「LLで関数プログラミング」のセッションをはじめとし,関数型言語の活躍が期待されます.そこで,前哨戦にも関数型のお題を用意しました.お題は「Collatz予想」(角谷予想…

Intel MacでHaskellプログラミング

ついに、Intel MacでHaskellプログラミングができる環境が手に入りました。今まで、GHCが正式にIntel Macに対応していないこともあって、MacBook ProでHaskellプログラミングを楽しむのを諦めていました。一応、Dan Kogaiさんのblogで説明されていた、GHCをI…

システムにおけるmaintainabilityとflexibilityのバランス感覚

maintainabilityとflexibility。これらのキーワードは、Flickrの本を読んでいる & システム開発をしている今、とても気になる言葉です。両者は対立する概念で、どちらかを優先すると、もう一方が失われます。つまり、maintainabilityを得ようとすると、flexi…