6 件 見つかりました。
このブログの記事専用のURL短縮の仕掛けを作りました。
tinyurl.com や bit.ly などのURL短縮サービスの「たつをの ChangeLog」専用ロジックです。
特徴はデータベースを使っていないこと。
ロジックのみで圧縮、展開ができるのでメンテフリーで超軽量です。
((9 x 12 + 0) x 31 + 1) x 24) + 2 = 80378
まあ、ユリウス通日みたいにどこかを基準にした経過日数に変換しても良いのですが、面倒だし本質ではないので上記の式でざっくりと。
これを64進数に変換します。
使う字は下記の64文字。小さい順に並べてあります。
Base64っぽい感じです。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789-_
「2009年1月2日3時」→「80378」の64進数変換結果は下記となります。
Tn6
つまり、 「http://1.jp/」がURL短縮サイトとすると、
「http://chalow.net/2009-01-02-3.html」
は
「http://1.jp/Tn6」
に圧縮されます。
戻すときは今の手順を逆に進めばOKです。
データベースは不要ながら、なかなかの圧縮率です。
#!/usr/bin/perl
use strict;
use warnings;
my ($y, $m0, $d0, $h) = (2009,1,2,3);
print "ID(DATE): $y, $m0, $d0, $h\n";
my $ec = clid_encode($y, $m0, $d0, $h);
print "Short CODE: $ec\n";
($y, $m0, $d0, $h) = clid_decode($ec);
print "ID(DATE): $y, $m0, $d0, $h\n";
sub clid_encode {
my ($y, $m, $d, $h) = @_;
$m--; $d--; $h--;
$y -= 2000 if $y >= 2000;
my $ec = (($y * 12 + $m) * 31 + $d) * 24 + $h;
my $str = "";
while ($ec > 0) {
my $v = $ec %64;
my $c = substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
."abcdefghijklmnopqrstuvwxyz"
."0123456789-_", $v, 1);
$str = $c.$str;
$ec = int($ec / 64);
}
return $str;
}
sub clid_decode {
my ($str) = @_;
my $ec = 0;
foreach my $c (split(//, $str)) {
my $v = index("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
."abcdefghijklmnopqrstuvwxyz"
."0123456789-_", $c);
$ec = $ec * 64 + $v;
}
my $h = $ec % 24;
$ec = int($ec / 24);
my $d = $ec % 31;
$ec = int($ec / 31);
my $m = $ec % 12;
$ec = int($ec / 12);
$m++; $d++; $h++;
$ec += 2000 if $ec < 100;
return ($ec, $m, $d, $h);
}
■実行例:
% ./tinytcl.pl ID(DATE): 2009, 1, 2, 3 Short CODE: Tn6 ID(DATE): 2009, 1, 2, 3

桃が好きです。
桃のジュースも好きです。
不二家ネクターも好きです。
最近、不二家ネクターのサワーが出ました。
- ネクターサワースパークリングピーチ | サッポロビール
http://www.sapporobeer.jp/nectar/
シュワッとしてて酔っ払うネクターです。
妊娠中の妻は飲めないので私だけが楽しみました!
(妻は普通の不二家ネクターを飲んでおります……。)

この土日の主なできごとのメモ。
小さくてかわいいクマのビスケットがローソンで売っていたのでついつい買ってしまいました。これはかわいい!
味は想像通りのはちみつクッキー。
一瞬で食べきってしまいました…。
商品名の「ミニくまビス」もかわいい感じ。
最初はビス(ねじ)かと思っちゃったけど。
パッケージの写真を遠くから見るとビスっぽいものが入っていそうだし(ないない)。
photos by :
■Canon デジタル一眼レフカメラ EOS Kiss X2
![]()
[楽天で探す]
■Canon EFレンズ 35mm F2
![]()
[楽天で探す]

朝一で渋谷のビックカメラへ行き、iPad 用の保護フィルムを買いました。
■レイアウト iPad(2010年1月発表モデル)用ギラツキ防止AG保護フィルム RT-PA1FS1/AG
![]()
[楽天で探す]
シャワーを浴びたあとの湿気が多くてホコリが舞ってない浴室で慎重に貼りました。
一度「ペコッ」と折れ目がついてしまった箇所に小さな気泡ができてしまったのですが、ホコリは入らずにすみました。
めでたし、めでたし!