2004年 07月 25日

xyzzy での xmldatetime, unix timestamp

; Unix-Timestamp
(global-set-key #\C-2
#'(lambda ()
(interactive)
(with-output-to-selected-buffer
(format t "~d" (- (get-universal-time) (encode-universal-time 0 0 9 1 1 1970))))))
; xml datetime
(global-set-key #\C-1
#'(lambda ()
(interactive)
(let (date)
(setq date (format-date-string "%Y-%m-%dT%H:%M:%S%Z"))
(insert (concat (substring date 0 -2) ":" (substring date -2)))))) ;%Z => "+0900" -> "+09:00"

これなしじゃ生きれない!

それと pre を使うときは CDATA で囲ってる……そうしないとインデントされてしまうから……

todo

  • 年毎一覧
  • index
  • RSS

RSS はフレーバー形式 (blosxom 的。拡張みたいなのをつける) にしてみるとかかなぁ……フレーバー形式にすれば、RSS 以外にも、携帯用軽量版とか、他のバージョンを提供しやすいもんなぁ。

フレーバー式にしてみた。存在しない場合はデフォルト (XHTML) を送信。/latest.rdf で RSS1.0 のコンテンツが取得できる。

dxml

[http://test.lowreal.net/d/taglibro.php/latest]

  • 一覧がない。実装自体は簡単なはずだけど、php でそのまま出力してしまうか、xsl をテンプレとして使うか悩む……
  • 年別どうするか考えてない。
  • カテゴリ表示が3ヶ月ぐらいで破綻しそう。
  • デフォルト以外のフレーバーの content-type をどう指定するか。設定ファイルに連想配列でつっこむのが有力。

今のところ、月別と日別は一個のファイルだけを直接 xslt に渡して処理(たぶん日別は変えると思う……)最新とカテゴリは必要データを dom で結合させてから xslt に渡す。ただ、カテゴリは全部処理しないと意味ないので全部結合してる(駄目)

blosxom っぽい url が使えます。/2004/07 /web/2004 /2004/var /latest.rss. でも個別ページと月別はフレーバー未実装。

つかもうちょいソースを綺麗にしたい……switch が多くて汚い。

書き直した。ある程度関数にして分離したので、前より格段と綺麗に。でも行数は変わってない(むしろ増えてる)

でもこれでカテゴリごとの latest を実装できた。つまり /latest /web/latest /latest.rdf /web/latest.rdf /latest/web.rdf (推奨しないけど) が使える。

dxml

http://test.lowreal.net/d/taglibro.php/latest

  • 一覧がない。実装自体は簡単なはずだけど、php でそのまま出力してしまうか、xsl をテンプレとして使うか悩む……
  • 年別どうするか考えてない。
  • カテゴリ表示が3ヶ月ぐらいで破綻しそう。
  • デフォルト以外のフレーバーの content-type をどう指定するか。設定ファイルに連想配列でつっこむのが有力。

今のところ、月別と日別は一個のファイルだけを直接 xslt に渡して処理(たぶん日別は変えると思う……)最新とカテゴリは必要データを dom で結合させてから xslt に渡す。ただ、カテゴリは全部処理しないと意味ないので全部結合してる(駄目)
blosxom っぽい url が使えます。/2004/07 /web/2004 /2004/var /latest.rss. でも個別ページと月別はフレーバー未実装。
つかもうちょいソースを綺麗にしたい……switch が多くて汚い。

書き直した。ある程度関数にして分離したので、前より格段と綺麗に。でも行数は変わってない(むしろ増えてる)
でもこれでカテゴリごとの latest を実装できた。つまり /latest /web/latest /latest.rdf /web/latest.rdf /latest/web.rdf (推奨しないけど) が使える。

むむむ、wb.php

ホストを取得できてない。トラックバックの excerpt も記録されてない。

excerpt はスペルミスですた。

文字コード変換がうまくいってない mb_convert(ry なんですけど、どうすりゃいいでしょう。invalid token とかになっちまいますよ。困った。微 XSS 脆弱性。

if ==

== 使ってリテラルと変数を比較するときは、変数を右辺に置くべし……間違って = とかいても実行時エラーがでるから。でも癖で左においちゃうよなぁ。

2004年 07月 11日

えくまたん

ロングIP とかいう、IP アドレスを区切らずに十進数にしたやつ((普通見る IP アドレスは 0111 1111 . 0000 0000 . 0000 0000 . 0000 0001 っていう 1byte(8bit) ごとに区切ったやつを10進数にそれぞれ変換している。ロング IP は全部繋げて10進数にするだけ。って説明するまでもねぇなうんこ ))があるのを窓の森で知った((http://3639551843/ は Google.))んだけど、あれって正引きさえ除けば javascript でさえできるよね……でも最初に ruby で書いてから javascript に書き直そうと思ったら sprintf なくて面倒だった。結局汚くなってしまった。まぁ使わないんだけど。

function longip(ip) {
ip = ip.split(".");
var ret = "";
for (var i = 0; i < ip.length; i++) {
temp = Number(ip[i]).toString(2);
zero = "";
for (var j = 0; j < (8 - temp.length); j++) {
zero += "0";
}
ret += zero + temp;
}
ret = parseInt(ret, 2);
return ret;
}

つーか ruby のほうのソース消してしまった、のでまぁまた書いてみる。数行だし。

def longip(ip)
binary = ""
ip.split(".").each do |part|
binary += "%08b" % part.to_i
end
binary.to_i(2)
end

longip("127.0.0.1") => 2130706433

longip(IPSocket::getaddress("localhost")) => 2130706433 (Ruby; require "socket")

なんかわざわざ書くほどじゃないけど、俺は激しく忘れっぽいのよね!

でもこのロングIPさ、xrea とかでやるとうまくいかないね。ただの IP アドレス指定だから、バーチャルホストうんたらで無理くさい。知らないけど。

えくまたん

ロングIP とかいう、IP アドレスを区切らずに十進数にしたやつ*1があるのを窓の森で知った*2んだけど、あれって正引きさえ除けば javascript でさえできるよね……でも最初に ruby で書いてから javascript に書き直そうと思ったら sprintf なくて面倒だった。結局汚くなってしまった。まぁ使わないんだけど。

function longip(ip) {
    ip = ip.split(".");
    var ret = "";
    for (var i = 0; i < ip.length; i++) {
        temp = Number(ip[i]).toString(2);
        zero = "";
        for (var j = 0; j < (8 - temp.length); j++) {
            zero += "0";
        }
        ret += zero + temp;
    }
    ret = parseInt(ret, 2);
    return ret;
}

つーか ruby のほうのソース消してしまった、のでまぁまた書いてみる。数行だし。

def longip(ip)
    binary = ""
    ip.split(".").each do |part|
        binary += "%08b" % part.to_i
    end
    binary.to_i(2)
end

longip("127.0.0.1") => 2130706433
longip(IPSocket::getaddress("localhost")) => 2130706433 (Ruby; require "socket")
なんかわざわざ書くほどじゃないけど、俺は激しく忘れっぽいのよね!
でもこのロングIPさ、xrea とかでやるとうまくいかないね。ただの IP アドレス指定だから、バーチャルホストうんたらで無理くさい。知らないけど。

2004年 07月 10日

C#

C# って学ぶ価値ありますか。

C#

C# って学ぶ価値ありますか。