2009年7月31日金曜日

(Solaris) SUN_LENがundefined

先日、Solaris8で見たこと。



pkgsrcで、xrandrをxrandr-1.3.0へアップデートしようとしたら、pkgsrc/math/nickleというのもついでにビルドされるようになったんですが、途中で、こんなエラー



In file included from lex.l:16:
/work/pkgsrc.work/math/nickle/work/.buildlink/include/readline/readline.h:379: warning: function declaration isn't a prototype
lex.c:2680: warning: 'yyunput' defined but not used
gcc -Wall -Wpointer-arith -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations  -Wnested-externs -fno-strict-aliasing -fwrapv -O -I/usr/pkg/include -I/usr/include -I/usr/pkg/gcc34/include  -L/usr/pkg/gcc34/bin/../lib/gcc/sparc-sun-solaris2.8/3.4.6 -Wl,-R/usr/pkg/gcc34/bin/../lib/gcc/sparc-sun-solaris2.8/3.4.6 -L/usr/pkg/gcc34/bin/../lib -Wl,-R/usr/pkg/gcc34/bin/../lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/gcc34/lib -o nickle  alarm.o array.o atom.o  box.o compile.o debug.o  divide.o edit.o error.o  execute.o expr.o file.o  float.o foreign.o frame.o  func.o gcd.o hash.o int.o  integer.o io.o main.o mem.o  natural.o pretty.o profile.o  rational.o ref.o refer.o  sched.o scope.o stack.o  string.o struct.o symbol.o  sync.o type.o union.o util.o  value.o builtin-command.o  builtin-debug.o builtin-environ.o  builtin-file.o builtin-math.o  builtin-semaphore.o builtin-sockets.o  builtin-string.o builtin-thread.o  builtin-toplevel.o builtin-pid.o  builtin.o builtin-foreign.o gram.o  lex.o  -ldl -lresolv -lsocket -lnsl -lm  -lreadline -lncurses
Undefined                       first referenced
symbol                             in file
SUN_LEN                             builtin-sockets.o
ld: fatal: Symbol referencing errors. No output written to nickle
collect2: ld returned 1 exit status
*** Error code 1



nm builtin-sockets.oしてみると、ああなるほど、未定義だね、と。



[42]    |         0|       0|NOTY |GLOB |0    |UNDEF  |Reduce
[27]    |         0|       0|NOTY |GLOB |0    |UNDEF  |SUN_LEN
[47]    |         4|       4|OBJT |GLOB |0    |COMMON |SocketNamespace
[35]    |         0|       0|NOTY |GLOB |0    |UNDEF  |StackPush
[54]    |         0|       0|NOTY |GLOB |0    |UNDEF  |StackReset



とりあえずソースコードを、grep SUN_LEN * してみると、



builtin-sockets.c:    *len = SUN_LEN (addr);



・・・と、これしかない。マクロっぽい名前なので



ggrep -R SUN_LEN /usr/include/ とかやってみますと、なにもない。そりゃぁ未定義になるわけです。



FreeBSDで同じくgrepしてみますと、すぐ見つかりました。



% grep -R SUN_LEN /usr/include/
/usr/include/sys/un.h:#define SUN_LEN(su) \



↓ こんなのです。



#define SUN_LEN(su) \
        (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))



というわけで、上記の2行を、builtin-sockets.cの中にコピー&ペーストして、解決させました。





ネット検索してみると、SUN_LENがSolarisには無い、というのはどうもFAQっぽいですね。



大体15年くらい昔は、インターネット上で配布されているソフトウェアは(あのころは、オープンソースなんて用語はなかった)、SunOSでビルドできるのが当然、というくらいにSunOSの地位は高かったんですが、Linux等の台頭につれて、それもなくなりました。



ちなみに、SUNってのは会社名のことじゃなくて(誰もそんなことは思わないか)、UNIX domain Socketのことですね。



それにしても、このマクロSUN_LENの中身、低レベルなことやってて、いかにもC言語っぽいなぁ。



でも、こういうのができるからこそ、C言語だ、という気がします。



どっちかというと、sockaddr_un構造体の定義自体が、なんだかなぁ、という気がします。



FreeBSDの場合、こんなの。



/*
* Definitions for UNIX IPC domain.
*/
struct sockaddr_un {
        unsigned char   sun_len;        /* sockaddr len including null */
        sa_family_t     sun_family;     /* AF_UNIX */
        char    sun_path[104];          /* path name (gag) */
};



まあ、今どきの考え方に照らし合わせてみると、気持ち悪い、ってことですが。
なんだよ、104って何?みたいな。



2009年7月30日木曜日

(FreeBSD) panic get_pv_entry: increase vm.pmap.shpgperproc

いろいろと忙しく仕事している、(5月ころbuildworldした)FreeBSD 7.2-STABLEなマシンで、先日、kernel panicが発生しました。

get_pv_entry: increase vm.pmap.shpgperproc

というメッセージが残されていました。



しかも、このkernel panic、立て続けに、数回発生。



けっこう安定して動作していたのに、突然の連続kernel panicで、ちょっと嫌な気分。



ネット検索してみると、この辺に、似たような話を発見。7.0-RELEASE-p5の場合で、ちょっと違いもありますが。



kernel: Approaching the limit on PV entries...
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=2052953+0+archive/2008/freebsd-questions/20081012.freebsd-questions



kernel panicするという話も、こちらに出てます。
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=2082943+0+archive/2008/freebsd-questions/20081012.freebsd-questions



pv_entryについて、少し解説がされてました。
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=2094590+0+archive/2008/freebsd-questions/20081012.freebsd-questions





このpanicを発生させているのは、src/sys/i386/i386/pmap.cです。



7.2-STABLEは、RELENG_7ブランチなので、ソースコードはこれ(i386版なので)。
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/i386/pmap.c?rev=1.594.2.18;content-type=text%2Fplain



get_pv_entryという関数の中ですね。



私が見たケースでは、

Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable.

というメッセージは残っていませんでした。ディスプレイを接続していなのでわかりませんが、コンソール画面には出ていたかもしれないですけど。



さてさて、

get_pv_entry: increase vm.pmap.shpgperproc

でkernel panicしてるのは、ここですが・・・



/*
* Access to the ptelist "pv_vafree" is synchronized by the page
* queues lock.  If "pv_vafree" is currently non-empty, it will
* remain non-empty until pmap_ptelist_alloc() completes.
*/
if (pv_vafree == 0 || (m = vm_page_alloc(NULL, colour, (pq ==
    &vm_page_queues[PQ_ACTIVE] ? VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL) |
    VM_ALLOC_NOOBJ | VM_ALLOC_WIRED)) == NULL) {
    if (try) {
        pv_entry_count--;
        PV_STAT(pc_chunk_tryfail++);
        return (NULL);
    }
    /*
     * Reclaim pv entries: At first, destroy mappings to
     * inactive pages.  After that, if a pv chunk entry
     * is still needed, destroy mappings to active pages.
     */
    if (pq == NULL) {
        PV_STAT(pmap_collect_inactive++);
        pq = &vm_page_queues[PQ_INACTIVE];
    } else if (pq == &vm_page_queues[PQ_INACTIVE]) {
        PV_STAT(pmap_collect_active++);
        pq = &vm_page_queues[PQ_ACTIVE];
    } else
        panic("get_pv_entry: increase vm.pmap.shpgperproc");
    pmap_collect(pmap, pq);
    goto retry;
}



よくわからないっす。[E:coldsweats01]



panicするんじゃなくて、システムコール(?)を失敗させるとか、もしくは、processをkillしちゃうとか(どうも、ここで必要なメモリ量は、process数と関係しているっぽいので)、何かもう少しましな方法があるんじゃないかと思うのですが・・・



swap不足になったとき、processがどんどこkillされたりしますねよ。あんな感じでいいので、とりあえず、OSとしては運用を継続して欲しいところです。



panicされちゃうと、file systemがdirtyのままになるので、fsckに時間がかかってたまらないし、なによりも、ファイル内容の破壊が怖いです。





とりあえずの解決方法。



vm.pmap.shpgperprocを増やせ、といってるので、増やしてみました。



これ、OSが立ち上がった後では変更できないパラメータなので、/boot/loader.confで指定しなければなりません。



ですが・・・、どんだけ増やせばいいのか? よくわかんないです。



デフォルトが200で、とりあえず50増やしてみて、やっぱりpanic。また50増やして・・・とやっていって、400でどうやらpanicしなくなったようです。



何をしたとき、pv_entryが不足するのか?・・・それが気になって、こんなシェルスクリプトを走らせておいて、いろいろ負荷をかけて観察してみました。

#! /bin/sh



( while [ /bin/true ] ; do
    sysctl vm.pmap
    sleep 0.5
  done ) | awk '
/pg_ps_enabled/ { printf("\n"); }
{ printf("%d ", $2); }
'

実行すると、こんな感じで、sysctl vm.pmapで表示される値を、表示しつづける、というもの。一部のパラメータは(ひたすらカウントアップしていくらしい)、signed intのために、負の値へ突入しちゃってますね。



0 0 0 68464 -2143457166 -2144110094 0 8838034 8840181 2147 652928 0 0 0 0 400 3362352
0 0 0 68797 -2143455008 -2144107939 0 8838043 8840191 2148 652931 0 0 0 0 400 3362352
0 0 0 68922 -2143449222 -2144106732 0 8838049 8840211 2162 657510 0 0 0 0 400 3362352



ところで、このスクリプト、改行位置が1列分、ずれてるみたい。awkで実行する2行を入れ替えればいいのかな。



で、観察してみたんですが、panicしなくなっちゃって、結局よくわからなかったです。
けっこうたくさんのプロセスが起動していても、手計算してみると、80%くらい、余裕で空きがあるように見えたんですが。



よくわかんないですねぇ・・・



% sysctl vm.pmap
vm.pmap.pmap_collect_active: 0
vm.pmap.pmap_collect_inactive: 0
vm.pmap.pv_entry_spare: 68508
vm.pmap.pv_entry_allocs: -2142835831
vm.pmap.pv_entry_frees: -2143492075
vm.pmap.pc_chunk_tryfail: 0
vm.pmap.pc_chunk_frees: 8840296
vm.pmap.pc_chunk_allocs: 8842453
vm.pmap.pc_chunk_count: 2157
vm.pmap.pv_entry_count: 656244
vm.pmap.pde.promotions: 0
vm.pmap.pde.p_failures: 0
vm.pmap.pde.mappings: 0
vm.pmap.pde.demotions: 0
vm.pmap.shpgperproc: 400
vm.pmap.pv_entry_max: 3362352
vm.pmap.pg_ps_enabled: 0



しかも、これって、一般ユーザー権限でkernel panicを発生させられちゃうので、local user exploitableなDoSじゃん? と思うわけで・・・



2009年7月29日水曜日

赤い雲

藤子・F・不二雄の全集の3冊は、後日じっくりと読むことにして、先に読み始めていたこっちの本。



200907281



西岸良平名作集
赤い雲



猫のワニ丸が、途中から、かわいい絵になっていくように見えたんですが、「この猫、いいキャラだ、使えるぞ」なんて思って、路線変更したんでしょうかね。



さて、最近は少なくなりましたが、一昔前は、「兄と妹」という設定は、アニメでよくありました。



その兄と妹モノを西岸良平に描かせると、こうなるぞ!って感じでしょうか[E:happy01]



200907282



といってもこんな↑作品じゃないです、この本は。このコマだけ。



 



2009年7月28日火曜日

07月28日のココロ日記(BlogPet)

今週のブログ妖精界でのヒットソングは「在庫のラブソング」みたいです。

*このエントリは、ブログペットのココロが書いてます♪

藤子・F・不二雄大全集

最初に、藤子・F・不二雄の全集が出ると聞いたとき、正直なところ、一瞬ひるみました。



いったい、何冊でるんだ。価格はいくらになるんだ。全集とはいえ、収録されない作品もあるんじゃないか・・・などなど。



というわけで、あんまりノリ気ではなかったんです。そろそろ発売なんだっけ?あれ、7月24日に発売されてたんだ!そんな感じ。



それが昨日、7月25日の土曜日の夜のこと。全集のウェブサイトで情報収集して、とりあえず、最初だけ買ってみて、それで考えようかな、そういう気分になってきました。



で、amazonをチェックしたら(amazonで本を買ったことないけど)、おっと、在庫切れ。あれ?何、意外と評判よかったりするの?



なんてことになり、日曜日の昼、自転車で、駅にある本屋に行ったら・・・、売ってねー。ポスターは貼ってあるけど。当書店で全巻予約受け付けてますよ~というポスター。その書店は、先ごろ出た「TPぼん」の3巻を発売日直後には売ってたくらいの規模だから(よくわからない例えだな)、そんな小規模ではないんです。



日曜日の昼間。カンカン照りの真夏状態。ひょっとして、自転車であちこち書店めぐりしないとまずいっすかね?なんて予感がしつつ、隣の駅の近くの書店に行ったら、幸運にも、めぐりあうことができました。平積みで。あーよかった。



20090727



  • パーマン


  • オバケのQ太郎


  • ドラえもん


オバケのQ太郎は、大人の事情なのかよくわかりませんが、事実上の廃刊状態というか、新品の本は流通しておりませんでして、近年、入手難が続いてました。しばらく前の「コロコロ伝説」で、ちょっと風向き変わったかな、という状況になってきていたところへ、今回の全集の刊行。これはとてもうれしいですね。



さてさて、予想以上に、分厚いです、この本。持って帰るのが、ちょっと苦労しました。



そして、寝転んで読むには、腕が疲れます。



買ってきてすぐに、とりあえず、3冊の中で、一番薄い「パーマン」を読み始めたんですが、まだ5分の1くらい。



感想を書こうにも、まだそんなじゃ書けません。



1つだけ。



私が持っている文庫版では、たしか「超人」ってなっていたところが、今回の全集では、「スーパーマン」になっていて(初出に戻った!)、なかなか好感をもてます。







2009年7月26日日曜日

こんなの誤検出だよね! と思ってた ~ AVGでiTunesが「トロイの木馬Small.BOG」

AVG Avti-Virus Free Editionがをインストールしてかれこれ何年、役にたってるのかどうかまったくわかりませんでしたが、昨日、初めて、なにやら感染してるぞ~!とか言い出して・・・「トロイの木馬Small.BOG」って。



200907261



iTunesが起動しなくなったなぁ・・・まぁいっかぁ[E:coldsweats01]



200907262



こんなの、どうせ誤検出にきまってる!!と決め付けて無視しておりました[E:happy01]



案の定、さっきAVGのアップデートを実行したら、AVGは文句を言わなくなりました。



Googleで検索してみると、これは誤検出だと言うブログ記事がたくさん見つかりますが、AVGのウェブサイトでは、見つけられなかった ・・・無料版だからっすか?



燻製のようなもの

20090725



先週、ひさしぶりに、段ボール箱で、燻製(のようなもの)を作りました。
すぐに火が消えてしまって、けっこう手間取りました。



やっぱりチーズは、燻製にすると、すごくおいしくなります。



2009年7月25日土曜日

パインマンゴー

20090724



ベトナム式ミックス飲料
パインマンゴー



あまりマンゴーな風味は全面には出てなかったです・・・



そういえば、今年は、マンゴーな飲み物・食べ物をあまりみかけないなぁ。ブームは終わった、ということかな。





ローソンでも今おにぎりが100円というので行ってみたら、もともと105円のおにぎりばっかりだった。なんだかなぁ・・・



瞬殺で売り切れていたのか、もともと数が少ないのか、それとも、今だけ数が少なくされているのか。



別のコンビニで100円のときは、いつも、ちゃんとそろってるけどな。全部売り切れのときもあったけど。



■ 過去記事





2009年7月24日金曜日

(FreeBSD) portsのdevel/gettextは、textproc/libcrocoに依存していないようで、実は依存してる

FreeBSDでportsでインストールしたソフトウェアのうち、不要なものをどんどこアンインストールしていったら、gettext関係のコマンドが動かなくなりました。



% ldd /usr/local/bin/msgfmt
/usr/local/bin/msgfmt:
        libgettextsrc-0.17.so => /usr/local/lib/libgettextsrc-0.17.so (0x48085000)
        libgettextlib-0.17.so => /usr/local/lib/libgettextlib-0.17.so (0x480b7000)
        libcroco-0.6.so.3 => /usr/local/lib/libcroco-0.6.so.3 (0x4818a000)
        libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x481bb000)
        libz.so.3 => /lib/libz.so.3 (0x482d3000)
        libm.so.4 => /lib/libm.so.4 (0x482e4000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x482fa000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x4839e000)
        libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x483a7000)
        libncurses.so.6 => /lib/libncurses.so.6 (0x483d6000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x48413000)
        libc.so.6 => /lib/libc.so.6 (0x4850a000)



ということになっているので、gettextはlibcrocoに依存しているのでした。libcrocoをアンインストールしちゃったので、ダメになった、と。



しかし、portsのdevel/gettextを見ても、libcrocoへの依存関係はどこにも指定されていませんし、pkg_infoで見ても



% pkg_info -r gettext-0.17_1
Information for gettext-0.17_1:



Depends on:
Dependency: libiconv-1.13.1



ということなので、ports的には依存関係はない、とされています。そのため、libcrocoをあっさりとpkg_deleteできてしまうのです。ところが、gettextが共有ライブラリlibcrocoをリンクしている!



gettextのconfigureスクリプトをながめていると



  • libcrocoがインストール済みだった場合は、そのインストール済みのlibcrocoを使う


  • libcrocoがインストールされていない場合は、gettextの配布パッケージ内にあるlibcrocoを使う


という挙動になっているようです。



gettextのconfigureは、このへんのファイルがあるかどうかで、判断しているようです。



% ls -l /usr/local/include/libcroco-0.6/libcroco/libcroco-config.h
-r--r--r--  1 root  wheel  258  2 16 13:20 /usr/local/include/libcroco-0.6/libcroco/libcroco-config.h



gettextのconfig.logでは、こんな感じ。



configure:30907: result: yes
configure:30795: checking libcroco-0.6/libcroco/libcroco-config.h usability
configure:30812: cc -std=gnu99 -c -O2 -fno-strict-aliasing -pipe -I/usr/local/in
clude conftest.c >&5
configure:30818: $? = 0
configure:30832: result: yes
configure:30836: checking libcroco-0.6/libcroco/libcroco-config.h presence
configure:30851: cc -E -I/usr/local/include conftest.c
configure:30857: $? = 0
configure:30871: result: yes
configure:30899: checking for libcroco-0.6/libcroco/libcroco-config.h
configure:30907: result: yes



生成されたMakefileをgrepしてみました。



% grep croco Makefile
        $(top_srcdir)/gnulib-m4/libcroco.m4 \
INCCROCO = -I///usr/local/include/libcroco-0.6/libcroco
LIBCROCO = /usr/local/lib/libcroco-0.6.so /usr/local/lib/libglib-2.0.so /usr/local/lib/libintl.so /usr/local/lib/libpcre.so /usr/local/lib/libxml2.so -lz /usr/local/lib/libiconv.so -lm -Wl,-rpath -Wl,/usr/local/lib
LTLIBCROCO = -L/usr/local/lib -lcroco-0.6 -L/usr/local/lib -lglib-2.0 -L/usr/local/lib -lintl -L/usr/local/lib -lpcre -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -liconv -lm -R/usr/local/lib



というわけで、

ports/devel/gettext/Makefileに、libcrocoへの依存関係を追加したほうがいいんじゃない?



と思ったのですが



% pkg_info -r libcroco-0.6.2
Information for libcroco-0.6.2:



Depends on:
Dependency: python25-2.5.2_3
Dependency: perl-5.8.9_3
Dependency: pkg-config-0.23_1
Dependency: pcre-7.9
Dependency: libiconv-1.13.1
Dependency: libxml2-2.7.3
Dependency: gettext-0.17_1
Dependency: glib-2.20.4
Dependency: gamin-0.1.10_3
Dependency: gio-fam-backend-2.20.4



というように、libcroroがgettextに依存しているため、依存関係のループができてしまいます。



gettextの配布パッケージ内のファイルを適当にgrepしてみますと



configure:  --with-included-libcroco  use the libcroco included here



なんてのが出てくるので、gettextをconfigureするときに、--with-included-libcroco を追加すればよさそうです。



ほかにも方法があるかもしれませんが、/usr/ports/devel/gettext/Makefile の中の



CONFIGURE_ARGS= --disable-csharp --disable-threads --disable-openmp





CONFIGURE_ARGS= --disable-csharp --disable-threads --disable-openmp --with-included-libcroco



にすると、うまいこといきました。



% ldd /usr/local/bin/msgfmt
/usr/local/bin/msgfmt:
        libgettextsrc-0.17.so => /usr/local/lib/libgettextsrc-0.17.so (0x48085000)
        libgettextlib-0.17.so => /usr/local/lib/libgettextlib-0.17.so (0x480b7000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x481b8000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x4825c000)
        libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x48265000)
        libncurses.so.6 => /lib/libncurses.so.6 (0x4829d000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x482da000)
        libc.so.6 => /lib/libc.so.6 (0x483d1000)



/usr/local/lib/libcroco.soのほうは、libxml2とかもリンクしているのに、gettextに付属のlibcrocoではlibxml2は出てこないので、何か違いが生じるのかもしれませんが・・・





Makefileを書き換えずに



make CONFIGURE_ARGS+="--with-included-libcroco"



でもうまくいくんじゃないかと思ったんですが、infoファイルをインストールする最中に、エラーが出てしまいました。



どうやら、configureのオプションに、「--infodir=/usr/local/info/」など、いろいろ追加されなければいけないのに、make CONFIGURE_ARGS+=~で実行してしまうと、そういったportsが裏でコッソリ追加してるオプションが付かなくなってしまい、それでエラーになるようです。



え~?そうなの??
なんか勘違いしてるかも。



2009年7月23日木曜日

DSiをUSBで充電

ドラクエ9のために、こんなのあると便利なんじゃない?!と思って買っておきました。



20090722



・・・が、たいして使ってない。



充電するのって、3~4日に1回くらい? [E:coldsweats01]



これ、接触が悪い。安物買いの銭失いか。






2009年7月22日水曜日

ソテツの花 ~ あれから1ヵ月後

1ヶ月前は





メロンみたいだったのが・・・



200907211



のびた・・・





近所でも、あちこちで、ソテツの花が咲いているとのこと。



実は、毎年咲いてるのに気がついてなかったのか、それとも、今年が何か特別な年だったのか?





こっちが、雌の花。



200907212



うぐぅ かなりグロテスク。





雄の花



200907213



 



2009年7月21日火曜日

07月21日のココロ日記(BlogPet)

にょほほさんとおしゃべりしていると、ココロはブログ妖精だということを忘れてしまいそうです。どうしてですか…?

*このエントリは、ブログペットのココロが書いてます♪

のっぽパン

のっぽパン。こどものころ、おやつで、たくさん食べました。もう一生分食べた。



ところが、数年前に販売終了になってしまい、食べられなくなると、逆に、食べたくなる。



とか思ってたら、復活してやんの。うれしいじゃねぇか。



また食べられるとなると、まあ、そんな急いで食べることもないかという気に。当初、売ってる店も1箇所に限られていたし。



そんな感じで、また食べる気が薄れてしまい・・・



気まぐれだなぁ。



やっと再会できました。



200907201



  • チーズクリーム


  • カマンベール


  • チョコ





200907202



  • 柚子はちみつ


  • ピーナッツ


  • クリーム


こどものころは、たしか50円だったけど、今のは、ちょっと高級感を狙っている感じ。



あのころののっぽとは、なんか違うかな。



200907203



2009年7月20日月曜日

花火 2009



毎年、2階から花火が見えてたんですが、今年は会場が移動したのか、少し見にくくなったので、海まで移動して、見てきました。





20090719_4843



20090719_4854



20090719_4868



20090719_4882



20090719_4885



20090719_4886



20090719_4889



20090719_4894



20090719_4897



20090719_4900



20090719_4906



20090719_4909



コンパクトデジカメを手持ちでマニュアル撮影したので、手ぶれしまくり。



海は風が涼しくて気持ちよかったです。



でも、あっちのイベントも行きたかった・・・










■ 過去記事







2009年7月19日日曜日

マミー サマーピーチ

20090718



夏ですね。暑いですね。蒸しますね。



夜になると、ヒグラシの声がきこえてきたりして、涼しげな感じで、実際は、ぜんぜん涼しくはないですが。



こどもたちは、もう夏休みでしょうか。



高速道路や列車は混んでたりするんでしょうか。



今日は一日あれこれ忙しく、自転車でアキバにも行って用事をすませ、5分もしないうちすぐに戻って、夜、電車に乗って・・・あれれ、電車はけっこうすいてた。



 





■ 過去記事







2009年7月18日土曜日

microSDメモリカードのUSBアダプタ



200907172



micro SDカードを、USB接続するアダプタを買ってみました。値段は100円で、とても怪しげなもの。



ろくな説明書もなく、最初、どこにmicro SDを入れるのかわからなかったんですが、カバーを外して、やや強引に突き刺すようになってました。



20090717



なお、「リーダー」と書いてあるけど、読むだけでなく、書き込みもできました。



小さいので、何かおもしろいことにつかえそうな気がします。



それよりも、100円ってところが、いいですね。





以前、2008年2月に

microSDメモリカードをまた買ってきた

と書いたときは、2GBのmicro SDが1480円だったとのこと。今は500円前後のようです。



一番安いときは、400円くらいじゃなかったかな?





2009年7月17日金曜日

安善駅

20090716



安善駅って変わった名前だなぁ、と思ってウィキペディアを見たら、安田善次郎を縮めた名前なんだそうで・・・



安田善次郎って誰?と思えば、オノ・ヨーコのひいおじいさんだそうで・・・



以上、だからどうした、という話でした。



P.S.
鶴見線って、いったいどういう風に走ってるんだろう???と路線図を見るたびに不思議に思います。



2009年7月16日木曜日

浜川崎駅

20090715



ここも南武線なんだ・・・



ところで、新川崎から浜川崎へ行くには、「徒歩で鹿島田」をやらない場合、今は、品川へ行かなくちゃならないらしい。駅名は似てても、線路としては遠い。



200907152

横須賀線の武蔵小杉駅って、いったいいつできるんだ?





2009年7月15日水曜日

じゅうぶんです

ドラクエ9に関する批評がいろいろあるようですが、私は、これで十分満足してます。



私の評価基準は非常に低くて、最後にやったドラクエが、10数年前のスーパーファミコンのドラクエ5、ドラクエ6だし・・・。



一番印象に強く残っているのが、ファミコンでやったドラクエ3なので、それと比べて、どれくらいよくなっているか?! てな感じで評価しちゃう。



おそらく、今現在、ファミコン版DQ3やったとしても、十分満足するかも・・・DQ3は攻略本がないと、きついか。



DSでドラクエ9をやってて、現時点で、残念だと感じているのは、

寝っころがってやってると、DSiが重たくて、手がかったるい

ということです。



20090714




写真は本文とまったく関係ありません。





2009年7月14日火曜日

やりはじめたら、止められなくなった

ドラクエ9。



最後にやったのは、スーパーファミコンのとき。



どうして、こんな単純な反復作業に、こんなにものめりこんでしまうんだろう。



現実社会では、努力したって必ずしも報われないけど、ゲームの中でなら、やればやっただけ、きちんと報酬がある。そんなところも、ひとつの要因なんじゃないかな。



20090713



写真は本文とは関係ありません。






2009年7月13日月曜日

07月13日のココロ日記(BlogPet)

まさか、にょほほさんがするなんて!今日は眠れません。

*このエントリは、ブログペットのココロが書いてます♪

カレー柿ピー

20090712



そこそこうまい。
でも、柿ピーと、カレー味のスナック、別々に食べたほうが、それぞれの個性がよく出る気がする。



2009年7月12日日曜日

DQIX

べつに、今日買わないともう手に入らないってことはないでしょうが、とりあえず買ってきました。



20090711



ドラゴンクエスト IX
星空の守り人



けっこう大きな家電量販店で昼をだいぶ過ぎたころに買ったんですが、「どのレジでも買えます」という、かなりの力の入れ方。まったく並ぶことなく、ふらっと立ち寄って、すぐに買えました。しかも、ポイントだけで精算できちゃった。



セーブデータが1つしかないので、1人1本買わなきゃいけない
・・・これはうまいやり方を考えつきましたね。





まだ、買ったまんまの状態です。



とりあえず、数ヶ月ぶりにDSiの充電をしようかな、そんな程度の心意気です。





ドラクエとはまったく関係ないですが・・・



エレメントハンターの、まれに見る駄作っぷりに、逆に、目が離せません。こんなのを、土曜の6時から放送するか、と。しかも、第2話放送前に、第1話を再放送までする力のいれよう(これは、単にNHKでは恒例のやり方という気もするけど)。
以前、サイエンスチャンネルでやってた、超低予算で制作したと思われる科学アニメを思い出しました。



通常は、オープニングとエンディングは力を入れて作る、とか、第1話は最高のクオリティで仕上げる、そんな感じなのが多いですけど、エレメントハンターのへっぽこぶりは、ある意味、これまでの日本のアニメーションの手法へのアンチテーゼなのではないかと、深読み、深読み





200907112



唯一、おっと思ったのが、エンディングの歌詞?



地域、学校、教わった先生ごとに、元素の周期表の覚え方はいろいろあるでしょうが、私が覚えているもの。



元素番号1~20:
すいへいりーべ ぼくのふね ななまがり しっぷす くらーくか
(「チャート式 化学」では、リーベは、ドイツ語で恋人の意味、とわざわざ注釈があったような)



元素番号19~36:
かっか すこっち ばくろーまん てこに どあが げあっせぶるく



1族:
りっちな かーちゃん るびー せしめて ふらんすへ



ハロゲン:
ふっくら ぶらじゃー あいのあと



希ガス:
へんな ねーちゃん あるひ くらやみ きすの れんしゅう





おまけ



イオン化傾向:
かそうかな まあ あてにすな ひどすぎる しゃっきん



炎色反応:
するりとかるく なわばりほどく (虹の色の順序。ただし、虹の色がわかんねぇ[E:coldsweats01])
リアカーなき K村 どうせ かるとすれど ・・・あ、思い出せない[E:bearing]







2009年7月11日土曜日

コッペパン マンゴー&ホイップ

先日、同時に3種類も新しいコッペパンを見かけたと思ったら、また1種類、見つけました。



20090710



コッペパン
マンゴー&ホイップ




これも、「神奈川県産牛乳入り」と書かれていました。



1個、398kcal。まあ菓子パンってのはこれくらいカロリー高いんだよな、って感じのところ。



そういえば、今年は、アルフォンソマンゴー水が売ってない。





■ 過去記事





2009年7月10日金曜日

わかってるようでわかっていなかった/bin/shスクリプトの挙動

シェルスクリプト(/bin/sh)で、コマンドが実行されるとき、最終的に引数がどうなるか・・・わかっていたつもりで、全然わかってなかったんだ、ということ。



まず、動作確認用に、こんなかんじで、引数を確認できるプログラムを用意しておきます。

% cat arg.c
#include <stdio.h>
int
main( int argc, char* argv[] )
{
    for ( int i=0; i < argc; i++ ) {
        printf("%d: |%s|\n", i, argv[i]);
    }
    return 0;
}

コンパイルします。

% gcc -std=c99 -o arg arg.c

余談ですが、いつのまに、こんなエラーが出るようになっていたのかと。浦島太郎な気分。

% gcc -o arg arg.c
arg.c: In function 'main':
arg.c:5: error: 'for' loop initial declaration used outside C99 mode

% gcc -v
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]

ここからが本題。



こんなシェルスクリプトを

% cat test.sh
#! /bin/sh



LIST="aa bbb ccc"
./arg $LIST

実行してみると

% sh test.sh
0: |./arg|
1: |aa|
2: |bbb|
3: |ccc|

まあ、こうなりますよね。引数は、バラバラになると。



次の例。変数をダブルクォートで囲む場合

% cat test2.sh
#! /bin/sh



LIST="aa bbb ccc"
./arg "$LIST"

実行すると

% sh test2.sh
0: |./arg|
1: |aa bbb ccc|

この場合は、引数は1個のまま、まとめられます。



ここからちょっと改変して、実行するコマンドも、変数に入れてしまった場合。

% cat test3.sh
#! /bin/sh



LIST="aa bbb ccc"
CMD="./arg $LIST"
$CMD

実行してみると

% sh test3.sh
0: |./arg|
1: |aa|
2: |bbb|
3: |ccc|

そうなるでしょうね。



私がどうしたらいいのか悩んだのは、次の例。引数がばらされないようにするには、どうしたらいいんでしょうか。
ダブルクォートをエスケープしてやればいい?

% cat test4.sh
#! /bin/sh



LIST="aa bbb ccc"
CMD="./arg \"$LIST\""
$CMD

実行してみたら・・・

% sh test4.sh
0: |./arg|
1: |"aa|
2: |bbb|
3: |ccc"|

うおぉっ、そうきましたか。



気持ち悪いんですが、evalを使うと

% cat test5.sh
#! /bin/sh



LIST="aa bbb ccc"
CMD="./arg \"$LIST\""
eval $CMD

このときは

% sh test5.sh
0: |./arg|
1: |aa bbb ccc|

ああ、できるんですね。



shのマニュアルを読んでみたら、へーそうだったんだ、と納得。わかってるようでいて、ぜんぜんわかっていなかったり、忘れていたり。



FreeBSDのshのマニュアル
http://www.freebsd.org/cgi/man.cgi?query=sh&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html



この中に、「Word Expansions」という節があって、そこに、上記の疑問へのそのものずばりな解説が書かれていました。

Word Expansions



This clause describes the various expansions that are performed on words. Not all expansions are performed on every word, as explained later.



Tilde expansions, parameter expansions, command substitutions, arithmetic expansions, and quote removals that occur within a single word expand to a single field.  It is only field splitting or pathname expansion that can create multiple fields from a single word.  The single exception to this rule is the expansion of the special parameter @ within double-quotes, as was described above.



The order of word expansion is:



1.   Tilde Expansion, Parameter Expansion, Command Substitution, Arithmetic Expansion (these all occur at the same time).



2.   Field Splitting is performed on fields generated by step (1) unless the IFS variable is null.



3.   Pathname Expansion (unless the -f option is in effect).



4.   Quote Removal.



The `$' character is used to introduce parameter expansion, command substitution, or arithmetic evaluation.


「sh -vx」で実行すると、わかりやすいような、わかりにくいような感じですけど・・・

% sh -vx test4.sh
#! /bin/sh



LIST="aa bbb ccc"
+ LIST=aa bbb ccc
CMD="./arg \"$LIST\""
+ CMD=./arg "aa bbb ccc"
$CMD
+ ./arg "aa bbb ccc"
0: |./arg|
1: |"aa|
2: |bbb|
3: |ccc"|

これからわかるように、そもそも、変数CMDの中身は、

./arg "aa bbb ccc"

となっている。



最後の

$CMD

がどう解釈さるのか、よく理解できていなかったのですが、shのマニュアルによれば、1で、変数が展開されるので

./arg "aa bbb ccc"

になる。



2で、空白の位置で分割がされて

「./arg」 「"aa」 「bbb」 「ccc"」

になる。もうここでダメですね。



ただ、4のquote removalで、「"aa」はどうなってるんだ?という気がする・・・



うーん、わかったような、わかんないような。



■ 過去記事





2009年7月9日木曜日

Western Digital WD10EADS-00M2B0 (1TB, 32MB cache, 500GBプラッタ)

どうやら、ハードディスクが1個、やばいかも?というわけで、新しいハードディスクを買ってきました。
でも、まだ、開けてません。なかなか時間がとれなくて。



とはいうものの、今すぐ欲しい!ということで、駅の近くの、ビックカメラで買ってしまいました。





200907081 あ~やっぱりCFDだった



それにしても、ソフマップで冷蔵庫を買って、ビックカメラでHDDを買う時代が来るとは・・・
まあ、どっちも同じじゃないか?!って気もするけど、やっぱり違うか。う~ん、ポイントカードが違う・・・相互交換もやってるらしいですが、一部の店舗限定だって?!



ビックカメラの建物内の一角にソフマップがあったりするんですが、中古品しか扱ってなかったです。



200907082



ポイント10%を差し引いて考えると、秋葉原の最安値より+200~300円くらいだったかな。



時間と手間と交通費を考えたら、リーズナブルか。もっとも、秋葉原への交通費は、自転車なんで0円ですけど。





さて、WD10EADSは、これまで2個買ってたんですが、今回のは、500GBプラッタ(つまり、中の円盤が2枚)なんだそうで、それに対して、以前買ったのは、334GBプラッタ(3枚)。



速度については、ぜんぜん気にしていないんですが、音とか熱とか信頼性とか、よくなっているといいな。知らんけど。



見た目、ほとんど違いがないんですが・・・





200907083



「WD10EADS-00M2B0」と書いてあるとこが違うらしい。



■ 過去記事





2009年7月8日水曜日

パソコンの動きが鈍くなったと思ったら・・・原因はハードディスクだった。またか

1~2日前から、ある1台のパソコンの動作が遅くなっていることが、体感でもわかっていて、先ほど、ちょっと調べてみました。



まず、最初に気がついたのは、たいした処理もしていないのに、妙に、CPU使用率が高くなる、ということです。



200907071



どうも、ファイルの読み書きをしているときに、CPU使用率が上昇しているように思えたので、デバイスマネージャで調べてみると・・・



200907072



「PIOモード」になってるじゃありませんか。



コンピュータアーキテクチャの教科書に載っているような、わかりやすい現象。



てゆーか、なんでPIOモードになってるの?っていう疑問がでてきます。



昔どこかで聞いた話では、Windowsってば、ハードディスクで何か問題があったとき、PIOモードに縮退させて動かす、とかあるらしく、もしかして、と思って、ディスクの診断ツールを実行してみたら・・・



Seagateのツールの場合、



200907073



たぶん、一番単純なテストで、すぐにFAILって出てきます。



ただ、FAILだけしか言ってくれないので、よくわからない。



次に、Western Digitalのツールの場合、



200907074



200907075



Seagateよりは多くの情報を出してくれてますが・・・まあ、見てもよくわかんないです[E:coldsweats01]



ただ、1つ言えるのは、

SMARTでエラーは出てないけど、やっぱりエラーはあるよ

ってことで、昔から思ってたんですが、SMARTってあまり役に立ってないんじゃねーの?という疑惑が、また深まっていったのでありました。





まずは、大切なファイルをコピーしますか。



普段よりも、すげー時間かかってます・・・ [E:snail]






2009年7月7日火曜日

コッペパン メロン&ホイップ/白桃&ホイップ/イチゴ&ホイップ

最近、あの「コッペパン」で、新しいのを3種類、見かけました。



200907061



200907062



200907063



  • メロン&ホイップ


  • 白桃&ホイップ


  • イチゴ&ホイップ


どれも、「神奈川県産牛乳入り」と書かれているんですが、神奈川県って、牛乳の名産地だったんですか?



うーん、丹那牛乳とか?



■ 過去記事







2009年7月6日月曜日

池上線



「うたの旅人」というテレビ番組で、「池上線」という曲が取り上げられていました。



昔、池上線沿いに住んでいましたので、懐かしくなって、その番組を見た次第です。



池上線というタイトルの曲があることはなんとなく知ってたんですが、聞いたことはありませんでした。どっちかというと、目蒲線の曲があるということの方が印象に強く残っていて・・・



哀愁の演歌みたいな曲かな~と思ってたら、ふつうに、歌謡曲でした。というか、ジャンルは、フォークらしいですが。



200907050



昭和51年の曲だそうです。



200907051



番組を見てて、どこから撮影していたのか、すぐにわかったんですが、そういえば、こちら側へは、住んでいたころに一度も行ったことがなかったです。



200907052



住んでたころも、池上線を使うことはあまりありませんでした。



バイトしてて、終電近くに帰宅するとき、五反田で降りて、池上線に乗り換えたら、乗客全員がもうすっかり疲れ果てた感じで、なんかもう、自分まで、ああ本当に疲れたな、とグッタリしてしまったもので・・・



その車内の雰囲気が嫌でたまらず、それ以降、わざわざ東横線にして、自由が丘から歩いて帰ってました。



生意気でしたねぇ。