[痛デバドラ] /dev/louise_love作ってみた [Linux]

全自動無限ルイズコピペ生成器搭載!

これは何?

Linux2.6(32bit/64bit)用デバイスドライバです(2.6.32で動作確認しています)。インストールすると/dev/louise_loveが現れ、読み出すとルイズコピペをマルコフ連鎖アルゴリズムに基づいて無限に自動生成し続けます。

ちなみに/dev/louise_loveへ書き込むとすべて書き込みを読み捨てますので、自分の書いたポエムも安心して読んでもらえます。

デモ

ソースコード

使い方

まずはダウンロードして解凍し、フォルダを移動しましょう。

% git clone https://github.com/ledyba/louise_love_driver.git
% cd louise_love_driver/driver

コンパイルするには、普通のプログラムのようにmakeしてください。

% make

デバイスドライバドライバと同時に、ユーザランドで動くアプリケーションとしてもコンパイルされているので、いきなりデバイスドライバとして組み込むのが不安な方は、安全なユーザランドで試すことができます。それには、

% make test
もしくは
% ./userland_louise_love

として実行してください。

では、実際にデバイスドライバとしてインストールしてみましょう。root権限が必ず必要です。

% sudo make install

おめてとうございます、インストールが完了しました。ルイズたんへの愛を得るにはこのようにしてください。

% cat /dev/louise_love

ゆっくりルイズたんへの愛を噛み締めたい場合は、moreコマンドなどを使うと良いでしょう。

ハードディスクやSSD、USBメモリをルイズたんへの愛で埋める場合には、次のようにしてください(注意:これをやるとHDDのデータが壊れます)。

% dd if=/dev/louise_love of=/dev/sda

/dev/louiseのパーミッションは666なので、書き込みも行うことができます。書き込んだデータはすべてスルーしますので、恥ずかしいポエムも安心して書き込むことができます。

% cat my_poem.txt > /dev/louise_love

昨今はアニメが多いですから、ルイズたんへの100年の恋も冷めてしまうかもしれません(一期やってたのもう4年くらい前だし)。でも大丈夫、アンインストールは次のように簡単にできます。

(インストール時に解凍したフォルダで)
% sudo make uninstall

今後の展開

簡単なソースではあるんで、デバドラやマルコフ連鎖の超簡単なサンプルとしてご活用ください。適当に書いたのでソースコードはむちゃくちゃ汚いですがw なお、/dev/yoshinoyaなども(つくろうと思えば)簡単にできます。

任意の文章に置き換えるには、ユーティリティをダウンロードして、

% ruby make_c_source.rb <文章ファイル> > c_source.txt

として出力結果のc_source.txtの中身を、louise_love.cの該当部分に適当に貼りつけてください。

ちなみに、

% ruby markov.rb <文章ファイル>

とするとrubyを使っていくつか文章を作ってくれます。

反省点

あまりカーネルランドをいじった感が無いのがちょっと…。8割のコードはAPIの名前さえ変えればユーザランドでも動きますし、そもそもデバイスドライバなのに、ハードウェアを触っていません。

解説記事

ちなみに:ユーラランドとカーネルランド時のパフォーマンスの違い

ユーザランド時

% ./userland_louise_love | dd of=/dev/null
1130544+0 記録始め
1130544+0 記録終わり
578838528 バイト (579 MB) コピー終了, 25.5481 s, 22.7 MB/s

カーネルランド時†1

% cat /dev/louise_love | dd of=/dev/null
3619712+0 記録始め
3619712+0 記録終わり
1853292544 バイト (1.9 GB) コピー終了, 25.9583 s, 71.4 MB/s

単純比較していいのかわからないけどさすがカーネルランド3倍はえーw

  • †1: 条件を近づける?ために、一回パイプ通してます。でもddで直接やっても変わらなかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください