行番号は紙媒体で無い限り無意味だ。

私はソースコードの左側に付加される行番号は邪魔だと思うときがある。その理由は行番号も含めてソースコードをコピーしてしまうことがあり、コピー・アンド・ペースト の邪魔だからである。よって<table><tr><td>行番号</td><td>ソースコード</td>... とすべきだ。

C言語でdequeを実装する為のメモ

 昔、dkutil_cというライブラリでdouble ended queue(STLのdeque)を実装するのをあきらめた事がある。理由は以下の通りだ。

  • double ended list(双方向リスト構造)で代用できる
  • 一つ一つのメモリブロックを管理するにはdequeオブジェクトに多数のvectorオブジェクトを格納し、それらを参照させる為にはvectorオブジェクトをlistオブジェクトやmapオブジェクトで管理させる必要がある。

以下C++風の擬似コード


class deque{
list mList; もしくは map mMap;
};

  • なんだか複雑になって想定外のバグが起こりそう。よってバグのチェックが大変。さらには誰かが使用する価値が無さそう。
  • dequeはvectorオブジェクトのサイズによっては無駄にメモリ領域を使う。

なので、やはりC言語でこんなせせこましいコードを書くのは良くないと思っていたのだ。今、改めて考えてもC言語でdequeを実装するならば双方向リスト構造で十分だ。


 逆説的な解決策としては、双方向リスト構造につかうリストの要素ひとつひとつを多数プールしておいて、使用するときになったらプールから確保していく事だ。これにより毎回、リストに挿入するときのメモリ確保のオーバーヘッドは回避できる。

以下C++風の擬似コード


class list{

list_elem *mChunk;
unsigned int mCounter;
void alloc_listelem(){
mChunk = new list_elem[256];
 mCounter = 0;
}
void push_back(){
p = mChunk[mCounter++];
//つなぎかえごにょごにょ

};
//削除処理やプールの管理は各自考えてね。

無線LANのパスワードを真性乱数で生成するソフト

ScreenShot


Powered by dKingyo / 人口を増やす / 就職口を増やす | PLANEX 無線 | NEC 無線 | BUFFALO 無線 | 無線LAN | IODATA 無線

 コンソールで無線LANのパスワードを生成するソフトを作りましたが使いにくいとの事なのでGUIにしました。
 WTLの使い方を忘れていたので苦労しましたが簡単に使用できると思います。セキュリティの専門家ではないので断言できませんが、擬似乱数ではなく真性乱数なのでとりあえず適当なパスワードをつけるよりは安心です。

ダウンロード:http://www.dkut.flnet.org/DKUT/WLAN_Password20100322.zip

機能

  • WPA、WPA2、WEPのパスワードを生成
  • 16進数 , 文字列に両対応
  • コピーボタン一発でクリップボードへコピー
  • 全自動パスワード更新機能付き

無線LANに関する四方山話

真性乱数四方山話

「何かを作りたい」が無い

Powered by dKingyo / 人口を増やす / 就職口を増やす | gigabeat | iPod | MP3 | Wizpy | ZenStone


 プログラミングは覚えてしまったら先が無い。どうやれば実現できるかという事を志向してきたのが、既に実現されてしまっている事が多すぎて自らの行動に価値を付加できない事に思い悩む。すなわち、それは時間の無駄だと思っているのだ。
 かといって、終わりの無い事もこれはこれでつらい。追求し続ける事、探求し続ける事、維持し続ける事、これが息苦しく感じる事もある。
 つまらない行動をするか、息苦しい行動をするか、二者択一の世界にいると感じてしまうのが気が重くなる。逃げ道は無いのだ。

 
 プログラムを書いて自分の思い通り動く事がとても空しいのだ。思い通りに動くまで調べる事、コーディングする事、デバックする事、これらがすべて終了した後に思い通りに動く事になるのだが、それがとても空しいのだ。既に実現されてしまっている事だと感じているからだ。世界のどこかで既に誰かが考えてより良いポリシーを元に組まれたコードが存在する事が本当に多い。自分自身でプログラムを書く意義も価値も失せていく。


 実装がエレガントなのは良い事だ。しかし、それ以上にエレガントな実装が頭の中に存在する。たまたまプログラム言語の制約上、仕方なく、そのプログラム言語に書き下しているに過ぎないのだ。これが空しい。利用規約やライセンス、言語的制約に縛られるプログラムコード。それより上位のすべての問題が解決するプログラムを書き下せる何かが必要なのだ。
考えられうる全ての問題とは

  • 再利用性(何ビットの変数だろう、指定すれば動く AVL木のキーの部分の変数は何ビットでも可能、AVL木の比較関数は入れ替え可能など)
  • バグを入れられない構造(コーディングのケアレスミスで極力バグが入らないようにコーディングできるような。Haskellのような)
  • 状態遷移を視覚化しデバック中にわかりやすくできるような


頭の中でまとまらないので一時保留(という事を幾度と無く行ってきたが今回もそうである。)


 ライブラリ製作は憂鬱だ。より良いポリシーを持ったプログラムが世界のどこかに存在するはずなのに自身のPCでそれを実現させるためにまた世界のどこかに存在しているものを結果的にコピーしている事になる。
ライブラリ製作は世界の有能なコンピューター科学者の成果と自身のPC上で実現したい事を繋ぐアダプターを製作する事だ。
このアダプター製作を止めさせられる事ができるようにする事が今後の研究課題といったところである。

最近のTODO

  • 各種mallocを見学してmallocジェネリックな実装を行うこと、VC6でもコンパイルできるに移植する事。
  • dxexの為の簡易3Dエンジン実装
  • スペースソルジャー2を作る
  • FBXファイルを調べる
  • 今までダウンロードして見ていなかったソース郡を眺めてニヤニヤする

近況:
mallocや3Dエンジンのソースを見ると眠くなるようになった。かなりのブランクのせいでプログラミング感覚が非常に鈍っている。まずい。
アルゴリズム論―理論と実際を読むのが生活の楽しみ。計算量の項は詳しく分からなかった事なので知る喜びが多い。この本は数学的な式による説明と抽象論が多いが一つ一つのアルゴリズムや問題に関する説明が非常に詳しいので苦しい毎日の生活に読破する楽しみを与えてくれる貴重な資源だ。

今までDKUT Projectを支えてくれていたHDDが今お亡くなりになりました。

Powered by dKingyo BUFFALO | バックアップ | HDD | IO-DATA | ハードディスク


 ついにHDDが壊れました。私はHDDが壊れる事態に陥った事が無かったのでショックです。
 今までDKUT Projectを支えてくれた尊いHDDです。過度な再コンパイルにもよく耐えたと思います。常時50℃以上の温度によく耐えたと思います。頑張ってくれました。本当に感謝しています。
 バックアップを取っていたので大事には至りませんでした。しっかりバックアップ取れていたのも何かの縁でしょう。本当にありがとう。HDD。


追伸:最近、HDD内に入っている音楽がエラーで読み出せなかったのでバックアップとった後、HDDTuneでエラーをスキャンして、そのスキャンのスクリーンショットをネタにこの日記に投稿しようとした矢先でした。今では立ち上げるとガリガリガリという異音を発して「もう限界です」宣言をしています。

MD5 Optimized in MMX part10 / Test on Dual-Core

Powered by dKingyo / 人口を増やす / 就職口を増やす | アセンブラ | ゲームプログラミング | Mandriva | PHP | C++


 昔々、あるところにMD5を最適化して処理速度を速くしようとした生徒がおりました。
 その生徒はMD5アルゴリズムMMXを使って32bitの計算部分を並列化すれば処理速度が速くなると予想し慣れないアセンブリ言語で怠惰なプログラミングをしていたのですが、苦労し努力したにもかかわらず、逆に処理速度が遅くなってしまう憂き目にあいました。その生徒は貴重な時間を無駄にしてしまったのです。
 その生徒が学生になった頃、Dual-CoreというCPU1つの上にCPUを2つ乗せる最新テクノロジーの恩恵をこうむる事が出来るようになりました。しかし、学生と言う立場からしばらく手が出せなく歯がゆい思いをしている頃、Quad-CoreというCPU1つの上にCPUを4つ乗せる最新テクノロジーが主流となり、Dual-CoreのCPUが乗っているパソコンが投売りされるようになりました。
 そのパソコンを手に入れた学生は昔に失敗したプログラムを何気なく走らせたところ、驚きの結果が出たのでした。 再テスト中 結果:やっぱり勘違いでした。おrz