sasimiの日記

2007-04-25

whois.ai はとても斬新だ 13:17  whois.ai はとても斬新だ - sasimiの日記 を含むブックマーク はてなブックマーク -  whois.ai はとても斬新だ - sasimiの日記  whois.ai はとても斬新だ - sasimiの日記 のブックマークコメント

http://whois.ai/

.ai ドメインを取得しようと思ってちょっとぐぐってみたらどうやらここで .ai 直下のドメインを登録できるらしい。 .com.ai とか3レベルのやつは国内のレジストラでも扱ってるんだけど。

で、 lookup したらお目当てのドメインはあいていてラッキー、でも取得するにはログインしないといけない。ログイン?それ以前に俺サインアップしてないぜ?でも FAQ を読めどどこにも signup なんて文字はなし。ためしにメアド入れて Login 押してみてもなしのつぶて

まてよ、と思いついて、ものはためしで Retrieve password のほうにメアドを入れてボタン押してみる。すると「お前のパスワードはコレ」みたいなリマインダメールキタ!俺登録なんてした覚えないのに!でそのいかにもいまでっちあげました然としたランダムパスワードを入れて改めてログインしてみると通った!いったいどのタイミングログインデータベースに CREATE されたんだろう・・・。

というわけで、去年はやった「脱出王*1みたいな謎解き系ウェブアプリってアイデアは面白いかもな、と思った。ログインしないといけないけどサインアップはどこからもできない、さあどうする?(パスワードリマインダが実は・・・)みたいな。

ちなみに肝心のお目当てのドメイン

Sorry! For a short while domains directly under .ai can not be registered.

ということで取得できなかった。残念


それ iconv で 17:08  それ iconv で - sasimiの日記 を含むブックマーク はてなブックマーク -  それ iconv で - sasimiの日記  それ iconv で - sasimiの日記 のブックマークコメント

cat /path/to/file/includes/multibyte/chars | iconv -f utf-8 -t euc-jp | less -N

カレンダーをすぐみたいとき 22:44  カレンダーをすぐみたいとき - sasimiの日記 を含むブックマーク はてなブックマーク -  カレンダーをすぐみたいとき - sasimiの日記  カレンダーをすぐみたいとき - sasimiの日記 のブックマークコメント

Google デスクトップなんて不要だった。 bluewind に "calendar" で以下を登録すればいい。

C:\WINDOWS\system32\timedate.cpl

http://www.atmarkit.co.jp/fwin2k/win2ktips/151quick_cpl/quick_cpl.html に載ってた。

AddrienneAddrienne2011/10/09 05:48Wonderful explntaaion of facts available here.

fkzvozfkzvoz2011/10/10 02:17SLd1uO <a href="http://pkkfdzqirsbe.com/">pkkfdzqirsbe</a>

rziigtezbsgrziigtezbsg2011/10/10 21:3455pU83 , [url=http://osdlfnejtmcm.com/]osdlfnejtmcm[/url], [link=http://jbmpfmumvocz.com/]jbmpfmumvocz[/link], http://cwrgbbhqtqly.com/

abcicytrhvabcicytrhv2011/10/13 02:52Tf91Z6 , [url=http://nofpwzwblbgm.com/]nofpwzwblbgm[/url], [link=http://sqgovrtzuyst.com/]sqgovrtzuyst[/link], http://hbtkxekwhqog.com/

2007-04-15

HTML::Sanitizer 6A 版を拡張 16:52  HTML::Sanitizer 6A 版を拡張 - sasimiの日記 を含むブックマーク はてなブックマーク -  HTML::Sanitizer 6A 版を拡張 - sasimiの日記  HTML::Sanitizer 6A 版を拡張 - sasimiの日記 のブックマークコメント

できた。 <emoji:heart> みたいなのと HTMLコメントを通す。

next if $token->[0] eq "C" とかやっててちょっとハマった。あと permit() とか期待したとおりに使えてるかちょっと怪しい (permit してるのに許可されてない??みたいなのが何度かあった)。あと HTML::Element って HTML 仕様書にのってないようなタグでも new() で蹴ったりしないんだな。

HTML::Sanitizer はこちら => http://code.sixapart.com/

svn co http://code.sixapart.com/svn/HTML-Sanitizer/trunk HTML-Sanitizer

CPAN にある同名のモジュールだと動かないと思う。ためしてないけど、 sanitize() がないから。

http://search.cpan.org/~nesting/HTML-Sanitizer-0.04/

それぞれの差は、あんまよくみてないけど、 6A 版のほうは HTML::TokeParser でトークンごとにルールを適用してまわってるんだと思う。 CPAN 版のほうは HTML::TreeBuilder を使っている。ざっとみたかんじ、こっちは拡張するのは無理 (sanitize_tree() を丸ごと再実装しないとだめ) かもなあ。 6A 万歳。別名で CPAN にあがったりしないすかね?> miyagawa さん

拡張しやすい設計って大事だなと思った。


package Proj::HTMLSanitizer;
use strict;
use base qw(HTML::Sanitizer);
use HTML::Element;
use HTML::TokeParser;
use Readonly;
Readonly my $init_rules => { # このへんは適当に
    script => undef,
    style => undef,
    div => 0,
    p => 1,
};
Readonly my @emoji => qw(emoji:heart);

sub new {
    my $class = shift;
    my $self = $class->SUPER::new($init_rules);
    for my $emoji (@emoji) {
        $self->permit($emoji => HTML::Element->new($emoji));
    }
    return $self;
}

sub sanitize {
    my $sanitizer = shift;
    my ($stream) = @_;
    my $out = '';
    my $parser = HTML::TokeParser->new($stream)
        or croak "Parsing stream $stream failed";
    while (my $token = $parser->get_token) {
        if ($token->[0] eq "C") {
            $out .= $token->[1] and next;
        }
        my $res = $sanitizer->sanitize_token($parser, $token)
            or next;
        $out .= $res;
    }
    $out;
}

TT で動的に TTタグを出力する 20:59  TT で動的に TT のタグを出力する - sasimiの日記 を含むブックマーク はてなブックマーク -  TT で動的に TT のタグを出力する - sasimiの日記  TT で動的に TT のタグを出力する - sasimiの日記 のブックマークコメント

メモ

[% "\[% koko.giko('net') %\]" %]

http://blog.shebang.jp/archives/50178714.html

[% '[' _ '% bar %' _ ']' %]

どっちでも可。

2007-04-10

最速インターフェース研究会の mala さんがよく言ってること 22:10  最速インターフェース研究会の mala さんがよく言ってること - sasimiの日記 を含むブックマーク はてなブックマーク -  最速インターフェース研究会の mala さんがよく言ってること - sasimiの日記  最速インターフェース研究会の mala さんがよく言ってること - sasimiの日記 のブックマークコメント

フィードを 10 件 20 件しか読まないひとはどんなフィードリーダーを使っててもトラブルには見舞われないだろうし好みで選べばいいけど、例えば 1000 件とか 2000 件とか読むなら最初からそれだけの数をさばけるように設計されたものでなきゃ使い物にならない、とかいう話。

あれを、フィードリーダーでは俺は経験してないけど(購読件数が多すぎて破綻する前に livedoor Readerリリースされた)メーラーで体験した。ていうか今リアルタイムで経験している。つまり、 OperaM2 の動作が信じられないくらいのろい。フィルタに 1,000 件単位メールをためておいて全部ゴミ箱に入れると応答なし。3分以内には戻ってくる。 10,000 件くらいのメールをゴミ箱から消そうとするともりもりとゴミ箱内の件数が減っていくけど、数字がデクリメントされるのを目で追える速度しか出ないので 30 分くらい待たないといけない。

一日に何千通とかのオーダーでメールを受け取る環境を体験しなかったら、 M2 に不満を感じることなんてなかっただろうなあ。そういう、一般常識がつくりだす暗黙の限界を超えたところまで見据えて設計、デザインをするのはすごく偉大なことだと思う。あと、データエクスポートって本当に重要だと思う。

2007-04-09

alter table foo change bar baz; 19:03  alter table foo change bar baz; - sasimiの日記 を含むブックマーク はてなブックマーク -  alter table foo change bar baz; - sasimiの日記  alter table foo change bar baz; - sasimiの日記 のブックマークコメント

これが何度やっても syntax error ではねられて心底うざい。マニュアルにそうかいてあるじゃんindex も消してるしどこが悪いってんだ。

DBIC でリレーション普通にチェーンでたどれる場合と source がみつからなくてコケる場合の差って 20:43  DBIC でリレーションを普通にチェーンでたどれる場合と source がみつからなくてコケる場合の差って - sasimiの日記 を含むブックマーク はてなブックマーク -  DBIC でリレーションを普通にチェーンでたどれる場合と source がみつからなくてコケる場合の差って - sasimiの日記  DBIC でリレーションを普通にチェーンでたどれる場合と source がみつからなくてコケる場合の差って - sasimiの日記 のブックマークコメント

どこでつくのかわからねえーー。

my $obj = Proj::Schema->resultset('Table')->find($id);

とかやって TT で [% obj.another_obj %] とかやるとコケたりする。

my $schema = Proj::Schema->new;
my $obj = $schema->resultset('Table')->find($id);

とかやると、別のコードだとうまく動いたりする。そのまた別だと動かなかったりする。

ResultSource が足りないオブジェクトなんだってことはわかるけど、じゃあどういうときにそういうオブジェクトができてしまうんだろう?この場合セッションに突っ込んだりはしてなくて、ちゃんと直前に DB からひいてきたものなのでこういうトラブルに見舞われるはずはないんだけど・・・。いたるところでこのエラーに遭遇しては正しい解決方法がわからなくて適当にいじってるうちに直ってたりして、数十時間くらい無駄にしていると思う。

Can't locate Imager/File/JPEGReader.pm in @INC ... 22:24  Can't locate Imager/File/JPEGReader.pm in @INC ... - sasimiの日記 を含むブックマーク はてなブックマーク -  Can't locate Imager/File/JPEGReader.pm in @INC ... - sasimiの日記  Can't locate Imager/File/JPEGReader.pm in @INC ... - sasimiの日記 のブックマークコメント

これが出て Imager で .jpgファイルを読めない。なんだこれ。 Imager.pm の中みても JPEGReader って文字列が出てこないんだけど。なんかそういう名前のライブラリがあるっぽい様子ではある。

がああ。結局ハマるのか。 ImageMagick もなんか色取得が微妙だしなあ。どうしよう。

2007-04-06

www.livedoor.com にアクセスするとフォーカスを奪われてうざい 12:26  www.livedoor.com にアクセスするとフォーカスを奪われてうざい - sasimiの日記 を含むブックマーク はてなブックマーク -  www.livedoor.com にアクセスするとフォーカスを奪われてうざい - sasimiの日記  www.livedoor.com にアクセスするとフォーカスを奪われてうざい - sasimiの日記 のブックマークコメント

スクロールとか Piro さんの XUL/Migemo [Forked Edition] とかをやる前にフォーカス移さないといけないのは面倒くさいので GM で。というかけんたろさんの /ns/greasemonkey がやたらカッコイイので印スパイ亜されたかった! GM スクリプトが実行されるタイミングって window.onload より前みたいで(そりゃこういうことができるんだから当然だよね) blur() -> focus() とかなってあれーとかなった。あと getElementsByClassName とか www.livedoor.com が script タグで読み込んでる関数がないので http://www.livedoor.com/js/init.jsfocus() だけ消した init() を入れなおすだけじゃだめだった。ので実質二行。クリップリンクマウスオーバーするとスクリーンショットを出すやつが無効になったけど、あれ正直うざいと思ってたのでちょうどよかった。(おれがつけた機能じゃないよ!)

// ==UserScript==
// @name           Cancel focus www.livedoor.com
// @namespace      http://sasimi.info/ns/greasemonkey
// @description    Cancel focus for search textfield when onload process at www.livedoor.com
// @include        http://www.livedoor.com/
// ==/UserScript==

(function(){
    var w = unsafeWindow ? unsafeWindow : window;
    w.onload = function(){};
    /*
    //w.document.getElementById('q').blur();
    //alert('ok');
    w.onload = function () {
        var clipElements = getElementsByClassName('a', 'clip-link');
        for(var i = 0; i < clipElements.length; i++) {
            new ScreenShot(clipElements[i]);
        }
        var picsElements = getElementsByClassName('img', 'pics-th');
        for(var i = 0; i < picsElements.length; i++) {
            new PicsImage(picsElements[i]);
        }
    //    $('q').focus();
    };
    */
})();