全くもって信じ難し

大学生にもなって麻雀ができない奴が多すぎる。
おまえらは一体義務教育で何を学んできたのかと問いただしたい。
雑記 | comments (480) | trackbacks (0)

Safariについて思うところ

Web開発の観点からするとSafariは微妙に厄介。
SafariはWeb標準に準拠する形で作られているが、
おなじくGecko系(Firefoxとかネスケとか)もWeb標準準拠を謳っている。
そしてこの二つで現在シェアが上なのはGecko。
つまり普通に考えてWebページというのはSafariよりGeckoへの対応を優先されるわけだ。

さて、ここで少し技術的な話になるが、JavaScriptというのはブラウザによって動作が異なったりする。
特にIEは独自路線を突き進んでいる。
そこで、プログラムでブラウザを判別して、
ブラウザごとに違った処理を実行させる必要がある。
で、この判別に使われる手法は二つあり、
一つ目はこれから行おうとする処理の関数(オブジェクト)を実際に使用できるのかどうかを確かめる方法、
そして二つ目は、ユーザーエージェント(以下UAと表記)を解析する方法。
UAというのはブラウザの詳細な名前みたいなもので、Firefox1.5.0.4なら以下のようになる。
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4

一つ目の手法はJavaScriptの動作分けとしては最も確実なのだが、
JavaScriptからCSSを操作する場合、CSSの互換性をチェックする事ができないという欠点がある。
逆に二つ目の手法は、CSSの互換性はカバーできるのだが、JavaScript自身の動作分けにはあまり適しておらず、
さらに、未知のUAを返してきたブラウザに対応できなかったり、
UAを偽装されている可能性があるという欠点がある。

さて、ここで一つ目の厄介事は、同じWeb標準準拠を謳っているにもかかわらず、
GeckoとSafariでは細かいところでJavaScriptの動作やらCSSの対応状況が異なるということ。
でもちゃんとブラウザ分けすればいいじゃん、と言うのは簡単で、
二つ目の厄介事は、SafariがデフォルトでUAにてGeckoを装ってくるということ。
Safari2.0のUAはこんな感じになっている。
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/412 (KHTML, like Gecko) Safari/412

Web標準普及プロジェクトでは、
ブラウザ判別では"Gecko"を調べてください
とUAにGeckoが含まれているかどうかを判断基準にする事が推奨されてる。
しかし、SafariのUAにもよく見るとなぜかGeckoが含まれてる。
まあ、これはSafariのUAがこんな感じだと知ってさえいれば判別は可能で、
要はKHTMLを含むものをSafari/Konqueror系として判別すれば問題ない。

しかし、これを知らずに普通に判別すると大抵Geckoとして認識されるし、
Safariの開発側もSafariを想定していないUA判別をされても、
Safariと互換性の高いGeckoとして認識されれば動く可能性が高いので、
あえてlike Geckoを名乗らせているわけだ。
さて、ここで一つ目の厄介事を思い出して欲しい。
微妙に動作が違うのだ。SafariとGeckoで。
しかもGeckoには標準にないいくつかの独自実装がある。
そして最初に言ったように、WebページはGeckoが優先される傾向にある。
つまり、Gecko独自実装の機能を使われている場合、
Geckoと認識されたSafariでは動作やデザインが意図しないものとなったり、
最悪の場合JavaScriptが動かないという事態が発生しうる。
Web標準の観点から見ればGeckoが悪であるが、結局世の中強いほうが正義なのである。

そして三つ目の厄介事は、SafariはUAからは容易にバージョン名を特定できないということ。
バージョンの差異による動作分けも必要となる場合がある。
FirefoxのUAならFirefox/1.5.0.4の部分でブラウザのバージョン、
さらにrv:1.8.0.4でGecko自身のバージョン(普通判別にはこっちを使う)がそのまま取得できる。
しかし、Safari2.0は、Safari/412となっている。
当然バージョン412ということではなく、これはビルド番号である。
つまり、Safariのバージョン判別をしたい場合、いちいち対応するビルド番号を調べないといけないわけである。

さて、いろいろSafariが厄介なように書いたが、Web標準の観点からみると悪いのはGeckoである。
そもそも、Acid2テストというCSSの標準に準拠しているかどうかのテストをSafariはクリアしているが、
Geckoはまだクリアしていない。(次のGecko1.9で対応予定らしいが)
UAの偽装も知っていればSafariとGeckoを判別するのは容易なので問題はない。
唯一Safariで気にくわない所といえばUAにバージョンを明記していない所ぐらいだ。
プログラミング | comments (209) | trackbacks (0)

この時期になると皆アクセス解析ネタですが

うちはダントツでハルヒダンス、次いでエロワードとなっていました。
日本の将来が心配です。
雑記 | comments (56) | trackbacks (0)

死期が近いのか

最近体調が劣悪すぎる。
二週間前あたりから人ごみに行くとくしゃみ鼻水が止まらない。
これはアレか。人間アレルギーか。
ほんと引きこもりたい。東京は人ごみばっかだからなぁ('A`)

そして一週間前の嘔吐だ。さすがにこのあたりからやばいと思い出した。
おまけに立ちくらみもなんか前より多くなってる気がする。
そして火曜水曜と起きるとかなり倦怠感あって結局大学行かずに家でおねんね。
そして木曜はさすがに英語と実験という重要科目がダブルである日なので大学行ったが、
昼過ぎの実験中吐き気催してトイレに駆け込む。
結局吐けずにしばらく休んでたら落ち着いたから実験に戻ったが、
さすがにここまでくるとやばいよな。
今日はなんか比較的に調子よかったから普通にバイトも行ったんだが、今度は咳がとまらん。

だが、多分原因はアレだと思うんだ。
身体計測があるとかでよーし驚異的な体重記録しちゃうぞとか言ってさらに体重落としたのがやっぱまずかったんだ。
体重落としてからも今思えば食事量が増えてなかったからそのへんがもろもろ響いてきたんだろうな。

しばらくちゃんと飯食うか。つっても今月金欠だからなぁ。
日雇いのバイトしたら余計減量されそうだもんなぁ。

つーか明日はそろそろまともな記事書くわ。さすがに。
雑記 | comments (0) | trackbacks (0)