December 2005

December 31, 2005

このエントリーをはてなブックマークに追加
今日は PRIDE 男祭り 2005 頂 -ITADAKI- ってことで、この後さいたまスーパーアリーナに行ってきます。
どうせテレビで中継やるのでいつものように結果速報的なのは書きません。
だってあれ面倒臭いし。

ってことで淡々予想。

金子賢● vs ○チャールズ・"クレイジー・ホース"・ベネット
ジェームス・トンプソン○ vs ●ジャイアント・シルバ
ダン・ヘンダーソン● vs ○ムリーロ・ブスタマンチ
瀧本誠● vs ○菊田早苗
エメリヤーエンコ・アレキサンダー○ vs ●パウエル・ナツラ
近藤有己○ vs ●中村和裕
エメリヤーエンコ・ヒョードル○ vs ●ズール
ミルコ・クロコップ○ vs ●マーク・ハント
ヴァンダレイ・シウバ○ vs ●ヒカルド・アローナ
桜庭和志○ vs ●美濃輪育久
五味隆典○ vs ●桜井 "マッハ" 速人
吉田秀彦○ vs ●小川直也

ごく無難な予想かなぁ。


nipotan at 10:57 | Comments(2) | TrackBack(0) | 格闘技 
このエントリーをはてなブックマークに追加

December 16, 2005

このエントリーをはてなブックマークに追加
テレビでも買おうかと思ってみた。
でも元々テレビに興味がない。
だけど地デジだハイデフだと耳慣れない言葉を頻繁に耳にするようになって、あー、テレビのこと知らないと負け組扱いにされてしまうかも知れないなーと思った。
所詮、量販店が開いてる時間にテレビを買いに行けるような人種ではないので、どうせイーコマース的なものを使うわけですよ。
しかし困った。
ネットで見てても「○ V 型液晶テレビ」とか言われて、サイズがまったくピンと来ない。
昔あんま「V 型」って言わなかったよね。
今はハイデフとかを調べると「V 型」が主流みたい。
日本全国 V 型だらけでさ。
V 型の V がまず意味不明。
んで、V 型の V を調べたら、ここに出てた。

テレビの画面サイズ「36V型」と「36型」は大きさが違う?

なるほど。
対角線か。

対角線がわかっても全く嬉しくねぇな。

画面サイズで、縦と横が何センチなのか出せるのを作ってみた。
単純にそこのサイトに出てる理屈を JavaScript 化しただけね。
これさえあれば、ネットで買う時もだいたい大きさの見当がつくので、今まさに通販等で買おうと思われてる方は、こちらをお使いになってみてはいかがでしょうか。

V 型テレビのサイズは…
対角線 約 cm
横 約 cm
縦 約 cm
さて、これを作ったら、テレビを全て知り尽くした気分になって、かなり満足してしまった。
あー、俺ってばもう勝ち組じゃね?みたいな。


テレビは買わないかも知れない。

nipotan at 17:08 | Comments(0) | TrackBack(0) | その他 
このエントリーをはてなブックマークに追加

December 15, 2005

このエントリーをはてなブックマークに追加
先日、ライブドア次世代テクノロジーセミナーに予定通り行きました!
忙しくてまとめる時間がなかったので、かなり出遅れましたが、まとめを発表しますね。
我ながら頑張ってまとめられたと思います。
  • ライブドア
    • 「ライブドア」は社名で「livedoor」はサイト名らしいよ
    • 「Livedoor」でもなければ「live door」でもないらいしよ
    • サーバがいっぱいあるらしいよ
    • なんかカメラでずっと撮影してたよ
    • でも、プレス枠っぽいのは WEB+DB PRESS の技評さんぐらいしか見当たらなかったよ
    • 質疑応答は何故かインフラ系か MySQL ネタしかなかったよ
  • 懇親会 1.0
    • livedoor からは冷え冷えの缶ビールが無料で支給されたよ
    • 絵に描いたような「乾きもの」が出てきたよ。無駄に乾きまくってた。
  • 懇親会 2.0
    • こんなことだろうと思って「甘太郎」を予約しておいたよ。どんなことだろうかってのは「どうせみんな飲みたいんだろ?」ということね。なんでそんな気を使ってんだろうね
    • セミナーに来てない、最速インターフェース研究会の mala らんがこの会から参加して、入門 Ajax の高橋登史朗さんを猛烈に応援してたよ。なんか妙だね
    • 入門 Ajax
      高橋 登史朗
      ソフトバンククリエイティブ (2005/11/15)
  • 懇親会 3.0
    • 「わん」で飲んだよ
    • まだ終電あるのに、ほんと、酒好きだねー
    • 会話はいろいろ Blog に晒せないことばかりだったよ
    • いや、ほんと、ここに書いたらいけないことばかりだったよ
  • 都内某所
    • 都内某所に場所を移したよ。某所にいる方を配慮したら場所は言わないほうがいいんだよね
    • ぬるいビールが支給されたよ。氷を入れて飲んだ
    • 氷を入れてビールを飲むのなんて、年に 1 回ぐらいしかやらないのを、この年の瀬にやっちゃった
    • これまた見事に乾きもの
    • ぬるいけど、一人あたりのビールの支給量はライブドアより多かったよ
    • 突発的に Sledge 勉強会が始まったよ。やっぱ空前絶後の Sledge ブームなんだね
    • てか何時だと思ってんだよって時間から始まったよ。この勉強会。みんな元気だね
    • さすがに 6 時に帰らせてもらったよ。mala らんとか帰る気なさそげだったのが面白い
以上です。
ありがとうございました。

nipotan at 21:40 | Comments(0) | 技術 
このエントリーをはてなブックマークに追加

December 12, 2005

このエントリーをはてなブックマークに追加
さて「id:tokuhirom だけが支えている」と言われつつも、空前の Sledge ブームなわけですが、ちょうどさっきのエントリを書いてたら、id:tokuhirom が既に対応してたりしました…
で、その後に
MoFedge::Plugin::TokuLog! - StackTrace とソースコード
http://tokuhirom.dnsalias.org/~tokuhirom/tokulog/93183.html
まぁ、↑こんな感じで、ソースコードの前後3行ぐらいを表示してくれると最強っぽい。
とか言って「いいもの使ってる感」だけでは不十分だとのたまうので、まぁ確かに最強っぽげだったのでやってみる価値はありそげでしたね。

やってみたらこんなんなりました。 Sledge::Plugin::DebugScreen

例によって patch による提供ですが。

0.01 にあてる patch
--- DebugScreen.pm	Mon Dec 12 15:33:22 2005
+++ DebugScreen.pm	Mon Dec 12 18:12:28 2005
@@ -1,9 +1,11 @@
 package Sledge::Plugin::DebugScreen;
 use strict;
 use warnings;
-our $VERSION = '0.01';
+our $VERSION = '0.03';
 
 use Template;
+use Devel::StackTrace;
+use IO::File;
 
 our $TEMPLATE = q{
 <?xml version="1.0" encoding="euc-jp"?>
@@ -51,6 +53,22 @@
            div.url {
                font-size: x-small;
            }
+           pre {
+               font-size: .8em;
+               line-height: 120%;
+               font-family: 'Courier New', Courier, monospace;
+               background-color: #fee;
+               color: #333;
+               border: 1px dotted #000;
+               padding: 5px;
+               margin: 8px;
+               width: 90%;
+           }
+           pre b {
+               font-weight: bold;
+               color: #000;
+               background-color: #f99;
+           }
        </style>
    </head>
    <body>
@@ -73,9 +91,12 @@
                    </tr>
                    [% FOR s IN stacktrace -%]
                        <tr>
-                           <td>[% s.pkg  | html %]</td>
-                           <td>[% s.line | html %]</td>
-                           <td>[% s.file | html %]</td>
+                           <td>[% (s.pkg  || s.package) | html %]</td>
+                           <td>[%  s.line               | html %]</td>
+                           <td>[% filename = (s.file || s.filename) %][% filename | html %]</td>
+                       </tr>
+                       <tr>
+                           <td colspan="3">[% code_preview = context(filename, s.line) %][% IF code_preview %]<pre>[% code_preview %]</pre>[% END %]</td>
                        </tr>
                    [%- END %]
                </table>
@@ -88,7 +109,10 @@
 sub import {
    my $self = shift;
    my $pkg  = caller;
-
+   local $pkg::SIG{__DIE__} = sub {
+       &_handle_exception($self, @_);
+       die @_;
+   };
    no strict 'refs';
    *{"$pkg\::handle_exception"} = \&_handle_exception;
 }
@@ -101,8 +125,10 @@
            title => ref $self || $self,
            desc  => "$E",
            pages => $self,
+           context => \&print_context,
        };
-       $vars->{stacktrace} = $E->stacktrace if $E->can('stacktrace');
+       $vars->{stacktrace} = $E->can('stacktrace') ?
+           $E->stacktrace : [Devel::StackTrace->new->frames];
 
        my $tmpl = Template->new;
        my $output;
@@ -117,6 +143,39 @@
    } else {
        die $E;
    }
+}
+
+sub print_context {
+    my($file, $linenum) = @_;
+    my $code;
+    if (-f $file) {
+        my $start = $linenum - 3;
+        my $end   = $linenum + 3;
+        $start = $start < 1 ? 1 : $start;
+        if (my $fh = IO::File->new($file, 'r')) {
+            my $cur_line = 0;
+            while (my $line = <$fh>) {
+                ++$cur_line;
+                last if $cur_line > $end;
+                next if $cur_line < $start;
+                my @tag = $cur_line == $linenum ? qw(<b> </b>) : ();
+                $code .= sprintf(
+                    '%s%5d: %s%s',
+                        $tag[0], $cur_line, html_escape($line), $tag[1],
+                );
+            }
+        }
+    }
+    return $code;
+}
+
+sub html_escape {
+    my $str = shift;
+    $str =~ s/&/&amp;/g;
+    $str =~ s/</&lt;/g;
+    $str =~ s/>/&gt;/g;
+    $str =~ s/"/&quot;/g;
+    return $str;
 }
 
 1;
さっき公開した 0.02 の patch をあてたやつにあてる patch
--- DebugScreen.pm	Mon Dec 12 16:29:04 2005
+++ DebugScreen.pm	Mon Dec 12 18:12:28 2005
@@ -1,10 +1,11 @@
 package Sledge::Plugin::DebugScreen;
 use strict;
 use warnings;
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 use Template;
 use Devel::StackTrace;
+use IO::File;
 
 our $TEMPLATE = q{
 <?xml version="1.0" encoding="euc-jp"?>
@@ -52,6 +53,22 @@
            div.url {
                font-size: x-small;
            }
+           pre {
+               font-size: .8em;
+               line-height: 120%;
+               font-family: 'Courier New', Courier, monospace;
+               background-color: #fee;
+               color: #333;
+               border: 1px dotted #000;
+               padding: 5px;
+               margin: 8px;
+               width: 90%;
+           }
+           pre b {
+               font-weight: bold;
+               color: #000;
+               background-color: #f99;
+           }
        </style>
    </head>
    <body>
@@ -74,9 +91,12 @@
                    </tr>
                    [% FOR s IN stacktrace -%]
                        <tr>
-                           <td>[% (s.pkg  || s.package)   | html %]</td>
-                           <td>[%  s.line                 | html %]</td>
-                           <td>[% (s.file || s.filename)  | html %]</td>
+                           <td>[% (s.pkg  || s.package) | html %]</td>
+                           <td>[%  s.line               | html %]</td>
+                           <td>[% filename = (s.file || s.filename) %][% filename | html %]</td>
+                       </tr>
+                       <tr>
+                           <td colspan="3">[% code_preview = context(filename, s.line) %][% IF code_preview %]<pre>[% code_preview %]</pre>[% END %]</td>
                        </tr>
                    [%- END %]
                </table>
@@ -105,6 +125,7 @@
            title => ref $self || $self,
            desc  => "$E",
            pages => $self,
+           context => \&print_context,
        };
        $vars->{stacktrace} = $E->can('stacktrace') ?
            $E->stacktrace : [Devel::StackTrace->new->frames];
@@ -122,6 +143,39 @@
    } else {
        die $E;
    }
+}
+
+sub print_context {
+    my($file, $linenum) = @_;
+    my $code;
+    if (-f $file) {
+        my $start = $linenum - 3;
+        my $end   = $linenum + 3;
+        $start = $start < 1 ? 1 : $start;
+        if (my $fh = IO::File->new($file, 'r')) {
+            my $cur_line = 0;
+            while (my $line = <$fh>) {
+                ++$cur_line;
+                last if $cur_line > $end;
+                next if $cur_line < $start;
+                my @tag = $cur_line == $linenum ? qw(<b> </b>) : ();
+                $code .= sprintf(
+                    '%s%5d: %s%s',
+                        $tag[0], $cur_line, html_escape($line), $tag[1],
+                );
+            }
+        }
+    }
+    return $code;
+}
+
+sub html_escape {
+    my $str = shift;
+    $str =~ s/&/&amp;/g;
+    $str =~ s/</&lt;/g;
+    $str =~ s/>/&gt;/g;
+    $str =~ s/"/&quot;/g;
+    return $str;
 }
 
 1;
構文の parse まではやってないので、その行だけハイライトしたりとかしてますが、「最強」に少しだけ近付けたんじゃないかなーとかホザいてみるテスト。


あ、あと見映えはアレなので、良きにアレしてください。

nipotan at 18:35 | Comments(2) | TrackBack(0) | 技術 
このエントリーをはてなブックマークに追加
このエントリーをはてなブックマークに追加
ド派手なデバグスクリーンを表示させる【Sledge::Plugin::DebugScreen】(2181) - MF::TokuLog
Catalyst, SubWay, Rails などのモダーンな Framework では、デバッグモードで Internal Server Error が起きるとスタックトレースなどをド派手な HTML で表示してデバッグを助けるような仕組みを持っています。

But, Sledge にはそれが無い!なんてこった!この事実がバレる前にはやくその機能をつけないと!

つーわけで、Sledge::Plugin::DebugScreen とかいうものを作ってみました。
で、Sledge::Plugin::DebugScreen なかなかド派手で気に入ったんですが、
MoFedge::Plugin::TokuLog! - Perl で StackTrace とりたい
Sledge::Plugin::DebugScreen だと Sledge::Exceptions を投げた場合にはスタックトレースとれるんですが、単に die した場合に取れないんですよねぇ。。。
ってことで、die した時でもド派手 + StackTrace 付きにしてみました。

いや、ちょちょっと追加しただけなので、patch で。
--- DebugScreen.pm	Mon Dec 12 15:33:22 2005
+++ DebugScreen.pm	Mon Dec 12 16:09:20 2005
@@ -1,9 +1,10 @@
 package Sledge::Plugin::DebugScreen;
 use strict;
 use warnings;
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 use Template;
+use Devel::StackTrace;
 
 our $TEMPLATE = q{
 <?xml version="1.0" encoding="euc-jp"?>
@@ -73,9 +74,9 @@
                    </tr>
                    [% FOR s IN stacktrace -%]
                        <tr>
-                           <td>[% s.pkg  | html %]</td>
-                           <td>[% s.line | html %]</td>
-                           <td>[% s.file | html %]</td>
+                           <td>[% (s.pkg  || s.package)   | html %]</td>
+                           <td>[%  s.line                 | html %]</td>
+                           <td>[% (s.file || s.filename)  | html %]</td>
                        </tr>
                    [%- END %]
                </table>
@@ -88,7 +89,10 @@
 sub import {
    my $self = shift;
    my $pkg  = caller;
-
+   local $pkg::SIG{__DIE__} = sub {
+       &_handle_exception($self, @_);
+       die @_;
+   };
    no strict 'refs';
    *{"$pkg\::handle_exception"} = \&_handle_exception;
 }
@@ -102,7 +106,8 @@
            desc  => "$E",
            pages => $self,
        };
-       $vars->{stacktrace} = $E->stacktrace if $E->can('stacktrace');
+       $vars->{stacktrace} = $E->can('stacktrace') ?
+           $E->stacktrace : [Devel::StackTrace->new->frames];
 
        my $tmpl = Template->new;
        my $output;
die の時は Devel::StackTrace とかが使われるようになってます。

はてな CTO の伊藤さんが
naoyaのはてなダイアリー - いいもの使ってる感
こういう本ちゃんの機能とはあんまり関係ない部分、例えばルック & フィールの作り込みみたいなのは、一見どうでもいいようで割と重要なんじゃないなあと思います。
Movable Type は管理画面のデザインが洗練されてて、機能も StyleCatcher とか散りばめられたギミックとかがいちいちかっこよくて使ってるだけでなんか気分が良くなる風があります。こういうのを「いいもの使ってる感」とか呼んでます。

と、ルック & フィールの重要性を「いいもの使ってる感」というわかりやすい砕けた表現であらわしてます。
なるほど。
よくわかる気がします。
その点に関しては「10 分で (ry」をご覧になればわかる通り、チープなフィーリングに完璧慣らされてしまっていたので、こういうのを改めて取り入れてみると「あ、いいかもな」って気になれます。

これで、日頃ほとんどよくないもの使ってる感を感じていた Sledge ユーザーの皆様方も、やっといいもの使ってる感を満喫出来ますね。

あれ、極端だったかな。。。


いあ、%SIG とか数年振りに使った。

nipotan at 16:29 | Comments(0) | TrackBack(2) | 技術 
このエントリーをはてなブックマークに追加
   next >>