最近書かれた記事5件分を表示します。
更新状況をRSS 1.0形式でご覧になれます。
Opera 8.02 Finalでの組み込みを見送ったことにより、BitTorrentは8.10 Preview 2として調整が続けられている。
これまではIdentify as Internet ExplorerをデフォルトとしていたOperaだが、この8.10 Preview 2からはIdentify as Operaをデフォルトとするようだ。これはua.iniでHTTPリクエストヘッダのHTTP_USER_AGENT値をドメイン毎に切り替えられるからだろう。
それともシェアの関係だろうか。「MSIEとして認識させているから、Operaのシェアは低いのだ」という意見を見たことがあるが、果たしてどうだろう。
そもそもシェアというのは、一般ユーザが気にするものではない。ある製品のシェアが高いとして、それは「使われている」ことを示すものであって、必ずしも「良質」であることを示さない。「皆が使っているから」「今話題だから」と受動的に判断するのは結構だが、自分でいくつか使った上で能動的に判断する方が賢明ではある。
Identify as Operaをデフォルトとした件について、Opera Watchで丁寧に解説されている。
2005-08-02 22:07追記
3つのセキュリティ問題を修正したOpera 8.02がリリースされている。8.02 Preview 1で試験導入されたBitTorrentは含まれていないが、セキュリティ問題以外にもいくつかの修正が入っている。
なお、8.02用の日本語Language filesが公開されているため、8.02の日本語版のリリースを待つ必要はない。
Webページにメールアドレスを記載すると、ほぼ例外なくspamが飛んでくることになろう。これまではメールアドレスを16進数の数値文字参照で記す、mailtoスキームを書かないなどの手段を講じていたが、それも気休めにすぎなかった。よくよく考えれば根本的なところを見落としており、全然解決になっていないと気づく。
詳しく知っているわけではないが、spamをコンピュータで自動送信する場合、メールアドレスの収集には検索エンジンを使うと聞いたことがある。それが間違っていないのであれば、検索エンジンに対してメールアドレスを出力しないだけでspamを減らすことができるだろう。
方法としては、HTTPリクエストヘッダのHTTP_USER_AGENT値でbotかどうかを判別し、botであればメールアドレスを出力しないようにすればよい。これにはPHPを使う。
$ua = getenv("HTTP_USER_AGENT");
if (ereg("Googlebot/2.1", $ua) || ereg("Yahoo! Slurp", $ua) || ereg("msnbot/1.0", $ua)) {
$bot = 1;
} else {
$bot = 0;
}
echo '<address>桐沢 辰';
if ($bot != 1) {
echo 'foo@bar.baz';
}
echo '</address>';
例では、Google、Yahoo!、MSNのbotに対してメールアドレスを出力しないようにしている。これ以外にもあろうが、その際は同じ要領で追加していけばよい。
contentプロパティで文字列を生成する際、ブラウザによっては文字化けを起こしてしまうことがある。特別気に留めたことはなかったが、iCapture(Macintosh/Safari)で表示してみると文字が化けていた。
blockquote:before {
content: attr(title) "より引用:";
}
contentプロパティの値に多バイト文字を含めると文字が化けてしまう。これは@charsetで文字コードを明示しても発生する、Safariのバグだそうだ。
文字化けを回避するには、多バイト文字を16進数の数値文字参照に変換し、さらにバックスラッシュでエスケープしてやるといい。16進数の数値文字参照に変換する際には、数値文字参照変換スクリプト(be Strict)にお世話になった。
問題の「より引用」を数値文字参照変換スクリプトにかけると、より引用という文字列が得られる。&#xを\(バックスラッシュ)と置き換えてやり、その文字列をcontentプロパティの値として使えば解決できる。よって、先程の指定は次の通りになる。
blockquote:before {
content: attr(title) "\3088\308a\5f15\7528:";
}
末尾のコロンは多バイト文字でないので、そのまま使って問題ない。
メタデータとはデータのためのデータを指し、XHTML文書においてはhead要素内に記述することが多い。文書名、作成者、作成日などがメタデータの例である。head要素内に記述されたメタデータ(meta要素型やlink要素型による)は通常表示されないが、何とか表示させる方法はないものかと考えた。
今まではPHPで新たな要素を生成することでメタデータを表示していたが、今回はhead要素内のメタデータそのままを使いたい。となれば、方法としてはCSS以外に考えられなかった。
OperaのユーザスタイルシートであるShow structural elementsからヒントを得て、次のようなスタイルを作り上げた。CSS2をまともに解釈できるブラウザであれば、しっかりとメタデータが表示される。
head {
display: block;
}
meta {
display: inline; /* or block */
}
meta:after {
content: attr(content);
}
まず、head要素、meta要素それぞれにdisplayプロパティを指定する必要がある。その後、疑似要素である:afterを用いてmeta要素のcontent属性を展開(content: attr(content);)している。これを適当に整形してやれば完成である。
例示に用いたmeta要素とCSSは次の通り。
<meta name="DCTERMS.created" scheme="W3CDTF" content="2005-07-04" />
<meta name="DCTERMS.modified" scheme="W3CDTF" content="2005-07-09" />
head {
background: #fffff9;
border-right: #aaa solid 1px;
border-left: #aaa solid 1px;
display: block;
font-family: Verdana, sans-serif;
font-size: 75%;
margin: 0 6%;
padding: 0.2em 0.5em;
text-align: right;
}
meta[name="DCTERMS.created"] {
display: inline;
color: #777;
}
meta[name="DCTERMS.created"]:before {
content: "Created on ";
}
meta[name="DCTERMS.created"]:after {
content: attr(content) ";";
}
meta[name="DCTERMS.modified"] {
display: inline;
}
meta[name="DCTERMS.modified"]:before {
content: "Last modified on ";
}
meta[name="DCTERMS.modified"]:after {
content: attr(content);
}
なお、DCTERMSについてはXHTML: Dublin Coreによるメタデータを参照されたい。
以前、id属性はどの要素に振るべきかでdiv要素型について述べた。その最後にdiv要素型を使い続ける理由を記しているが、よく考えると逆の考え方もできる。
divはスタイルを適用するためのコンテナとして用いられるが、本来は参照用のid属性を振るために存在しているのではないだろうか。私はそう考えるからこそ、div要素に一切スタイルを指定していない現在も使い続けている。
id属性はどの要素に振るべきか(Notes :: 2005年3月)より引用
id属性(より厳密にはフラグメント)を振るためにdiv要素型を用いるという考え方は変わっていない。しかし、後半の内容は頭が固い証拠であった。考え方が逆だ。あるスタイルを適用するためだけにdiv要素型を用いる(無駄に増やす)ことが問題なのであって、フラグメントを示すために用いるdiv要素型に(ついでに)スタイルを適用するのであればまったく問題ない。
Pentium 4の技術文書が公開されていることを今になって知った。私はただのユーザにすぎない(技術者ではない)が、温度についての仕様書(Thermal Specifications)は参考になる。