駄日記 (未完結間欠日記)

2010年 3月


2010-3-26 (Fri)

> 書くことないな~。
というのはウソでいっぱいたまってるんだけど (書く“べき”ことが、ではない)、 量をためすぎて一度に全部ぶちまけると大変なことになるのでやらない。
まァ時機もほとんど逸しまくってるし、 ためといても特に何も支障がなかった程度の内容だし。 とりあえず未来の自分 (のヒマツブシ) 用にぼちぼち小出しに。
> 今月頭から半ばにかけて、 「非実在青少年」という珍造語が印象的な東京都条例改悪案が実質的に何ら審議らしい審議もされないまま可決されそうになっちゃって、 大変だった。 ワシほとんど Twitter でヒトのつぶやきを RT してただけであと何もしてないけど。 結局“継続審議”ということで結論は 6月に持ち越しになったらしいが、 この“継続審議”ってのは即ち修正・変更は加わるにしても廃案になることはまずないという意味なんだそうで。 ウツクシイ日本語の意味をイビツに歪めて内輪用の汚いジャーゴンぼこすか量産しやがって。
それにしても…。
以上、まとめ記事。とても参考になる。 なんかもうヘタに自分で考えるよりも、よく練られた意見 (記事) に「同意!」ってやる方が楽で確実な気がする。 まァ、自分で考えないとダメなんだろうけど。 (プログラミングの世界では車輪の再発明するよりリソースの再利用を推奨されるんだが、 てごっちゃにしちゃアカンか)
以下いろいろ拾った URL、ほぼ順不同 (時系列っぽいけど必ずしも時系列でもない)。
首都大学東京の前田雅英という教授が、保坂議員が言ってもないことを捏造して喧伝しているらしい。 規制推進派がウソ・デマぶりまきも含めてなりふり構わん形で動いているらしいのがわかる。
規制推進勢力についての分かりやすい解説あり。
子供のケータイ・ネット利用の規制の方はあまり注目されていないが、そちらもかなり問題ありと。
注:サイトは18禁。
産経系メディアにしては(偏見)とても真っ当な記事。猪谷千香記者。

とかく日本人は、政治に関して忘れっぽい。とんでもない法案を出した議員でも、次の選挙の時期になるともうすっかり忘れて、聞いたことある名前だから、ということで投票してしまったりする。今回の騒動がどういう規模であったのか、今回の法案に賛成したのはどの政党で、賛成派はどの議員なのかをしっかり調べて、ネット上で記録として残しておくべきだ。今回の問題で実働した皆さんは、検索で探せる形にして、今回知り得た情報のメモをできるだけ沢山、ネット上に残しておいて欲しい。

継続審議とは「意義ある改正なのでより一層の審議を行い、次の議会で可決する」との意味。廃案にならないことが決定したと。従って、改正による条例文面を無害化するしかないとのこと。

なにやら便乗しで出てきたっぽい。 しかも規制推進シンパに受け入れられると計算した上でなのか珍しく堂々と統一協会 (統一教会) を名乗っているらしい。 統一協会の実態をあまり詳しく知らない規制推進シンパには好意的に受け入れられちゃったりしてね…怖い怖い…。 (うまくすれば統一協会 (と純潔教育) の実態を広く知らしめるいい機会になる可能性もあるかも、だが)

購入記録

  • 雑誌「まんがタイムオリジナル」2010.4 芳文社
  • 雑誌「まんがライフMOMO」2010.4 竹書房
  • 雑誌「まんがホーム」2010.4 芳文社
  • 雑誌「まんがくらぶ」2010.4 竹書房
  • 雑誌「まんがタイムジャンボ」2010.4 芳文社
  • 雑誌「まんがタウン」2010.4 双葉社
  • 雑誌「まんがタイム」2010.4 芳文社
  • 雑誌「まんがライフオリジナル」2010.4 竹書房
  • 雑誌「まんがタイムラブリー」2010.4 芳文社
  • 雑誌「まんがタイムファミリー」2010.5 芳文社
  • 雑誌「まんがライフ」2010.5 竹書房
  • 雑誌「まんがタイムスペシャル」2010.5 芳文社
  • 雑誌「まんがくらぶオリジナル」2010.5 竹書房

2010-3-27 (Sat)

> メモ。 ImageMagick (convert) で色味補正しつつノーマライズ。
convert -channel R -normalize -channel B -normalize -channel G -normalize -channel RGB {他処理} 元画像 新画像
これがベストかどうかは分からない。 (テキトーに試行錯誤した結果)
> 自転車の積算走行距離がいつの間にか 1000km を (10000km をではなく) 超えていた。 現在 1300km くらい。 以前距離計の電池を完全に切らして内容を揮発させてしまい、 積算距離は記憶を頼りにテキトーに入れ直したので、 あんまし正確ではないけど。(*27-1)
自転車購入から 2年半で 1300km って少ないんだろうなァ。 まァ滅多に外出しないからな。
> 「抱き枕のアナグラムで倉田真希」 という自分のメモを発見。 意味不明。

購入記録

  • 雑誌「まんがタイムオリジナル」2010.5 芳文社
  • 雑誌「まんがライフMOMO」2010.5 竹書房

蛇足的脚注

*27-1 : 電池交換
そういや先日 2度目の電池交換をしたんだった。 今度はバッテリー切れサインを見落とさず、 ちゃんとメモっておいた値を書き戻せたが、 電池交換の度に内容が揮発しちゃうのはややメンドくさい。 設定方法も若干ややこしくて覚えてられないんでその都度取説を引っ張り出さないとあかんし…。 まァ値段も値段だし仕方ないところだが。

2010-3-29 (Mon)

> どうでもいい話。
TV CM で、他人の (架空の) アイテムを“盗める”っつーのがウリらしい携帯用ゲームを宣伝してるんだけど (DeNA のモバゲーのなんとかいうやつ) CM をボーッと見ていて受けた印象では、 ゲーム内のキャラクタではなく現実世界の相手 (ゲームプレーヤ) を特定できてるように見える。 そんな訳ないよなァ…と思って検索してみたが、 やはりリアルな相手を (少なくともゲーム内から) 特定できるような仕掛けはなさそうだ。 ボーッと見てるのが悪いと言われればそれまでだが、 なんか紛らわしいよーな気がするんだよなあの CM…。
まァしかし実世界の誰かであっても架空世界のキャラクタであっても、 互いの (架空の) “持ち物”を窃盗しあうゲームって、面白いのかなあ。 そのセンスがよく理解できないなァ…と CM を見る度に思うんだった。 どっちみち携帯端末持ってないんで実際どういうシステムなのか確認もできないが。 Willcom の PHS はいわゆる“携帯”向けサービスからほぼ完全にハブられてるからな。 (それ以前に Willcom 自体風前の灯っぽいけど。 PHS は出力弱いところとその弱点をカバーするように高出力の基地局をたくさん作った旧 DDI ポケットの方針が好きなんで (ヘンな理由)、 細々でもいいから続いて欲しいんだけど、どうなることやら)
Wikipedia にあった。
> どーでもいい話。
もう 2ヶ月も前のことだが、 生まれて初めて幅優先探索のコードを書いた。 これまでは深さ優先探索 (バックトラック法) のコードしか書く機会がなかったんだった。
↓これなんですがな。とある会社の中途採用の入社試験。 (応募した訳ではない)

内容は、壁とスペースで構成された迷路が与えられたとき、スタート地点からゴール地点に至る最短経路を求めよ、というものです。

たとえば、S:スタート G:ゴール *:壁 $:解答の経路 としたとき、

**************************
*S* *                    *
* * *  *  *************  *
* *   *    ************  *
*    *                   *
************** ***********
*                        *
** ***********************
*      *              G  *
*  *      *********** *  *
*    *        ******* *  *
*       *                *
**************************

という入力に対し、

**************************
*S* * $$$                *
*$* *$$*$ *************  *
*$* $$* $$$************  *
*$$$$*    $$$$$          *
**************$***********
* $$$$$$$$$$$$$          *
**$***********************
* $$$$$*$$$$$$$$$$$$$$G  *
*  *  $$$ *********** *  *
*    *        ******* *  *
*       *                *
**************************

という出力が来ればOK、というわけです。(ブラウザだと見づらいかもしれないのでテキストエディタ等にコピーすれば見やすくなります)

もうちょっと細かい条件としては、

  • 入出力はテキストデータを用いる
  • 一度に動けるのは上下左右のみ。斜めは不可
  • 最短経路が複数あるときはそのうちの1つが出力されていればOK
  • 入力データのバリデーション(長方形になっているか、スタート・ゴールが1つずつあるかどうか、等)は不要
  • 制限時間は3時間
  • プログラム言語・OSは自由

なお、可能な全経路を列挙した上で最短を求める、というアルゴリズムは、マップのほとんどがスペースである場合に現実的な時間で終わらなくなってしまうのでLv3扱いです。

> 文中の「可能な全経路を列挙した上で最短を求める、というアルゴリズム」というのは、 深さ優先探索 (バックトラック法) のことのようだ。
しかし迷路をたどる系プログラムというと深さ優先探索のコードしか書いたことがない。 まァこのくらいの迷路なら比較的単純な枝刈りだけでもそんなに時間もかからん気がするし、 どのくらいかかるかとりあえず書いて動かしみてダメそうだったらまた考えよう、という戦略で、 まずは深さ優先探索で (いつものように Perl で) 書いてみた。 所要時間約 30~40分 (うろ覚え)。 Cygwin 上で走らせたところ、数分程度で解が出た。
use strict;

# 深さ優先探索

# マップ:
# '*' 壁
# 'S' スタート地点
# 'G' ゴール地点
# '$' 足跡
# ' ' 道

my @map;
while (<DATA>) {
    chomp;
    push @map, [split '', $_];
}

# 何歩進んだかのカウンタ
my $step = 0;
# ゴールまでの歩数の過去最小値
my $minstep = 0;
# 座標(スタート地点で初期化)
my ($x, $y) = get_start();

search_next_and_go();

sub search_next_and_go {
    # 上
    go_d(0, -1);
    # 右
    go_d(1, 0);
    # 下
    go_d(0, 1);
    # 左
    go_d(-1, 0);
}

sub go_d {
    my ($dx, $dy) = @_;
    # 進めるか判定
    my $c = $map[$y + $dy][$x + $dx];
    return if $c ne ' ' and $c ne 'G';
    # よし行け
    $step++;
    # 単純な枝刈り
    if ($minstep and ($minstep <= $step)) {
        $step--;
        return;
    }
    $x += $dx;
    $y += $dy;
    if ($map[$y][$x] eq 'G') {
        goal();
    } else {
        $map[$y][$x] = '$';
        search_next_and_go();
        $map[$y][$x] = ' ';
    }
    $x -= $dx;
    $y -= $dy;
    $step--;
}

sub get_start {
    my $len = $#{$map[0]};
    for (my $y = 0; $y <= $#map; $y++) {
        for (my $x = 0; $x <= $len; $x++) {
            return ($x, $y) if $map[$y][$x] eq 'S';
        }
    }
    return (-1, -1);    # MAPが正しければ決して返さない
}

sub goal {
    $minstep = $step;
    print "step: $minstep\n";
    print_map();
}

sub print_map {
    for (@map) {
        print @$_, "\n";
    }
}


__DATA__
**************************
*S* *                    *
* * *  *  *************  *
* *   *    ************  *
*    *                   *
************** ***********
*                        *
** ***********************
*      *              G  *
*  *      *********** *  *
*    *        ******* *  *
*       *                *
**************************
ところで説明文にあるような「マップのほとんどがスペースである場合」はどうなるのか。 試しにマップをいじって広場をいくつか作ってみたところ、 今度は何十分待っても終わらない。 探索過程を表示させてみたら、とても数時間やそこらじゃ終わりそうにない感じの進み具合。 なるほど~。
で、 Web で情報漁りつつ幅優先探索のコードも書いてみた。 深さ優先探索がスタックを使って再帰的にたどるのに対し、 幅優先探索ではキューを使って出発点から近い順に処理していくのだが、 最短ルートをどう判別すればいいのかピンと来ず半日ほど悩む。 深さ優先なら処理を進めつつ、たどったノードをスタックに積んでいって (戻る時は値も捨てて)、 ゴールに着いたらスタックを底から読み出せばいいだけなんだけど。 結局、全ノード分のワーク (二次元配列) を用意して、 ノードごとに「どちらから進んできたか」の情報を格納しておき、 ゴールに着いた時点でゴールから経路を遡ってたどればいいと分かるまでずいぶんかかってしまった。 (頭錆びついてけつかる)
そんなこんなでなんとかコードをでっち上げて走らせたところ、 ほぼ一瞬で答えが出てしまった。うほー。 マップを広場だらけに書き換えてもほぼ一瞬。 全部広場にしてもほぼ一瞬。 まァ原理的には確かにそうなんだろうけど、 しかし探索の仕方でこうも劇的に処理速度が変わるんだなァ、と改めて思った次第。
use strict;

# 幅優先探索

# マップ:
# '*' 壁
# 'S' スタート地点
# 'G' ゴール地点
# '$' 足跡
# ' ' 道


my @map;
while (<DATA>) {
    chomp;
    push @map, [split '', $_];
}

# 座標(スタート地点で初期化)
my ($x, $y) = get_start();

my @queue;
my $from;

# スタート地点の目印
$from->[$y][$x] = [-1, -1];
search_next_and_go();

sub search_next_and_go {
    push @queue, [$x, $y];
    while (($x, $y) = @{shift @queue}) {
        if ($map[$y][$x] eq 'G') {
            goal();
            return;
        } else {
            for ([0, -1], [1, 0], [0, 1], [-1, 0]) {
                my ($dx, $dy) = @{$_};
                # 進めるか判定
                my $c = $map[$y + $dy][$x + $dx];
                if (! $from->[$x + $dx][$y + $dy] and ($c eq ' ' or $c eq 'G')) {
                    push @queue, [$x + $dx, $y + $dy];
                    $from->[$x + $dx][$y + $dy] = [$x, $y];
                }
            }
        }
    }
    print "no answer.\n";
}

sub get_start {
    my $len = $#{$map[0]};
    for (my $y = 0; $y <= $#map; $y++) {
        for (my $x = 0; $x <= $len; $x++) {
            return ($x, $y) if $map[$y][$x] eq 'S';
        }
    }
    return (-1, -1);    # MAPが正しければ決して返さない
}

sub goal {
    my $step;
    # mapに足跡を描く
    while (1) {
        my ($nx, $ny) = @{$from->[$x][$y]};
        last if ($nx < 0 or $ny < 0);
        $map[$y][$x] = '$' if $map[$y][$x] eq ' ';
        $step++;
        ($x, $y) = ($nx, $ny);
    }
    print "step: $step\n";
    print_map();
}

sub print_map {
    for (@map) {
        print @$_, "\n";
    }
}


__DATA__
**************************
*S* *                    *
* * *  *  *************  *
* *   *    ************  *
*    *                   *
************** ***********
*                        *
** ***********************
*      *              G  *
*  *      *********** *  *
*    *        ******* *  *
*       *                *
**************************
ちなみに他にも探索アルゴリズムとして A* 法だとかダイクストラ法だとかいろいろあるらしいが、 今回はごく普通の幅優先探索で済んだので使ってみてない。
他の人の解も見てみたが、やはり深さ優先探索で解いてる人がいた。 そう、先述サイトの例題 (マップ) に限ればそれで解けちゃうんだよねえ。 出題者の仕掛けたワナかも。 あと OO なコードの人がやっぱし多い。気がする。 ま~ OO な言語を使ってる人が多いから当然なんだろうけど…。 しかし OO かどうか以前にグローバル変数デフォルトな時点でアレだよな。ワシのコードの場合。 (全体がこれくらいの規模ならまァ問題なかろう的な感じで。 でも実は規模に関係なくいつもそんな感じだったりする)
tween でログをファイルとして保存することで TL (タイムライン) の履歴はある程度残せるが、 tween のログだと情報が全部は保存できないのと、 先日いつの間にか tween がハングっていて、 12時間以上分のログを読み逃して (というか後から参照する機会を逃して) しまったので、 サーバで勝手に延々と淡々と TL を記録し続けるスクリプトでも走らせちゃろ、と思い、 だらだら調査中。 できる人なら思いついたそばからパパッと作っちゃうんだろうけど。
Cygwin で cpan 使ってインストールしようとしたけどエラーでこけて make できひん。 スキル不足で解決不能。しくしく。 ま~いいや。
ドキュメントの和訳。使ったことはない。機会があったら試してみよう。かな。
「X'mas は誤りで Xmas が正しい」は誤り。だそうな。 “X'mas”も古くから使われていた綴りで別に間違いではないし、 まして日本発祥でもない、らしい。知らなかったー。 ずっと以前に誰かから「X'mas は誤り」と聞いて、へ~そうなんだ~と今日まで素直に信じていた。

「非実在少年・規制推進派」メンバーの弁護士・後藤啓二氏が、 出版業界関係者などが、一人もいない(たぶん、いませんでした)場所で、 外務省、ユニセフ関係者、外国人警察関係に対して、どのように説明するかが知りたかったからです。

(*後藤啓二/元警察庁の官僚。児童ポルノ、児童買春、トラフィッキングの取り締まりや、 これら禁止法の制定でNGOと昔から協力。東京都青少年健全育成条例の、草案メンバー) 著書『なぜ被害者より加害者を助けるのか』は、元安倍総理も推薦している。

 昨日の都条例改定に反対する漫画家会見は、朝日新聞が1面で報じたり、テレビのニュースでも扱われるなど大きな報道となった。新聞では東京新聞も社会面で大きな扱い。毎日や産経も記事にしている。ようやく12日頃から新聞記事が出始めたこの問題だが、一気に大きな話題になった。

 昨日の集会でも、今までこういう動きがあったのを知らなかったという発言が多かったのだが、実は昨年来、児童ポルノ法と青少年条例改定の問題は水面下で連動しながら着々と動いていたのだ。ほとんど報じられていないその経緯について、詳しく報告したのが『創』2010年1月号の長岡義幸さんのレポートで、これがこの間、改めて注目を浴びている。

 その関心の高まりを受けてアマゾンなどでもこの号の追加注文が入るなどしているのだが、事態が風雲急を告げているため、『創』はここに、そのレポートを公開することにした。大手出版社にはありえない太っ腹な判断だが、あと数日のうちに条例改定が採決されてしまうという大事な局面に細かいことを言っている場合ではない。

 同時に、このサイトでは、この間出された改定に反対する声明や意見書もできるだけ紹介し、リンクを張っていきたいと思う。

 では以下、『創』1月号に掲載された「児ポ法、青少年条例など性表現規制強化の動き」(長岡義幸)の全文である。

モバイルコンテンツ審査・運用監視機構(EMA)事務局長 虎ノ門南法律事務所 弁護士 上沼 紫野氏
あんまし気にしてない。 (気にせざるを得ない状況がほとんどなかったというか)
PHPの変数スコープ (ブロックスコープ) が変態で扱いにくいなぁと思っていたが、 実は JavaScript も似たような仕様だったのか。知らずに使ってたわ。 そういえば時々意図どおりの挙動を示さないことがあるなァとは思っていたんだが…。
去年拾ったリンクだった。 参考書も参考にスル。 「終わりに」のあとコメント読んで笑っちった。

2010-3-30 (Tue)

> 今日はホントは何日なんだ?
> メモ。 TMPGEnc (フリー版) で、連番画像ファイルから動画をエンコードする際は、 'img-' + 数字 7桁のファイル名でないとうまくいかない。らしい。 あと「設定」→「環境設定」→「VFAPIプラグイン」で DirectShow Multimedia File Reader を無効にしておくこと、 だったかな? ずっと以前メモったような記憶があるんだが、検索かけてみたけど見つからなかった。へんだな~。