前の月 / 次の月 / 最新

swk's log 2006-07

<< 2006-07 >>
SuMoTuWeThFrSa
1
2345678
9101112131415
16171819202122
23242526272829
3031

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

2006-07-31 Mon

* 今日の「そっちかよ!」 [misc]

ワルシャワ――ポーランド南部、ソスノビエツ市の警察は27日、路上を歩いていた男性に、家屋の2階窓から投げ落とされた「大型犬のセントバーナード」が直撃、男性が打撲傷を負った、と述べた。1歳の犬の体重は約50キロ。

(中略)

警察は飼い主を動物虐待の容疑で調べている。

2006-07-29 Sat

* Tパズル [misc]

The T
The T

4 つの図形を組み合わせていろんな形を作る.宿泊先の部屋においてあって思わずしばらく格闘してしまった.

最初の 1 個を作るのに難儀した.いったん感覚が分かると,他のを作るのはわりとサクっと行ける感じ.凸じゃないところをどうするかを切り口として考えるのがコツかな.

Flash による実装:

cf. シルエットパズル - Wikipedia

* JR東日本 - おトクなきっぷ検索 [misc]

土日かけて長野へ出張.いつも通り悪名高いえきねっと [2005-11-10-1] [2005-09-24-1] で新幹線と特急を予約していたのだけど,出発前日になって 土日きっぷなるものの存在を教えてもらう.エリア内なら特急も新幹線も乗り放題で 18,000 円.おいおい普通に 仙台-東京 を新幹線で往復するより安いぞ.

予約してしまった特急券がどうなるか不安だったけど,普通に土日きっぷを買っておいて (発売は前日まで),当日みどりの窓口に申し出るだけで問題なかった.

というわけで,旅程を入れるとおトクなきっぷを検索してくれるサービス:

つうかえきねっとにこの機能が統合されていれば済む話だろうが.ぶつぶつ.

2006-07-27 Thu

* オープンキャンパス [misc]

木・金とオープンキャンパス.いつも通りのデモをしていたら初日午前に突然 NHK の撮影隊がやってきて,その日のお昼の地元ニュースで映像が流れた.

で,取材対応マニュアルとかの存在をすっかり忘れてたことに後から気づいたけど,よかったんだろうか.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Gurjot] Halllejuah! I needed this-you\'re my sav... (2012-12-30 18:22:07)

2006-07-26 Wed

* 会社の名前 - 由来.blog [misc] 1 user

なんとなく見て回った中で「へー」と思ったもの:

オムロン,花王,カシオ計算機,キヤノン,キングジム,コダック,資生堂,シャープ,セイコーエプソン,セガ,つぼ八,ナムコ,ニコン,フマキラー,モトローラ,ヤフー,ヤンマー,ロッテ,ローム,ワコール

2006-07-25 Tue

* The Ytse Jam 弦楽四重奏版 [misc]

↓ amazon の曲目リストは曲名間違えてるな…

Dream Theater / When Dream and Day Unite
Dream Theater / When Dream and Day Unite

2006-07-24 Mon

* Collatz 予想 - ピタゴラ機械もどき版 [tech]

前回の素数列挙 OpenGL 版 [2006-06-27-1] に引続き,「Collatz 予想の h(n) を求めるピタゴラ機械もどき」という色物ネタを考えていたのだが,時間がないのと,いざ実装しようと思うとあまり面白くなさそうだったのでやめた.そのうち気が向いたら書くかも.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Irfan] A good many vualblaes you\'ve given me. (2013-07-04 08:28:09)

2006-07-19 Wed

* ここ数年のセンター試験「生物」出題傾向 [misc]

01年 ヒキガエルとエサ
02年 コオロギの求愛歌
03年 ダチョウとシジュウカラの集団
04年 ワモンゴキブリとペパーミントの香り
05年 ベニツチカメムシの帰宅
06年 チャバネゴキブリの交尾

まじですか.ガクブル

* 回る人影 - 錯視 [misc][illusion]

面白い.はてブのコメント にもあるけど,慣れてくると自由に反転できて楽しい.

関連記事:
[2006-10-28-1] chalow に後づけカテゴリ
[2006-08-04-1] 「撮ったのかよ」が「エーアイアイ」に聞こえる

2006-07-18 Tue

* ブルボン四姉妹 vs ブルボン四天王 [food]

cf. ブルボン商品情報 - 袋ビスケット

2006-07-16 Sun

* デジタルカメラサーチ [misc]

!?

http://refrigerate.sear.biz/ から文字列置換したものらしい.インパクトは強烈なんだけど,もしこれが第三者がやってるんだとしたら,いろんな意味で問題なんではなかろうか.Adsense とか貼ってるし.

どうでもいいけどふと JavaScript:document.body.innerHTMLのガイドライン を思い出した.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Auth] TYVM you\'ve solved all my porlbems (2012-12-31 03:19:33)

* はてなブックマーク数を件数取得APIからまじめに取って来る [logging][chalow]

「画像で取得するAPI」ではてなブックマーク件数をお手軽に表示してみた矢先なのだが [2006-07-15-3],やっぱりやめた.

はてなが重いときとか反応しないときに,自分のページの表示が影響を受けるのが嫌だってのがまずあるけど,そのときに,あー,俺いまはてなサーバに無駄に負担かけてるーという罪悪感があって精神衛生上よろしくない. (いや,もちろんトラフィック全体からみると,うちから発生する分なんて誤差に過ぎないわけですが,単に気持ちの問題なので)

つうわけで真面目にはてなブックマーク件数取得APIを叩いてみることにしたですよ.

やり方はいろいろあると思いますが,定期的に件数を取りに行っておいて, HTML から SSI で include することにしてみた.こんなのを cron で定期的に走らせます:

#!/usr/bin/perl

use strict;
use XMLRPC::Lite;

my $html_clog_url = 'http://www.kagami.org/diary'; # don't add trailing slash
my $html_clog_dir = '/home/swk/www/diary';
my $hatebu_count_dir = '/home/swk/www/hatebu_count';

my $EndPoint = 'http://b.hatena.ne.jp/xmlrpc';
my @urls = ();

while (<$html_clog_dir/*.html>) {
    next unless /\/(\d{4}-\d{2}-\d{2}-\d+)\.html$/;
    my $ymdi = $1;
    push(@urls, "$html_clog_url/$ymdi.html");

    if (@urls == 50) {
        &writecount(\@urls);
        @urls = ();
        sleep(3);
    }
}
if (@urls > 0) {
    &writecount(\@urls);
    @urls = ();
}

sub writecount
{
    my ($uref) = @_;
    
    my $map = XMLRPC::Lite->proxy($EndPoint)
        ->call('bookmark.getCount', @{$uref})->result;

    foreach (@{$uref}) {
        my $url = $_;
        my $count = $map->{$_};
        my ($ymdi) = ($url =~ /\/(\d{4}-\d{2}-\d{2}-\d+)\.html$/);

        if ($count > 0) {
            my $str_count = $count . " user" . (($count > 1)? 's': '');
            my $str = << "HTML";
<span class="hatebu_count">
<a href="http://b.hatena.ne.jp/entry/$html_clog_url/$ymdi.html">
$str_count</a></span>
HTML
            ;
            &save_file("$hatebu_count_dir/$ymdi.htmlin", \$str);
        } elsif (-e "$hatebu_count_dir/$ymdi.htmlin") {
            unlink("$hatebu_count_dir/$ymdi.htmlin");
        }
    }
}

sub save_file { # from kuttukibbs-1.0rc3
    my ($fn, $strp) = @_;
    open(F, "> $fn") or die "can't open $fn : $!\n";
    flock(F, 2);
    print F $$strp;
    close F;
}

chalow のテンプレートは,

...

<h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat>
<!--#include virtual="../hatebu_count/<TMPL_VAR name=ymdi>.htmlin" -->
</h3>

...

な感じにする.

関連記事:
[2006-07-15-3] はてなブックマーク数を画像で取得するAPI
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Jace] This is just the perfect aswner for all ... (2013-01-01 17:56:57)

2006-07-15 Sat

* はてなブックマーク数を画像で取得するAPI [logging][chalow]

chalow のテンプレートの <h3> の辺りに入れてみた ($item_page_template と $item_template の両方).ちっともブックマークされていないのが火を見るより明らかになった.

...

<h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat>
<span class="hatebu">
<a href="http://b.hatena.ne.jp/entry/$clog_url<TMPL_VAR name=ymdi>.html">
<img 
 src="http://b.hatena.ne.jp/entry/image/large/$clog_url<TMPL_VAR name=ymdi>.html"
 alt="See Hatena bookmark comments"></a></span>
</h3>

...

1 件ずつリクエストが発生するのがちょっと微妙かも.はてなサーバ側の負担も結構馬鹿にならないだろうなあ,などと余計なことを心配してしまうけど,こういう API を公開する時点で,その辺の目処は立ってるのだろう.

cf. はてなブックマーク件数取得API: http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%B7%EF%BF%F4%BC%E8%C6%C0API

(追記) やっぱやめた → [2006-07-16-1]

関連記事:
[2006-07-16-1] はてなブックマーク数を件数取得APIからまじめに取って来る
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Matias] I never thought I would find such an evr... (2012-12-30 15:20:09)

* [かがみ] ついに来たですね.そちらではいかがでしょう? (2007-06-28 04:15:46)

* [ドタドン] ついにスパマーが! (2007-06-23 11:34:29)

* スーパーマリオ Trick 集 [misc][mario]

スーパーマリオの裏技的テクニックの解説.技術的根拠までちゃんと書いてあるのがすばらしい.以下,いくつか抜粋.

壁ジャンプ: スーパーマリオでは,壁にぶつかる際にめりこまないように水平位置を調整するのだけど,その調整がなされる前に床判定をするので,ある適切な水平速度で垂直な壁にぶつかり,かつその位置が正確に 16 ドット境界ならば,足が引っかかるかのようにジャンプできる.

敵キャラを下から踏む: マリオが空中を下降中であれば,敵との当たり判定があった際に「踏んだ」と判断される.

ハンマーをすり抜ける: ハンマーとの当たり判定は結構雑らしい.当たったように見えて当たりと判定されなかったり,画面上では当たってないはずなのに当たりと判定されたりするそうだ.

* スーパーマリオ,B ボタンを押さずにクリア動画,7分2秒 [misc][mario]

せっかく B ボタンを押さずにクリアしたのに,ピーチ姫に「PUSH BUTTON B」といわれちゃうのがせつない.(これって B ボタン以外で次の画面に進めたっけ?)

2006-07-13 Thu

* ソーシャルブックマーク横断 - Mix Clips [tech]

とりあえず RSS を見張ってみることにする.

2006-07-12 Wed

* ジャストロー錯視 [misc][illusion]

これは単に遠近法…だよなあ.…釣りビデオ?

↓たぶんこっちの方が例としては妥当.

cf. これ [2006-06-27-1] も遠近法です (← だからどうした)

cf. 錯視シリーズ: http://www.kagami.org/diary/clsearch.cgi?key=%BA%F8%BB%EB&mode=1

関連記事:
[2006-10-28-1] chalow に後づけカテゴリ
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Vesna] There\'s notnhig like the relief of find... (2013-07-03 14:53:01)

2006-07-11 Tue

* 陸の孤島が渋谷区にあった [misc]

國學院大の中の人も大変だな.

2006-07-10 Mon

* YouOS - ウェブOSのメリットと可能性を垣間見る [tech]

同サイトへアクセスして自分のアカウントにログインすると、ブラウザの画面内にもうひとつのデスクトップが展開されます。左上端には「YOS Stuff」というWindowsの「スタートボタン」に相当するものがあり、これをクリックすると、チャットやメール用ソフト、リッチテキストエディター、ファイルブラウザー、スティッキーズ、FlickrやYouTube専用のRSSリーダー、さらにウェブブラウザー(!)まで選べるようになっています。

YouOS につないでその中でウェブブラウザ開いて,それで YouOS につないでその中でウェブブラウザ開いて,それで YouOS につないでその中でウェ (ry

* 今日の「俺は限界だと思った」 [misc]

「分かったわ。宇宙の扉を押して開けばいいのね。やってみるわ」

限界超えてます.メビウスの宇宙(そら)を越えて beyond the time

2006-07-09 Sun

* v の音を「ヴ」と表記する起源 [misc]

福澤諭吉が初めて使った説:

そうではない説:

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Charliekt] traffa den ratte internet tv show intern... (2015-03-05 10:44:52)

* [Charliekt] international student traffa manniskor d... (2015-03-05 05:48:55)

* [Charliekt] gratis - Hitta pa jobbet, dome thai acto... (2015-03-05 00:44:57)

* [Charliekt] Gratis for par mobil login traffa tjeje... (2015-03-04 05:54:22)

* [DanielBab] Nice post ) http://wndbl0v3.com my blog (2014-10-27 06:00:07)

* ...

2006-07-08 Sat

* bloglines の keep new をまとめて解除する bookmarklet [logging][firefox][bl2clog][unkeepnew][bloglines]

改版しました [2006-10-08-2]


他人様のコードをいじっているうちに [2006-07-05-2] [2006-07-05-3] 何となく勘がつかめてきたような気がするので,調子に乗って懸案事項に手をつけてみる.

以前,bloglines で表示中の記事のタイトル名,URL をまとめてクリップボードにコピーする bookmarklet (Firefox 専用) を書いた [2006-02-11-1] [2006-04-22-1].これ使うときは,

  • 気になった記事をさくさく keep new していく
  • 最後にまとめて bookmarklet でクリップボードにコピー
  • その後,keep new された記事を 1 個ずつ解除 (← ここがイヤ)

という流れが多くて,何とかならんかなと思ってたのだ.

というわけでこんな感じ.

onload を使っているので MSIE では動作しないはず.直すのは簡単だと思うけど,とりあえず放置.

ソース:

javascript:(function(){

function phandler (paths) {
  if (paths.length < 1) {
    return;
  } else if (paths.length == 1) {
    top.treeframe.location = paths[0];
    return;
  }
  var p = paths.shift();
  var xhr = new XMLHttpRequest();
  xhr.onload = function () { phandler(paths); };
  xhr.open('GET', p, true);
  xhr.send(null);
}

var paths = new Array;
var ipts = top.basefrm.document.getElementsByTagName("input");
for (var i = 0, k = 0; i < ipts.length; i++) {
  if (ipts[i].type == "checkbox"
      && String(ipts[i].onclick).match(/markUnreadItem\(\s*(\d+)\s*,\s*(\d+)\s*\)/)
      && ipts[i].checked == true) {
    var subid = RegExp.$1;
    var itemid = RegExp.$2;
    ipts[i].checked = false;
    paths[k++] = '/myblogs_subs?ui=1&subid='+subid+'&itemid='+itemid;
  }
}
phandler(paths);
})();

期せずして Ajax デビューしてしまった.(XML 使ってないから Aj デビューか?)

やってることは単純で,keep new のチェックボックスについている onclick 属性から,その記事の subid と itemid を取り出して,それらからパス名 '/myblogs_subs?ui=1&subid='+subid+'&itemid='+itemid を生成して,GET しに行っている.

bloglines で実際に keep new のボタンを押した場合は, parent.treeframe.location にこのパス名を直接代入するコードが実行されるのだけど,複数の記事についてこれを単純に繰り返すと,前のやつの読み込みが終わる前に次のやつを読みに行ってしまってうまく行かない.というわけで XMLHttpRequest を使ってみた.

(open の第3引数を false にすればもっと簡単に書けるかと思ったけど,そうすると解除がすべて終わるまで操作を受け付けなくなってしまって,使いにくかった)


ついでなので,まとめてクリップボードにコピーする方もちょっとだけ書き直しておく.以前のは正規表現で無理矢理抽出してたけど,真面目に DOM ツリーをたどるようにした.

ソース:

javascript:(function(){
function setClipboard(text){
    /* 省略 (http://la.ma.la/misc/js/setclipboard.txt) */
}
function fmt(title, href) {
    return '\r\n\t* ' + title + ':\r\n\t- ' + href + '\r\n';
}
var clog = '';
var h3s = top.basefrm.document.getElementsByTagName("h3");
for (var i = 0; i < h3s.length; i++) {
    var a = h3s[i].getElementsByTagName("a")[0];
    clog = clog + fmt(a.firstChild.nodeValue, a.href);
}
setClipboard(clog);
})();

ChangeLogメモ以外の形式に変換したい場合は,fmt() の中身を適当にいじってください.

関連記事:
[2006-10-08-2] (改版) bloglines の keep new をまとめて解除する bookmarklet
[2006-08-16-1] うっかり Flash Player 9 を入れてしまったので 8 に戻す
[2006-08-07-2] なんか bloglines が全然ダメな件
[2006-04-22-1] (改版) bloglines のアイテムをまとめて ChangeLog メモに変換する bookmarklet
[2006-02-11-1] bloglines のアイテムをまとめて ChangeLog メモに変換する bookmarklet
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Sandroo] An inetlglinet point of view, well expre... (2013-01-01 20:46:17)

2006-07-07 Fri

* 変な食べ物シリーズ [misc]

コーヒーおむすび.おいしいらしい.

バナナの味噌汁.違和感ないらしい.

  • (同上)

ブルーベリーカレー.いけているらしい.


cf. 違和感あるやつ → 喫茶マウンテン

* ローソンに神田エチオピアのインドカリー [food]

神田なのかエチオピアなのかインドなのかよく分からないタイトルになってますが,神田にあるエチオピアという店のインドカリーがローソンの弁当として発売になったという話.

ethiopia_lawson/20060707-045625.jpg

東京にいた頃はちょくちょく行っていた店なので,こうしてコンビニで買えるのはとても嬉しい.味も,あの独特の風味がよく出ているのではなかろうか.

本物は,タマネギをはじめとして色んなもの (何かはよく分かってない) が溶け切らずに,ざらざらというかざくざくとした食べごたえが残っていて,それが特徴だったと思うのだけど,このローソン版は,完全にさらさらなインド風ソースになっている.製造工程上の理由なのか,コンビニの客層に合わせたものなのか.これはこれで悪くない.

7/18 にはトプカの「かつカリー」が出るのだとか.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Mital] This is a raelly intelligent way to answ... (2012-12-30 13:53:27)

2006-07-06 Thu

* 「google」が動詞としてオックスフォード辞書に載る [tech]

「ぐぐる」が広辞苑に載る日は来るのだろうか.

2006-07-05 Wed

* HTML の table で,ヘッダを固定にしてデータ部だけスクロール [tech][firefox] 7 users

ソート [2006-07-05-2] に引続き,

行数の多い表の場合,ヘッダ部がスクロールアウトしてしまわないように固定したくなる.

というようなニーズもやっぱり結構あって,実際いろんなところでそういう機能を実現する JavaScript のコードが公開されている.いくつか当たってみた中で,一番気に入ったのはこれ:

気に入った理由は,

  • 比較的レイアウトが崩れない
  • ブラウザ依存が少ないっぽい (といっても IE と Firefox しか試してないけど)
  • 日本語が入ってても崩れない

って要するに崩れないことが重要.他の方の実装も含めて,要するにヘッダ部と本体とを分離して別の table 要素にして,本体だけにスクロールバーをつける,というのが動作原理なので,列幅の再現性をいかに高くするかがポイントになる,のだと思う.ここで紹介されているコードは,(やっぱりちょっとはズレる場合があるのだけど) かなりイケている,と思う.ありがたく使わせて頂いております.


メモその1:

テーブルの height は px 単位で指定するようになっている.画面全体に対するパーセンテージで指定できると便利かな,と思って

newDiv2.style.height = tHeight+'px';

のところを 'px' じゃなくて '%' にしてみたのだけど,doctype スイッチ [2005-11-15-2] に引っかかるようになってしまった.doctype 宣言にシステム識別子がある場合,'px' だとスクロールバーが出るけど '%' だと出ない.システム識別子がなければ,どちらでもスクロールバーが出る.謎.

メモその2:

作者の Mars さんも書いておられますが,このままだと印刷するときちょっと困る (全体が印刷できない).というわけで,かなりアドホックですが,こんな回避策をとってます.

(以下の実装は obsolete → メモその3 へ)

まずグローバルな変数を 2 個用意.

var newDiv2;
var myHeight;

Tscroller() の中で newDiv2 をローカル変数として宣言するのをやめて,このグローバル変数を使うことにする.つまり単に

var newDiv2 = document.createElement('div');

newDiv2 = document.createElement('div');

にする.それから Tscroller() の中のどこかで

myHeight = tHeight;

してやる.最後に

function ToggleScroll()
{
  if (newDiv2.style.height == '') {
    newDiv2.style.height = myHeight + 'px';
  } else {
    newDiv2.style.height = '';
  }
}

な関数を定義しておいて,適当な場所から href なり onclick なりで呼べるようにしておく.これでスクロールバーをオン・オフできます.たぶん.

もっときれいに作れる気もするけど,最小の改造でやるならこんなところだろうか.

メモその3 (追記):

メモその2 がちょっとあまりにもアドホックすぎた気がする.テーブル 2 つ以上扱おうとしたらもうダメだし.もうちょっとだけ真面目に書きます.

メモその2 で書いた改造はすべて撤廃,改めて元の Tscroller() の最後あたりに以下を入れて,

newDiv2.height_saved = tHeight;

以下のような関数を定義する.

function ToggleScroll(tid)
{
  var newDiv2 = document.getElementById('D_' + tid + '_B');
  var tHeight = newDiv2.height_saved;

  if (newDiv2.style.height == '') {
    newDiv2.style.height = tHeight + 'px';
  } else {
    newDiv2.style.height = '';
  }
}

引数には Tscroller に与えたのと同じく,テーブルの id を渡します.

<a href="javascript:ToggleScroll('tb')">
Click here to toggle the scroller</a>. 

div に height_saved なんていうプロパティを勝手に作っているところが非常にうさんくさい.こういうことするのって規格上はダメなんですかね? 一応 IE と Firefox では動いている模様.

関連記事:
[2006-07-08-1] bloglines の keep new をまとめて解除する bookmarklet
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Maulida] I\'m really into it, tahkns for this gre... (2013-07-04 11:25:50)

* HTML の table を sort できるようにする [tech][firefox] 1 user

HTML の表を,列名をクリックしてソートできるようにしたい.

というようなニーズは結構あって,実際いろんなところでそういう機能を実現する JavaScript のコードが公開されている.いくつか当たってみた中で,一番気に入ったのはこれ (の試作5):

気に入った理由は,

  • 比較関数やデータ取得関数をパラメータとして渡せるなど,汎用性に気を配った設計になっている
  • 速度面にも気を配った設計になっている

という辺り.ありがたく使わせて頂いております.


メモその1:

実際の表は,<td> の中にテキストが直接書かれているとは限らなく,たとえば <a> で囲まれたテキストが書かれてたりとかすることもあるわけで,一般にはテキストに行き着くまで DOM ツリーを再帰的にたどってやる必要がある.データ取得関数 getfn が分離されているので,こんなコードを書いて getfn として渡してやることにした.

function byStrNoCase (cell) {
  return extractText(cell).toLowerCase();
}
function byInt (cell) {
  return parseInt(extractText(cell));
}

function extractText(node) {
    var text = '';
    if (node.nodeType == 3) { // TEXT_NODE
        text = node.nodeValue;
    } else if (node.hasChildNodes()) {
        var n = node.childNodes.length;
        for (var i = 0; i < n; i++) {
            text = text + extractText(node.childNodes[i]);
        }
    }
    return text;
}

メモその2:

JavaScript の Array の sort() は,安定であるとは保証されていないらしい.実際,IE は安定なソートをしてくれているっぽいが Firefox だと安定でない.テーブルをかちかちクリックしてソートしたいときというのは,たとえば計算機一覧を,まずホスト名順にソートして,それから管理者順にソートしてから,自分が管理者になってる子たちを見る,なんていう使い方をすることが多いので,ソートは安定であって欲しい.

一番安直にやるには,ソート対象の要素にプロパティとして元の順番も持たせておいて,比較して引き分けだったら元の順番を保存するような比較関数 cmpfn を渡してやればよい.

のだが,元のコードだと,getfn が返した値を Object 型に変換してそれをソートしているので,比較の結果として引き分けにならない.しかたないので,getfn の返した値を Object 型に変換するのではなく,Object のプロパティとして getfn の返した値を持たせてやるように書き換えて使っている.つまり

  for(var i=0; i<N; i++)
    x[i] = Object( getfn( rows[i].cells[index] ) ), x[i].row=rows[i];

の部分を

  for(var i=0; i<N; i++) {
    x[i] = new Object;
    x[i].v = getfn(rows[i].cells[index]);
    x[i].row = rows[i];
    x[i].idx = i;
  }

にしてやる.cmpfn は

function cmpAsc(a, b) {
  if (a.v == b.v) {
    if (a.idx == b.idx) {
      return 0; // can't happen
    } else if (a.idx > b.idx) {
      return 1;
    } else {
      return -1;
    }
  } else if (a.v > b.v) {
    return 1;
  } else {
    return -1;
  }
}

function cmpDesc(a, b) {
  return cmpAsc(b, a);
}

みたいな感じ.

関連記事:
[2006-10-08-3] (再改版) bloglines のアイテムをまとめて ChangeLog メモに変換する bookmarklet
[2006-07-08-1] bloglines の keep new をまとめて解除する bookmarklet
[2006-07-05-3] HTML の table で,ヘッダを固定にしてデータ部だけスクロール
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Christian] Thanks for the great info dog I owe you ... (2012-12-30 13:35:14)

2006-07-04 Tue

* 目の前は雨,向こうには虹 [misc]

rainbow/20060704-184328.jpg

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Juancho] Felt so hopeless loiokng for answers to ... (2013-01-01 19:23:05)

2006-07-03 Mon

* 「シュレッダーはさみ」と「きざみ海苔はさみ」 [misc]

同じものらしい.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Arie] This piece was cogent, well-wrtietn, and... (2012-12-30 13:15:04)

* 「浜中町」の語源 [misc]

「浜中」は「大楽毛」の直訳らしい.




って何てローカルなネタだ.

これは「歌志内」と「砂川」の関係、「空知」と「滝川」の関係と同じですね。

http://glin.jp/arc/arc.cgi?N=396#21582

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Idwan] So much info in so few words. Totsloy co... (2012-12-30 15:18:10)

2006-07-02 Sun

* 「住宅都市整理公団」別棟 - デイリーポータルZに書いたネタ [misc]

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Bashar] Finding this post solves a porbelm for m... (2012-12-31 07:44:59)

2006-07-01 Sat

* 関内周辺のカレー屋マップ [food]

ひひーん

べつやくさん天才だわ.

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-02-13 02:02


Shingo W. Kagami - swk(at)kagami.org