■ このページについて ■
パソコン関係の雑記。ソフトからハードまでまんべんなく。
2001年が最盛期で、「テキストだけで90KB」もザラ。
一時期おとなしくなったけど、管理のCGI化によって息を吹き返し中。
2001.11.1.Thu
先月の後半は丸々 BakaExp に潰されたので、中断していた「オブジェクト」の勉強を再開しました。オブジェクト、っても色々ありますが、自分で生成してコントロールする方の「オブジェクト」。流行りの「表示内容を変化させる」、いわゆる見た目系のスクリプトには必須のスキル。
新しいトップページにある「メッセージを表示していく」「フェードする」「テーブルがスクロールについてくる」とかは、その成果のひとつです。
siteCTSにあるスクリプトは基本的に機能・実用系が中心なんですが、素人を騙すなら見た目系は避けて通れません。「フレームの付け外し」なんてマニアックなスクリプトより、字がタカタカ出てくる方がわかりやすい。
しかし、そのほとんどはネスケに非対応。ネスケで「オブジェクト」をコントロールする方法がようわからんのです。最近になってようやくネスケ4のレイヤー機能がわかってきた程度で、ネスケ6はもうさっぱり。
そして、この「オブジェクト」こそ見た目系スクリプトの中心ともなる要素なのであります。
たとえば、
<DIV id="test">レイアウトの中身</DIV>
こうして <DIV>
に「test」というID(名前)をつけて、
obj = document.all.test; (インプローラの場合)
obj = document.layers["test"]; (ネスケ4の場合)
他にも色々な方法があるけど、これで「obj」というオブジェクトを生成できます。
要するに、<DIV> = obj
、にするわけです。
あとは
オブジェクト「obj」の幅を100%にする
obj.style.width = "100%"; (インプローラの場合)
obj.width = "100%"; (ネスケ4の場合)
というようにメソッド(命令)やプロパティ(属性)をくっつけて、この <DIV>
を自在にコントロールできるのであります。大概は <DIV>
のCSS(スタイルシート)を変化させることでコントロールするんですけど。
トップページにしても、「オブジェクトの中身にテキストを一文字ずつ加える」「オブジェクト全体の透明度を上げたり下げたりする」「画面がスクロールしてオブジェクトが置いていかれたら、画面左上に向かって少しずつ移動する」ってだけです。
ネスケ4では <LAYER> <DIV> <SPAN>
でしか使えないけど、インプローラだとIDさえつければなんでもオブジェクトにできちゃう。(そこが神がかり的に強いのだ)※実はネスケ6も神がかり的に強いのですが、知るのは数日後です。
しかし、これらはブラウザによって動作や書式が激しく違うせいか、普通の本にはまず載ってません。俺の手持ちの本には存在さえも書いてない。知りたいなら、もっと能動的な方法を使わないとゲットできないんです。
document.all
?なにそれ?document.layers?
なにそれ?
俺はとことん実践派なので、そういうのにぶつかってから初めて自分であれこれ試して、本に載ってない魔法はそうやってゲットしてきたわけですが。
問題はネスケの6でした。
こいつ、名前こそ同じでも、ネスケ4とはまったく違います。「ネスケ4で動くんだから大丈夫だろう」とか思ってるとひどい目に遭わされます。なにせ <LAYER>
タグさえバッサリ切っちゃったんだから。
JavaScript を使ってるWebサイトがあると、知らない命令があるか見たりするんですが、こういう状況があるせいか、ネスケ6でCSSをコントロールしているスクリプトにまったく出会えません。だから俺はこれを知らないわけで、ゆえに見た目系スクリプトのすべてがネスケ6非対応になってます。
トップページの「タカタカメッセージ」だって、表示する文字を作るとこまではネスケ6でも動くのに、それを画面に表示させる方法がわからん。
なにか、なにかが足りないんだ。
明日に続きます。
2001.11.2.Fri
そこで、俺もようやく重い腰を上げて「もっと能動的な方法」を採るに至りました。
目指すは MSDN Library。
目指すは Netscape Client-side JavaScript Reference。
目指すは W3C DOM Level 1 Specification。
検索って便利ですねぇ。(それさえやらなかったことの証明)
他にも色々まわったものの、そこにある情報をひとつひとつ処理してるようじゃこの世界では生きていけんので、適当にピックアップしていきます。面倒くさいですが、それでも知りたい情報がはっきりしてる分、楽な方です。
興味深かったのは、DOMの仕様書にもっとも忠実なのはネスケ6なのだそうで。W3Cが言うところの「スタンダード」を外れる機能は、基本的に実装してないそうで。<LAYER>
タグを外したのは、そういうわけなのだそうで。
「4.x で動くのに 6.xで 動かない」というワケのわからない仕様、その理由はこの辺にありそうですね。そういうことなら俺も少しは理解を示しましょう。
でも「スタンダード」から外れてるはずの "innerHTML"
プロパティ(オブジェクトの中のHTMLを変更したりする命令)に対応してるあたり、インプローラに引きずられてる部分もあったり。いや、これは大変に使える命令なので対応しててほしいんですが。
ブラウザごとの動作の違いをなくそうと努めるネスケ6、独自拡張をしてでも性能の高さを求めるインプローラ(ちょっと語弊あり)、果たして選ぶべきはどっちなんでしょうかね。
まぁネスケなんて <BLINK>
に対応してりゃいいんです。
明日に続きます。
2001.11.3.Sat
さて。
俺が知りたい情報は「ネスケ6でオブジェクトの中のHTMLを書き換える方法」です。ネスケ6も "innerHTML"
に対応してることがわかったので、ゴールは目前です。
innerHTML
プロパティの書式は
obj.innerHTML = "書き換えたいHTML";
たったこれだけですから、
obj = document.all.test; (インプローラの場合)
obj = document.layers["test"]; (ネスケ4の場合)
という「オブジェクトの作り方」に問題があるんです。
ネスケ6で <DIV id="test"> = obj
とするには、一体どうすればいいんでしょう。
さらに調べを進めていきますと、ありました。気になるキーワードが。
"getElementById()"
俺の知らないメソッド(命令)です。もう見るからにそれっぽいです。でもまわりくどい説明ばっかで具体的なことがちっとも書いてないので、自分で試してみます。
<DIV id="test"></DIV>
<SCRIPT type="text/JavaScript">
if (document.getElementById) { (もし「document.getElementById」を知ってたら)
obj = document.getElementById("test"); ("test"を「obj」というオブジェクトにして)
alert(obj); (ちゃんと作れたか結果を表示しなさい)
} else { (知らなかったら)
alert("getElementById?なにそれ?"); (あやまりなさい)
}
</SCRIPT>
ネスケ4では
else
の方に流れてるので、対応してないことがわかります。
インプローラでは
と返るので、対応してることがわかります。つまり、
obj = document.getElementById("test");
obj = document.all.test;
の、どちらでもオブジェクトを作れるわけですね。
そして気になるネスケ6の反応は。
やりました。えぇ、やりましたとも。バッチリ作ってくれましたよ。
従って、
<DIV id="test"></DIV>
<SCRIPT type="text/JavaScript">
obj = document.getElementById("test");
obj.innerHTML = "書き換えたいHTML";
</SCRIPT>
がネスケ6での書式です。しかもインプローラと両対応。
これで今までネスケ6で動かなかったスクリプトも、大部分は対応できるでしょう。実は必要な命令がまだ全部揃ってないので、完全対応とはいかないんだけど…。
あ、そういえばそのネスケ、Ver6.2 が出ましたね。当然速攻で入れましたとも。余計なオプションをカットしても16MB。ぐはっ。
でも調べてる間は回線が遊んでたので、そんな苦痛ではなかったです。
実はインプローラの6もすでにダウンロードしてあるのですが、こいつはネスケと違って気軽に入れていい代物じゃないので、まだ機をうかがってるとこ。入れると自動的に5.5のサポートが終了しちゃう。
2001.11.4.Sun
そんなこんなの紆余曲折を経て、siteCTSにあるスクリプトのいくつかがネスケ6に対応しました。もっともわかりやすく現れてるのは Chains で、メッセージの遠隔表示がちゃんと出てきます。
他、サイトマップがネスケで動かないバグもなんとか修正できました。goto
っていう、まぁ「使っちゃいけない単語」を変数に使用してたのが主な原因でした。わかってしまえば「そんな簡単なことで!」ですが、なにせインプローラでは問題なく動くもんだから、そこに辿りつくまでが大変。
なんていうか、インプローラはスクリプトエラーが起きると、こんな感じで「どこの何行めでこんなエラーが起きたよ」と教えてくれるんです。だからインプローラでのデバッグは非常に簡単。
対してネスケはなにも言ってくれんので、エラーが起きてんのかどうかさえわかりません。まぁ動かなきゃエラーなんですけど、俺はイージーミス(特にカッコの閉じ忘れ)を乱発するんで、原因が記述のミスによるものなのか、それとも非対応によるものなのか、なんのヒントもないわけです。
つまり「インプローラで動けば記述はOK、それでも動かなかったらネスケ非対応の命令」って判別できるわけだけど、非対応命令は実行させないよう、ちゃんと組んでるはずなのに。
…胃が痛くなるよね。
使っちゃいけない単語(予約語という)の手っとり早いリストとか、どっかに転がってないかなぁ。
JavaScript:
と入れればエラーの詳細を教えてくれます。ネスケ6では「JavaScript コンソール」という便利なツールも付属してます。
<BLINK>
2001.11.5.Mon
11.2にも書いたけど、W3Cスタンダードに一番忠実なのはネスケ6だそうです。だからスタンダードでないネスケ4の <LAYER>
タグは、なかったことにされちゃいました。結局なんだったんでしょうね。<LAYER>
タグ。
それは JavaScript でも同じで、ネスケ4の新機能!ネスケ6で廃止!ってのが結構あります。
あともうひとつ、代表的な "ネスケ専用" がありますね。
"インプローラ専用" である <MARQUEE>
の腹違い(パパはW3C)の兄弟、その名は <BLINK>
。そうそうそう、あの文字がちかちか点滅するやつですよ。好きなんだよね、これ。なんか「いかにも昔のエセDHTML!」って感じがするじゃないですか。
<MARQUEE>
と違って無視されても影響がないんで、siteCTSにはところどころ <BLINK>
が混じってます。更新情報にある だいぶ とか。
<BLINK>
は、もちろんネスケ6でも現役です。<LAYER>
と同じくらいW3Cスタンダード外ですが、これがあってこそのネスケなのですから、外すわけにはまいりません。
「ネスケなんて <BLINK>
にさえ対応してりゃいいんです。」
11.2の最後に、そう書きました。
ところで、つい先日にバージョンアップしたばかりのネスケ6.2では、また挙動が変わってます。本当に webmaster 泣かせの Netscape。まだしばらくはイジメられそうですね。
とはいえ、俺をひどく嘆かせた透過PNGのバグも修正され、フォーム関連の表示もインプローラと同じになりました。おかげで Chainsの 表示崩れがパーフェクトに改善されて私は Happy。
…あれ、更新情報んとこの だいぶ 、なんで点滅してないんだろ…?
ヤバいです。ネスケは本気です。Ver6.2にしてついに <BLINK>
まで切り捨てやがりました。「ネスケをWWWスタンダードにしよう」という動きは噂でも推測でもなかったんです。(そりゃそうか)
こうして、文字が消える <BLINK>
は、その存在自体までも消えてしまったのでした。
これはインプローラもうかうかしてらんないですね。独自拡張一辺倒だった冷戦の流れは、ネスケ6から変わることになるんでしょうか。
僕は、それを「<MARQUEE>
がいつまで残ってるか」で判断しようと思います。
2001.11.7.Wed
siteCTSも含めて、週に一度も更新されないWebページは珍しくありません。俺の場合は単純にアップするのを面倒くさがってる場合がほとんどですが、こういうとこをマメにチェックするのは疲れるものです。誰でも経験があるでしょう。
そこで登場するのが WWWC。W3Cじゃありません。これはお気に入りのWebページが更新されているか自動チェックしてくれる、ありがた〜いソフトです。
チェック方法はファイルの日付やサイズなど、いくつかありますが、チェックするページ毎に登録しないといけないので、だいぶ面倒くさいものがあります。
でも、Webサイト側が「METAチェック」というものに対応してると、手間なしで確実なチェックが可能になります。このソフトは基本的に、これに対応してるWebサイトのためにあるようなものです。
たとえば、俺が index.html のソースヘッダに
<META name="WWWC" content="パチョ奮闘記をアップデート">
と書き、ユーザー側が index.html をチェックするページに指定すれば、WWWC がこのメッセージを持ってきてくれるんです。
当然ながら、webmaster(俺)がメッセージをその都度書き換えないと意味ないけどね!
俺は通うほどお気に入りのWebサイトが数えるほどしかないので、特別このソフトを必要としてないんですが、siteCTSをこのMETAチェックに対応させることにしました。お絵描き系のWebサイトでは「ヘッドラインセンサ」の方が有名ですけどね。
WWWC も多くのWebサイトが対応してますが、お絵描き系での認知度はまだまだ低いので、微力ながら普及に協力できれば…と思う次第です。
2001.11.8.Thu
僕は余裕ででんこちゃん派…なのは放っといて、東北電力のエココさんが我が雪子ちゃんにもやってまいりました。まぁわかる人にはおわかりですが、Iriaというダウンロードツールを入れたわけです。
きっかけは、先日の友人宅での出来事。BakaExp のアルファテストのついで、彼のADSLを使ってMSDNライブラリで調べものをしてたんです。
「んー、これ全部ローカルに落とせたらなぁ…」
MSDNライブラリは非常に重用できる情報の塊で、ダイヤルアッパー54kbpsとしては、ローカルに保存して24時間いつでも閲覧できるようにしたくなるのが普通でしょう。
今までもいくつかのリファレンスを1ページ1ページ加工してローカル化してましたが、しかしこのライブラリは膨大すぎる。事実上不可能です。残念…
そしたら彼が得意気にIriaを起動、ADSLパワーを活かしてあっという間にローカル化してしまいました。ものの10分ほどのお話でした。インターネットで情報を収集する習慣のない俺は、文字通り「田舎者」だったのです。うわっ、ディレクトリ構造まで再現されてる!びっくりです。
1.44MB以上のデータは原則として却下する俺にはレジュームや分割なんぞ無用なんですが、「リンクを追って全部ダウンロード」なんて機能があるなら話は別です。
というわけで、雪子ちゃんにもエココちゃんです。はい。
早速、こないだ見つけたHTMLリファレンスサイトを丸ごとローカル化してみました。雪子ちゃんはダイヤルアッパーなので「あっという間」とはいきませんが、それでも、なんの苦労もなく再現されてしまいました。怖いツールですね。
もっとも、個人のWebサイトをローカル化するような見当違いの暇人ではないですけど。
これからは有用な情報を労力なく保存できるかと思うと、なんか肩の荷が下りた気分になる俺なのでした。うひひ。
2001.11.10.Sat
パチョ奮闘記が始まったのって、今年の2.13なんです。で、秀丸を入れたのはその翌日。他にも選択肢はありましたが、当時はまだ「Me対応」と書いてないと安心できないカワユイ幼な子だったので、(先生のおすすめもあって)秀丸が勝ったんです。
ちなみに秀丸を知らない人は珍しいと思いますが、ひらたく言うと「プログラムを書くのに特化した、とってもすごいメモ帳」です。
最初の方はまだビルダーも使ってたけど、パ奮の歴史は秀丸とともにあります。もちろん、それはパ奮だけじゃなくて、siteCTSのすべてが秀丸ひとつのみで作られてます。
おっと、「のみ」じゃないですね。直接の関係はないけど、猫ちゃんの陰なるバックアップがなければ、さすがの秀丸もここまで快適にならないことを忘れちゃいけません。
すなわちsiteCTS=秀丸みたいなもんであり、どんなHTMLエディタもホームページ作成ソフトも、足元にさえ及びませんでした。
しかし、おそらく唯一の対抗馬であろう、それが EmEditor。これと秀丸でテキストエディタの双璧…と言ってもよさそうな "定番" です。(まぁ他にも大物がいるんですけど)
EmEditor は、主な特徴が秀丸と酷似してて、いつも比べられてます。どちらも熟成に達した超高機能を誇るだけに、誰も勝敗を決められません。俺も決められません。「どっちが気持ちいいか」で綺麗に半々になるんじゃないでしょうか。
実はこの半月ほど、EmEditor を試用してたんです。浮気は良くないですね。もしかしたらsiteCTS=EmEditor になるかもしれない、…いつもとは違う、緊張に満ちた試用でした。
それもそうでしょう、毎日使うパソコン、毎日いじるソース、毎日使うテキストエディタ、それは雪子ちゃんの中で頂点に君臨する存在なのです。「常駐三種の神器」最高峰である猫ちゃんでさえもかないません。(猫ちゃんだけじゃ意味ないものね)
果たして、俺のフィーリングはどちらに合うんでしょうか。その結果を比較してみました。もちろん独断と偏見で。
ちなみにHTML・CSS・JavaScript の記述のみを評価対象としてます。
勝った方は強調表示のごほうび。
秀丸 | EmEditor | |
---|---|---|
文字コード | △シフトJISとunicodeのみ(自分のファイルを開く分には関係ないけど) | ○ほぼすべてに対応 |
強調表示 | ◎正規表現が使える ×あまり融通がきかない ×HTMLの優先順位が高すぎ ×JavaScript の構文は軒並みファイル名と勘違いされる |
◎かなり細かく設定できる ○HTMLファイルにある JavaScript やCSSもちゃんと認識 ◎しかもそれぞれの設定を使ってくれる |
うそインデント | ◎装備 →うそインデントとは? |
×なし |
検索 | ○機能は似たようなもんだけど使い勝手が違う ○「検索文字列の取得」コマンドでいちいちダイアログを出さなくていい |
△操作性があまり良くない ○検索した文字列を強調表示してくれる |
右クリック | ○「範囲選択中のメニュー」も個別でカスタマイズできる ◎ボタンを「押した時」と「離した時」にそれぞれ判定があるので、ボタン1回でメニューを選べる |
×ショートカットキーも表示されるので無駄に幅が広くなる ○選べるメニュー自体は秀丸より多い |
メニューバー | ×カスタマイズ不可 | ○自由にカスタマイズ可能 |
ツールバー | ○浮かせられるのでウィンドウ幅が狭くても大丈夫 ○選べるメニューも多く、同じボタンを複数入れられる(閉じるボタンが左右に欲しい奴) ○もちろんマクロボタンも可能 |
○浮かせられないけど増やせる ×肝心のメニューが少ない(基本的にプラグインの実行ボタン用なんだろう) |
キーボード | ×カスタマイズ方法がやりにくい ×割り当てられるキーの種類が少ない(俺の場合は猫ちゃんで解消可能) ○メニュー自体は必要にして充分 |
○わかりやすいシステム ○ほとんどのキーを割り当てに使える ○秀丸以上のメニュー数 △拡張子ごとに専用のキー設定を使えるけど、統一したい時は面倒くさい ×設定したキーをメニューに全部表示するので、とんでもなく幅広になる |
追加コピー 追加切り抜き |
○標準装備 | ○プラグインで実現可能 |
自動バックアップ | ○あるけど細かい設定は不可 | ◎「同じファイル名があったら名前を変える」「自動保存はバックアップとは別のフォルダに」「ゴミ箱にバックアップ」など充実 |
マクロ プラグイン |
○秀丸のサイトに多数用意 ◎「タグを範囲選択」「前のタグを認識して対応した終タグを挿入」「カーソル位置のタグとそれに対応するタグをセットで削除」など、HTMLエディタとして使うのに重宝するマクロがいっぱい ○スクリプトが比較的簡単なので自分で作ったりいじったりできる |
△それなりにあるけど欲しいものが少ない ○C言語製なので高度なことも高速で処理できる |
文書中の 文字列から ファイルを開く |
○標準装備 ◎Ctrl を押しながらだと関連付けを無視して秀丸で開けるので、HTMLも直でアクセス可能 |
○プラグインで可能だけど関連付けに逆らえない |
一行の折り返し | △折り返しマクロの使用でとりあえず解消可能 ○Ver.4で自動折り返しを装備 |
○あり/なし/指定字数 を自由に選べる |
ウィンドウの 最前面設定 |
×できない(俺の場合は猫ちゃんで解消可能) | ○できる |
タスクトレイ | ○常駐秀丸でクリップボード履歴を取ってくれる(俺はクリップボードツールを入れてないので) | ○トレイのアイコンメニューも自由にカスタマイズできる(マウスを使わないので俺にはメリットがない) |
起動の速さ | ◎ただでさえメモ帳並みなのに、さらに高速化できる | ○初回起動時はわずかにもたつくけど充分に速い |
カーソルの マークジャンプ |
◎「前のカーソル位置に戻る」「最後に編集した場所へ」「上の/下の編集位置へ」など充実 ○さらに、個別で20ヵ所までマーキング(別ファイルへのジャンプも可能) |
△プラグインである程度可能だけど使い勝手は悪い |
カーソル位置 復元 |
◎標準装備 ※ファイルを閉じる時にカーソル位置を憶えておき、次に開いた時にそこへジャンプする機能 |
○プラグインで可能 |
デスクトップ保存 | ○できる(マクロでさらに拡張可能) ※中断する時などに開いてるファイルやウィンドウの大きさなどを記録しておき、そのまま再現する機能 |
×そんな機能はない |
おねだん | 4000えん ○貧乏学生やプログラマにはフリー制度あり |
3000えん |
…と、まぁこんな感じで「俺には秀丸の方がマッチしてるなぁ」という結果になりました。カスタマイズ面でちょっと弱いけど、それをカバーする便利機能の多さが勝因でしょうか。
決め手は「うそインデント」「的を得たマクロの多さ」「文書中の文字列からファイルを開く」「カーソルのマークジャンプ」でした。
なお、マクロとプラグインを全部探し当てるのは ghost/shell と同じくらい難しいんで、それぞれのWebサイトに用意されているもののみで判断してます。
※じゅうよう EmEditor はまだ半月しか試用してないので、9ヵ月使いこんでる秀丸が相手では分が悪いです。引き続き調査を続行し、ユーザー登録をするようなら「ゆきこのおへや」にて再度比較してみようと思います。
2001.11.12.Mon
入れたのは一週間ほど前ですが、GetHTMLW というものを入れました。これはプロキシサーバーの一種で、ブラウザと電話線の真ん中に居座って色々するものです。
たとえば、インプローラでうろうろしてるだけで、キャッシュを次々保存できます。キャッシュといっても「普通のファイル」なので、インプローラのキャッシュと違って勝手に消えたりしないし、ネスケで使うこともできます。
当然ながら、放っとくととんでもないことになります。キャッシュするレベルを調整したり、時々の掃除が必要です。
あるいはURLを入れると、リンクを追ってWebサイトを丸ごとダウンロードできたりします。「ここは後でじっくりまわりたいな」って時に使うとよいでしょう。
ただし JavaScript によるリンクは追えないので、siteCTSみたいなガチガチサイトには不向きです。試しにやってみたところ、使えた代物じゃありませんでした。
また、基本的にネスケ用に作られているため、インプローラでは制限があります。まず、IE3とIE4では使えません。IE5なら使えますが、設定がかなり面倒くさくて難しいです。92KBにも及ぶヘルプ代わりのテキストを熟読しながら設定しないといけないです。
それならまだしも、ダイヤルアップの設定を「ダイヤルしない」にしないといけないので、インプローラ側のキャッシュを一切使えなくなります。
こんだけ書いて入れたくなる人は珍しいですが、「キャッシュをネスケと共用できる」「Webサイトをお手軽にローカル化できる」「うろつくだけで次々ローカル化できる」というのは捨てがたい魅力でしょう。頑張ってみてはどうでしょう。
ちなみに、俺の場合は最初うまく動いてたのですが、突然インプローラが起動しなくなりました。(正確に言うと、特定のページに入ると GDI.exe のエラーで落ちる)
使うのやめたら直ったけど、このままあきらめるには惜しい機能を持ってるので、勉強してから出直すことにします。
2001.11.13.Tue
siteCTSには、ブラウザ種/解像度認識装置「brwMarking
」・ 中央リンク制御装置「conlnk
」・強制 Verdana 設定装置「setBASEFONT
」・そして全自動リンクボックス生成装置 「consel
」という4種の共通コアスクリプトがあります。
そのひとつである consel
は、コンテンツ間を移動するセレクトボックスを担ってます。
で、8.4に誕生したこいつを、口約通り(?)作り直しました。さすが、JavaScript を始めたばかりの実力不足が存分に反映されていて、構造の頭悪さがすごかったんです。動作には支障なかったんでそのままだったんですけど。
というわけで、リニューアル前とリニューアル後のソースを掲載。なぜ?と問うなれば、「それがパ奮の存在意義だから」と答えましょう。
▼古いconsel
2931バイト/72行
function conselbox(dirLv_conselbox,callSide_conselbox) {
conselbox_dirLv = dirLv_conselbox;
callSide = callSide_conselbox;
conselnum = 0;
conselResetFlag = false;
document.write('<SELECT id="selbox" name="conselbox" onChange="consel(conselbox_dirLv)">');
document.write('<OPTION>他のページへ行く?');
document.write('<OPTION>トップページにもどる');
document.write('<OPTION>"siteCTS"');
document.write('<OPTION>Scrawl Notes');
document.write('<OPTION>パチョ奮闘記');
document.write('<OPTION>ゆきこのおへや');
document.write('<OPTION>俺紹介++');
document.write('<OPTION>Scribble Garden');
document.write('<OPTION>けいじばん');
document.write('<OPTION>Chains');
document.write('<OPTION>やっぱやめる');
document.write('</SELECT>');
}
function consel(dirLv) {
conselnum = document.conselform.conselbox.selectedIndex;
GTStoNCFmsg = "現在のページはIE5.5専用版です。\n通常版へ移動しますか?";
NCFtoGTSmsg = "現在のページは通常版です。\nIE5.5専用版へ移動しますか?";
if (conselnum == 0 && conselResetFlag) {
document.conselform.conselbox.options[optselnum].text = resetValue;
} else if (conselnum == 1) {
conlnk(dirLv,"top",0);
} else if (conselnum == 2) {
if (callSide != "sui") conlnk(dirLv,"sui",0);
else notconsel();
} else if (conselnum == 3) {
if (callSide != "snd") conlnk(dirLv,"snd",0);
else notconsel();
} else if (conselnum == 4) {
if (callSide != "snp") conlnk(dirLv,"snp",0);
else notconsel();
} else if (conselnum == 5) {
if (callSide == "ospGTS") {
res = confirm(GTStoNCFmsg);
if (res) { parent.location = "mfaFrm.htm"; return;}
else { conselReset("ysr"); return;}
} else if (GTS && callSide == "ospNCF") {
res = confirm(NCFtoGTSmsg);
if (res) { parent.location = "mfaFrm.html"; return;}
else { conselReset("ysr"); return;}
} else conlnk(dirLv,"ysr",0);
} else if (conselnum == 6) {
if (callSide != "prf") conlnk(dirLv,"prf",0);
else notconsel();
} else if (conselnum == 7) {
if (callSide != "scg") conlnk(dirLv,"scg",0);
else notconsel();
} else if (conselnum == 8) {
if (callSide != "bbs") conlnk(dirLv,"bbs",0);
else notconsel();
} else if (conselnum == 9) {
if (callSide != "cha") conlnk(dirLv,"cha",0);
else notconsel();
} else document.conselform.conselbox.options[conselnum].text = "[ フォーカスに注意 ]";
}
function notconsel() {
document.conselform.conselbox.options[conselnum].text = "[ このページです ]";
}
function conselReset(resetArgument) {
document.conselform.conselbox.options[0].text = "[一度ここを選択してね]";
document.conselform.conselbox.options[conselnum].text = "[移動をキャンセル]";
conselResetFlag = true;
if (resetArgument == "ysr") { optselnum = 5; resetValue = "ゆきこのおへや";}
}
▼新しいconsel
1175バイト/33行
function conselbox(dirLv1,callSide1) {
dirLv2 = dirLv1;
callSide2 = callSide1;
document.write(
"<SELECT id='selbox' name='conselbox' onChange='consel(dirLv2,callSide2,this)'>"+
"<OPTION>他のページへ行く?"+
"<OPTION value='top'>トップページにもどる"+
"<OPTION value='psc'>プレーン版のトップへ"+
"<OPTION value='sui'>"siteCTS""+
"<OPTION value='snd'>Scrawl Notes"+
"<OPTION value='snp'>パチョ奮闘記"+
"<OPTION value='ysr'>仮設ゆきこのおへや"+
"<OPTION value='prf'>俺紹介++"+
"<OPTION value='scg'>Scribble Garden"+
"<OPTION value='bbs'>けいじばん"+
"<OPTION value='cha'>Chains"+
"<OPTION>やっぱやめる"+
"</SELECT>"
);
}
function consel(dirLv,callSide,conselBoxThis) {
conselNum = 0;
conselVal = "";
conselNum = conselBoxThis.selectedIndex;
conselVal = conselBoxThis.options[conselNum].value;
if (!conselNum || conselNum+1 == conselBoxThis.length)
conselBoxThis.options[conselNum].text = "[ フォーカスに注意 ]";
else if (conselVal == callSide)
conselBoxThis.options[conselNum].text = "[ このページです ]";
else
conlnk(dirLv,conselVal,0);
}
…と、動作は同じで6割減、1.8KB も小さくなったんだから、これは大成功でありましょう。
なお、実際のリンク動作を受けもつ conlnk
もちまちまリニューアルされていて、登場当初の半分くらいまで小さくなってます。
2001.11.14.Wed
パ奮リンク集のリンクチェックのついで、3.27に診断してもらったWebサイトの親切度診断を再度受けました。JavaScript どころかNCF版さえ登場してない「IE5.5専用」の当時から、親切度はどれくらい上がったでしょう。
20点満点 | 3.27現在 | 今日現在 |
---|---|---|
基礎度 | 17 | 20 |
配慮度 | 17 | 20 |
親切度 | 20 | 20 |
快適度 | 16 | 20 |
運営姿勢 | 18 | 20 |
迷惑度 | -5 | -2 |
おぉ素晴らしい。当時と同じ「工事中のコンテンツがある」でマイナスがついたけど、ゆきこのおへやが正式登場すれば満点になっちゃうじゃないですか。(一部は修正条件を満たしてるので得点と数えております)
詳細結果。
でも、こんなのより遥かに信用できる「俺診断」では、とてもじゃないけどこのような高得点は与えられんよ。ほんとに。どのページも総じて重い。でマイナス100点。
2001.11.16.Fri
この頃、雪子ちゃんの調子がすこぶる悪いんです。もとからあまり良くないけど。
特に9月にシステムを入れ直してからというもの、「Windows が終了する時にブルースクリーンを出して落ちる」という症状も再発し、モデムは相変わらずCPUを暴走させてくれます。
さらに、どういうわけか Windows の起動時に「3回に1回ほど、スタートアップのどれかがランダムで落ちる」などという現象まで起きるようになってきました。ひどい時にはいきなりエクスプローラが落ちて起動再起動なんてことさえ起こります。
まぁ俺チューンが俺チューンなので、多少の調子の悪さは仕方ないですが、これは明らかに異常。困ったものです。
もちろん原因などわかるけもなく、早くもシステムの再セットアップを考えてます。ある程度の目星はついてんですが、確たる証拠が見つからない。原因が「相性問題」にあったりすると、もう俺にはお手上げです。
JavaScript ばっかやってないで、少しはシステムのことも勉強しないといけないですね。
2001.11.17.Sat
ゴーグルじゃありません。それはヤッホーと同じ間違いです。
インターネットの醍醐味と言えば「検索」ですが、俺はビルトイン検索(左側に出る検索ウィンドウ)を使ってます。もっぱらMSNサーチです。
「検索」に革命をもたらしたGoogleは、実力は認めながらもほとんど使ってないです。「検索サイトに入ってから検索」というスタイルは、俺には面倒くさいんです。検索候補をひとつひとつ開いていく時が特に面倒くさい。
そりゃビルトイン検索バーにGoogleが入ってくれりゃ大喜びで使いますが、MSNとinfoseekしかないのでは選択の余地がない。それに、俺が探すようなとこは大体MSNで間に合うってのもあります。
で、なんとなしに Google のサイト内を見てまわってたら、「Google ツールバー」なるものを見つけました。インプローラのアドインで、Googleの検索ツールバーをインストールするものらしいです。なかなか興味深いではないですか。となれば実に弱いもので、怖いもの知らずのインストール。
これは便利そうですね。普段は消しておけるというのがかなりポイント高いです。消せなければ即アンインストだったんですけどね。
設定も細かくできるし、ページ内検索もインプローラ標準のより使いやすい。なにより、Web検索はあのGoogleなわけですから、利用価値はかなり高いかと思われます。
これを機に、俺もGoogleへ乗り換えるかもしれないですな。
2001.11.18.Sun
siteCTSには、
<TABLE><TR>
<TD>
<DIV align="center">
テキスト
</DIV>
</TD>
</TR></TABLE>
という一見無駄な記述があります。強調されてる部分、なんで <TD align="center">
にしないんでしょうかね。表示結果は同じなんだから、そっちの方がソースも簡潔になって良いことづくめなのに。
実はこれ、「テキストブラウザ」であるLinxに配慮したものです。
LinxはMS-DOSプロンプトで動くので、画像どころか文字の色も満足に表示できません。テーブルのレンダリングさえできず、フレームなんて夢のまた夢です。そんな化石的ブラウザが、しかも現役で、おまけにユーザーは結構多いんです。参考:→5月9日の画面写真
Linxを使うメリットは「動作の軽さ」くらいしかありませんが、情報収集を目的とするならテキスト表示だけで充分ですし、インプローラやネスケがこんなになってる昨今、その低機能がマニア心をくすぐる…ってのも確かにあるはずです。
Linxへの対応で一番厄介なのが、テーブルを(基本的に)認識しないこと。基本的に、というのは、<TR>
タグで改行だけするんです。
<TH>
や <TD align="center">
は認識しませんから、センタリングしたい時は <TD><DIV align="center">
…つまり先述の「一見無駄な記述」をしなきゃいけないわけです。
で、今まではLinxでも表示の確認をしていたのですが、ここにきてついにサポート終了となりました。理由は、サポートするには労力と効果のバランスがあまりに悪いからです。今までも、そしてこれから先も、Linxで訪れる人はいないでしょうから。(Linxを好んで使うような人は、JavaScript もフレームも大嫌いです)
ついでに、手持ちのワープロにチンカスブラウザが付属しておりまして、なんとsiteCTSはこれにも対応してました。Linxと同時に、これも過去形になりました。
理由は、こんなゴミブラウザは早急に抹殺するべきだからです。(笑)
これでsiteCTSが正式に対応してるブラウザは、IE5.5とネスケ4.78、ネスケ6.2の3つだけになっちゃいました。あまり好ましくないですね。でもこれだけJavaScriptがガチガチになると、やっぱりブラウザを選んでしまうのが実情です。
せめて確認環境があれば、エラーが起きない程度の対応はするんですけど…。
ともあれ、Linxの抹殺でかなりの労力が浮くのは事実です。これからは、その分を有効に反映させられるように頑張るとしましょう。
さらば、素敵なブラウザ、Linx。
2001.11.19.Mon
パ奮と俺紹介++以来、とんと音沙汰なかった「ノンフレーム対応版」ですが、やっと Chains も対応しました。フレームの有無やブラウザの種類、画面のサイズなどの条件によってスクリプト動作を変えて、VGA(640×480)のフレームなしでもメッセージが完全に表示されます。
また、階層表示の3番め(コンテンツ名)を押すと、フレームを付けたり外したりできるようにしました。そういえば、昔(といっても4ヵ月前)は、ここを押すとIE5.5専用版とNCF版を行き来できたりしたよなぁ…なんて懐かしみます。
このフレーム切り替え機能は、ゆくゆくは全コンテンツに採用予定。
ただ、スクリプトサイズがだいぶ増えてしまったために、ついに Chains も外部JS制になりました。単独ファイルで頑張ってた唯一のコンテンツだったのに…。(スクリプトが多いと、HTML埋めこみではメンテナンスが面倒くさいんです)
2001.11.20.Tue
siteCTSのコアスクリプトのひとつ、中央リンク制御装置 conlnk
がノンフレームに対応しました。ページを飛ばす時にフレームの有無を調べて、ちゃんと振り分けてくれます。引数を渡せば、フレーム付きからノンフレームへ飛ぶことも可能です。
それに応じて、Scribble Garden がフレーム化されました。見ての通りフレームが必要なレイアウトじゃないんですが、 conlnk
が勘違いしてしまうんですな。
ともあれ、これで全コンテンツがフレーム化されたことになります。
Scribble Garden は更新が止まって久しいですが、もともと買いたてのスキャナを使いたいばかりにできた「おまけページ」なので、あんな豪華スクリプトがある方が不思議なんです。
まだ当分は現状維持でしょうが、そのうち増え始めますので、あと1年くらい待ってください。
2001.11.21.Wed
雪子ちゃんをつけっぱなしにして寝てしまった夜。ふと目覚めて掲示板のレスを書き始めようとすると、HDからショリショリという異音。
でも音はすぐに止まって、パソコンの動作に異常はない。気のせいか?気のせいだ。そうに決まっている。だって寝ぼけまなこだし。
まぁ用心しておくに越したことはない。レスを書き上げてからリブートして、データを CD-RW へバックアップしておこう。
…それが最後の作業となりました。
もう寝ぼけちゃいられません。電源ボタンを押してもショリショリと音がするだけで、Windows が起動しないんです。夢オチであることを何度願ったでしょう。
とりあえず起動ディスクを突っこんで MS-DOS を立ち上げます。使い方? 知るわけないでしょう。コマンドなんて format
と fdisk
しか知りませんよ。
cdup
とか cd
なんとかと入れてデータの無事を確認しようとはするものの、「コマンドが違います」と返されるのみ。てやんでい!こちとらマニュアルも予備知識もない素人じゃい!んがー!
で、それでも悪戦苦闘してるうちに、スキャンディスクの起動に成功(笑)しました。
Cドライブの特定のとこでDOSごと止まるあたり、どうもディスク側に問題がありそうです。拡張領域であるD〜Gドライブは引っかかりませんでした。
ヘッドが無事なら、他のドライブが生き残ってる確率は高いです。期待できます。期待させてください。面倒くさがって CD-RW へのバックアップを2ヵ月もサボってたんです。
復旧できなかったら、正式版サイトマップもノンフレーム対応版 Chains も新型 Scrawl Notes & パチョ奮闘記も塗りかけのCGも、全部全部パァです。
そんなことになったら泣いちゃうよ。
今から思えば、16日に漏らしてたことは、この予兆だったのかもしれません。
ハードディスクという物理的な原因と、なんの知識もない俺。ちょっと深刻なトラブルが起こると、すぐ手も足も出なくなる素人…そんな自分。
今できることは、スキャンディスク、たったそれだけでした。
明日に続きます。
2001.11.22.Thu
夜が明けるのを待ってから、雪子ちゃんの実家である Gateway に助けを求めました。9.1に頼るつもりなんざ毛頭ねぇとか言っちゃいましたが、目的は新しいHDをゲットすることなので、まぁ許してください。
…さすが、サポートに定評のある Gateway です。5分程度のやりとりで手っとり早く新HDゲットです。あぁん大好きv
願わくば、30分待ってやっと電話に出るようなセコい小遣い稼ぎはやめてほしいものですけどね。(ナビダイヤルなので2分10円ほどかかります)
続いて、HDを外して先生んちへ行きます。システムがブート不可能である以上、他のパソコンにスレーブで接続して、なんとかデータを救おうという試み。
先生のマシンのエクスプローラにmyドライブが現れた時、俺の、藁にすがるような願いは叶えられました。神さまありがとう。みんなありがとう。そしておめでとう。おぉmyデータちゃん、今助けてあげるからね。
これで一安心です。大切な大切なmyデータは、致命的なトラブルから奇跡的に助かりました。
正式版サイトマップもノンフレーム対応版 Chains も新型 Scrawl Notes & パチョ奮闘記も塗りかけのCGもその他もろもろも、全部全部無傷なのは、まさに幸運というほかないです。神さまありがとう。みんなありが以下略。
あとは新しいHDが届いたら、先生のマシンにコピーしたmyデータを元に戻すだけ。
明日に続きます。
2001.11.23.Fri
新しいHDが届くまでの間、暇です。
とりあえずなにか書いてないと落ちつかない性分なので、久しぶりに出番がまわってきたワープロでパ奮を書きがてら、半壊しているHDに Windows をインストールしてみました。
というのも、先生のマシンにスレーブ接続した時、Cドライブにもアクセスできたんです。(Windows フォルダへはアクセスできなかったけど)
で、Cドライブをフォーマットしてもらったところ、これも成功。もしや…と思った次第。
結果、インストール前のスキャンディスクもパスして、見事に成功してしまいました。どうしましょう。壊れたんじゃないのかアンタ。もしかして全部夢だったのか!?
でもクラスタスキャンにかけたら、ちゃんと異音が出て途中でフリーズしてくれました。ほっ。
…って安心するのはどうかとも思いますが、この半壊HDは返さなくちゃいけないので、壊れてないと困るんです。もはや夢オチは困るんです。
とりあえず使ってみたところ、なんの異常もないようです。これといって不穏な動きもしないし、本当に壊れてるの?コレ?ってくらい。じゃあブート不可能になったのはどうしてなんでしょう。
オリジナルデータが先生んちで寝てるのでファイルを更新してしまうと後々面倒くさいですが、その分は CD-RW へ焼くなりして対処するとしましょうか。
そして、久しぶりに出番がまわってきたワープロは、再び長い眠りにつくのでありました。
2001.11.24.Sat
一応動くとはいえ、ろくにファイルの更新もできない雪子ちゃん。なにせもうすぐ新しいHDがやってきて、しかもオリジナルデータは別に保護されている。
それすなわち、好き放題を意味。
ウィルスだろうがなんだろうが好きなだけ来やがれってんだコノヤロウ。
そんなわけで、ダウンロードだけで機をうかがっていたインプローラの6.0をインストールしました。プレビューリリースの頃は使いものにならなかったけど、ちゃんと動くようになったでしょうか。
とりあえずsiteCTSがちゃんと表示されるか調べてみたところ、やはりいくつかの仕様変更があるみたいです。詳しく調べてないので原因は不明ですが、ところどころ意図しない表示になってました。まぁ閲覧に支障が出るようなものはないようですけど。
IE6ユーザーの方、情報お待ちしております。
え? だってもう消しちゃったもん。IE6。アンインストを許可してくれたから。
だってさ、ツールバーのカスタマイズから「上へ」ボタンが消えたことは致命的だったのよ。「インプローラの時に必要なの?そんなボタン?」って人はカスタマイザー検定初級の人かと思われます。
ローカル作業の時に押せば、そのファイルが入ってるフォルダをエクスプローラで表示し、Webページを表示してる時はホームへ戻れる、ひとつ二役の大役立ちボタンだったのに!
というわけで、「上へ」ボタンが復活するまでIE6は放っとくことにしました。つまりsiteCTSもそれまで未対応のままです。文句はインプローラ開発チームの責任者に言ってください。
まったく、800人がかり(もっと多いらしい)で作ってるくせに、なんでこんなしょーもないデチューンをするんですかね。
2001.11.25.Sun
siteCTSのコアスクリプトファイル virus.js に、新しい関数が生まれました。
このファイルは、あちこちから呼び出される人気関数のみが入れる、いわばsiteCTSの聖域みたいなものなので、なんともオメデタイことです。しかも、よほど重要なものじゃないと「siteCTSのコアスクリプト」なんてたいそうな肩書きはつけないので、さらにオメデタイです。俺onlyで。
5つめのコアスクリプトは、「嘘 cookie 三兄弟」と言います。
siteCTSでは他のページに引数を渡す時、cookie ではなく「ウィンドウネーム」というものを使ってますが、今まで適当にやってたこれをちゃんと処理するために生まれました。書式を cookie と同じにしたので、将来 cookie を使うようになっても流用できます。
嘘 cookie 三兄弟
setVar(変数名,値);
setVar("hensuu","1234")
とすると、ウィンドウ名に hensuu=1234;
を追加します。getVar(変数名,オプション);
任意変数=getVar("hensuu",1)
とすると、ウィンドウ名から hensuu
を探して、1234 を任意変数に入れます。hensuu
が見つからない時は、空の文字列 ""
を返します。また、オプションに1を指定すると、同時に三男の clearVar
(変数名) を実行します。clearVar(変数名);
clearVar(変数名)
とすると、ウィンドウ名から変数名を探して、値ごと(つまり hensuu=1234;
を)削除します。 解析してみるとわかりますが、短いスクリプトながらも結構複雑な構造してます。三兄弟が三兄弟とも、別の兄弟を呼んでたりします。
ただ、ウィンドウ名に CTSpsnFrm
とあった場合に psnFrm
を取得しようとすると、CTSpsnFrm
でヒットしてしまうので、まだまだ改良の余地があります。まだ初期型なので、これからの発展に期待。
三兄弟の使い道は、まんま cookie と同じです。ただしウィンドウネームはブラウザを閉じると消えるので、有効期限を設定しない「使い捨て cookie」にあたります。
ていうか、これだけのガチガチ JavaScript サイトが cookie のひとつも使ってないなんて、わりと珍しいかもしれない…と思いました。別にポリシーとかそうゆうのはないんだけど。
使う予定はあるけど、使う必要はない…ってところか。
「使う予定」としては、「常にノンフレームで表示する」とか、サイト全体のユーザー設定に使おうと思ってます。
それとも○○さん、××回めのご訪問ありがとうございますなんてベタを期待しますか?
2001.11.26.Mon
siteCTSのコアスクリプトファイルは virus.js という名前で、コアCSSファイルは virus.css です。それだけだとあんまりなので、vaccine.js というファイルもあります。
ちなみに「ワクチン」の語源は、ラテン語で「牛の」を意味する vaccinus からきてます。最初のワクチンが牛から作られたからだそうです。vaccine.js の名前を考えながら辞書をめくってた時に知りました。
ところで、一昨日にウィルスだろうがなんだろうが好きなだけ来やがれってんだコノヤロウ。などと言ってしまいました。本当に来てしまいました。
題名は「Re:」で、news_doc.DOC.scr という不純物入りのメール。
今はHDがアレゆえ Norton Anti Virus を入れられず、確認はしてないんですが、二重拡張子だなんて自己紹介にも等しいです。今時引っかかる人がいるんでしょうか。いるんでしょうね。
とりあえず Norton 先生に聞いてみたところ、W32.Badtrans.B@mm というウィルスであることが判明しました。ダメージは低いものの、かなりの感染力をもっているらしいです。
メール本文は、不適切なMIMEヘッダーによるセキュリティホールを利用して、添付ファイルが Microsoft Outlook 内で自動的に実行されてしまうように設計されたHTML形式になっています。
今の雪子ちゃんのIE5.5(IE6は戻しちゃいました)はSP1でもSP2でもないので、この辺が少々気になります。…が、考えてみたらわたくし、パチョ歴もうすぐ1年にして初めて本物virusをいただきました。どきどきだ!
そうして、この半壊HDの末路が決定。
すべてのデータ移行を終えて返却する時に添付ファイルを実行。
実行するとどうなるか Norton 先生が教えてくれたので、お楽しみは半減ですけどね。
2001.11.27.Tue
ダブルクォーテーションがついてるので「更新情報」の方です。我ながら紛らわしい名前をつけたものだ。
で、ここまで読んできた貴方ならおわかりのように、"siteCTS" もノンフレームに対応しました。もちろんフレームの付け外し機能も装備です。
"siteCTS" はパ奮と違い、3つのページでそれぞれ独立したフレームファイルを使っているので、こういう作業は非常に楽です。パ奮は「フレームを付ける」のにものすごい苦労したものですが、こちらはたいしたスクリプトも使ってません。
これで一応、siteCTS(Webサイトの方)の全コンテンツがノンフレームに対応したことになります。VGA(640×480)もウィンドウを最大化しない人も、まとめて最適化です。
本当は「フレーム嫌い」も最適化できるはずですが、そんな人は確実に JavaScript も嫌いなはずなので、当Webページはあまり相応しくありません。
2001.11.28.Wed
記事中に名前は出てこなかったけど、10.6に俺紹介++もパ奮と一緒にノンフレーム対応となってます。…が、フレーム付け外し機能を実装してないなど不完全なので、さらに対応を煮詰めました。
スクリプトもだいぶ効率化されたんですが、今日は疲れたのでこの辺で寝ます。
2001.11.29.Thu
タイトルを考えるのは楽でいいんですが、だんだん飽きてきました。でも、いよいよ大詰めです。俺紹介++に引き続き、パチョ奮闘記のノンフレーム対応もさらに煮詰めました。
っても、パチョ奮闘記と Scrawl Notes は新型がだいぶ形になってきてるので、あまり意味のある改善ではないのが泣けるところです。現にローカルではすでに新型の方へ移行していて、そっちで書いた記事を旧型にコピーしてますから。
スクリプトがオールリニューアルされたんで、互換性がないんですな。
新型パ奮 & Scrawl Notes は2002年(の12月まで)に登場予定です。新機能バカ機能盛りだくさんなので、ちょっぴり楽しみにしててください。