2007/01/25

[雑記]   孤独のグルメ

at 01:40JST
 孤独のグルメ: 久住 昌之,谷口 ジロー


amazonで¥5,500…。

アホかーっ!

2007/01/24

[雑記]   リトルマーメイド

at 22:35JST
20070124mage002.jpg
飲まず食わずで出かけたら、通りすがりの駒込駅構内に「リトルマーメイド」が開店していた。イートインもできる。

ホントは改札を出たところでシュークリームを買って食べようと思ってたんだが、ついつい惹かれて入ってしまった。

コロネがかわいい。トルティーヤを巻いたソーセージがうまい。

でも、さすがに店内が狭かったな。なんせ、セルフサービス用のゴミ箱のクチが狭くて、トレイの幅ぶんないんだもの。駅ナカビジネスは流行ってるけど、そういう点では防火上もどうかと思う。

と思いつつ店を出たら、となりに
「防火基準が変わります」
云々というポスターを見かけて苦笑した。よく読まなかったけど、まーさか、基準緩和じゃないよねえ。コイズミ政権の建坪率規制緩和で、ウチの周りはエンピツ型マンションの建設ラッシュなんすから。勘弁してください。

[雑記]   両手で

at 07:30JST
両手でキーボード叩けるようになりたいなあ。

側臥した状態でしか作業しなくなってずいぶん経つ。こうなると自由にキーボードを叩けない。勢い、文章書きもコーディングも億劫になる。マウスだけで操作しなくてはならない。キーボードショートカットなんてナードの傲慢だと思い知らされる。

しかし、体力を温存するのがいちばんだいじだよ。疲れないこと。

2007/01/23

[雑記]   「トランスフォーマー」実写映画版

at 22:06JST
町山さんのところで知ったのだが(やっぱりたまにチェックしに行かなきゃダメだ。町山さんのとこは)。

アメリカで7/4、日本では8/4公開のもののトレイラー。

Transformers - Movie Info - Yahoo! Movies
http://movies.yahoo.com/movie/1808716430/info

すげえ!
ちゃんとコンボイ司令官も出てくる!
それでいて文句のつけようのない、シリアスな気迫!

しょせんおもちゃ先行企画でしかなく、「ビーストウォーズ」みたいなキワモノを大量生産してるだけと思われがちなトランスフォーマーが、ココまでちゃんと映画になるのか!

やっぱアチラさんはすごいよー。日本の特撮界も見習ってくれよう;_;

P.S.
まあ、↓のメインで取り上げられてるILMの技術も感心するけど。

ベイエリア在住町山智浩アメリカ日記
「パイレーツ・オブ・カリビアン」の秘密が一目瞭然
http://d.hatena.ne.jp/TomoMachi/20061221

ぼくは町山さんとは違って、モーションキャプチャーの時代にこそ素材となる役者の力量が問われるような気がする。映画はおもしろいな。

[技術系]   iTMS/LinkShareのアフィリエイトサービス

at 17:59JST
「そういえば、iTunes Music Storeのアフィリエイトって、
 いまどういう状況になってるんだろ…」

と思って、むかし申請したきりになっていたアフィリエイトサービスをチェックしてみた。

…-"- 苦労の連続。

まず第一に、iTMSアフィリエイトを国内のどの業者が提供しているか忘れた。ニュース記事を検索して「LinkShare」だったことを思い出す。
http://www.linkshare.ne.jp/

そしてIDとパスワードを忘れた。過去のメールを検索してみてIDはわかったが、パスワードがハネられる。…思い出した。このサイト、むちゃくちゃ
「強いパスワード」
じゃないと受け付けてくれないんだ…。

そしてCAPTCHAに答える。なぜたかがアフィリエイトにCAPTCHAをつける! ぼくが使ってる銀行のオンラインバンキングだって採用してないのに!

なんとかサービス画面ログインに成功すると、
「おまえのパスワードは期限切れだから変更しろ」
と言われる。おおい! しかたないので変更する。

さらにさらに! パスワード変更すると
「変更後2時間はレポートの確認ができません」
と平然と告げられる。なんじゃそりゃああ!

で、ようやくiTMSの商品リンクビルダーの画面にたどりついたのだが、やっぱりココは
「個別の商品ごとにリンクビルダーを操作しないと
 アフィリエイト掲載ができない(少なくとも建前は)」
のね。…たかが楽曲ひとつ掲載するためにここまでの手順をイチイチ踏めって? -"-#

LinkShareは
「Webサービス(ベータ版)」
というかたちで製品情報のバッチ提供をしているので、それを利用できればいいのだが、驚くなかれ、現在このサービスに参加しているマーチャントは
ニッセン
ただ一社である。
http://www.linkshare.ne.jp/af_center/special/webservice/index.html#EC

…もう「死ね、死んでくれ」としか言いようがない。

まだ続きがある。

実際にどのようにリンクされるのかをチェックするために、他blogにあったiTMS楽曲リンクをクリックしてみると、突然PCがウンともスンとも言わなくなった。?? LinkShareが重いのか? しばらくするとあのヘンでキモいデザインのiTunesが立ち上がってきた…。

なんとiTMSのアフィリエイトリンクは、クリックするとiTunesを起動するのだ(途中でポップアンダーウィンドウが一瞬出るが)。ひえー。

iTunesアフィリエイトはブラウザクラッシャー? - LogJET
http://www.fsiki.com/jet/web/itunes_1.html

ブラウザクラッシャーだとまでは思わないが、ここまで使いづらいと何かに使おうという気にはちょっとならないな…。iPod使いな人にとってはどうなんだろう。

まあ、そういうことでぼくはAppleはキライですよ。フン。

[雑記]   Vistaなら素でそうだけど…

at 16:09JST
というのはもちろんわかって紹介してるんだろうな…と思いつつ。

おれはおまえのパパじゃない - 本日の超絶レコメンド「お忍びリネーム」
http://d.hatena.ne.jp/kowagari/20070123/1169524279

Vistaの超便利な改善点、
「リネーム時に拡張子をのぞいた部分だけが選択される」
というのをXPで実現するツール。2004年からあったのかー。

これであと、
「リストビューの左側に複数選択用チェックボックスを出す」
ツールがあれば、Vistaに乗り換える必要の8割はなくなるな(えっ?)。

[技術系]   アラン・ハボット氏

at 14:34JST
Apacheのアクセスログを眺めていたら、
「aranhabot」
という名の見慣れないロボットが来ていることに気づいた。

aranhabotがちょっと気になったので - cles::blog
http://blog.cles.jp/item/924

AmazonのXSLT取得用スパイダーかぁ^^; ヘンな名前。xsltのパス以下をログ記録しないようにしたので、もうお見かけすることはないであろう。ばいばい。

[技術系]   Seesaa BLOGの過去記事をまとめてMTエクスポートする

at 11:14JST
ミラーリングしてるだけじゃ、blogのバックアップをしたことにはならない。ので、Seesaa BLOGの過去記事をまとめてエクスポートするスクリプト。

Seesaaは一ヶ月分しか一度にエクスポートできない(まあ負荷を考えれば当然)ので、過去分を全部自動的に処理してくれるようにMechで書いてある。で、たまに動かすと(しつこく動かすと店員ににらまれる両刃の剣)。

スクリプトの最後に
保存用名称[TAB]Seesaaアカウント[TAB]Seesaaパスワード[TAB]blogID

と列記しておくと、列記したblogすべてについて作業してくれる。

某blogはgzip圧縮前に3MBちょいあった。

#!/usr/bin/perl 

# saveexport.pl

use strict;
use WWW::Mechanize;
# install Crypt::SSLeay on Win32(ActivePerl):
# > ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
# or do on Fedora :
# % sudo yum install openssl-devel
# then install it via CPAN.

my $MAILTO = 'めるあど';
my $URL_INIT = 'http://blog.seesaa.jp/pages/my/home/index';

mkdir( '.saveexport', 0755 )
or die;
END {
rmdir( '.saveexport' );
}

my $startTime = scalar( localtime() );

my @done;
while ( my $line = <DATA> ) {
$line =~ tr/\r\n//d;
my( $ident, $mailaddr, $password, $blogid ) =
split( /\t/, $line );

eval {
getEx( $ident, $mailaddr, $password, $blogid );
};
if ( $@ ) {
push( @done, "$ident...ERROR!$@" );
} else {
push( @done, $ident );
}
}

my $endTime = scalar( localtime() );

my $mail = <<"_EOF_";
SAVEEXPORT RESULT REPORT
========================

start time: $startTime
end time: $endTime

- Processed sites -
@{[ do {
join( "\n", @done );
} ]}
_EOF_

open( MAIL, "|/bin/mail -s 'SAVEEXPORT RESULT REPORT' $MAILTO" );
print MAIL $mail;
close( MAIL );

exit;

sub getEx {
my( $ident, $mailaddr, $password, $blogid ) = @_;

my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->agent_alias( 'Windows IE 6' );

# 初期画面
$mech->get( $URL_INIT );

# ログイン
$mech->submit_form(
fields =>
{
'member__email' => $mailaddr,
'member__password' => $password,
}
);
while (
$mech->response()->header('refresh') =~ /url=([^\s;]+)/i
) {
$mech->get( $1 );
}

# 「MTインポート」
$mech->follow_link(
url =>
"/pages/my/blog/home/?blog_id=$blogid" .
"&goto=/pages/my/blog/tools/mt/input"
);

# 「取得範囲」取得
my $selection = $mech->content();
$selection =~
s#^.*<form action="export"[^>]+>(.*)</form>.*$#$1#s;
$selection =~
s#^.*<select name="year_month">(.*)</select>.*#$1#s;
my @options =
sort
grep !/^$/,
( $selection =~ /value="(.*)"/g );

my @t = localtime();
my $filename =
sprintf(
"ex.${ident}_%04d%02d%02d-%02d%02d%02d",
$t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]
);

open( MT, ">$filename" );
binmode MT;
# MTエクスポートフォーム
my $length;
foreach my $option ( @options ) {
$mech->form_number( 3 );
$mech->set_fields(
'year_month' => $option,
'comment' => 1,
'tb' => 1,
'encode' => 'sjis',
);
$mech->click();

$length += length( $mech->content() );
print MT $mech->content();
$mech->back();
}
close( MT );

if ( $length < 2 ) {
unlink $filename;
die "nocontents";
} else {
system( "gzip $filename" );
}

return;
}

__DATA__
memo.hirosiki.jp めるあど ぱすわーど ぶろぐid

[雑記]   トラネキサム酸

at 01:16JST
2週間くらい扁桃腺が腫れっぱなしだ。いい加減キツい。ひさしぶりに薬を買ってきた。

以前医師にかかったとき「トランサミン」が劇的に効いた。主成分はトラネキサム酸。売薬では「ペラックT」に含まれているのでこれを常用している。

飲んだら一発で効いた。のどのしこりが消え、だるさも落ち着いたようだ。やっぱ常備しとかないとダメだな。

使用上の注意を暇つぶしに読み返すと、禁忌に「高血圧」が上がっている。止血効果のある薬だから…。

もしかして、高血圧の症状が出ていたのはコイツが原因?

薬は飲んだほうがいいけど、ちょっと血圧の変化を見守る必要があるな。

やっぱ扁桃腺取りたいなあ。しかし、リスクもあるし1〜2週の入院が必要だ。おまけにこっちは手術したいって押しかけても、鼻カメラのモルモットにされたあげく
「様子を見ましょう」
で終わっちゃうし(以前、腫れがひくまで一ヶ月要したときはそうなった。当時はトラネキサム酸のことは知らず、抗生物質を大量処方された)。

2007/01/22

[技術系]   pinghttp

at 18:41JST
8年くらい前にでっち上げたスクリプトを引っ張り出してきて、簡単なサーバモニターを設置した。

その中で他サイトのWebサーバに100kbのファイルを置き、それの所要取得時間を計測する…というのがあるのだが。@niftyにファイルを置いたら結果が異常に遅い。自宅サーバと通信させたほうがぜんぜん速いのだ。

「@niftyはダメだなあ…」

と思ったのだが、ちょっ待てよ!(キムタク) そんなわけねー! だって自分ちの接続回線も@niftyじゃねーか!

スクリプトの該当部分は、
#!/bin/sh 
URL=$1
if [ -z "$URL" ];
then
echo "Usage: $0 url_somewhere" 1>&2
exit 1
fi
WGET='wget --output-document=/dev/null --timeout=60'

RESULT=`$WGET $URL 2>&1 |grep ' saved ' |tail -1 |cut -d' ' -f 2 |tr -d '('`
if [ ! `echo "$RESULT" | grep '^[0-9.][0-9.]*$' 2>/dev/null` ] ;
then
RESULT=0
fi
echo $RESULT
# in KB/sec
となっていて、wgetの出力を利用している。

…調べてみると、wgetは回線が8年くらい前のようにKB/secで計れるときは
 (234 KB/s) - `/dev/null' saved [102400/102400]
となるのだが、昨今のように高速大容量な環境が当たり前だと
 (1.36 MB/s) - `/dev/null' saved [102400/102400]
と「MB」単位になるのだった。道理でな…_| ̄|O

perlで書けばよかったんだけど、当時はこういうスクリプトは全部shで組んでいたし、perlの標準ライブラリは秒単位の計測しかできなかったのだ。

で、書き直した。
#!/usr/bin/perl 
use LWP::UserAgent;
use Time::HiRes;

my $url = shift @ARGV;

my $sec = Time::HiRes::time;
my $ua = LWP::UserAgent->new(
agent => 'Mozilla/4.0 (compatible; MSIE 6.0)',
timeout => 60,
# max_size => 32 * 1024,
);
my $response = $ua->get( $url );
if ( $response->is_success ) {
$sec = ( Time::HiRes::time ) - $sec;
} else {
$sec = 0;
}

my $kbSec = length( $response->content ) / 1024 / $sec;
print $kbSec . "\n";


どう考えてもこっちのほうが負荷は軽そうだ。

10年前にさかのぼると、ぼくはCMSすらBourneShellオンリーで書いていたんだが。ある意味富豪プログラミング。

[雑記]   Law15

at 16:59JST
秋葉原マップ:社長自ら「セーラー服」→「スク水」で告知活動
 〜 Law15 (ロウフィフティーン) 〜
http://blog.livedoor.jp/akibabot/archives/50745353.html

++ Law15 Project ++
http://www.law15.net/

「寒いのが気のせい」という根性論は賛成できないが、
「私たちを知ってください」
にここまで賭ける想いは尊敬に値するな。かっこいい。

万世橋署のアホが捕まえたりしないことを祈るばかりだ。マジで。

[技術系]   apacheで特定リクエストをアクセスログに記録しない

at 11:11JST
忘れ。めもめも。

- CustomLog の env= 節
 http://httpd.apache.org/docs/1.3/mod/mod_log_config.html#customlog
- SetEnvIf
 http://httpd.apache.org/docs/1.3/mod/mod_setenvif.html#setenvif
- 2.x
 http://httpd.apache.org/docs/2.0/ja/logs.html#accesslog

SetEnvIf Request_URI "^/パス" dontlog
CustomLog logs/access_log usertrack env=!dontlog


みたいな。

tools:
/files/
/patrate/
/feed2list/
a:
/xslt/

[技術系]   続々・pavukでミラー

at 03:17JST
http://memo.hirosiki.jp/article/30973975.html

ということで、
「Seesaa BLOGでホストしているblogを
 pavukで定時ミラーするperlスクリプト」
をでっち上げてみた。ぐちゃぐちゃすくりぷと。

・__DATA__以降に、
 
ミラー対象ホスト名[TAB]画像アップ先を含む対象ホスト名の列記

 を羅列する
・メンテナンス検知のために、対象blogのトップページに
 
<!-- SANE:ホスト名 -->

 という文字列を挿入しておく(超アドホック)

感じ。もちろんUNIXじゃないと動きませんよ。/bin/rmとか堂々と使ってますんで。

使い物になるかどうかはともかく、バックアップしておけるのはずいぶんマシだ…。

#!/usr/bin/perl 

# smirror.pl

use FileHandle;

my $MAILTO = 'めーるあどれす';

my $TMP_DIR = '/tmp';
my $PAVUK =
join( ' ',
(
"pavuk",
"-mode mirror",
"-index_name index.html",
"-fnrules F '*' '/%d/%n'",
"-logfile pavuk.log",
"-quiet",
"-noRobots"
)
);

my $startTime = scalar( localtime() );

my @done;
while ( <DATA> ) {
s/^\s+//;
s/\s+$//;
next if ( /^$/ );
my $line = $_;
my( $target, $asite ) = split( /\s/, $line );

if ( ! -d $target ) {
mkdir $target, 0755
or die "Cannot mkdir to store site";
}
my $lockDir = "$target/.smirror";
mkdir $lockDir, 0755
or die "Another smirror is working";
my $tmpMirrorDir = "$TMP_DIR/$target.$$";
mkdir $tmpMirrorDir, 0755
or die "Cannot mkdir for mirroring";
eval {
system(
"cd $tmpMirrorDir &&" .
"$PAVUK -asite $asite http://$target"
);
};
# SANE?
# <!-- SANE:memo.hirosiki.jp -->
my $tophtml = Slurp( "$tmpMirrorDir/index.html" );
if ( $tophtml =~ /-- SANE:$target --/ ) {
system( "/bin/mv -f $tmpMirrorDir/* $target" );
push( @done, $target );
} else {
push( @done, "$target ... INSANE!!" );
}
system( "/bin/rm -rf $tmpMirrorDir" );
rmdir $lockDir;
}

my $endTime = scalar( localtime() );

my $mail = <<"_EOF_";
SMIRROR WITH PAVUK RESULT REPORT
================================

start time: $startTime
end time: $endTime

- Processed sites -
@{[ do {
join( "\n", @done );
} ]}
_EOF_

open( MAIL, "|/bin/mail -s 'SMIRROR RESULT REPORT' $MAILTO" );
print MAIL $mail;
close( MAIL );

sub Slurp {
my $fn = shift @_;
my $cnt = do {
local $/;
my $fh = FileHandle->new( $fn, 'r' );
local $_ = <$fh>;
$_;
};
return $cnt;
}

__DATA__
memo.hirosiki.jp memo.hirosiki.jp,hirosiki.up.seesaa.net

[技術系]   ヒアドキュメント中で任意の処理結果を挿入する

at 02:55JST
perlのヒアドキュメントで。なんかいっつも忘れるのでメモ。
こんな感じ。

my $mail = <<"_EOF_"; 
SMIRROR WITH PAVUK RESULT REPORT
================================

start time: $startTime
end time: $endTime

- Processed sites -
@{[ do {
join( "\n", @done );
} ]}
_EOF_


do { } の中で最後に評価した値が挿入される。便利。…これを便利と言い切ってやまないのはぼくくらい(悪い意味で)だと思うが。

2007/01/21

[雑記]   もう平成ライダーはダメだな…

at 14:31JST
「仮面ライダーカブト」の最終回を視た。
早回しで。
2分くらいかけて。
あきらめてても最終回くらい視るのは礼儀。

なんじゃこりゃ。
もうね、ストーリーとか脚本がむちゃくちゃなのは今さら言ってもしかたないけど。
なんか予算すら切れてるように見えるのはどういうわけよ?

群衆シーンでエキストラの数が露骨に足らなかったり、ゼクトのマークが模造紙貼り付けたみたいに波打ってたり、コンパネが安いトグルスイッチ並んでるだけだったり。あと、最後の凱旋門の安っぽい合成はナニ?

考えてみれば「電王」のデンライナーも、ほぼビデオ合成で済むわけじゃない? それって予算がないってことだよな…。

「響鬼」のプロデューサー更迭で
「ひとりよがりに凝ってても、おもちゃが売れなきゃダメ」
とか訳知り顔に言ってるヤツが多いが、おもちゃ売れてても予算がつかない、おまけに内容ムチャクチャじゃ意味ねーだろ。

ほんと、平成ライダーはもうおしまいだー。悲しい。

頼むから、子どもに胸張れるようなフィクションをつくってくれよ。子どもだって審美眼は大人と変わらないんだよ。

[技術系]   webalizer

at 04:51JST
で、何がやりたかったかというと、webalizerをインストールしたかったのよ。

$ yum install webalizer

とかやると、どうやらapacheとかとの依存を処理しないとインストールできないらしい…(当然apacheも素でmakeしてるのでダメ)。うおー、だからパッケージ管理システムはキライなんだよ! つーか、NTT PCがFedoraなんて提供してなければオレは死んでもつかわねーぜ!

…とか言ってる場合でもないので、適当にmakeする。jpeg-6bとGDも入ってなかったのでついでに。
% wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz 
% tar xvfz jpegsrc.v6b.tar.gz
% cd jpeg-6b
% ./configure --enable-shared --enable-static
% make
% sudo make install

% wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
% tar xvfz gd-2.0.33.tar.gz
% cd gd-2.0.33
% ./configure
% make
% sudo make install

% wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tgz
% tar xvfz webalizer-2.01-10-src.tgz
% cd webalizer-2.01-10
% ./configure --enable-dns --with-dblib=/usr/lib --with-language=japanese
% make
% sudo install


なぜか --with-dblib=/usr/lib を指定しないとdb 1.85コンパチのヘッダを見に行ってくれないので、勘違いしてdb 1.85をインストールしようと四苦八苦してしまった。ぷんすか。

ていうかこれ、単にIP→ホスト名の巨大ハッシュを一時展開するのにBerkeleyDB使ってるだけなんだよね。だったらバージョンなんて何でもええやん! ぷんぷん! こんなことにすぐdb使うのは誰だ! …ってぼくもよくやるので人のこと言えない。

百年くらい放置しておいた作業なので、ちょっとホッ。

[技術系]   BerkeleyDB 1.85

at 04:43JST
BerkeleyDBの1系が入ってなかった。

% wget http://download.oracle.com/berkeley-db/db.1.85.tar.gz
% tar xvfz db.1.85.tar.gz
% cd db.1.85/PORT/linux
% make

すればいいはずなのだが、
cc -c -D__DBINTERFACE_PRIVATE -O -I. -Iinclude -I../../hash ../../hash/hash.c
In file included from ../../hash/hash.c:55:
../../hash/hash.h:106: error: field `__errno_location' declared as a function
  :

云々と出てmakeできない。

Fedoraなのでyumすればいいか…とも思ったが、パッケージが提供されてない…。これだから男は黙ってSlackwareなんだよ!

と言っているわけにもいかないので、カンでこんなふうにしてみた。
*** db.1.85/hash/hash.h.org     Sun Jan 21 03:52:10 2007
--- db.1.85/hash/hash.h Sun Jan 21 03:53:23 2007
*************** typedef struct htab { /* Memory reside
*** 103,109 ****
BUFHEAD *cpage; /* Current page */
int cbucket; /* Current bucket */
int cndx; /* Index of next item on cpage */
! int errno; /* Error Number -- for DBM
* compatability */
int new_file; /* Indicates if fd is backing store
* or no */
--- 103,109 ----
BUFHEAD *cpage; /* Current page */
int cbucket; /* Current bucket */
int cndx; /* Index of next item on cpage */
! int err_no; /* Error Number -- for DBM
* compatability */
int new_file; /* Indicates if fd is backing store
* or no */

*** db.1.85/hash/hash.c.org Sun Jan 21 04:36:01 2007
--- db.1.85/hash/hash.c Sun Jan 21 03:55:00 2007
*************** flush_meta(hashp)
*** 505,511 ****
else
if (wsize != sizeof(HASHHDR)) {
errno = EFTYPE;
! hashp->errno = errno;
return (-1);
}
for (i = 0; i < NCACHED; i++)
--- 505,511 ----
else
if (wsize != sizeof(HASHHDR)) {
errno = EFTYPE;
! hashp->err_no = errno;
return (-1);
}
for (i = 0; i < NCACHED; i++)
*************** hash_get(dbp, key, data, flag)
*** 536,542 ****

hashp = (HTAB *)dbp->internal;
if (flag) {
! hashp->errno = errno = EINVAL;
return (ERROR);
}
return (hash_access(hashp, HASH_GET, (DBT *)key, data));
--- 536,542 ----

hashp = (HTAB *)dbp->internal;
if (flag) {
! hashp->err_no = errno = EINVAL;
return (ERROR);
}
return (hash_access(hashp, HASH_GET, (DBT *)key, data));
*************** hash_put(dbp, key, data, flag)
*** 553,563 ****

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_NOOVERWRITE) {
! hashp->errno = errno = EINVAL;
return (ERROR);
}
if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
! hashp->errno = errno = EPERM;
return (ERROR);
}
return (hash_access(hashp, flag == R_NOOVERWRITE ?
--- 553,563 ----

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_NOOVERWRITE) {
! hashp->err_no = errno = EINVAL;
return (ERROR);
}
if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
! hashp->err_no = errno = EPERM;
return (ERROR);
}
return (hash_access(hashp, flag == R_NOOVERWRITE ?
*************** hash_delete(dbp, key, flag)
*** 574,584 ****

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_CURSOR) {
! hashp->errno = errno = EINVAL;
return (ERROR);
}
if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
! hashp->errno = errno = EPERM;
return (ERROR);
}
return (hash_access(hashp, HASH_DELETE, (DBT *)key, NULL));
--- 574,584 ----

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_CURSOR) {
! hashp->err_no = errno = EINVAL;
return (ERROR);
}
if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
! hashp->err_no = errno = EPERM;
return (ERROR);
}
return (hash_access(hashp, HASH_DELETE, (DBT *)key, NULL));
*************** hash_seq(dbp, key, data, flag)
*** 729,735 ****

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_FIRST && flag != R_NEXT) {
! hashp->errno = errno = EINVAL;
return (ERROR);
}
#ifdef HASH_STATISTICS
--- 729,735 ----

hashp = (HTAB *)dbp->internal;
if (flag && flag != R_FIRST && flag != R_NEXT) {
! hashp->err_no = errno = EINVAL;
return (ERROR);
}
#ifdef HASH_STATISTICS

*** db.1.85/hash/ndbm.c.org Sun Jan 21 04:36:14 2007
--- db.1.85/hash/ndbm.c Sun Jan 21 03:55:57 2007
*************** dbm_error(db)
*** 180,186 ****
HTAB *hp;

hp = (HTAB *)db->internal;
! return (hp->errno);
}

extern int
--- 180,186 ----
HTAB *hp;

hp = (HTAB *)db->internal;
! return (hp->err_no);
}

extern int
*************** dbm_clearerr(db)
*** 190,196 ****
HTAB *hp;

hp = (HTAB *)db->internal;
! hp->errno = 0;
return (0);
}

--- 190,196 ----
HTAB *hp;

hp = (HTAB *)db->internal;
! hp->err_no = 0;
return (0);
}

なぜかmakeできる…。

あとは
% sudo cp libdb.a /usr/local/lib/
% sudo mkdir /usr/local/include/db185
% sudo cp include/* /usr/local/include/db185
% sudo mkdir /usr/local/include/db185/sys
% sudo cp sys/* /usr/local/include/db185/sys
いいんかいな、これで…。

[雑記]   ローマ字表記を間違えるな〜!

at 00:47JST
ぼくは、いちおう言語学の徒として
「日本語の乱れが…」
「美しくない言葉…」
とかいう独善的な考え方からは一定以上の距離を置くことにしている。言語というのは時間・空間にあわせて変化するものであり、話者が違えばまた様態が変わるものだ。二者間の意志の疎通が合理的にはかれればそれでいいわけで、規範的なものを押しつけるのは間違いだからだ。

でも!
ローマ字表記が間違ってるのだけは見逃せねー!

何が気になっているかというと、
じゃ・じゅ・じょ
のローマ字表記だ。

これを
JYA・JYU・JYO
と書く間違いが巷にはびこっておる!

正しくは
JA・JU・JO
だ!

っていうか、JYAってなんてよむんだよ。
「じゃゃ」?
「J」だけで
「じゅ」
っていう音なんだから、そのあとに「ゃ」を付ける必要はないんだー!

JYAなんていう表記は訓令式にもヘボン式にもない。
参考:
http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E5%AD%97

はっきり言って居酒屋の
「NIJYUMARU」
はぼくにとって悪の総本山だ。どうせお酒飲まないけど。

なんでこんなことを書いているかというと、さっき「ジャパンカウントダウン」のランキングに、「JY」表記をしているアーティストが出てきたから…。事務所気付けよ…。万一「MEJYA」になったら恥ずかしいじゃないか。

2007/01/20

[雑記]   あー

at 23:55JST
あふれるような才能がほしいな。

才能があれば、やる気は一滴しかなくてもなんとかなりそうな気がする。

[技術系]   USBスピーカー

at 04:12JST
http://memo.hirosiki.jp/article/31535454.html

で、書いた「音が出なくなったPC」。結局、作業にならないので音源を別途買うことにした。

しかしサウンドカードは今どきハイエンドの高いものしか見かけない。USB音源ユニットなら安いが…どっちにしても外にアクティブスピーカーをつけなきゃいけないから電源も必要になる。

と悩んでハタと思い出した。最近は「USBスピーカー」というものもあったんだ。

 SANWA SUPPLY MM-SPU2SV USBスピーカー シルバー: エレクトロニクスSANWA SUPPLY
MM-SPU2SV USBスピーカー


早い話、USBのサウンドユニットとスピーカーを一体化させたものだが、これならUSBポートに刺すだけでOK。スピーカーのアンプ用電源を取る必要もないからエコロジカルでお金もかからない。おまけに店頭で念入りに探したら1,000円台だった。ほっ。

このスピーカーはWindows標準ドライバで動作する素直なやつ。添付ソフトで疑似5.1ch化が可能だ。…やってみたけど効果はぜんぜんわからんかった。どうでもいいや。

USBサウンドユニットはWindows 98くらいのときに試して、
「なんかCPU負荷が気になるな…」
ということで使わなくなっていた。音質がいいとか言われてもわかんないし。

最近のPCでは、そもそもオンボードの音源もそもそも半分ソフトウェア処理みたいなもんだし、そんなに負荷は気にならないようだ。それに、しつこいようだがスピーカーの電源を別に用意しなくていいのがうれしい。昔のP6とか
「スピーカーなんぞマイコンに内蔵されてるのが当然」
だった機械に慣れ親しんでいると、どうもね…。自作では必ず3.5インチベイにスピーカー内蔵させたりしてたし。

まあ、音源が壊れるなんて経験は滅多にないことだけれど、今後も同じ目に遭ったらUSBスピーカーで解決しよう。
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。