Information

諸般の事情により、創作小説コーナー『雪景色と冬椿・リバイバル』の公開を中止致しました。諸般の事情と言いますか、単に悪ノリが過ぎまして反省の表れです。執筆中の作品を二つも抱えながらすることではありませんでした。ご迷惑お掛けしました。

Renewal

Recently Comment

Yakke's Diary 9

2008-11-01 | The 3rd Birthday

もはや三度以上かもしれませんが、10月7日のリニューアルの回、検証の為の再設置の回、そして、今回。一度は手打ちの継続を堅く決意しましたが、やはり、一度採用を決めたSerene Bachへの執念を拭い去ることはできませんでした。ムリにでもやらなくちゃ、何のためのリニューアルだったのか。検証を重ねた結果、ようやく解決への糸口が見つかり、このたびSerene Bach WELの三度目の誕生を迎えられました。参考にさせていただいた各サイト様には、遠巻きながら感謝申し上げます。ありがとうございました。コラムは未だ完成しておりませんが、恐らくコレが、皆様への最後の“大迷惑”になると思います。むしろ、これで最後にしたい、という希望です。改め改め改めまして、今後ともWELを、レートを宜しくお願い申し上げます。

技術的な話をしますと、じつはスーパー単純なことなのでした。というかそもそもの考え方が間違っていた。「BOMがないからIEで文字化けする」ではなく「文字コードが明示されていないからBOMを頼るしかなかった」んです。

文字コードの明示方法はBOMを除いてたぶん二つ。METAタグによるhttp-equivの記述と、HTTPレスポンスヘッダの記述。して、XHTML 1.1ではhttp-equivの記述は推奨されない(禁止はされていない?)ので、実質HTTPヘッダ一択となります。そうと決まればカンタンですな、.htaccessを使ってcharsetを明示してやれば――そうカンタンにはいかないのがボクのこだわりのディープインパクトなところ。

古いコンテンツはUTF-8ではないものが大多数なので、ルートディレクトリでcharsetを明示してしまうと、UTF-8ではない下位ディレクトリのHTMLが全てUTF-8でエンコードされてしまうのです…! 解決法は二つ。旧コンテンツの全てをUTF-8に一括変換してアップするか、charsetの明示をディレクトリ単位で指定すること。ボクのポリシーとして、いくら古いと言えども、当時のこだわりや環境、“古き良き”過去の遺産として保存しておきたいという思いから論外、こちらもまた一択でした。

.htaccessは設置したディレクトリ以下の下位ディレクトリ全てにも適用される、時に便利で時に不便な仕様を持っているため、ディレクトリを指定しなければいけません。Apacheのディレクティブリストを見ますと、ディレクトリを指定する<Directory>があり、そんな便利なもんがあるなら使う他ないだろ、と思い早速………あれ、使えない。よくよくリファレンスを読んでいたら、.htaccessでは使えないという。<Location>も同様。

あまりスマートではないのでやりたくはなかったんですが、仕方がないので該当ディレクトリに.htaccessをそれぞれ配置することにしました。最終手段を持ち出したんだから使えないわけが…、わけが…。文字コードはそれぞれバラバラかもしれないので、当初はRemoveCharsetを使おうと思っていましたが、Apacheが1.3系だったので断念、AddTypeで上書きしようとしましたが、上位の指定を上書きすることができません。UTF-8でエンコードされてしまうのです。記述ミスはないはずだし、おかしい、最終手段なのに

検証の結果、問題は意外なところにありました。

WELは現在、マークアップにXHTMLを採用しとりますが、汎用性(特にIE)を考慮して拡張子は『.html』のままにしてあります。IE7はapplication/xhtml+xmlなメディアを開くことができないので、『.xhtml』を開けないのも納得。どちらにしろ『.xhtml』が関連付け(登録)されていないから保存ダイアログが出ちゃうけど。そこらへんの問題はあんまり調べてないからヘタなこと書くと誤解されちゃうので…。で、問題は、XHTMLをapplication/xhtml+xmlとして配信しなければいけないところにある。いけないわけじゃあないけど、W3Cが推奨する案には順ずべきかと。しかしIEはapplication/xhtml+xmlを開けない。『.html』とするのは問題ない妥協であるからして、さすがにメディアタイプまでは妥協できません。

だからどうしてるかっつーと、application/xhtml+xmlを解釈できるブラウザにだけ当該メディアタイプで配信するようにしています。いわゆるIE以外ってヤツ。これならIEにもXHTMLをtext/htmlとして(非推奨ですが)配信・展開できます。ウチのサーバの設定だと何も明示しなきゃ『.html』は全部text/htmlですが。

具合が悪かったのは、その判定処理でした。上記の方法だと、該当するブラウザに対して適切なメディアタイプを明示したレスポンスヘッダを送信するわけですが、その際MIME-typeの値を完全に上書きしてしまう仕様らしく、Addcharsetよりも優先されていたのです。子が「このディレクトリはSJISだよ」と言っても、親が「そうじゃない、UTF-8だ。あなたと違うんです」と半ば虐待なわけです。コレは困った。そりゃあ最終手段でも親には勝てんだろうな。

解決するのはカンタンです。さらに上書きしてしまえばいいんです、MIME-typeを。AddTypeではなく判定処理と同じ方法で。スイス製のアーミーナイフなんて無論使ったことがなかったので四苦八苦しましたが、どうにかこうにか調べ上げ、慣れない正規表現も使い、だいぶアナログというか力技のディレクトリ別指定になってしまいましたが、これにて無事解決いたしました。.htaccessってゴイスーなんだなっていう感嘆と、ウェブクリエイタがHTTPにまで気を配らなければならない憂鬱を覚えた貴重な経験でした土佐。レンタルサーバ次第なんですけどねー…。

有吉弘行が大ブレークしている謎 - ネタりか
先輩が超そっくりなんですよ有吉に。先輩が一時期、内臓の方をやられて一週間近く入院している間にテレビの有吉を見てなつかしくなったもんね。今までになかったあの独特な芸風はイイ。スベりでも奇抜でもないが普通でない。まさに独特。猿岩石当時はどう見ても一般人だったのでおもしろくもなんともなかったですが、じわじわと、ようやく。でも怖いですね、一発屋の呪いか、せっかく実力で再開花したのにすぐに消えてしまうことが多い。近頃の良い例ではチッチキチーですかね。早かったなあの二人。調子に乗って『チ』なんてウッウン(咳払い)。

パナソニック「売上10兆円企業」への布石 三洋買収へ(産経新聞) - Yahoo!ニュース
マズいぞ! eneloopとEVOLTAの合体だッ!!

WPAや11gに対応。ネット機能を強化した「ニンテンドーDSi」
な…、なにィィィィィ!? DSが11g!?!? 無印でWEPでと正直クソッタレだったDSが、まさか。DSがPSPを超えた。大事件です。姉さん父さん母さんムツゴロウさん事件です。マルチメディア性能に秀でていたはずのPSPが、そこをウリにしていたはずのPSPが、無線LANという極めて重要な通信規格で負けた。これはあまりにも大きなトピックです。3000になっても未だ11bのPSPは、言わばキツネが猛威を振るう前のIEです。「(少なくともマルチメディア面なら)スペックでDSに負けるこたねぇから、別に11bで良かんべ」とあぐらを掻いていたに違いない。「どうせ向こうは無印だし」とも。一気にスッパ抜かれてしまいましたね。DSはDSで旧ソフトはWPAに対応していないなどとお粗末な仕様を露呈してしまいましたが、昔は昔である。もはやP2Gの杵柄に抱き付いていられる状況でもあるまい。3000出して浮かれてないで、一刻も早いインフラのブラッシュアップ(横文字って難しいよね)を。

あ。書き忘れてましたが、ニッシーがいつの間にか滋賀ふるさと観光大使に任命されたそうで。…何をするんだろうなぁ。琵琶湖泳ぐんかなぁ。

2ぐは。

大和 | 2008-11-02 14:24
Serene Bach 導入おめでとうございます。
念願のコメント機能ですね。
ゆーさく | 2008-11-02 17:39
2ぐは。