2006/12/29

ハンガリアン記法ふたたび

随分とご無沙汰してしまいましたが、前回のハンガリアン記法の記事にコメントがありましたので、また、書いてみようかと思いキーボードをとる事にしました(うーん、筆を「とる」というのがあるが、キーボードの場合は、「打つ」だろうか?)

最近は、.NET関連の仕事が増え、JavaだのC#だのを使うことも多いので、非ハンガリアン(通りすがりさん紹介によると「システム・ハンガリアン」ですが)でコードを書く事が多い今日この頃です。

前回の記事で、通りすがりさんよりご紹介のあった記事にあるように、私が「悪なのか?」と考えたのは、「システム・ハンガリアン」の方です。

とりあえず、一読した限りの私の理解で、「アプリケーション・ハンガリアン」と「システム・ハンガリアン」の違いを説明すると(間違っていたらスイマセン)

プレフィクスが変数の意味を表すのが「アプリケーション・ハンガリアン」
プレフィクスが変数の型を表すのが「システム・ハンガリアン」

Charles Simonyi氏は「アプリケーション・ハンガリアン」を考えたが、他のMicrosoftのエンジニアが誤解、「システム・ハンガリアン」として使ったのが広まったというのが真相で、Simonyi氏の意図は、決して型をプレフィクスに書くものではなかったとの事です。

つまり、型は同じであっても、使途が違っていればプレフィクスを使って区別するというのが「アプリケーション・ハンガリアン」の意図だったという事です。この考え方は、理にかなっていると思います。「システム・ハンガリアン」の場合でも、

char * pcBuffer ;
char * pszString ;

のような使い方は、同じ型であっても格納しているデータが違っていることを表しているという点では、「アプリケーション・ハンガリアン」に近い使い方と言えるかもしれません。もちろん、「アプリケーション・ハンガリアン」であれば、格納しているデータについて、もっと詳細な分け方をするだろう(格納する文字列がパスワードを示すなら"passwd"だとかという具合)事は用意に想像できます。

さて、紹介された記事では、変数を見た時点で型が解かっても、「有用なことをほとんど何も教えてくれない」ので、「はなはだ煩わしくほとんど役立たず」であるとしています。

「システムハンガリアンにも、バグを見つけやすくする特質がなくはない。少なくとも、システムハンガリアンを使うなら、変数の型がその使われているその場でわかる。しかしそれはアプリケーションハンガリアンの有用性には遠く及ばない。」

とも記されています。

私個人としては、「変数の型がその使われているその場でわかる」事が、「システム・ハンガリアン」の有用性だと思っています。たとえそれが、「アプリケーション・ハンガリアン」の有用性には遠く及ばなくても、否定する事にはなりません。

例えば、ポインタであるか否かを一見で区別出来るは便利だと思うのですが、どうでしょうか?

決して「アプリケーション・ハンガリアン」を否定しているのではありません。そもそも、変数名には無意識に、意味を付け加えている。紹介された記事では、

「アプリケーションハンガリアンは有用で意味のあるプレフィックスを使う。配列インデックスを表す"ix"や、個数(count)を意味する"c"、2つの数の差(difference)を意味する"d"などだ(たとえば"dx"は幅を表す)。」

と記されているが、おそらく、殆どのプログラマは無意識に、

int nHogeIndex ;
int nHogeCount ;
int nHogeDiff ;

といった書き方をしているのではないでしょうか?

「変数の型がその使われているその場でわかる」という事だけの為に、わざわざプレフィクスを使うのは、「繁雑」で「馬鹿らしい」というのも理解できます。もちろん、そう考える人は「システム・ハンガリアン」を使う必要はありません。前回書いたように、「デメリット」が「メリット」を超えているからです。

だからと言って「システム・ハンガリアン」は「悪」とは言えません。(もちろん、紹介の記事も、そんな事は言っていないと思います)実際、私も、JavaやC#を使う場合は、流儀に従ってCamel記法やPascal記法を使います。その場に合わせて最適なものを選べば良いのだと思いますが、如何でしょうか。

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

2005/08/09

いつまでも、新品同様?

CNet Japanの記事より:

  Microsoftは、次期バージョンのWindowsで、「PCの動作をいつまでも新品同様に保つ」という長年の問題に対処したいと考えている。

 Microsoftは、来年に出荷予定の「Windows Vista」クライアント版で、時間の経過に伴ってPCの速度が低下するという、長年の問題を解決しようとしている。

おお、なんか凄い事になってますね。確かに、これが出来れば素晴らしい事だが。

 Microsoftでは、PCの速度を低下させる要因が複数存在するとしている。プログラムとファイルは、最初こそハードディスク上にきちんと並んでいるものの、その後は徐々にバラバラになり、やがては情報の検索や読み込みに時間がかかるようになる。さらに、システムトレイに並ぶプログラム類もPCの動作速度低下させる。この問題については、Microsoftも自社のウェブサイトで詳細な説明を公開している。

これは確かにそうなのだが、メモリを圧迫している不要なサービスとか肥大化を続けるレジストリとかも大きな要因だと思うのだが。HDDにはデフラグ、システムトレイの場合は明示的な終了が出来るんだけど…。

 Vistaを搭載するPCは、「SuperFetch」という新機能のおかげで、インストール後数週間経過すると速度がさらに向上する可能性さえある。SuperFetchは、個々のユーザーが頻繁に実行するプログラムを調べ、これらを自動的にメモリに読み込む機能だ。

 たとえば、ユーザーがOutlookとPowerPointを毎日使う場合、Windows Vistaはこれらのアプリケーションを起動時に読み込もうとする。ただし、それには十分なメモリがあることが前提になる。しかし、もし別のユーザーが頻繁にExcelとAdobe Photoshopを使う場合は、Windowsがこれらのプログラムを読み込んでしまうことになる。

結局、よく使いそうなアプリをメモリに載せておいて(キャッシュして)、起動時間が早くなったように見せるという事だが、この手の方法の問題は、まず、キャッシュするに十分なメモリが無いと、頻繁にキャッシュ入れ換えが発生して、先読みの利点が得られない可能性がある事、キャッシュの分だけアプリケーションが使う物理ページが減って、スワップが多発して実行速度が低下する可能性がある事等、いくつか考えられる。結局、非力なマシンには恩恵が無いような気もするが。

まぁ、Vistaが本来の機能を発揮する為には、高性能のPCが必須との事なので、それには恩恵があるのかもしれない。でも、なんとなく「新品同様」とは言い過ぎのような気がするのは私だけだろうか?

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

やっぱり、もう一回やりますか…

CNet Japanの記事より:

  Microsoftは、先ごろリリースしたWindows 2000用アップデートに見つかった互換性の問題を修正する作業を進めている。

 同社は、6月に公開した「Windows 2000 Update Rollup」が、登場から5年が経つ同OSにとって最後のメジャーアップデートになるとしていた。だが、これらのパッチが一部ユーザーのシステムで問題を引き起こしていることから、同社ではその修正に取り組んでいることを明らかにした。

これが「最後」と言っていたくせに、最後に番号が付与されていた「Windows 2000 Update Rollup 1」ですが、どうも修正パッチが出そうです。

Win2Kから早く乗り換えてほしいMSは、新機能を追加するService Packは、もう出さないという事で「Update Rollup」というパッチ集に切替えたのでしょうが、2010年までサポートがあるのに、「最後のメジャー・アップデート」としてしまったのは、ちと時機尚早だったようです。

まぁ、「もう手をかけたくない」という意志表示なんでしょうが、ユーザ数が多いので、WinMEのように、あっさり切り捨てるという訳にもいかないようです。

さて、Update Rollup 1が出た後も、いくつかの脆弱性が公表されていますが、それらのパッチも含む新しいパッチ集が出るんでしょうか。

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

thunderbird 1.0.6日本語版

thunderbird Ver.1.0.6日本語版がリリースされてますね。1.0.2のBugFix版だそうです。

このあたりからダウンロードできます。

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

って、書いた側から…

CNet Japanの記事より:

  Microsoftは米国時間5日、ウイルス作者がターゲットにする新しいスクリプト作成ツールが、次期Windowsクライアントの「Windows Vista」には搭載されないことを明らかにした。

って、早くも諦めましたか(笑)。

こんなに早く、諦めると思っていなかったのでニュースのチェックをしてませんでした。(^^;

なんだかなぁ〜という感じですね。この調子だと、どっかの政党みたいに「あれも先送り、これも先送り」状態になったりしないんでしょうか。

Vistaに乗り換える必要性が、あまり無いとなると、仕事で必要な場合以外は移行が進まない気もします。多分、多くの企業で、しばらくXPで様子眺めになるでしょうから、大ヒットとはいかないかもしれません。

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

2005/08/06

Vistaでシェルが変わる?

CNet Japanの記事より:

 ウイルス作者らが、Microsoftの新しいツールをターゲットにしはじめたようだ。同ツールはWindowsの一部となるもので、電子メールサーバ「Exchange Server」の次期リリースとともに出荷されることになっている。

 Microsoftがまもなく投入するコマンドライン・シェル(コード名:「Monad」)をターゲットにした、初めての悪質なプログラムが公開されたことを、フィンランドのウイルス対策企業F-Secureが4日明らかにした。Monadが「Windows Vista」に含まれた場合、これらのプログラムが同OSを狙った初のウイルスになる可能性がある。

command.comはMS-DOS時代からのシェル(コマンド・プロセッサ)ですから、「さすがに古過ぎるっしょ!」という事で、新開発された「MSH」こと「Monad」ですが、Windowsの場合、Linux程にはシェルを使う機会は無いように思うのですが、ニーズは高いんでしょうか?

で、その「Monad」ですが、Linux等で使われるbashよりも高機能になるようです。しかし、まだ正式に出てもいないシェルに、早くもアタック・コードが発表されてしまったとの事なんですね。

うーん、良くも悪くも注目されているという事なんでしょうか。いやぁ、MSも大変です。

 F-Secureのウイルス調査担当ディレクターのMikko Hypponenは、MicrosoftがMonadをWindows Vistaとともに出荷し、さらにデフォルトでこれを使えるようにした場合、「スクリプトベースのウイルスの発生」につながる可能性があるとして注意を呼びかけている。さらに同氏は、Microsoftがこのリスクを軽減するために、同ツールをアドオンとして提供するか、もしくはデフォルトで無効にすることも考えられると付け加えた。

アドオンって、まだcommand.comを引っ張るか(笑)。

とは言え、バッチ・ファイルは、Linuxのシェル・スクリプト程ではないにせよ、かなりの資産はあるような気もします。この「Monad」ってバッチ・ファイルも走るのかなぁ?

多分、新しいスクリプト・ファイルは拡張子を変えて(".msh"?)、".bat"だったらcommand.com互換で動かすんでしょうね。それとも、command.comを自動的にキックする? でも、バッチ・ファイルは、アクセス権限とか考えずに作ってる場合も多いしなぁ。残しとくと、「全ユーザがアドミン権限」という悪癖が残りそうな気もするし…。

さて、どうなるんでしょうか。

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

2005/08/05

えええ、それって1CD Linuxではないような

1CD Linuxでは、多分、いちばん良く知られているであろう、KNOPPIXがバージョンアップした。

IT Proの記事より:

 独立行政法人 産業技術総合研究所(産総研)は8月3日,Linuxディストリビューションの新版「KNOPPIX4.0 Linuxtag 日本語版」を公開した。KNOPPIXは,CD1枚で起動する1CD Linux。ドイツのKlaus Knopper氏がDebian GNU/Linuxをベースに開発,産総研が日本語化や機能の追加などを行っている。

KNOPPIXはバージョンアップが頻繁に行われているので、どんどん新版がリリースされます。でも、今回は、メジャー・バージョンがあがってるみたいですな。

 KNOPPIX4.0は,メディアがCDからDVDになり,容量が3.8Gバイトになった。これにともない,デスクトップ環境として従来のKDEに加えGNOMEも搭載した。また組み版システムのLaTeXなども収録している。

うがぁ、DVDメディアだってぇ!

確かに、1CD Linuxの利点はHDDへのインストール無しで動かせる事にある。私の場合も、障害でOSが起動しなくなった場合にHDD内のデータを救出したり、WindowsがインストールされているPCで、メンテナンス等の理由から一時的にLinuxを使いたい場合等に、CDから起動したKNOPPIXを使っている。だが、インストールしてまで使おうとは思わない。理由は簡単。HDDにインストールして使うなら、他にいくらでも良いディストリビューションがあるからだ。つまり、KNOPPIXは、あくまで非常時メンテナンス用なのである。

こういうシチュエーションで使う場合、相手にするPCは、当然、古い型の物が多い。流石にフロッピー・ドライブのみという事は無くなったが、DVDドライブが付いていないマシンは結構あったりする。メディアがDVDになると、これらのPCでは、お手上げになってしまう。KNOPPIXは「どこでも、どれでも使える」という、1CD Linuxの利点を、もはや重要視していないのだろうか? GNOMEやLaTeXが使えれば、確かに嬉しい気もするが、機能を絞りこんでCD一枚に納めるというのが、1CD Linuxの基本コンセプトだと考えると、必要不可欠とは言い難い気もする。

もしかすると、KNOPPIXは普通のディストリビューションへの道を歩んでいるのかもしれない。が、その道を一歩間違えば、KNOPPIXは特徴のない「その他、大勢」になってしまう危険も孕んでいる。「普通のディストリビューション」は、既に山のように存在しているからだ。もちろん、そのうちにDVDドライブは付いていて当り前になるだろうが、現時点では、1CD版も「まだ必要」なのではないだろうか。

--[8/6 追記]--
トラックバックにあるように、1CDでのブートも「予告」として提示されているようです(TBありがとうございました)。個人的には、機能を絞って、ネットワークが死んでいても使える1CD版があると、さらに良いのですが。

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

2005/08/04

Windows 2000にセキュリティホール

CNET Japanの記事より:

 Windows 2000のコアコンポーネントに深刻な欠陥が発見されたが、修正パッチが出されるまでこれを回避する方法はないと、あるセキュリティベンダーが発表した。

 eEye Digital SecurityのMarc Maiffret(同社ハッキング担当最高責任者)は米国時間3日、この脆弱性により攻撃者がIPアドレスを使ってリモートからPCに侵入するおそれがあることを明らかにした。同氏は、この欠陥を悪用すれば、コンピュータのユーザーが何も操作しなくても、ワームを使った攻撃が簡単に仕掛けられると指摘している。

これは、かなりのユーザに影響が出そうです。枝葉ではなく"コア"コンポーネントなので、無効化する事は不可能との事です。

 同氏によると、このセキュリティホールで特に問題なのは、回避策が見あたらない点だという。「この(脆弱な)コンポーネントは常時有効になっており、無効にもできず、アンインストールすることもできない」(Maiffret)

つまり、Microsoftがパッチを出して修正しない限り、脆弱性は改善されないという事のようです。ただ、eEye Digital Securityは、それ以上の詳しい情報を出していませんので、どのコンポーネントが悪いのかは不明です。

同社は会社の方針により、当該ソフトウェアのメーカーがパッチもしくは勧告を公開するまでは脆弱性の技術的詳細を明らかにしていない。

まぁ、回避法が無い以上、公開すれば新たなワームの蔓延という事態も考えられるので、これはやむを得ないでしょう。ただ、eEyeに発見できたという事は、他のクラッカーにも発見できる可能性がある訳で、これで安全とは言い難いのも事実です。

とりあえず、Win2Kユーザは出来る限りの防護策(アンチ・ウイルスの導入、ファイアーウォール等でのアクセス制限等)を講じてパッチを待つしかない状況のようです。企業等では、Win2KはLAN内のみアクセス可能に制限して、外部ネットワークと切り離すというのも考えられますが(これでも、飛び火する場合はあるでしょうが)、こういう処置を採れない場合もありますので、管理者は大変かも。

で、Microsoftは何と言ってるかというと、

 Microsoftの関係者は、同社がeEyeの勧告に慎重に目を通した上でコメントするとしている。eEyeのウェブサイトにはまだ勧告は出ていない。

まさか「これで、XPに乗り換えてくれるユーザが増えたらいいな。」とは考えていないと思いますが(ありそうに感じてしまうのが、MSのMSらしい所ですが…)、あまりノンビリ構えていると、大きな批判を受けることになるではないでしょうか。前にも書きましたが、Win2Kのサポートは2010年までと御自分で明言されたのですから、その責務は果たしてくださいね。何にしても、こういう場合は「迅速に対応する」かどうかで、その企業の評価を分けるのものです。しかも、

 この脆弱性はWindows 2000に影響するものだが、Maiffretによると、eEyeは現在もテストを続けており、MicrosoftのほかのOSにもこの脆弱性が見つかる可能性があるという。

Win2KとWinXPのコア・コンポーネントが大きく違うとも思えないので、WinXPにも影響が出るかもしれません。下手をすると、WinVista(Longhorn)β版にも波及する可能性もあったりして(笑)。

この他、eEyeは、IEの脆弱性も報告しているようです。こっちの方は、最悪でも「IEは使わない」という回避法があるので、危機回避は可能ではありますが。

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

2005/07/20

おおっと! Firefox 1.0.6

昨日の今日で、Ver.1.0.6がリリースされてますね。今回は、各国版も同時にリリースされているようで、日本語版がダウンロード出来ます。

Mozilla Japan

とは言え、英語版+JLPという御意見も頂きましたので、どうしようかと考えましたが、まぁ、とりあえず、バージョンを上げといてから考える事にしました。(安易かな?)

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

2005/07/19

Firefox、またアップデート

CNET Japanの記事より:

 オープンソースのFirefoxブラウザとThunderbird電子メールクライアントが再度アップデートされる。これは、サードパーティー製拡張機能の一部が意図せず停止する問題を解消するためのものだが、Firefoxは先週新しいバージョンが出されたばかりだった。

 今回のアップデートにより、FirefoxとThunderbirdは各々バージョン1.0.6となり、またMozilla Suiteはバージョン1.7.10にアップデートされると、Mozilla Foundationの関係者は同グループの開発者向けニュースブログのなかで述べている。

 Firefoxは先週バージョン1.0.5がリリースされたばかりだが、どうやらこのアップデートに含まれるセキュリティ関連の修正が問題を引き起こしたようだ。

これは、何が原因か特定されていないので何とも言えないが、

セキュリティ関連の修正があると、今まで解釈がグレーゾーンだった部分が、ある解釈で統一され、それに合わせたチェックが行われるので、今まで許されていた動作が禁止されてしまう事等もあるので、発生する可能性はあったようには思う。

 アップデートが間近に迫っているため、Mozilla Foundationは開発者に対し、同ソフトウェアを英語圏以外の市場に対応させるローカライズ作業を一時中断するよう呼びかけた。だが、この動きが一部から批判を買っている。

これは「セキュリティ機能に問題がある英語圏以外のユーザよりも、一部の拡張機能が動かなくて困っている英語圏のユーザの方が大事だ。」と言っているようにも聞こえないか。

そもそも、ver.1.0.5のローカライズ版を同時に出さない事が問題ではないのか?

「セキュリティに問題があっても英語圏以外は対応しないので、古いバージョン使ってくれ。」というのでは、さんざん批判してきたIEのセキュリティ対応(セキュリティ・ホールが発見されても迅速に修正されない)とどこが違うのかな? しかも、ある開発者が言っているように、

「en-US(米語版)1.0.5のリリースに合わせて、(1.0.4にある)深刻なセキュリティ関連のバグがすでに公表されているなかで、いまでも数千万人のユーザーが1.0.4を使っている」(開発者)

というのは、やはり問題だろうし、この状況を不安に思えば乗り換えを考える人も出てくるだろう(私もそうだ)。「英語版が使えるのだから、最新版が欲しかったら英語版を使え」というのは「最新版IEを使いたかったらWin XPを使え!」というのと同じ匂いを感じるのだが。


今後、Firefoxの事を尋ねられたら、こう言わないといけないかもしれない。

「英語版を使うならIEよりはアップデート迅速だから安全かもね。でも、日本語版を使うなら古いバージョンしかないから、IEと変わらないかもしれない。結局、どっちがマシかっていう話だから、Firefoxが、特に『お薦め』とは言えないね。」

願わくば、この言葉の後に、次の言葉が付け加わらない事を祈る。

「それに、Mozilla Foundationって英語圏以外は相手にしないから…。」

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

«Niftyは何故にNTPサーバを提供しないのか?