‘コンピュータ’ タグのついている投稿

IEイラネ – Web改装計画(4-5/12)

2006年6月15日 木曜日

1)リンクページうp。
とりあえず、現在思い立ついろんなページにリンクあげました。
身内でカテゴリの合うひとが少ないことに気が付く。

2)リンクの報告とかお願いとか必要なところはしてきた。
要するに、リンクした個人サイトのほとんど。

3)IEでの文字化け解消。
方法は、前回の推測通り、<head>タグ内に<meta>タグを書くことだった。
……XHTMLはXMLであってHTMLじゃねぇ、と小声で主張してみよう。

これからのタスク。
(6)おとボク関連コンテンツ制作
 いろんなところに書き散らしたデータを収集する。といっても、ほとんどが瑞萌堂さんのおえびから(おえびにアクセスできないのはなぜ…… orz)、あとは2chに落としたSSが一本と、blogでの「おとボク」「はぴねす!」考察くらいかな。

(7)KanonTCG系列のXHTML化
 ついでにKanonのXHTML化とうpもしておこう。

(8)infoseekを焼け跡に
 リンク2カ所くらい貼っておくことにする。

ここまでやっておけば移転完了を宣言してもよさそうだ。
がんばろー。

IEという病

2006年6月13日 火曜日

以前のblog(ドリコム時代)から引用。

いよいよIE標準の世界が消えるか? [2005年03月30日(水)]

http://internet.watch.impress.co.jp/cda/news/2005/03/24/6968.html
IEの、UTF-8への対応が遅れているらしい。
これを見て、思わずUTF-8への乗り換えを考えたくなったが作業の手間を考えて自粛する。

新しいページを作るときは、UTF-8で作ってやる(笑)
Posted at 14:03 | Computer | この記事のURL | Clip!!
コメント(0) | トラックバック(0)

こんなコメントを残しておいたのをすっかり忘れていたわけですが。

……IE7になってもまだ直ってない。

XMLはUTF-8って相場が決まってるんだけどなぁ……ヘッダ情報変更して再変換なんて絶対嫌なんですけど orz

つーか、IEにヘッダくらい見させろよマイクロソフト……。

[同日追記]
ごめんなさい、URLで紹介されてるのと症状違いました。
今回は文字化け、おそらくXHTMLをXMLととらえるか、HTMLととらえるかの問題でしょう。
するとmetaタグ書けばいいのかな……?
あさってにでも試してみよう。

情報処理試験

2006年6月13日 火曜日

会社の命令&サポートで4月に受けてきたソフトウェア開発技術者試験、合格しました。

午前 :755
午後I :675
午後II:715

満点が800スコア、合格点が600スコアと考えれば、思わぬ快挙と言えるスコアです。同時期に受けたTOEICが615->555に下がっていましたが、なんとか挽回。これで胸を張って配属先に行けそうです。

マスカレード 燃え尽きそう♪

2006年6月11日 日曜日

東方界隈の話。幻想ノ宴というTCGを、とある掲示板でオンライン実装してた。

んで、ルータ使ってる知り合いが、ホストになれないということで、MSNで会話しながらルータのIPマスカレード設定をすることに。
……昔、MMRing(自作オンラインKanonTCGソフト)とか牛丼(お絵かきソフト)とかで苦しんだなぁ……。
とか思いながら設定を終わらせてみるものの、つながらない orz

プライベートIPしかもらえないネットワーク環境だと、こういうときのデバッグに困るなぁと思ったこの数十分だった。

Java

2006年5月31日 水曜日

研修で、Cの次はJavaについて学んでいる。
Javaは、Virtual Machineというメカニズムを用いて、コンパイル後の仮装機械語を一命令ずつ解釈して実行するというもの。
コンパイラと違って実行ファイルが環境依存にならず、インタプリタと違って文法エラーは事前にチェックできるという優れもの(とほめてみる)。

が、仕様がちょっと気にくわない。

1)forの拡張書式

List array = new ArrayList();
for(String s: args)
{
array.add(s);
}
for(String i: array)
{
System.out.println(i);
// 実行時にConcurrentModificationException例外を食らう。
// System.out.println(” Removed ” + array.remove(array.size() – 1));
}

for(int i = 0; i < array.size(); i++)
{
String s = new String(array.get(i));
System.out.println(s);

//こっちは正常
System.out.println(” Removed -> ” + array.remove(array.size() – 1));
}

ほぼ同じコードだが、配列の要素数が動的に変化すると例外を吐いて終わってしまうのが前者のコード。バグがあるけれど、そこはアルゴリズムでいくらでもフォローできるのが後者のコード。
BASICとかCOBOLとかで育ったプログラマは前者がいいのかもしれないけど、アセンブラとかCで育った私に前者は許せない。
インタプリタゆえ高速化が必要なのかもしれないが、それだったら素直にコンパイラで最適化しろと言いたい。

2)デストラクタ? ファイナライザ?
メモリ領域の問題。
メモリを正しく解放しないと、使用するメモリの量がどんどん増えていってしまう問題をメモリリークといい、サーバ関連のプログラムでは大問題になっている。クライアント関連では、ラグナロクオンラインクライアントの「BattleMode」バグは記憶に新しいところだ。
CやC++ではメモリ領域はプログラマが管理することになっており、あらゆる終了ルールに対してメモリ解放を行うべきという、高いプログラミングスキルを要求する。
それに引き替え、Javaは使わなくなったと判断したメモリ領域は勝手に開放する(ガーベジコレクション)ので、メモリ管理はかなり楽になる。
……と、これだけ聞くとJavaがすばらしいように感じるが。
C++には、あらゆる終了ルールに対して、たった一カ所メモリ解放を行えばいいという特別な場所がある。
クラスの「デストラクタ」メソッドである。
ここ一カ所だけで正しいメモリ管理関数を書いておけば、オブジェクト指向に従ったプログラミングに対してはメモリ管理が正しくできるという寸法だ。応用として、ファイル・ネットワークなどのリソースも同じ方法で管理できる。
C++にある、こんな便利な機能がJavaにないわけがなく。
Javaにも、やはり「ファイナライザ」というメソッドがある。

……が、「デストラクタ」「ファイナライザ」が正しいと仮定した場合、ここでJavaのメモリ管理機能が裏目に出る。
C++のデストラクタは、インスタンスが消えた瞬間に、確実に呼ばれる。ここで終了処理を行わないと、いつまでたってもメモリなどのリソースが解放されないからだ。
しかし、Javaのファイナライザの場合、インスタンスが消えても、実体が残っている限りはファイナライザが呼ばれるとは限らない。ガーベジコレクションがあるため、プログラム終了時あるいはガーベジコレクションが呼ばれるまでの「どこか任意のタイミングで」ファイナライザを呼べばいいだけの話になるからだ。

要するに、C++のデストラクタに比べ、Javaのファイナライザは動作が「読めない」という致命的弱点があるのだ。
これでは、せっかくの機能も宝の持ち腐れというものだろう。プログラマーレベルで最適なコードを用意するという、プログラミングの最高の喜びが手に入れられないのはあまり気にくわない。

ただし、あまり良くないコードに対しては確かに有効なわけで、どちらがよいのかは、プログラマーの「時間」と「自信」次第なんだろうなぁ、とか思ってみたりする。

3)JavaのフルコンパイラとかC++のVMとかないの?
C++のVMに関しては、ヨタ話程度には話があがっているようだが、Javaのフルコンパイラは検索にかからない(前処理コンパイラがばんばん検索にかかるので見つからないだけかもしれないが)。

C++のVMができたら、Javaが不要になるというわけでもないんだろうけど……どこかまじめに研究してくれないかなぁ。

Firefoxあそび

2006年5月29日 月曜日

ときどき、掲示板なんかで、自分の書き込みに対して、

(Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

などという表示を目にしたことはないだろうか。
これは、ユーザーエージェントと呼ばれる、利用しているOSやブラウザの種類を表す文字列で、上の場合はWindowsXPにて、Internet Explorer6を利用していることを示している。
ここで、Mozilla Firefoxの場合、(私の設定だと、)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3

がその文字列なのだが、しばらく前のおとボクチャットで、この値を任意に変更できるということがわかった。
やりかた。

1.URLを入れるところにabout:configっていれる
2.右クリック [新規作成]→[文字列]
3.general.useragent.overrideキーをつくって、偽装したい
useragentを入力

http://blog.livedoor.jp/maccy/archives/50012436.html
より。

で、チェック方法は、
http://fc.to/t2.cgi
の、「HTTP_USER_AGENT = 」パラメータをみる。
(アドレスはいつきさんに教わりました。感謝)

書き終えてすぐ反映されるっぽいのでFirefoxは優秀。ただし日本語の場合文字化けに注意。激しく注意。
これで手元のアクセス解析で、自分のブラウザが認識できずに困ることはないと思いたい。

……しかし、こうしてみると、中身Javaなんだなぁ、としみじみ。

webとしての妥当性

2006年5月28日 日曜日

現在、コンテンツ移転作業の一環として、今まで作ってきたページがwebサイトとして正しいか(正しいタグを利用しているか)を検証しながらすすめている。正しくないタグを使ったページでは、将来ブラウザが保証しなくなる可能性があるからだ。

そこで私が使っているサイトが、以下の妥当性チェックサービス。

W3C Markup Validation Service

このサイトは、Webサイトの規格を作っている組織団体 w3c により公表されているページで、正しくないwebサイトに関しては、どこが間違っているのかを事細かにつっこんでくれる。

私はXHTML1.1に基づいてwebを構成しているが、引っかかったものとしては、「タグに大文字を使ってはならない」「aタグにtarget=”_blank”は利用できない」「&を使うときは、&amp;と書かなければならない」などなど。
新しく作ったページも、アフィリエイトのためにコピペしてきたURIなんかもつっこまれて、しどろもどろである。

webサイト移転を待っている各位には申し訳ないが、この作業は重要であると認識しているので、しばしお時間をいただければと思う次第である。

……そして、おそらくtarget=”_blank”は使い続けるでしょう、さすがにこれはないと不便なので……。