« 2010年7月 | トップページ | 2010年9月 »

これは脆弱性なの?

 他のサイトを見ていて、「USBメモリーにDLLを入れて読み込ませて、ウェブでアクセスしたときにそのDLLが読み込まれる」なんて方法が載っていたので、これでなんで脆弱性と言えるのか疑問でした。そもそもローカルにファイルを設置できるようならウェブから攻撃する意味がないだろうと。LANに接続している人から攻撃を受ける可能性という点までは納得です。

 ただ、この脆弱性(?)は、アプリケーションが存在しないDLLを読み込もうとしたときに全然別のDLLを読み込もうとしてコード実行が成立するというものですが、そもそもどうやって存在しないDLLを読み込ませるんでしょう。

ITmedia:WindowsのDLL読み込みの脆弱性発覚、Microsoftがアドバイザリー公開
http://www.itmedia.co.jp/news/articles/1008/25/news024.html

| | コメント (0) | トラックバック (0)

いつになったら古いシェルが新しくなるのか――私がUnixを嫌う理由

 LinuxやSolarisなどのUNIX系のOS(以下、Unix)は、何であんなに発展性に乏しいんだろうといつも思います。それは、私がUnixを嫌う理由でもあります。

 Unixユーザーは、「どの環境にもインストールされているから」などと言い訳して、クセの強い操作性を持つviをいつまで使い続けるのでしょうか。

 そもそも、「どの環境にもインストールされている」という基準でエディターを選ぶこと自体が駄目な発想だと思います。環境に合わせて、使いやすいエディタを使っていけば済む話でしょう。使いやすいエディターなら大して覚えることも多くないはずですから。

 百歩譲って、環境によって、インストールされていなかったり、インストールされていたりするのが困るのだとしても、使いやすいエディターを新しく作って、それを新バージョンのどのOSにも入れるようにしていけば解決するのです。

 ところが、根本がオープンソースであったり、各社バラバラに製品を出しているUnixは、誰かが中心になって使いやすく変えていこうという発想が出てきません。テキストエディターの1つさえちっとも新しくできないようなOSに、魅力を感じろという方が無理です。

 エディターだけではありません。ディレクトリの名前も、統一性のない略語のオンパレードになっています。これらは一体いつ改善されるのでしょう。

 UNIXはC言語とともに発展してきましたから、コマンドやらディレクトリやらがC言語と同じような命名規則になっています。その命名規則はコンピューターの性能が悪い時代は名前を短くできることに利点がありましたが、今では名前そのもののわかりやすさ(どういう意味の単語なのかなど)の方が重要です。そのため、JavaやC#ではこういう意味不明な略語は使われなくなりました。

 ところがUnixでは、いまだにusrディレクトリがuserディレクトリになったりしません。これを誰も変えようとしない。昔のわかりにくい命名規則に従った名前を見るのは気味が悪いです。OSやシェルの仕様自体がスパゲッティ・コードになっているのがLinuxでありUnixです。

 いつまでたっても古いまま、事なかれ主義者のOS、Unix……。これを信奉するのは、やはり事なかれ主義なシステム管理者だったりします。新しく何か覚えるのがいやだといって、いつまでも不便なソフトを使っていくのは勝手ですけど、そんな考えで技術者のふりをするのはやめてほしいです。新しいソフトを作って、いままでできなかったことを可能にしてみたり、不便だったものを便利にしていくのが技術者だと私は思います。

| | コメント (0) | トラックバック (0)

水道料金の「納入通知書」、この名前はどういう意味か分かりますか?

 水道料金を銀行引き落としで払っていたつもりでいたのですが、実は4か月分くらい滞納していたことがつい先ほど判明しました。

 いままで横浜市水道局(?)から「納入通知書兼領収書」というものが届いていたのは気づいていたのですが、「納入通知書」のことを「納入されたことを通知しますよ」という書類なのかと勘違いしていました。

 今日、たまたまその辺の領収書などを整理していて、コンピニの印が押されている納入通知書(1月分)と、そうでない納入通知書(5月、7月分)があることに気づいたのでした。

 さらに、余計なハガキに混じって、水道料金の支払い催促もありました。これでよく水道を止められないで済んでいたなと。

 「納入通知書」じゃなくて「請求書」と書いてほしかったなと思ったのですが、そんなことを言ってもしょうがないので、急いでコンビニに支払いを済ませてきました。銀行引き落としの書類も書き、封筒に入れておきました。これで解決ですね。

| | コメント (0) | トラックバック (0)

現実の世界をスクリプト言語で表す

 オブジェクト指向プログラミングの古い設計思想に、現実の世界をそのままの形で表現するという方針がありました。これは、プログラムやスクリプトを効率よく書く目的からすると非常に良くないものですが、使い方によってはちょっと面白いなと思えたので紹介してみます。

 たとえば、「ちびまるこちゃん」に出てくるコスギの性格は、JavaScriptに書いてみるとこんな感じでしょう。
// コスギがコスギである限り、コスギは食べ物を求め続ける。
while(kosugi==kosugi) kosugi.Find(food);
 記事のタイトルに反して、現実の世界ではなく漫画の世界をスクリプトで書いてしまいました。

 それとはまた別の話ですが、普通の人(この場合は八田亜矢子)の年齢を求める処理はこんな感じだと思います。var Person=function(){};
Person.birthDay=new Date();
Person.prototype.GetAge
  =function()
  {
    /* 年齢(age)を求める処理 */;
    return age;
  };

hatta=new Person();
hatta.birthDay=new Date(1984,10-1,4);
document.write(hatta.GetAge());
 一応、軽い解説もつけておきますが(とはいいつつもJavaScriptはよく分かっていないんですが)、Personはプロトタイプで、C#やJavaでいう基本クラスであり、基本クラスのオブジェクトでもあります。JavaScriptは基本クラスの実体が関数になっているようです。さて、Person.prototype.関数 ……としておくと、new Person()て作った別のオブジェクトからもその関数にアクセスできるようになります。C++やC#でいえば関数・メソッドにpublicとvirtualをつけるような感じです。

 話がそれましたが、サザエさんに出てくるタラちゃんは、GetAgeがこんな感じになるでしょう。tarao=new Person();
tarao.GetAge=function(){ return 3; };
document.write(tarao.GetAge());
 初期には2歳だったこともあるらしいですが、とりあえず気にしない方向で。そもそもこれも現実の世界じゃないのですが、それも気にしない方向で。

 人の年齢を求める関数を、タラちゃんの年齢を求める関数で上書きしたいために、普段はほとんど使っていないJavaScriptを使ってしまいました。そのため、解説が非常に適当です。

| | コメント (0) | トラックバック (0)

« 2010年7月 | トップページ | 2010年9月 »