わいえむねっと

Contents
Categories
Calendar
2026/08
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.056 sec
Chashed: -
2010/01/04 Mon
三が日も終わって皆さんぼちぼち仕事始めでしょうか。
私はまだまだ休みますよ。
休んでやりますとも。 24時間近く飲まず食わずだったところに急にコンビニ弁当を突っ込んだら胃腸がバグった。
2010/01/03 Sun
最終忘年会で借りてきたDS版FF4をえんえんと。

FF4[DS版]の感想とかメモとかのページ
http://hometown03​.client.jp​/diary/04.html
・お買い物
道具屋とかで買い物してる時、下に画面が出るよね。
それが「何を買うか悩んでいるセシル」と、「それを見上げているリディア」に見えて萌えた。

には同意せざるを得ない。
リディアなんで成長してしまうん…

しょんぼりしつつ、ルビカンテを倒すところまで進行。
2010/01/02 Sat
干支にちなんだ製品をいくつか。


「寅年ロール ¥105-」


「とっておき宣言 チョコバナナケーキ ¥135-」
バニラクリームをサンドしました


「チョコブレッド ¥116-」
チョコクリームを折り込み、ソフトに焼き上げました。


朝食をしっかりトラなきゃ!
2010/01/01 Fri
あけましておめでとうございます。小坂那也です。(新年の挨拶)

昨年の最後も今年の最初もgdgdでした!今年も思いやられます!
どうやら、今年も駄目そうだ! シキさんから、PS3ソフト買いに行くついでで本を貸してやるからアキバまで来やがれと言われたので、元日から秋葉原。
元日から混んでましたよ。

せっかくなので、神田明神に参ってきたりとかも。


参拝客でごった返してはいたものの、右端の列が "賽銭箱の横から賽銭を投げ入れてそのまま脇道に抜ける" 流れ作業コースだったのですんなりと。
中央の列ほど身動きが取れない状態になってたんじゃなかろうかと。あの横幅の列じゃなぁ。

Tuskさんちで D25HW を使おうとしたら圏外だったばかりか、
「ネットワークとダイヤルアップ接続」のプロパティで
「ワイヤレス ネットワーク」タブが表示されなかったりとかしたのが先日の話。というか昨日。

ブロードキャストされているSSIDが1つも見つからない状況だと
「利用できるネットワーク」がない扱いになってしまうとか?(D25HW はステルスに設定)
と、ぼんやり思っていたので、外出ついでにちょと検証を。

しようと思ったけど、どこもかしこも野良無線が飛びかってて検証できず。
D25HW が圏外なだけなら再現しないことは確認。地下鉄にて。
つーか、地下鉄の無線の飛びかいっぷりはなんだあれ。
2009/12/31 Thu
この書き込みで この日記の総日数が3653日となりました。書き込み数だと13201。
うるう年を3回経ての丸10年です。

2000年1月1日を節目として始めたこの日記ですが、
10年目の節目とかは特にないので 例によって惰性に任せていきたい。
うん。 我慢できずに購入してしまった D25HW で、外から自宅のマシンにログインしてみる実験。
sigmarionIIIで。

sigmarionIII は WN-G54/CF を差して ローカルでのリモートデスクトップは
利用可能な状態になっているので そのあたりは割愛。
あと、sshd 周りも割愛。

①D25HW と WN-G54/CF をWEPで設定
  WN-G54/CF の制限なので致し方がない
  気休めにSSIDステルスとかMACアドレスフィルタリングとか

②sigmarionIII に PortForwarder をインストール


③CE版の PortForwarder は SSH1 のみ対応なので、

$ cd ~/.ssh
$ ssh-keygen -t rsa1

$ cat identity.pub >>authorized_keys

  で鍵の作成と登録

④sigmarionIII に

Host RDP
  HostName x.x.x.x
  User foo
  LocalForward 3389 y.y.y.y:3389

  のような config.txt を用意し、identity を同じ場所にコピー

⑤PortForwarder を接続



⑥localhost に対してリモートデスクトップ接続


あっさり繋がった。
しかもそこそこ快適。
WEP+SSH1 というのが残念ですが、これは夢が広がるな…!
2009/12/30 Wed
以前書いたモジュールの AutoCommit を手当たり次第に切っていったら自動テストの出力に

Issuing rollback() for database handle being DESTROY'd without explicit disconnect().

とかいうのが混じるようになって ちょと調べたのでメモ。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
$dbh->do('update foo set bar=1');
$dbh->commit;
$dbh->disconnect;
まず普通に。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
$dbh->do('update foo set bar=1');
$dbh->commit;
#$dbh->disconnect;
disconnectを省略しても変化なし。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
$dbh->do('update foo set bar=1');
#$dbh->commit;
$dbh->disconnect;
commitを省略。警告はでない。当然、コミットもされない。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
$dbh->do('update foo set bar=1');
#$dbh->commit;
#$dbh->disconnect;
両方省略したところで件の警告。

モジュールを眺めたら、select の後の条件分岐で disconnect せずに抜けてる箇所があった。
disconnect の漏れはともかくとして、select でも commit/rollback が必要なものなのか。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
my $sth = $dbh->prepare('select * from foo');
$sth->execute;
undef $sth;
#$dbh->commit;
#$dbh->disconnect;
これだと警告。

use DBI;

my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
$dbh->{AutoCommit} = 0;
my $sth = $dbh->prepare('select * from foo');
$sth->execute;
undef $sth;
$dbh->commit;
#$dbh->disconnect;
警告でない。rollback でも同様。
SQLiteのデータ型がフリーダム過ぎる。

use strict;
use warnings;
use DBI;

unlink 'foo.db';
my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');

$dbh->do('CREATE TABLE foo(foo, bar INTEGER, baz TEXT, qux NULL)');
$dbh->do('INSERT INTO foo VALUES(1,1,1,1)');
$dbh->do("INSERT INTO foo VALUES('2','2','2','2')");
$dbh->do("INSERT INTO foo VALUES('a','a','a','a')");

foreach my $col('foo','bar','baz','qux')
{
    foreach my $val("1","'1'","2","'2'","'a'")
    {
        my $sth = $dbh->prepare("SELECT * FROM foo WHERE $col=$val");
        $sth->execute;
        $sth->fetch or warn "$col=$val";

        $sth = $dbh->prepare("SELECT * FROM foo WHERE $col=?");
        $sth->execute(eval $val);
        $sth->fetch or warn "$col=? $val";
    }
}

> perl datatype.pl
foo=? 1 at datatype.pl line 23.
foo='1' at datatype.pl line 19.
foo=? '1' at datatype.pl line 23.
foo=2 at datatype.pl line 19.
qux=? 1 at datatype.pl line 23.
qux='1' at datatype.pl line 19.
qux=? '1' at datatype.pl line 23.
qux=2 at datatype.pl line 19.

 (型省略)INTEGERTEXTNULL
1->1(*1)○/×(*2)○/○○/○○/×
1->'1'×/×○/○○/○×/×
'2'->2×/○○/○○/○×/○
'2'->'2'○/○○/○○/○○/○
'a'->'a'○/○○/○○/○○/○

*1)更新時の指定->参照時の指定
*2)ベタ展開/プレースホルダ
「スリッパ野郎!」

とか罵られつつ、スリッパを買いにぶらりと出かける。

なんというかこう、見るからにあったかそうなスリッパを買ってきました。
これで今年の冬を戦い抜ける…!

あと、フライパンの蓋を買ってきたりとか。
箸を買ってきたりとか。
イーモバイル端末を買い増ししてきたりとか。

Pocket WiFi (D25HW) イー・モバイル
http://emobile.jp​/products/hw/d25hw/

うん。
結局、我慢できなかったんだ。


ウィルコムとイーモバイルとイーモバイルとドコモ。

これでようやく、ウィルコムを解約する踏ん切りもついたよ!(遅すぎる)
今までありがとう、AH-N401C。
2009/12/29 Tue
部屋の中で、
コートを着込んで、
ヘッドセットを装着して、
膝にダウンジャケットをかけて、
足の下には厚手のタオルを敷いて、
喉がやられないようにマスクをして、
貧乏ゆすりをしつつキーボードを叩き続ける。

寒いよ!バカ!
2009/12/28 Mon
もやしと鶏ムネと豆腐の賞味期限が切れていたので食う。 鶏ムネが安かったので補充。賞味期限は12/28。
うん。
今日ですね。 Perl+SQLite のトランザクションについて言及しているサイトで $dbh->do('BEGIN')/$dbh->do('COMMIT') しているサイトと、$dbh->commit しているサイトとがあるけど、DBI的には後者の方が良いですよね。
前者によるメリットでもあるのかしらんと、とりあえず計測してみる。

use strict;
use warnings;
use DBI;
use Time::HiRes;

foreach my $begin_commit(
        ['', ''],
        ['$dbh->do("begin");', '$dbh->do("commit");'],
        ['$dbh->{AutoCommit} = 0;', '$dbh->commit;'])
{
    foreach my $do_execute([100,0], [50,50], [0,100])
    {
        my $sum = 0;
        my $min = 0;
        my $max = 0;
        foreach(1..10)
        {
            my $val = &transaction(@$begin_commit, @$do_execute);
            $sum += $val;
            $min = $val if $min > $val || $min == 0;
            $max = $val if $max < $val;
        }
        warn sprintf '%8.5f(%8.5f~%8.5f)', $sum / 10, $min, $max;
    }
}

sub transaction
{
    my($begin, $commit, $do, $execute) = @_;

    unlink 'foo.db';

    my $time = Time::HiRes::time();

    my $dbh = DBI->connect('dbi:SQLite:dbname=foo.db');
    eval $begin;
    $dbh->do('create table foo(foo)');

    foreach my $i(1..$do)
    {
        $dbh->do("insert into foo values($i)");
    }

    my $sth = $dbh->prepare('insert into foo values(?)');
    foreach my $i(1..$execute)
    {
        $sth->execute($i + $do);
    }
    undef $sth;

    eval $commit;
    $dbh->disconnect;

    return Time::HiRes::time() - $time;
}

> perl transaction.pl
10.00447( 9.81217~10.20283) at transaction.pl line 23.
10.13726(10.06212~10.31213) at transaction.pl line 23.
10.18888(10.14030~10.23409) at transaction.pl line 23.
 0.12704( 0.11595~ 0.14120) at transaction.pl line 23.
 0.12462( 0.10943~ 0.14125) at transaction.pl line 23.
 0.11114( 0.10413~ 0.11639) at transaction.pl line 23.
 0.12563( 0.11620~ 0.14054) at transaction.pl line 23.
 0.12695( 0.11620~ 0.14166) at transaction.pl line 23.
 0.11217( 0.10785~ 0.12078) at transaction.pl line 23.
>
> perl transaction.pl
11.79044(11.65592~11.89033) at transaction.pl line 23.
11.83569(11.79644~11.87464) at transaction.pl line 23.
11.83567(11.79658~11.89022) at transaction.pl line 23.
 0.14603( 0.13568~ 0.15803) at transaction.pl line 23.
 0.13457( 0.12304~ 0.14113) at transaction.pl line 23.
 0.12933( 0.10813~ 0.14678) at transaction.pl line 23.
 0.14184( 0.11892~ 0.15527) at transaction.pl line 23.
 0.13834( 0.13286~ 0.14959) at transaction.pl line 23.
 0.12602( 0.11557~ 0.13844) at transaction.pl line 23.

かわらんね。
2009/12/27 Sun
朝5時まで飲み続ける。
メンバーの半分以上は落ちてましたが。 店から追い出されて解散し、浅草線で乗り過ごしたり新宿線を往復したりしつつ、どうにかこうにか一之江にたどりつき、死ぬ。 復活。
二日酔いではないけれど例によって胃は痛い。
あと、アルコール分解に体力を使いすぎて疲労困憊。
2009/12/26 Sat
忘年会で五反田。
すげー懐かしい人と会う。
さらにすげー懐かしい人と会う。

マグロ食ったり焼酎飲んだり焼酎飲んだり焼酎飲んだり。