ハフマン符号の実装方法

ハフマン符号というのはあくまでモデルのようなものであって、実装は対象とするデータやら表現形式やら実装者の趣味やらで大きく変わることになる。

たとえば、0~255をとるデータを対象に符号化を行い、それをファイル上に表現する場合
オーソドックスに符号長1byte、符号長ビットだけ続く符合データが256個並ぶ形になるかもしれないし、
出現数0のデータを省けるように、0~255のデータ本体用に1byteさらにつける場合もあるだろう、
オメガ符号などを用いた動的整数表現を符号長表現に使う人もいるかもしれない。

どれも用途次第であるし、中には対した差がないので完全に趣味で選ばれるものもある。
つまり、ハフマン符号一つとっても実装は千差万別であり、どれもこれも同じ用に表現されてはいないということだ。

要するに、bzip2のハフマン木の復元方法わからなくて悩んでるってだけです、はい。

2chのrss

2ch系掲示板のatom生成CGIなんてものを作りました。
普通のrssとは違い、スレストップがかかってようやくentryに追加されます。
もちろん次スレ追尾機能付属、2chといいつつ2chで見るものがないので未対応。
対応掲示板はしたらばとワイワイ。

動機は、それなりに速度があって週1ぐらいで次スレにいくようなスレッドをrssで管理したくなったため。
1レスごとにentryが増えていくものではリーダーに未読が山と溜まるか、リーダーに張り付いていなきゃいけなくなるので却下。
別にリアルタイムで読みたいほどではないため、スレストかかるごとにまとめ読みするぐらいがちょうど良いかなと。

これで手動で巡回せざるを得なかったスレッド系も全てrssリーダーに押し込めたので、だいぶ余暇が増えるはず。
一旦わき道にそれちゃうと長いからね、わき道にそれないようにする努力は100投資してもまだ見返りのほうが多いさ!

5:30追記
調子にのってpixivも追加してみた。

相手の話を聞くということ

コミニケーションにおいて少なくとも上から五本の指には入るだろう重要項目の一つ、相手の話をきちんと聞くこと。
自分はこれについてまるで出来ていない自覚があるので、どうして出来ないのか考えてみる。

まず、自分から話しかけるときは事前に相手の話を聞くこと聞くことと散々念じているが、実際会話が始まったとたん、そんな思いはどこかに吹き飛んでしまう。
理由は簡単で、会話に脳のリソースをとられて、そんなことにまで割いていられなくなるからだ。

要は、自分にとって他人との会話とは全力で集中してようやく成り立つものであり、常に必死なので、それ以上のことをしている余裕がないわけである。
結果、相手からは同じ発言を繰り返しているように見えると注意を受けたり、ため息と共に会話を切り上げられたりする。

ではこうすればなおるのでは……などと続けられたら良かったのだが
正直打つ手が思い浮かばず困っている。
おそらく、場数が圧倒的に足らないことが原因だと思うのだが、親しい友人相手のチャットあれば会話しながらコーディングする余裕もあるので何か違う気もする。

単に緊張しているのか、それともチャットだからなのか、もしくは友人だけが例外なのか……
その辺ははっきりしないが、現状会話の何が悪いか以前の問題だろうと思うしかないのだろう。
そもそも、会社の上司に「今何の話をしていることになっているか言ってごらん」などと、明らかに会話力向上トレーニングを仕掛けられている時点で脳内リソースが足りていないことは明白だ。

とりあえず出来ることは、少しでも他のことに思考を割ける様、少しでも会話になれることからだろうか。
問題は、1年半も続けておきながら、まったく持って慣れていないことなのだが……

自己流学習法

「百聞は一見にしかず」、プログラムでもこれは変わらない。

たとえば、あなたは既にいくつものプログラム言語に習熟しており、また新たな言語を学びはじめたところだとしよう。
そこで既にその言語に習熟した誰かからさまざまなノウハウを見聞きし、そのまま導入したらどうなるだろうか?

確かに何も知らずにはじめるよりは遥かに早く使えるようになるだろう。
同時にいつ足元を掬われるかわからないという恐怖におびえることにもなる。
なぜなら、ノウハウの理由がわからないために、なぜ厳守しなければならないのか理解できないからだ。

理解できない理由は簡単だ。
人間はたとえどれほどデメリットが多かろうと、実際に体験するまでは本当の意味で警戒することは出来ないように出来ている。
つまり、実際に失敗してみない限り真の理解は得られないのだ。

なので、熟練と呼べる域を目指すならば、少なくとも一番最初の初歩だけは他人に頼らず、自分の力のみで進むべきだと自分は感じている。
それは余りにも多くの失敗を伴い、ちょっとしたノウハウ一つ知っているだけで乗り越えられるようなものに阻まれ続けるだろう。
けれど、それは原理の理解に役立ち、後に費やした時間とは比べ物にならないほどの効率化をもたらすはずだ。

もちろん一人では限界があるので、人に頼るのは悪くない。
ここであげた最初の一歩も、なぜなのか原因を聞くぐらいならばむしろ効率化をもたらすはずだ。
大切なのは、理解する努力を放棄し「とりあえず動くから良いや」と先に進んでしまわないこと。
理解が足りていないものが何かわからないのならばまだいい、だが、理解が足りていないとわかっているのに無視する事は多くの不幸をもたらすはずだ。
工夫せずとも無知で居られる唯一の機会なのだ、大いに活かそう。