2006/02/26 10:41 [Ruby] Ruby で UTF-8

Perl はオブジェクト指向とか例外処理とかできないこともないけど、 やっぱり使いづらいんで Ruby を勉強中。

で、最初につまずいたのが UTF-8 の文字列の長さを取得する方法。 どうやら jcode で いけるらしい。

#!/usr/local/bin/ruby -Ku
# ↑-KuオプションでソースコードがUTF-8であることを指定

require 'jcode'

str = 'UTF-8な文字列'

# length
puts "str.length = #{str.length}"
# 日本語対応版length
puts "str.jlength = #{str.jlength}"

実行結果 :

str.length = 17
str.jlength = 9

2006/02/25 4:18 [Perl] XML::DOM モジュールで getElementById

Perl の XML::DOM モジュールには getElementById が無い。 理由は Document Object Model (Core) Level 1 の実装だかららしい。

ということで自分で作ってみた。 要素ノードの id を片っ端から調べていくから、大きな XML だと時間がかかりそう。

#!/usr/local/bin/perl

use strict;
use warnings;
use XML::DOM;

my $xml = << 'END_OF_XML';
<?xml version="1.0"?>
<document>
    <element>
        <element id="foo">This is foo.</element>
        <element id="bar">This is bar.</element>
    </element>
    <element id="baz">This is baz.</element>
</document>
END_OF_XML

my $parser = XML::DOM::Parser->new();
my $document = $parser->parse($xml);
my $element = &getElementById($document, 'bar');

if (defined $element) {
    print '$element->getFirstChild->getData = ' . $element->getFirstChild->getData;
}
else {
    print 'undef';
}

sub getElementById {
    my ($document, $id) = @_;
    my $recursive;

    $recursive = sub {
        my $element = shift;

        if ($element->hasChildNodes) {
            my $node = $element->getFirstChild;

            while ($node) {
                if ($node->getNodeType == ELEMENT_NODE) {
                    return $node if $node->getAttribute('id') eq $id;

                    my $result = &$recursive($node);
                    return $result if defined $result;
                }

                $node = $node->getNextSibling;
            }
        }

        return undef;
    };

    return &$recursive($document->getDocumentElement);
}

実行結果 :

$element->getFirstChild->getData = This is bar.

2006/02/17 23:37 記事のリンクだけ貼ったサイトの存在意義

コデラ ノブログ: 何様 [ITmedia +D Blog]

記事のリンクだけ貼ったサイトの存在意義。 私は「ある」と思う。 del.icio.us のようなブックマーク共有サイトがあるのがその証拠だろう。

del.icio.us では他人のブックマークを見ることができる。 ブックマークは Web サイトのタイトルと URL だけの集まりである。 「記事のリンクだけ貼ったサイト」と同じだ。 ブックマークに入れたり、記事にリンクを張るということは、 その作者にとって「興味があるサイト」というふるいにかけられているわけだ。 同じ物に興味をもつ人が見れば、優秀なリンク集となり得る。

ふるいにかけてリンクを張るサイトといえば Yahoo! のディレクトリ検索 だ。 最近は Google 等に押され気味に見えるが、一昔前に検索と言えば Yahoo! のディレクトリ検索だった。 このディレクトリ検索は Yahoo! のスタッフが良いサイトを厳選し、 「カテゴリ」に分類しているリンク集である。 興味のあるカテゴリを見れば、優秀なサイトへのリンクがそろっているわけだ。

記事のリンクだけ貼ったサイトがアフェリエイトで収入を得る。 Yahoo! がリンク集を提供する代わりに広告で収入を得る。 なんの違いがあるのか? 仮に Yahoo! が小寺氏のコラムへリンクを張ったとして、 小寺氏は Yahoo! に対して「その業績はオレのものだろ? 違うのかえっ?えっ?」と 言うんだろうか?たぶん言わないだろう。

良いサイト、ページにリンクを張るのは WWW では当たり前のことだ。 そして、多くの良いサイトにリンクを張っているサイトもきっと良いサイトだろう。 記事のリンクだけ貼ったサイトでも十分存在意義はあると思う。

まぁそんなことを思ったわけだけど、リンクに加えていろいろ書いてあったほうがやっぱりいいよな、とも思う:-)

2006/02/02 19:41 IE7 Beta 2 Preview のアンインストール

Frequently Asked Questions for the IE7 Beta 2 Preview に書いてあるアンインストール方法をてきとーに翻訳してみる。

6. Preview をアンインストールするには

Windows XP 上で Internet Explorer 7 Beta 2 Preview をアンインストールし Internet Explorer 6 に戻すには

  1. 「スタート」をクリックし、「コントロール パネル」をクリックする。
  2. 「プログラムの追加と削除」をクリックする。
  3. ダイアログボックスの上のあたりにある「更新プログラムの表示」をチェックする。
  4. リストを「Windows XP - Software Updates」までスクロールし、 「Internet Explorer 7 Beta 2Preview」を選択後「変更と削除」をクリックする。

「Internet Explorer 7 Beta 2Preview」が存在しない場合は、%windir%\$NtUninstallie7bet2p$\spuninst\spuninst.exe を実行する。 「すべてのファイルとフォルダを表示する」を有効にしておく必要がある。 %windir% は Windows がインストールされているディレクトリで、多くのシステムでは普通 'C:\Windows' である。

訳者注 : 「変更と削除」の部分は原文が "Change/Remove" となっていたためこのように訳しましたが、 実際に私がアンインストールした時は「削除」となっていました。

2006/02/01 17:53 Internet Explorer 7: Beta 2 Preview を入れてみた

Internet Explorer 7: Beta 2 Preview を入れてみた。 ざっと見ただけでも以下のように機能が強化されたり変な仕様が直ったりしてる。

  • タブ
  • 検索バー
  • ズーム
  • RSS Feed 対応
  • フィッシングフィルタ (Phishing Filter)
  • 個人情報の削除 (Delete Browsing History)
  • CSSの強化 (position:fixed;、隣接セレクタ、a タグ以外の :hover 疑似クラス対応)
  • PNG のアルファチャンネルに対応
  • XML宣言があっても標準モードでレンダリング

各タブのサムネイルも表示できた(Quick Tabs というらしい)。 画像を開いた時にタブのアイコンがサムネイルになる機能は無し。 タブ周りのショートカットキーは Firefox と同じっぽい。 XHTML 関係の修正のおかげで、IE7 が出たらちゃんとした XHTML を書いてよさそう。

UserAgent は Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) だった。

インストール

インストール

起動直後

起動直後

RSS を表示

RSS を表示

各タブのサムネイル

各タブのサムネイル