code:Haemophilus influenzae |
ここに書かれていることは無保証です。同じことを行って問題が発生しても、
龍義は責任をとりません。 |
2003年9月 2003年10月 2003年11月 2003年12月 2004年1月 2004年2月 2004年3月 2004年4月 アイコンの説明 |
5/1 人の依頼で、 corega PCIB-11 と BAR Set HGWL の設定。HGWL なのだが、ファームを 最新版にして、しばらく使うと、うんともすんとも反応がなくなってしまった。 まったく使い物にならない。半日ほど電源を抜いて置いても駄目。出先なので、どうにも ならない。困ったものである。 BAR Set HGWL の設定画面、少し難しい感じがした。初心者だと辛いのじゃないかと 思う。説明書もイマイチ。もう少し大きいサイズの説明書にして欲しい(私は目が悪い)。 5/2 結局、昨日の HGWL が使えないので、近くにあった家電屋で NEC WB7000H2 を買ってきた。 税込み7500円。なんだか 11b の製品はかなり安くなってきたなぁ。というか、欲しく なってくる。WB7000H2 で設定して完了。鉄筋コンクリートの1階と2階の間だったの だけど、思ったよりも電波状況が良かった。 WB7000H2 の設定画面、直感的に行いたい設定がどこにあるか、わかりにく部分もあるが、 動作は安定していて、さすが NEC と思うところ。 5/3 昨年後半から Apache のログに SEARCH /¥x90¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02... と、セキュリティホールを狙ったアクセスがあったのだが、ここ1週間、この アクセスがかなり増えている。問題は、この1アクセスでログが 32768 文字以上になり、 ログを見る点で、かなり邪魔になること。ログに書かないようにする方法も いくつか公開されているようだが、アクセスがあったことを記録するためのログで あるから、これはこれで記録するべき。 LogFormat "%h %l %u %t ¥"%!414r¥" %>s %b" common としてみようか、と考えてる。 5/4 LD-WBBR/B の新ファームの解析をした。LD-WBBR/B の解析2 5/5 パナソニックはオキシライド電池にかなり力を入れているようである。TVCM などで 頻繁に宣伝している、原理を見てみたのだが、かなり高額でアルカリの5倍長持ちと いう売りで数年前に出たニッケルマンガン電池に改良をしたものみたいである。 パナソニックはこれで国内シェアの40%を目指しているらしく、鼻息が聞こえるほどの 気合の入れようである。その他のメーカがどう出るか、という点と、100円ショップに 出回るか、という点が重要だと思う。今後どうなるか少し期待してみよう。私の デジカメは単3電池を使用しているものなので…。 5/6 5/2 に WB7000H2 の設置を行ったので、 MSN Messenger でチャットをしてみた。 これまで IO-DATA の BARSD で会話をしていて、音声チャットがうまく繋がらない ことが良くあったのだが、WB7000H2 に替えると問題なく1回で接続した。 無線 LAN 経由の会話も、電波の様子で少し途切れる瞬間があるが、支障なくできる。 ルータの性能って重要だな、とつくづく思った。 5/8 LED ライト XB-100 のレビュー。写真があるので、別ページにした。 5/9 Victor CU-VS11 の解析を行った。今回は楽勝。 5/10 やっと cygwin + OpenSSH + chroot ができた。長い道のりだった。簡単にやり方だけ。 まず、 jail 用の環境を作る。 [toyota@geonosis]% mkdir /jail [toyota@geonosis]% mkdir /jail/bin [toyota@geonosis]% mkdir /jail/lib [toyota@geonosis]% mkdir /jail/home [toyota@geonosis]% mkdir /jail/home/toyota [toyota@geonosis]% cp -p -r /bin/* /jail/bin [toyota@geonosis]% cp -p -r /lib/* /jail/lib 次に個人の rsa 認証用の鍵を作る。これは、cygwin 環境での OpenSSH は どのパスワードを使っているか良くわからなかった理由からの、苦肉の策である。 [toyota@geonosis]% cd ‾ [toyota@geonosis]% ssh-keygen -t rsa [toyota@geonosis]% ssh-keygen -t dsa [toyota@geonosis]% cp .ssh/id_rsa.pub .ssh/authorized_keys [toyota@geonosis]% cat .ssh/id_dsa.pub >> .ssh/authorized_keys あとは、先月コンパイルした OpenSSH のソースにちょっと手を加える。 OpenSSH Chroot のソース(http://chrootssh.sourceforge.net/download/)を 使っても良かったのだが、1行追加の単純なものにした。 [toyota@geonosis]% diff -uNr session.c.org session.c --- session.c.org 2004-04-16 21:47:55.000000000 +0900 +++ session.c 2004-05-11 02:26:14.325750000 +0900 @@ -1278,6 +1278,7 @@ exit(1); } endgrent(); +chroot("/jail"); # ifdef USE_PAM /* * PAM credentials may take the form of supplementary groups. これで sshd をコンパイルし直して、再起動してみた。 [toyota@geonosis]% slogin localhost 〜snip〜 bash.exe: warning: could not find /tmp, please create! とエラーが出るが、問題なく chroot な感じで動いている。 さて、使いものになるのか、ちょっと試してみようかと。とりあえず cygdrive 周りの 実験。 $ cd /cygdrive $ cd /cygdrive/c/ -bash: cd: /cygdrive/c/: No such file or directory $ ls /cygdrive c i $ ls /cygdrive/c ls: /cygdrive/c: No such file or directory 変な感じである。 /dev もアクセスできるようだし。う〜ん。 5/11 実は、昨日行った実験は、既に数週間前に出来ていて、さて実験しようかという 段階になったら、いつの間にかエラーが出て放置していたのである。で、そのときの エラーは [toyota@geonosis]% slogin localhost 〜snip〜 C:¥cygwin¥jail¥bin¥tcsh.exe (137): *** proc version mismatch detected - 0x70172124/0x1E4C5751. You have multiple copies of cygwin1.dll on your system. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:¥cygwin¥bin, where 'x' is the drive on which you have installed the cygwin distribution. Connection to localhost closed. である。 chroot コマンド実行しても、同じエラーが出た。 [toyota@geonosis]% chroot /jail C:¥cygwin¥jail¥bin¥sh.exe (273): *** proc version mismatch detected - 0x70172124/0x1E4C5751. You have multiple copies of cygwin1.dll on your system. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:¥cygwin¥bin, where 'x' is the drive on which you have installed the cygwin distribution. で、昨日良く考えてみたら、理由はすごく簡単で、メッセージを読めばすぐに わかることだった。 /jail/bin/cygwin1.dll が /bin/cygwin1.dll の バージョンと一致していなかったのである。何故、一致していないかと言うと、 cygwin の setup.exe を実行して、 /bin/cygwin1.dll だけ最新のものになって しまったからのようである。 と、いうことで、 cygwin + chroot の環境はどんなもんなのか、時間があったら 検証してみる。 5/12 PCI BRL-04FWU の解析を行った。安いし速いし、意外と良い製品かもしれない。 使ってみないとわからないけど。 5/13 Apache のバージョンがあがったようである。対応したいけど、週末だな。 そう言えば、 elecom さんから今日、 LD-WBBRB/AP の GPL 関係のソースコードが 来ていた。CD-R で、中身は 45M ほどのようである。忙しいので、今週末に 中を見るのは無理だなぁ。 5/14 http://d.hatena.ne.jp/ に接続できない問題。簡単に言うと、ハテナアンテナの 日記のページに繋がらない。ブラウザをいつも使っている Mozilla から IE に 変えても同じ。http://221.186.146.29/ でも結果は変わらず。 telnet で繋いでみた。 [toyota@kashyyyk]3% telnet d.hatena.ne.jp 80 Trying 221.186.146.29... Connected to 221.186.146.29. Escape character is '^]'. Connection closed by foreign host. [toyota@kashyyyk]4% な、なんで?5秒ほどで接続が切れてしまう。IP でやってみる。 [toyota@kashyyyk]5% telnet 221.186.146.29 80 Trying 221.186.146.29... Connected to 221.186.146.29. Escape character is '^]'. Connection closed by foreign host. [toyota@kashyyyk]6% 結果は同じ。ちょっと、proxy を拝借して、接続してみた。 [toyota@kashyyyk]11% telnet freeproxy.linux-site.net 8080 Trying 61.124.255.163... Connected to freeproxy.linux-site.net. Escape character is '^]'. GET http://d.hatena.ne.jp/ HTTP/1.0 HTTP/1.0 200 OK Date: Fri, 14 May 2004 14:06:30 GMT Server: Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.29 Content-Type: text/html; charset=euc-jp X-Cache: MISS from unknown Proxy-Connection: close 〜省略〜 あ。ということは、ウチの IP が hatena さんで規制されているってことか。 調べてみたけど、そんなこと載ってないなぁ。ちょっと、メールでもしてみようかな。 5/15 ちょっと LD-WBBR/B の中を見ていたのだが、1つ疑問が生じた。 sh-2.04# ls -laid /crom/a/sbin 1 drwxrwxr-x 1 tsubota 200 0 Jan 1 1970 /crom/a/sbin sh-2.04# ls -laid /crom/lib/modules 1 drwxr-xr-x 1 root root 0 Jan 1 1970 /crom/lib/modules ディレクトリのハードリンクなのである。私の記憶では、ディレクトリのハードリンクは できないと思ったのだが。ちょっと調べてみた。ディレクトリのハードリンクは POSIX で 禁止されているようであるが、できるみたい。 linux でも root 権限で -d オプションを つけると出来てしまった。知らなかった。 最初、 cramfs だからできる、と思って決めてかかったので、調べるのに時間が かかってしまった。頭が固くなってきているなぁ。 5/16 ROUTETECH CAS2040 の解析を行った。一昔前は、よく聞いた名前だったのに、 最近全く聞かなくなった。まだ使っている人、居るのかな。 5/17 cygwin のコマンドラインで動くバイナリエディタを探していて bvi を見つけたのだが、 思うような動作じゃなかったので、世の中を検索してみた。すると日本語が表示できる hi というバイナリエディタがあるらしい。さっそくダウンロードしようとしたのだが、 作者の web page が無くなっている。困ったので、さらに検索してみると、 src.rpm 形式のファイルなら見つかった。早速バラそうかと思ったが、 cygwin に rpm2cpio が ないことがわかった。 Linux マシンなどに投げても良いのだが、せっかくだから インストールすることにした。cygwin の setup.exe を実行してみたのだが、 rpm2cpio は みつからない。しょうがないので、 source からコンパイルしようと探してみた。 調べると、どうやら rpm に含まれるようで、そうすると setup.exe から rpm を インストールすると rpm2cpio も入るようである。が、せっかくだから rpm のコンパイルを やってみた。 ftp://ftp.rpm.org/pub/rpm/dist/から rpm 4.1 をダウンロードした(rpm って rpm 形式で配布しているのね…、なんか…)。 [toyota@geonosis]% wget ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/rpm-4.1.tar.gz [toyota@geonosis]% tar xvfz rpm-4.1.tar.gz [toyota@geonosis]% cd rpm-4.1 [toyota@geonosis]% ./configure かなりの時間がかかった。 [toyota@geonosis]% make rpm2cpio あらららら。かなりの量のエラーが発生。おとなしく make にした。 [toyota@geonosis]% make エラーの山。少し追ったけど、面倒なので、 cygwin の setup.exe から rpm をインストール することにした。弱いなぁ、私。で本題に。 [toyota@geonosis]% rpm2cpio hi-2.2-2.src.rpm | cpio -id これで hi-2.2.src.tgz が取り出せた。これを解凍した。 [toyota@geonosis]% tar xvfz hi-2.2.src.tgz [toyota@geonosis]% cd hi-2.2-2 付属文書の通りに compile してみた。 [toyota@geonosis]% make init setup default environment. [toyota@geonosis]% make config 昔懐かしい対話式である。対話式をみると、この先、自分で Makefile を書き換えが必要だな、 と思ってしまう。で、適当に入力して。 (4) Please select your architectures? 1. Turbolinux 2. Slackware 3. PlamoLinux 4. FreeBSD 5. SunOS 6. Solaris 7. HP-UX 8. Other Enter option (1-8) [1]: なんだか、時代を感じさせるものである。で、 make してみた。 [toyota@geonosis]% make Pick one of the fllowing tergets: make help - give this help make init - setup default environment make config - configure and check system setup make clean - remove old binaries and dependency files make all - build modules and programs make install - install modules and programs make uninstall - uninstall modules and programs あうあう。 [toyota@geonosis]% make all gcc -Wall -Werror -finline-functions -ansi -D_SVID_SOURCE -c -Ihead src/address_get.c In file included from src/address_get.c:15: head/hi_std.h:15:26: ncurses/curses.h: No such file or directory In file included from head/hi_std.h:18, from src/address_get.c:15: head/hi_str.h:365: error: syntax error before "WINDOW" head/hi_str.h:365: warning: no semicolon at end of struct or union head/hi_str.h:381: error: syntax error before '}' token src/address_get.c: In function `address_get': src/address_get.c:32: error: dereferencing pointer to incomplete type src/address_get.c:32: error: dereferencing pointer to incomplete type src/address_get.c:34: warning: implicit declaration of function `sprintf' src/address_get.c:34: error: dereferencing pointer to incomplete type src/address_get.c:34: error: dereferencing pointer to incomplete type src/address_get.c:34: error: dereferencing pointer to incomplete type make: *** [address_get.o] Error 1 最初のファイルの15行目でこけるとは。この先長そうである。とりあえず cygwin の setup.exe から libncurses-devel をインストール。もう一度 make all 。 [toyota@geonosis]% make all 〜略〜 src/area_check.c: In function `area_check': src/area_check.c:44: warning: implicit declaration of function `strcpy' make: *** [area_check.o] Error 1 なんとかなりそうな感じである。compile オプションの変更。 [toyota@geonosis]% vi conf/config.mk CFLG=-Wall -Werror -finline-functions -ansi -D_SVID_SOURCE -c から -Wall をとって CFLG=-Werror -finline-functions -ansi -D_SVID_SOURCE -c とした。これで問題なく compile が完了した。 [toyota@geonosis]% ./load/hi ./local/hi.exe 動きました。 binary editor ver 2.2-2 offset:[00000000] mode:COMMAND [ASCII] [HEX] +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f 0123456789abcdef+ 00000000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ.............. 00000010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 ................ 00000040 0e 1f ba 0e 00 b4 09 cd 21 b8 01 4c cd 21 54 68 ........!..L.!Th 00000050 69 73 20 70 72 6f 67 72 61 6d 20 63 61 6e 6e 6f is program canno 00000060 74 20 62 65 20 72 75 6e 20 69 6e 20 44 4f 53 20 t be run in DOS 00000070 6d 6f 64 65 2e 0d 0d 0a 24 00 00 00 00 00 00 00 mode....$....... 00000080 50 45 00 00 4c 01 04 00 c6 08 a5 40 00 64 01 00 PE..L......@.d.. 00000090 f0 07 00 00 e0 00 07 03 0b 01 02 38 00 2e 01 00 ...........8.... 000000a0 00 60 01 00 00 02 00 00 00 10 00 00 00 10 00 00 .`.............. 000000b0 00 40 01 00 00 00 40 00 00 10 00 00 00 02 00 00 .@....@......... 000000c0 04 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 ................ 000000d0 00 90 01 00 00 04 00 00 bb c7 02 00 03 00 00 00 ................ 000000e0 00 00 20 00 00 10 00 00 00 00 10 00 00 10 00 00 .. ............. 000000f0 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ................ 00000100 00 70 01 00 74 17 00 00 00 00 00 00 00 00 00 00 .p..t........... 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ "./load/hi.exe", ordinary file, 134547 bytes, read/write, indirect access mode 2行目が邪魔だな。今度改造しよう。念のため、今回の cygwin はこんな感じ。 [toyota@geonosis]% cat /proc/version CYGWIN_NT-5.1 1.5.9(0.112/4/2) 2004-03-18 23:05 5/18 LD-WBBR/B の cramfs である /dev/crom を書き換えようと考えた。5/15 にちょっと 書いたのは、そのため。方法としては、アップデートプログラムを書き換えるか、 自分でデバイスに書き込むか。両方考えたのだが、自分でデバイスに書き込めるか どうか調べてみた。といっても、いきなり /dev/crom に書き込むのも怖い。と いうことで、ファームウェアのアップデートの時に LD-WBBR/B 側で受けのプログラムと なる /usr/sbin/tsap_flashd2 を眺めてみた。扱っているデバイスは /dev/tsdrv0 の ようである。 で、ちょっと調べたのだが、世の中に /dev/tsdrv なんて使っているシステムは ないようで、こりゃ独自のデバイスだな、なんてちょっと困ってしまった。 ちょうど、先日手元に kernel のソースが来たので、調べてみた。 /dev/tsdrv は linux/drivers/char/tsdrv.c で作成されていて、こいつの中身をざっと見ると、 なんでも屋、という感じ。簡単に関数を抜き出してみた。 [toyota@kashyyyk]% grep ^[a-z] tsdrv.c | grep "(" | cut -d"(" -f1 padsl_config tsdrv_get_adsl_config pdevice_id_list tsdrv_get_adsl_devlist void tsdrv_watchdog_start static void tsdrv_watchdog_timer_do void tsdrv_start_timer1 void tsdrv_stop_timer1 int tsdrv_check_timer1 void tsdrv_system_reset int erase_flash int program_flash int verify_flash unsigned char get_param_checksum void update_param_checksum int write_param_block int write_default_param void check_param_block static void tsdrv_busyled_timer_do void tsdrv_led_ctrl void tsdrv_dialup_led_ctrl void tsdrv_adsl_led_ctrl static void tsdrv_adslled_timer_do static int tsdrv_open static int tsdrv_close static int tsdrv_ioctl static ssize_t tsdrv_read static unsigned int tsdrv_poll int read_init_sw static void tsdrv_initsw_timer_do static void tsdrv_int_proc static void usb_int_proc static void tsdrv_watchdog_timer_do void tsdrv_watchdog_start void tsdrv_watchdog_stop padsl_config tsdrv_get_adsl_config pdevice_id_list tsdrv_get_adsl_devlist int tsdrv_get_adsl_afetype int tsdrv_init int init_module void cleanup_module EXPORT_SYMBOL なんと言うか。tsdrv_get_adsl_config, erase_flash, tsdrv_dialup_led_ctrl, usb_int_proc ってのを kernel の同じ device でやってしまうのか…。 アップデートプログラムを書き換える方が早いかもしれないなぁ。 5/19 MTT-ME MN8300 の解析を行った。なんだか、忙しいときに限って、現実逃避で 解析している。パズルを解く感じで。 5/20 DJ Java Decompiler を使ってみた。 jar ファイルとか class ファイルって 思ったより簡単に解析できちゃうのね。便利かも、と思ったが、使い道がそんなに ないか…。それにしても、昨日寝違えたようで、首が痛い。 5/21 corega BAR mini の解析を行った。 Nucleus + ARM のようである。このぐらい 小さい奴で面白いのが出れば、買っちゃうだろうなぁ。 5/22 NC3131 dual i82558B LAN カードのレビュー。いつものように、写真があるので、 別ページに。 5/23 ここの話題として扱うか悩んだのだけど、気にせずにここで扱うことにした。 某所バイク店にて。写真があるので、いつものように別ページに。 5/24 NTT-ME LivingGate i の解析を行った。 SH3 + Linux である。実を言うと、解析は 先週の時点でほとんど終わっていて、欲しくなって思わず買ってしまったのである。 そのうち、レビューと内部の解析を書く予定。 5/25 ここのところ[BBルータ解剖]で使っている、改造版のバイナリエディタ hi をベータ版だが 公開。ここのページ にて。いつもは、viewer として使っているのでエディタ機能は ほとんど使っていない。まだまだ改善の余地がありそうな気がするけど。 5/26 まだ、メモの域だが、とりあえず公開 。 LD-WBBR/B よりも、ずっと いじりやすいです。 5/27 LivingGate i なのだが、とても不安定。動いてしまえば問題ないのだが、再起動を すると固まったり、無線カードを認識しなかったり。原因が未だによくわからない。 とりあえず、 source を ftp://ftp.pixela.co.jp/LG/linux-waw.tar.gz から ダウンロードして、カメラ周りがどうなっているのか、見てみようと思う。 それにしても、昨日は睡眠薬を飲んで朦朧としていたので、書いた文書が滅茶苦茶。 朝、あわてて直したのだけど。 5/28 多少前後したが、 NTT-ME LivingGate i のレビュー。いつものように、写真があるので、 別ページに。 5/29 メモの域を少し出ました。 ちょっと調子は良くなってきたけど、時々不安定になる。 熱の問題かなぁ。 5/30 アドレス110のタイヤ交換をした。しかし、今日は暑かった。タイヤを外すときは いつもエアコンプレッサが欲しくなる。置く場所なんてないのだけど。ということで、 タイヤを外して持っていたので、工賃が500円と格安に。 5/31 LivingGate i 用の kernel の作成。とりあえず、公開されている kernel source を 使って compile してみる。 http://www.pixela.co.jp/products/network/lg/download.html からダウンロードした linux-waw.tar.gz を展開して、コンパイルしてみる。コンパイラの場所が直指定 してあるので、 arch/sh/Makefile の tool-prefix などを、書き換える。 tool-prefix = /usr/local/cross-sh3/bin/sh3-linux- から、私の環境に合わせて tool-prefix = /usr/bin/sh3-linux- に書き換える。で、 README.waw にある通りに compile してみる。 [toyota@kashyyyk]% make -f Makefile.waw 〜snip〜 make[1]: 入ります ディレクトリ `/home/toyota/kernel/waw' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -I/home/toyota/kernel/lin ux-waw/include -o scripts/split-include scripts/split-include.c scripts/split-include include/linux/autoconf.h include/config /usr/bin/sh3-linux-gcc -D__KERNEL__ -I/home/toyota/kernel/linux-waw/include -D __WAW__ -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasin g -ml -m3 -pipe -c -o init/main.o init/main.c init/main.c: 関数 `start_kernel' 内: init/main.c:540: 警告: フォーマットは long unsigned int ですが、引数は pointer です (引数 2) init/main.c:540: 警告: フォーマットは long unsigned int ですが、引数は pointer です (引数 3) {standard input}: Assembler messages: {standard input}:1411: Error: invalid operands for opcode {standard input}:1413: Error: invalid operands for opcode {standard input}:1415: Error: invalid operands for opcode {standard input}:1478: Error: invalid operands for opcode {standard input}:1652: Error: invalid operands for opcode make[1]: *** [init/main.o] エラー 1 make[1]: 出ます ディレクトリ `/home/toyota/kernel/linux-waw' make: *** [waw2_cf_knl] エラー 2 あらら。これは、私の手に負えない。とりあえず、指定の cross-compiler を使って みることにした。 [root@kashyyyk]% cd /usr/local [root@kashyyyk]% tar xvfz ‾toyota/new-cross-compiler.tar.gz この sh3-linux-gcc を使って、なんとかコンパイルはできた。早速 nfs を有効にして、 kernel を作り直してみた。これを LivingGate i にコピーして、起動できるかやって みた。起動は出来たが、 mount がうまくいかない。 nfs サーバにはアクセスがいってる みたいなんだけど…。 |
by Tatsuyoshi since 2003 |