Top 上へ 目次
Ver.4系のβ版(?)Ver.4.60(前編)
まさかの、前・後編の分割になりました。
もうね自分でも、こんな駄文書いてる暇があったら仕事しろよと思います。
気づいてらっしゃる方も多いですが、Ver.4系は新しいコマンドや設定類があまり増えてません。
表示イメージは結構変わっていますが、実に地味な改修です。
これはVer.3系の翻訳をやってらっしゃる方が、Ver.5に作業量が少なく移行できるようにという配慮があったりします。
Ver.5まで、こっちが先に到達しちゃったら・・・えーと、あまり考えない方向で(滝汗)
あと、平行リリース時代となるVer.4系のヘルプは一切書いてないです。
後から大量に書き足すはめにならないように、という裏事情もあります。
というわけでVer.4系の後半も、よりストレスを発生させない、より苦手ジャンルを減らすという、基本性能の向上のネタを潰していく方向性で考えています。
まぁ「1個のタブが固まっても他のタブに影響を及ぼさないようになれば、かなり幸せだなプロジェクト」の一環です。
(たぶん字ばっかりで、記事を読んでもつまんないです)
えー、前回の試験実装を踏まえて、まずはネットワークがらみです。
As/Rの場合「終了時のタブを復元する」といった設定が初期値でONなので、ネットワーク先を復元しようとして時間がかかるというのは、ありがちなウッカリトラブルの話です。
これを回避するために、ネットワークフォルダーは復元対象から除外したり、Shiftを押しながら起動すると復元をしないとか、回避方法は用意しています。
が、そんな意味不明な設定や、隠し機能みたいな回避方法なんぞ、誰が使うっちゅーねん!ふざけんなコラ!
フォールトトレランス(障害耐性)無さすぎだっつーの。
だいたい、作者ですらしょっちゅうドツボにはまってるって、ダメすぎだろ!
と思うに至った経緯は、会社の共有ファイルサーバーはミラーリングとまでは言わないけど、そろそろバックアップ取った方が良いと思います・・・マヂやべーっすよ。
さて、具体的な話になりますが「テキスト文字列のフルパス表記」から「ITEMIDLIST」に変換する際に、ネットワークがアクセス不能であった場合はスンゲェ遅いです。
COMインターフェイスを使わなくとも、::GetFileAttributes()といったファイルの属性を返すAPIとか、::FindFirstFile()系による走査も例外ではありません。
要するにネットワークの相手先の都合を考えないで、とにかくアクセスできるまで待つというのが、現在のWindows系のOSの基本的な仕様です。
正直、タイムアウトという考え方はないんか・・・あまりの素人臭さに父ちゃん情けなくて涙出てくらぁと思います。
ちょいと小難しい表現をすると、常時接続モデルから随時接続モデルへの業界のトレンドの変化に合わせた結果なんでしょうが、ローカルデータベースなりを用意して非接続時のことも考えないとダメだったろ?ん?と思います。
あれ、NTFSに変わるファイルシステムとして期待されながら盛大に失敗したWinFSって、データベース的な側面を持っていたような・・・もしかして、そういうオチか?
とまぁ上の文章は全部前置きですが、要するに適当時間でタイムアウトが可能な方法を使ってネットワーク先が生きてるか死んでいるかを確認し、死んでたらアクセスすんなよ、という発想です。
事前にPING打ってるイメージですから「高速化」ではなく、「均一化」と言った方が適切です。
ですから相手先が生きてる場合はモッタリマッタリと明らかに遅くなってますが、相手が死んでる場合は当社比300倍速で応答を返します。
ちなみにXP時代にはわりと速く、失敗した!って応答が返ってきてたので、こんな事で悩むこともありませんでした。
XP時代には重要でなかった考え方なわけで、Windows Vistaの登場時・・・つまり、2007年ごろから、このような処理が必要だったというオチです。
まぁその要するに、これもXPサポート終了計画の一環です。
例によって無理やりXPでも動作させていますが、非公開APIを使ってますのでMS社もサポートしてくれないレベルです。
正式なサポートから外れたからこそ、可能になった選択肢ですね。(苦笑)