本棚さらし

同僚が買ってたので、つられて購入。
うちの会社のデスクの下にピッタリおさまる。
某研究所の人も買ってて、うちの会社では空前の本棚ブームです。




会社においてるのはこんだけ、オライリー多いな。

YAPC::Asia 感想

一日目

- 朝は家で仕事してて出遅れ
- mixi.jp はあの位の規模をオープンソースでやるとなると、どこも似たような感じって事が確認出来た感じ。
- Perl Best Practice は実践しよう。(させよう)
- 懇親会はサブテカ席
- つか、飲み過ぎた。
- サブテカみんな若いなー。年齢的に翌日がツラい。。

二日目

- 前日飲み過ぎで出遅れ。。
- XS ネタ面白かった。見よう見まねで数回書いたことしか無かったのでよかった。
Web 系だとあんまりやらないよね。
- はてなブックマークは予想どおりの構成だった。
うちの方が保守的かも。Apache2.2 とかまだ使ってないし、でも Subversion には移行する。とりあえず、サーバは用意した。
mod_hatena_cache(だっけ?)が気になった。memcached のクライアントライブラリは apr_memcache と libmemcache のどっちなんだろ。
- しんどかったので、MF 勢と直帰した。

最近コード書かない仕事も増えてきたけど、こういうのいくと刺激になった。
とりあえず、Subversion の導入と Apache2 のモジュールなんか書こう。


TT でXSS対策

デフォルトで HTML フィルタかけたいって話。 こんな感じで STASH 継承しちゃうってのはどうでしょ。
http://shebang.jp/src/cpan/Template-Stash-EscapeHTML-0.01.tar.gz

CPAN にも一応あげてみた。
package Template::Stash::EscapeHTML;

use strict;
use Template::Config;
use base ($Template::Config::STASH);
our $VERSION = '0.01';

sub get {
    my($self, @args) = @_;
    my($var) = $self->SUPER::get(@args);
    unless (ref($var)) {
        return html_filter($var);
    }
    return $var;
}

sub html_filter {
    my $text = shift;
    for ($text) {
        s/&/&/g;
        s/</&lt;/g;
        s/>/&gt;/g;
        s/"/&quot;/g;
    }
    return $text;
}

1;

__END__

=head1 NAME

Template::Stash::EscapeHTML - escape HTML automatically in Template-Toolkit.

=head1 SYNOPSIS

    use Template::Stash::EscapeHTML;
    
    my $tt = Template->new({
        STASH => Template::Stash::EscapeHTML->new,
        ...
    }); 

=head1 DESCRIPTION

This module is a sub class of L<Template::Stash>,
automatically escape all HTML strings and avoid XSS vulnerability.

=head1 AUTHOR

Tomohiro IKEBE, C<< <ikebe@shebang.jp> >>

=head1 COPYRIGHT

Copyright 2005 Tomohiro IKEBE, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

ImageMagick で画像を HTML に変換

ImageMagick を調べてゴニョゴニョやってたら GetPixels なんでメソッドがあるのをはじめて知りました。
ほんとうはそういう事がやりたいわけではなかったのですが、現実逃避的に画像を HTML にするスクリプト書いてみました。。

#!/usr/local/bin/perl
use strict;
use Image::Magick;

my $file = $ARGV[0];
my $image = Image::Magick->new;

my($x, $y, $size, $format) = $image->Ping($file);

$image->Read($file);
my @color_info = 
    $image->GetPixels(width=>$x, height=>$y, x=>0, y=>0, map=>'RGB');
print "<html><body>
";
my($i, $j) = (0, 0);
while (@color_info > 0) {
    my $r = num2hex(shift @color_info);
    my $g = num2hex(shift @color_info);
    my $b = num2hex(shift @color_info);
    my $rgb = "#$r$g$b";
    printf('<span style="position: absolute; left: %d; top: %d; width:1px; height:1px; background: %s"></span>', $i, $j, $rgb);
    $i++;
    if ($i == $x) {
        $i = 0;
        $j++;
        print "
";
    }
}
print "</body></html>";

sub num2hex{
    my $depth = shift;
    $depth = int($depth / 256);
    return unpack("H2", pack("C", $depth));
}
% ./image2html.pl logo.gif > logo.html
みたいな感じで使います。作ってみたのがこちら(ブラウザ固まる可能性ありますのでご注意を。。)
結構綺麗に出来るので、パッと見ではHTMLと分からないくらいです。
あまり大きい画像だとブラウザ固まりますが、アイコンとかだったら使えるかもしれません。
そうまでして画像を使わないメリット分かりませんが。。

なんかセミナーがあるらしい。

ライブドア|次世代テクノロジーセミナーシリーズ

無料でやるみたいです。僕もいこうと思います!
Profile
  • ライブドアブログ