IEのエンコード自動選択の調子が悪い

最近、何故かIEだと文字化けするページが異常に多い。最初はunDonutが悪いのかなとか思ってたけれど、IEの様子。原因は判っていて、レスポンスヘッダに文字コードの指定がない場合。全部UTF-8と解釈しちゃってる。HTMLのmetaタグとかは完全無視で。IE7を入れたせいかなぁ。既にアンインストールしてるのになぁ。

辞書クラックに使われるユーザー名

最近、自宅サーバーをSolaris10からFreeBSD6.1に乗り換えた。時間がなくてまだ何もインストールできていないけれど、作業はできるようにSSHだけは繋がるように設定した(なぜか特定の場所からはSFTP接続できないという状態を解決してないけれど)。
何となくlogをcatしてみたら、早速クラッカーさんがお目見してた。引越し後、サーバーをwwwに出してまだ数日なのに。
家はSSH2のみで鍵ファイル+パスフレーズを必須にしているので、色々なユーザー名でログインを試みても仕方がないのだけど、辞書クラックのユーザー名はいつ見ても興味深い。下に5分間の間に接続しようとされたユーザー名を載せておくので興味のある方は見てみると良いかと。恐らく成功率の高い選りすぐりのユーザー名では。内容的にはSSH Attackとかと被るけどね。

abinitioforum absurdir_deadphp adam adm
admin administrator admins aecpro
agent akcesbenefit alan alex
alexander alias alina almacen
amanda amavisd andrew angel
anne anonymous apache appowner
appserver aptproxy arbgirl_phpbb1 aron
b3 backup bauer bb
bear becker beginner bejgli
bloodclansb braun brett carol
carshowguide cchen cesar clamav
clark clinton core cs
cyrus cyrusimap dan dana
danny data david dean
desktop dev divine dominik
eleve eppc eric ethereal
felix filip filippid_admin filter
fischer flood florian flower
forums frank fred ftp
ftpuser fuchs george gnats
gopher greg guardit guest
hal halt harrypotter herrmann
hiperg hoffmann horde horndog
http httpd huber iceuser
ident identd info instrume
irc jabber james jan
jared42 jeff jking johanna
john jonas julia jung
kaiser kappel karika katharina
kayla key kim klein
koch konig kruger lang
laura lemancaf_leman lena leon
leonie library linux lisa
list lp luca lucas
lucky lukas maggie mail
mailman marie marius master
matt maximilian meyer michael
michelle mike mri mtgo
muller myrhodesiaiscom mysql named
neumann newsletter nfsnobody niklas
njproghouse office oracle paintball1
party patrick paul perseus
peters pgsql philipp phpbb
phpbb2_general popa3d porno postfix
postgres postmaster public qtss
radiomail reboot recruit resin
richard richter robert rock
rolo rpc rpcuser rpm
russ sales samba sandra
sangley_xmb1 sara sarah schafer
schaiderhair schmidt schmitz schneider
scholz schroder schulz schwarz
scott search securityagent seoulselection
sgi sharon shell shop
shutdown signalhill snort sonny
sophie spam sqladmin ssh
staff stephanie stephen steven
sun0s sunny susan sybase
sync sys telnetd temp
test testing tim tokend
tomcat tomte1 tony travel_phpb1
unix unknown user username
users vanessa virus visitor
wagner wallimo_phpbb1 walter web
web1 web2 webadmin weber
webmaster webpop white windowserver
wolf workshop www-data wwwrun
xgridagent xgridcontroller zimmermann zzz

ステップを経て学ぶよりも達人の真似をすべき

SEの道は仕様書に始まり仕様書に終わる
どうも賛成できない。上達するには達人の真似が最強だと思う。
私の出会った多くの人は初心者にまず自分で考えさせてる。で、赤ペンなりレビューなり放置なり。このステップが気に食わない。偉そうに初心者に教えている様子を見るとうんざりする。
例えば、MVCとは何か?というのを考察するときに、ModelとViewとControllerを丸く囲って概念図を作って、Viewで作るべき部分を割り出して、Modelで請け負うロジックを考えて仕様書に起こしてみて、それで出来たらレビューしてもらって、なんてことは私は絶対しない。
MVCです」と謳っているオープンソースフレームワークをドキュメント流し読み、コード斜め読みでとにかく作る。そうすると、どのフレームワークでも妙に画面系が集まってたり、呼び出しクラスとかを決めているところが一箇所しかなかったり。「みんな揃って同じ作りをしてるよ!」と笑いながら、且つツッコミを入れながら解析する。
プログラム業界で世界的に優れた人が沢山いるのは、オープンソースの賜物だと思う。逆に達人の技を公開しない業界は達人の数が減っているように感じる。多くの業界では達人が自分の立場を脅かされるのが嫌で技を公開しなかったり、達人でない人が教えたりで、金のたまごの多くが台無しにされているように思う。
例えば、個人的な感触ではあるけれど、クラシックピアノの達人は自分の技をあまり公開しない。演奏とか録音では存分に披露するけれど、それは所謂バイナリデータだ。解説とかいらないので、とにかく色々な角度からカメラで撮ってアップでみれる教則ビデオを作ってはいかがか。多くの達人ピアニストがこのように公開するとどうなるか。
残念ながら現実には多くのピアニストが達人ピアニストの演奏会やCDを必死に聴いて学んでいる。結果から手法を推測しているのである。プログラマの人なら、Windowsの動きだけを見て同等のOSをC言語で書いているといえば想像して頂けるだろうか。
達人たちの成果物はそれ自体が非常に高価値だけれども、その高価値なものをより多くの人に生み出せるような試みも惜しまず行って欲しいと心から思う。そして、その試みによって収益を得るのは全くもって正当なことだと思う。有料・無料の問題ではない。個人的には有料であるべきとすら思う。

楽譜XMLを策定する 1 (序章)

楽譜をXMLで表現するという試みは既にある。対応アプリケーションと同伴で提供していることが多い。しかし、自分の知っているものはどれも思い描くものに当てはまらないので自分で考えることにする。
既存の楽譜XMLでは以下の点が目立つ。

  1. 楽譜で表示されることを前提として座標などの表記データを記述
  2. 音の再生のために専用のマークアップを記述
  3. 結果として非常に複雑なXMLとなっている

では、どのようなXMLにしたいか。これを簡単に挙げると以下の2点。

  1. システム開発者の視点ではなく作曲者の視点
  2. XMLで音量やタイミングなどを細かく指定せずにプレイヤーを尊重

1.はシステムとして必要だからマークアップするのでなく、曲としての必要要件だからマークアップするという意味。例えば「crescendo」をそのまま表示するか太字にするかというのは曲としては意味をなさないので、それはXMLで記述する対象ではないということ。
2.はソフトで音を再生しようとすると細かく規定したくなるけれど、それは楽譜ではなくなるのでやめたいという意味。「fff」と表記されているからといって強さがMIDIでいう「127」であるという作曲はないだろう。「fff」の区間でアクセント記号が出てくればどうするのか、そのアクセント記号自体が連続する音符に全て付いていても全く同じ音量か。これらはXMLで数値化されて指定されるべきではなく、プレイヤーに依存するべきだと考える。プレイヤーというのは演奏家という意味で使っているけれど、それに限らずソフトで読み込むときも同じだと思う。楽譜のフォントや体裁は出版社が決めるように、ソフト側が自由に解釈してよいと思う。勿論、音を再生するにあたっても再生するソフトがより良い再生の仕方を工夫して解釈すべきだと思う。
以上の点を踏まえて今後時間があるときに考察してはこのブログにアップしていこうと思う。但し、通常書いているブログのエントリと混ざると辿りにくいので、このページを目次としてリンクを追加してゆくことにする。

最初から具体的な話がないのでは活気がでないので、まずは楽譜の横軸について考えてみる。
横軸はどのタイミングで演奏するかを定義するもので、MIDIの世界では四分音符を基準として数値化している。昔は四分音符=96が主流だったが、途中で四分音符=480に切り替わったように思う。現在のPCのシーケンサーはこれ以上のものも勿論ある。480分解でもかなり細かい定義が可能と考えられるけれど、これは最初に述べた思想に合わない。480分の14のタイミングで弾けと指定している楽譜は見たことがない。
ではどうするのか。これは本来の楽譜の表記に従った方が自然だと考える。楽譜では音の長さは割り算で表される。小節を基本にして4分割の長さを四分音符。16分割の長さを16分音符という具合だ。そして楽譜の横軸はこのような音符の長さを基準にタイミングを指定している。
何が言いたいのかというと、2/4の位置というのは4分音符の長さで二つ目の位置ということが判るし、15/16の位置は16分音符を並べて最後のから二番目の位置ということが判る。つまり音符自体を数値で定義する必要はなく小節内の割合で示せるということだ。これを実際のソフトが読み取るときにどのように変換するかはソフトの問題でXMLの問題ではない。
同じ要領で永久に細かく定義することもできるけれど、目的は細かくすることではなくて楽譜で記載される位置情報を超えない精度で表現することにある。システム的にみても何らかの数値に置き換えるのは時代の流れについて行きにくいので、音符ベースの位置定義は理想的かと思われる。

目次

  1. 楽譜XMLを策定する 1 (序章)
  2. 楽譜XMLを策定する 2 (音程)
  3. 楽譜XMLを策定する 3 (音符)

※ご意見などをコメント・トラックバックで頂けるとうれしいです。

StartForceを使ってみた感想

StartForce
http://www.startforce.jp/
ブラウザ上でデスクトップを再現したAjaxなWebアプリケーション。これを使ってみて初めて気付いた。GUIって面倒だ。
スタートフォース自体はついに出たかというインパクトがあるし、動きも軽快で中で動くアプリケーションが増えれば使い道は十分にあるように思う。でもブラウザ経由はやっぱり辛い。Windowsリモートデスクトップと同じ印象。
これはキーボードショートカットのあるなしの差というよりは、キーボードショートカットなどの補助機能がなければ、何から何まで面倒だということだと思う。
PCのGUIときたら、ボタンを押して、メニューを選択して、見にくかったらウインドウを広げて、重なったらウインドウを移動して、とにかくやることが多い。
この辺のインタフェースはパソコンの常識が根付き過ぎだなと思う。余程ファミコンの方が優れていると思う。ファミコンでは基本操作が十字キーとA・Bボタンしかない(同時押しとかあるけど)のにとても遊びやすかった。それは単純なゲームだからだということではないだろう。特にRPGなどでは様々なフローがあって選択肢があってステータスがあって、しかもデータの保存までして、それでもあの薄い説明書だけで子供が理解した。いや、説明書は関係なく触ってたら判るくらい明瞭だったのだと思う。環境的に劣悪(マシンスペックとかROMの容量とかグラフィックとか)だったにも関わらず。
スタートフォースについては次世代Webアプリケーションの可能性として好意的に受け止めるとして、目指すべきは高性能なGUI環境ではなく簡素なインタフェースであるべきだなと再認した。

既定のソフトになろうとし過ぎ

脆弱性のアップデートがあったのでQuickTimeを入れ直したら、トレイアイコンの設定だけ勝手に元に戻された。何でこうもOSのデフォルトになろうと陰でこそこそやるのか。
だいたいのWindowアプリケーションのインストーラはそうだけど、既定のソフトに選択するかどうかのチェックがデフォルトだったり、勝手に裏で拡張子の関連付けを変更したり、本当に鬱陶しい。
人によってはその時点で設定したいだろうから全くのデメリットとは思わないけれど、せめて選択権はユーザーに与えて欲しい。そして明示的に何をするのかを提示して欲しい。
こういうことがあるからフリーソフトレジストリ関連の操作は大体明示的に説明があるし)が好きなのかも。金額の問題ではなく。

textareaの値を正しく取得する方法とは

<textarea id="greeting">HelloWorld</textarea>

とタグで挟んで初期値を設定するので、JavaScriptで参照するときには

document.getElementById("greeting").innerHTML = "HelloWorld";

とかやりたい。でもこれは上手くいかない。ブラウザに依る差が激しい。上のやり方だとFirefoxは成功するけれど、IEはだめ。innerHTMLをきいても怒られないけれど、代入しようとするとエラー。innerTextだといけるけど、それをすると今度はFirefoxが怒る。Operaはあまり詳しくみていないけれど、どちらも上手く行かなかった気がする(innerHTMLもinnerTextも定義はされていたと思うけど)。
結局、

document.getElementById("greeting").value = "HelloWorld";

が一番上手くいく。果たしてこれはvalidな取り方なのか。

<textarea id="greeting" value="HelloWorld"/>

とか書かないから気持ち悪い。

シングルクォートとダブルクォート

Zend Framework PHP 標準コーディング規約を見ていて、シングルクォートとダブルクォートをちゃんと使い分けるべきかなと思った。最初に覚えたのがJavaだったので基本はJava方式で書いていたけれど、言語の特徴を考えるべきだなと。

System.out.println( "Hello " + name );

Javaで書くのでPHPも同様に

echo "Hello " . $name;

とする。というのではなくて

echo 'Hello ' . $name;

とか

echo "Hello {$name}";

とか書いた方がそれらしい気がする。

echo "Hello $name";

というように直接変数を埋め込んだ方がいいのかな。どうしよう。