uttsu.com >

uttsuの日記

2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月
2005.08.27
2004.05.26
2003.11.24
2003.11.22
Exim
jvim
nkf
2003.11.21
2003.11.20
2003.11.19

2005年8月27日

# Googleからのリファラのデコード

Googleは % 文字を \n にエンコードしているようなので、Perlでデコードするには

sub url_decode {
    local $_ = shift;
    s/\\x/%/g;  # google用
    tr/+/ /;
    s/%([a-f\d])/pack('H2', $1)/gei;
    return $_;
}

とすればいいようだ。

# JavaScript の escape 関数でエンコードされた文字列のデコード

IE等のJavaScriptのescape関数では文字列は UCS-2 という文字コードにエンコードされるようだ(%uXXXX という表記法) 。
Perlでデコードするには、

sub url_decode {
    local $_ = shift;
    if (/%u[a-f\d]{4}/i) {
        s/%([a-f\d]{2})|%u([a-f\d]{4})|(.)/$1 ? "\x00".pack('H2', $1) : $2 ? pack('H4', $2) : "\x00$3"/gei;
    } else {
        tr/+/ /;
        s/%([a-f\d]{2})/pack('H2', $1)/gei;
    }
    return $_;
}

とすれば、EUCやShift JISに加えUCS-2にも対応できる。
ただし、Jcode.pm 0.88 で試したところUCS-2の文字コードを自動認識できないことがあったため、入力がUCS-2だと分かっているときは

Jcode::convert($str, 'euc', 'ucs2');

等と明示的に変換するとうまくいった。

# ブックマーク用CGI

はてなブックマークのようなCGIを作った。
気になったページをいちいちお気に入りに登録していてはお気に入りが肥大化してしまうし、ファイルにURLをメモするのは少し手間だったが、ブックマーク用CGIならbookmarkletで一発なので簡単にクリップできる。

2004年5月26日

# LightWiki

シンプルなWikiを作った。/wiki/に設置。

コンセプトは

等々。

テンプレート機能は、はじめは PHP のように、HTML ファイル中に Perl コードを埋め込む方法を考えて、作ってみたが、それよりも外部 Perl ファイルを動的に読み込んで実行した方が柔軟なことに気付いた。

テンプレートとプラグインの手法は他のスクリプトにも応用できるので、WebNoteなんかにも搭載予定。

# 他には…

等々をしていました。また少しずつ書いていきます。

アセンブラは、WindowsでもUNIXでも使えるNASMをいうものを少し触ってみた。文法は昔使っていたTASMやMASMによく似ている。またハードよりのソフトを書くかも。

2003年11月24日

# 固定IP解約

動的IPでもうまくやっていけそうなのと、IIJの回線が飽和状態なので、ぷららのダブルルートサービスを解約。

# ZoneEditのDNS更新

単にBASIC認証のURLにGETリクエストを送れば更新できるようだ。wget等を使えば簡単に書けそう。


2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

Copyright (C) Takashi Utsunomiya. All Rights Reserved.