logo
code:Haemophilus influenzae

ここに書かれていることは無保証です。同じことを行って問題が発生しても、 龍義は責任をとりません。
 2003年9月 
 2003年10月 
 2003年11月 
 2003年12月 
 2004年1月  2004年7月 
 2004年2月  2004年8月 
 2004年3月  2004年9月 
 2004年4月  2004年10月 
 2004年5月  2004年11月 
 2004年6月  2004年12月 
 2005年1月 
 2005年2月 
アイコンの説明

3/1
Other
プログラムを組んでて、 strdup をちょっと知ったので、ガンガン使っていたら、
Segmentation fault であっさり落ちてしまった。はて、と思って中をみたら、
中が NULL だと落ちるみたい。テストにちょっと書いてみた。

#include<stdio.h>
int main(){
  char *str;
  str=strdup(NULL);
}

これで実行してみた。

[toyota@redoubt]% ./a.out
Segmentation fault (core dumped)

こんな感じ。ちょっと書き換えて、どこが問題なのか、見てみることにした。

#include
int main(){
  char *str;
  str=malloc(0);
  strcpy(str,NULL);
}

これだと、 malloc は大丈夫なのだけど、 strcpy で落ちてしまう。ここの部分を
strncpy(str,NULL,0); にすれば問題なくなったけど。でも、 strdup する前に、
中をチェックしなきゃいけないなんて、思ったよりも便利な関数じゃないのかも
しれないなぁ、なんて思ってきた。

3/2
WWW Network
事の発端はこのページ。
http://www.yatou.co.jp/education/yatou_education_sikaku_care10.htm
資料請求フォームを送信すると、確認メールが自分にも送られてくる。そこまでは
全く問題ないのだけど、 iso-2022 ヘッダがついているのに、Shift JIS な文書で
送られてくるので、駄目駄目なのである。

で、ここで使っている cgi を見てみたけど、驚いたことに、REFERER のチェック
さえしていないし、param_recipient を書き換えると、誰にでもメールを送信
できてしまうのである(実験するのは限りなく黒に近いグレーゾーン)。
これを一体どこが作ったのか、ちょっと見てみようと思って、少し探したら
http://www.yatou.co.jp/cgi-bin/form/
なんて驚きのページが出て、流石に認証のページが出たのだけど。

さらに、この cgi と同じ cgi を使っている所をいくつか探したのだけど、
http://www.banri.com/form2.html
http://www.shiba-hirokazu.com/form/index.html
この辺が同じみたいである。作ったところは、確実じゃないけど、ドメイン情報から
http://www.omakase.net/
ここみたいである。で、ここのリンクから、
http://www.kirakira.net/yoyaku/
http://www.kawai-shokokai.org/form/index.html
http://www.hida-ibata.com/service/mail.html
など、出るは出るは。

話を元に戻して。流石に、一番問題なのは、国会議員の
http://www.shiba-hirokazu.com/form/index.html
このページじゃないかな。国会議員のホームページから SPAM が送信できるって
問題だしなぁ。変なヘッダーとシグネチャが付くけど。

もう一度書いておこう。実験するのは限りなく黒に近いグレーゾーンなんで、
やめましょう。

3/3
Other
ちょっと malloc をゴリゴリやってるプログラムを作っているので、メモリリーク
してないか、調べることにした。で、 mpatrol だの ccmalloc のツールを使って
調べても良かったのだけど、 linux だったので /proc の下でわかるかどうか
やってみた。適当に改行が入っているけど。

malloc 前
[toyota@nirauan]% cat stat
6271 (testd) S 2289 6271 2207 34821 6271 0 686 643 341 2248 2 0 1 1 17
0 0 0 1600846 1839104 122 4294967295 134512640 134587884 3221223920
3221223164 1074934485 0 0 0 0 3222426009 0 0 17 0

malloc 後
[toyota@nirauan]% cat stat
6271 (testd) S 2289 6271 2207 34821 6271 0 692 643 350 2248 2 0 1 1 10
0 0 0 1600846 1867776 137 4294967295 134512640 134587884 3221223920
3221223164 1074934485 0 0 0 0 3222426009 0 0 17 0

free 後
[toyota@nirauan]% cat stat
6271 (testd) S 2289 6271 2207 34821 6271 0 692 643 350 2248 2 0 1 1 9
0 0 0 1600846 1867776 137 4294967295 134512640 134587884 3221223920
3221223164 1074934485 0 0 0 0 3222426009 0 0 17 0

vsize の値が 1839104 → 1867776 → 1867776 と、 free の後でも変わらない。
プログラムが悪いのかと、簡単なプログラムでやってみた。

[toyota@nirauan]% cat malloc.c
#include<stdio.h>
int main(){
  char *chp;
  *chp=malloc(65536);
  free(chp);
}

これでやってみた。

[toyota@nirauan]% cd /proc
[toyota@nirauan]% cd 6390
[toyota@nirauan]% cat stat
6390 (a.out) S 2453 6390 2453 34824 6390 0 19 0 73 0 0 0 0 0 9 0 0 0
1664214 1396736 71 4294967295 134512640 134513944 3221224128 3221223548
1074598613 0 0 0 0 3222426009 0 0 17 0
[toyota@nirauan]% cat stat
6390 (a.out) S 2453 6390 2453 34824 6390 0 22 0 81 0 0 0 0 0 9 0 0 0
1664214 1462272 81 4294967295 134512640 134513944 3221224128 3221223548
1074598613 0 0 0 0 3222426009 0 0 17 0
[toyota@nirauan]% cat stat
6390 (a.out) S 2453 6390 2453 34824 6390 0 22 0 81 0 0 0 0 0 9 0 0 0
1664214 1462272 81 4294967295 134512640 134513944 3221224128 3221223548
1074598613 0 0 0 0 3222426009 0 0 17 0

やっぱり、1396736 → 1462272 → 1462272 となって free をしても vsize の
値が変わらなかった。つまり、 /proc 以下の情報じゃ、メモリリークが起きて
いるかわからないってことか…。素直にツールを使おうかな。

3/4
Other
いつの間にやら CANON EOS Kiss Digital N なんてのが発表されてたのね。NIKON の
D70 が本体7万円の、今なら1万円キャッシュバック、なんてのを見て少しクラクラっと
きてたのだけど、 EOS Kiss Digital もだいぶ値段が下がっているみたい。家には
キャノンマウントのレンズが3本ほどあるので、 CANON の方がありがたいんだよなぁ。
最初に何気なく買った一眼レフカメラ、レンズの関係で未だに引きずっているのも、
おかしな話だけど。EOS Kiss Digital が5万円代になったら買おう、と思っていたら、
価格.com なんかで最安値は既に5万円代だし…。あぁ、どうしよう。先月 D-Snap を
買ったばかりだしなぁ。

3/5
Network
コレガの PCI スロット用無線 LAN カード、 WLPCIB-11 が SMA コネクタを装備
していたので、 BNC に変換してアンテナを変えようと思って SMAP-BNCJ の変換
コネクタを用意した。しかし刺さらない。あ、 SMAP ってジャニーズじゃなくて、
SMA の P の方。よく見ると、真ん中のピンが PCI 側の方にもあって、このせいで
入らないようである。はて、なんでだろう、なんて疑問に思っていたので、調べて
みた。SMA の規格は JEITA で決まっているらしく
http://www.jeita.or.jp/japanese/standard/list/list.asp?cateid=4&subcateid=28
で規格の本が買える。そんなお金はないので、もう少し調べてみた。どうも、
SMA 自体は、
http://img-asia.electrocomponents.com/largeimages/C403471-01.jpg
などを見る限り真ん中は P 側にピンが出ている。しかし、 逆のものが見つからない。
無線 LAN をキーワードに探してみたら、どうやら真ん中のピンが逆になった
R というもので、こいつに刺すには SMAP-R のようなものが必要らしい。これは
IO-DATA なんかの製品でも共通のようだ。海外では RP-SMA と呼ばれているようで
Reverse Polarity SMA の略みたい。で、こいつの BNCJ の変換コネクタなんて、
あるわけもなく、見つかったとしても 5000 円ぐらいしそう。秋月で SMAP-BNCJ は
300 円だったのだけど、とてもそんな値段になりそうもない。
延長ケーブルも結構高いなぁ。
http://www.corega.co.jp/product/list/wireless/wireless_option.htm
困ったもんだ。

3/6
Other
D-snap SV-AS10 のレビュー。写真があるので、いつものように別ページ。
何を今更って機種だけど。

3/7
Other
そうか、よく考えたら、一眼レフのデジタルカメラ、あれって撮るときは液晶画面に
表示されないんだ。つまり、撮ったあとに写真の確認をするための液晶画面なんだ。
確かに考えれば、 CCD の前にミラーがあって、撮ろうとしているときは、プリズムに
光が行っているからなぁ。低い位置での写真とか、ファインダーを覗きにくいときに
液晶画面を使って写せると思ったから、ちょっとショックだなぁ。

3/8
Other
今、メモリがかなり値下がっているらしい。いつも買うタイミングを外してしまう
私なので、買おうかと思って見てみたのだけど、よく考えたら今の状況でとても
困ってるって訳じゃないんだよなぁ…。返って PC133 の 512M とかが安いほうが
ありがたいかも。

3/9
Other
昨日だか一昨日だかに、東芝がスマートメディアの製造から撤退、みたいな記事を
どこかで見た。さすがに、上限 128M じゃあねぇ、なんて思っていたのだけど、
そう言えば SD カードは容量に上限があるのか、ちょっと調べてみた。規格自体は
SD Card Association (http://www.sdcard.org/) が決めているらしく、
http://www.sdcard.org/sdio/Simplified%20Physical%20Layer%20Specification.PDF
に詳しい資料があったので、見たのだけど、結局良くわからなかった。市場に
出ているもので、現在の最大容量は 2GB だと思うから、まだまだ大丈夫なのだと
思うけど。
それにしても、 SD カードの規格を見てると、 ROM があったり、色々なものに
接続できるようになってたり、結構当たり前かもしれないけど、感動した。特に
ROM は製品を見かけたことないけど、色々と面白いことに出来るんじゃないかな。
かえって値段が高くなるのかもしれないけど。

3/10
Other
Linux Kernel の増加予測をしてみた。グラフがあるので、別ページに。

3/11
Other
.z という拡張子っぽいファイルがあって、 compress で圧縮されたファイルかな、
と思って調べてみると、 compress というコマンド以外にも pack というコマンドも
.z という拡張子になるらしい。手元のファイルが本当に compress や pack で圧縮
されたファイルかを確かめるために、実際に圧縮ファイルを作ってみることにした。
手元の RedHat9 でコマンドを打ってみたが、インストールされていないらしい。
sunsite 辺りからダウンロードしようかな、と思っていたのだけど、駄目元で
Solaris8 でコマンドを打ってみたら、どっちのコマンドも入っていた。なんだか、
Solaris らしいな、って気がしたり。
結局、手元のファイルは compress や pack で圧縮されたものじゃなかったみたい
なのだけど、 gunzip の man を見たら compress で作成されたファイルも pack で
作成されたファイルも解凍できる、と書いてあった。最初から gunzip を使えば
良かったのね…。

3/12
Other
IDE -> SD 変換カードが出たみたい。
http://www.watch.impress.co.jp/akiba/hotline/20050312/etc_irsdide.html
CF で十分じゃないか、と思っていたのだけど、 SD の方が CF よりもスピードが
出るのか。それにしても、高いよなぁ。

3/13
Network
OMRON MR104WAG のファームウェアを解析した。
ちょっとだけ、 web page の構成も変更した。

3/14
LAN-iCN2 Terminator K7-DDR
LAN-iCN2 の中に lynx が入ってなくて、不便だったので、入れてみることにした。
とりあえず、クロスコンパイルマシンで、ダウンロードして。

[toyota@kashyyyk]% wget http://lynx.isc.org/release/lynx2.8.5.tar.gz
[toyota@kashyyyk]% tar xvfz lynx2.8.5.tar.gz
[toyota@kashyyyk]% cd lynx2-8-5
[toyota@kashyyyk]% ./configure --help

configure で、 -host だの CC=sh4-linux-gcc だの指定してみたりしたのだけど、
makefile に反映されないようである。なので、とりあえず、指定なしで実行する
ことにした。

[toyota@kashyyyk]% ./configure  --enable-cjk --disable-gopher --disable-news

で、 makefile の LIBS を少し変更。

[toyota@kashyyyk]% vi makefile

LIBS = -lncurses -L/usr/sh4-linux/lib

なんかの変換に使うプログラムがあるようなので、それを先にコンパイルしておく。

[toyota@kashyyyk]% cd src/chrtrans
[toyota@kashyyyk]% make

本体のコンパイル。

[toyota@kashyyyk]% cd ../../
[toyota@kashyyyk]% make CC=sh4-linux-gcc

なんとか出来たみたいなので、 lynx と lynx.cfg を LAN-iCN2 にコピーした。
で、 cfg ファイルの設定を毎回するのも面倒なので、 .cshrc に alias の指定を
しておいた。

alias lynx '/home/toyota/bin/lynx -cfg=/home/toyota/bin/lynx.cfg'

こんな感じ。 lynx.cfg は最低限の設定をしておいた。

[toyota@kamino]% diff lynx.cfg ./bin/lynx.cfg
95c95
< STARTFILE:http://lynx.isc.org/
---
> STARTFILE:http://www.google.com/
396c396
< #CHARACTER_SET:iso-8859-1
---
> CHARACTER_SET:euc-jp
1284a1285
> SET_COOKIES:FALSE

これで、なんとか快適に起動するようになった。

3/15
Other
プラチナの触媒作用について調べていたら、株式会社ハクキン、なんてページを
見つけた。
http://www.hakukin.co.jp/top/index.html
プラチナ電磁波なんて現象があるのを初めて知った。でも、今は白金懐炉なんて
流行らないのだろうな…。

3/16
Other
時間があったので、電機屋に行って、デジカメを触っていたのだけど、一眼の光学
ファインダーは必要だな、としみじみ感じた。EVF(Electronic View Finde) の機種の
デジカメを見たのだけど、感覚が全然つかめない。 EVF つけるなら、液晶画面で
十分、ということがわかった。
で、手元のレンズ、実際に EOS Kiss Digital なんかで使えるかどうか調べてみたら、
なんと使っている写真があった。
http://dc.watch.impress.co.jp/cda/review/2004/10/27/319.html
デジタルカメラ用との比較で使っているのだけど、私の腕ではデジタル用でなくても
十分通用するようである。あぁ、また、 EOS Kiss Digital が欲しくなってきた。

3/17
Other
USB - IDE 変換ケーブルのレビュー。ちょっと、便利かも。

3/18
LAN-iCN2 Terminator K7-DDR
OpenSSH 4.0p1 が出たので、 LAN-iCN2 用に sh4 でのバイナリの作成。いつもの
ように、クロスコンパイルの環境で。

[toyota@kashyyyk]% ./configure --build=i386-linux --host=sh4-
linux --with-ssl-dir=/usr/sh4-linux/ssl --with-zlib=/usr/sh4-linux/lib --sysconf
dir=/etc/ssh CC=sh4-linux-gcc

止まってしまった。クロスコンパイルが原因で、前もあった話。

checking if openpty correctly handles controlling tty... configure: error: canno
t run test program while cross compiling
See `config.log' for more details.

というメッセージ。 configure のエラーが発生する前の分岐

    if test "$cross_compiling" = yes; then

の yes の部分を hoge に置き換えて、もう1回。

checking for "/etc/default/login"... configure: error: cannot check for file exi
stence when cross compiling

これも同じような感じで、エラーを回避してあげて。この2つのエラーの修正だけで
なんとか通ったので、 make してみた。

[toyota@kashyyyk]% make

あっさり make できてしまった。前のバージョンは dlopen ライブラリを使うとかで
Makefile に -ldl を追加しなきゃいけなかった気がしたのだけど、そんなエラーも
でなかったので、気にしないことにして、後日実行できるかやってみることに。

3/19
Other
USB メモリで knoppix を起動して、メールを読んだり web に接続できる環境を
作ったのだけど、1ヶ月ちょっと使っていたら、起動しなくなってしまった。
どうやら knoppix ディレクトリ以下が読めなくなったみたい。復旧しようか、
それとも CD 起動にさせるのか悩み中。 CD だったら、作るのは面倒だけど、
壊れることはないだろうからなぁ。

3/20
LAN-iCN2 Terminator K7-DDR
この前作った OpenSSH 4.0p1 、なんとか動作している。 OpenSSL も 0.9.7e に
なったみたいなので、こっちも新しくしてみた。とりあえず、いつものように。

[toyota@kashyyyk]% wget http://www.openssl.org/source/openssl-0.9.7e.tar.gz
[toyota@kashyyyk]% tar xvfz openssl-0.9.7e.tar.gz
[toyota@kashyyyk]% cd openssl-0.9.7e
[toyota@kashyyyk]% ./Configure linux-elf-arm

arm をつけてるのは、 sh 用がないため。 0.9.7d ではこうすることで、だいぶ
Makefile の修正が減ったため。要は x86 用のコードを回避するためのもの。
さらに、 Makefile の改造。 0.9.7d のときを参考に diff の結果はこんな感じ。

[toyota@kashyyyk]% diff Makefile.old Makefile
16,17c16,17
< OPTIONS= no-krb5
< CONFIGURE_ARGS=linux-elf-arm
---
> OPTIONS=shared --prefix=/usr/sh4-linux --openssldir=/usr/sh4-linux/bin no-krb5
> CONFIGURE_ARGS=shared --prefix=/usr/sh4-linux --openssldir=/usr/sh4-linux/bin linux-elf-arm
29c29
< INSTALLTOP=/usr/local/ssl
---
> INSTALLTOP=/usr/sh4-linux
32c32
< OPENSSLDIR=/usr/local/ssl
---
> OPENSSLDIR=/usr/sh4-linux/bin
62c62
< CC= gcc
---
> CC= sh4-linux-gcc
70,71c70,71
< AR=ar $(ARFLAGS) r
< RANLIB= /usr/bin/ranlib
---
> AR=/usr/sh4-linux/bin/ar $(ARFLAGS) r
> RANLIB= /usr/sh4-linux/bin/ranlib

これで make してみた。なんとか出来たみたい。まずは、クロスコンパイル環境に
インストールする。のだけど、結構量があるので、 shell スクリプトなんかを
作って、対処した。結構多いなぁ。

3/21
SUMICOM
SUMICOM にハーフハイトメモリを装着した。写真があるので、別ページに。

3/22
SUMICOM
USB メモリで起動していた環境が、壊れてしまったようなので、何が壊れたのか
みてみることにした。現象は、起動途中で knoppix が読み込めない、といった
エラーがでて止まってしまう。
knoppix で起動して、中身を見てみた。

[root@bakura]# mount /dev/sda1 /mnt/sda1

中を見た感じでは、問題なさそうだったので、cloop 本体の KNOPPIX ファイルを
コピーしてみた。

[root@bakura]# cp /mnt/cdrom1/KNOPPIX/KNOPPIX /mnt/sda1/knoppix/knoppix

これで、起動してみたら、あっさり起動してしまった。何かのタイミングで。
KNOPPIX ファイルが壊れただけのようである。

3/23
LAN-iCN2 Terminator K7-DDR
sh4 用に nmap をコンパイルしてみた。クロスコンパイルの環境でダウンロードから。

[toyota@kashyyyk]% wget http://download.insecure.org/nmap/dist/nmap-3.81.tar.bz2
[toyota@kashyyyk]% tar xvfj nmap-3.81.tar.bz2
[toyota@kashyyyk]% cd nmap-3.81/
[toyota@kashyyyk]% ./configure --build=i386-linux --host=sh4-linux CC=sh4-linux-gcc
〜snip〜
checking for snprintf... yes
checking if --disable-protochain option is specified... enabled
configure: error: pcap type not determined when cross-compiling; use --with-pcap=...
configure: error: /bin/sh './configure' failed for libpcap-possiblymodified

--with-pcap オプションをつけてあげた。

[toyota@kashyyyk]% ./configure --build=i386-linux --host=sh4-linux
--with-pcap=/usr/sh4-linux/lib CC=sh4-linux-gcc

これで、問題なく configure は終了したので make してみた。

[toyota@kashyyyk]% make
Compiling libpcap
make[1]: Entering directory `/home/toyota/src/nmap-3.81/libpcap-possiblymodified'
make[1]: *** No rule to make target `pcap-/usr/sh4-linux/lib.c', needed by
`pcap-/usr/sh4-linux/lib.o'.  Stop.
make[1]: Leaving directory `/home/toyota/src/nmap-3.81/libpcap-possiblymodified'
make: *** [libpcap-possiblymodified/libpcap.a] Error 2

ダメダメみたい。眠いので、寝よう。

3/24
WWW Network
佐賀県警の様式一覧のページ
http://www.saganet.ne.jp/kenkei/yousiki/yousiki.html
無駄な動きをつけたいのはわかるが、Mozilla ではクリックできないし…。ソースを
みたら、やたら無駄なことしてて、ファイルサイズも 27KB とでかいし、何というか
わかってない人が作ってんだろうな、という感じ。公共機関なんだから、この辺は
ちゃんとしてもらいたい。

3/25
LAN-iCN2 Terminator K7-DDR
23日の続き。sh4 用に nmap をコンパイル、なんだか23日は眠くてダメダメだった
みたい。 configure を読み直して、こんな感じで make まで完了した。

[toyota@kashyyyk]% ./configure --build=i386-linux --host=sh4-linux
 --without-nmapfe --with-pcap=linux ac_cv_linux_vers=2 CC=sh4-linux-gcc
[toyota@kashyyyk]% cd libpcre
[toyota@kashyyyk]% gcc -c -g -O2 -I. -I.    -I. ./dftables.c
[toyota@kashyyyk]% gcc -g -O2 -o dftables dftables.o
[toyota@kashyyyk]% cd ..
[toyota@kashyyyk]% make

実行するのは、明日にしよっと。

3/26
LAN-iCN2 Terminator K7-DDR
昨日、クロスコンパイル環境でコンパイルした nmap を LAN-iCN2 にコピーして
実行してみた。…。あっさり動いてしまった。ちょっとつまらないというか、
変に期待はずれだった。ま、うまく行くときもあるということで。

3/27
WWW
今月のアクセスログを眺めていたら DCM-17WTHD を Yahoo で検索してくる人が
多いなぁ。試しに検索してみたら、1番上位に来てたのね。なんか、適当に書いた
ページだから、もっとまともに書いておけば良かったなぁ…。

3/28
LAN-iCN2 Terminator K7-DDR
私が何かをインストールすると、すぐにバージョンが上がることが多く、まぁ、
良くあるマーフィーの法則の類かもしれないけど。で、 0.9.7e から 0.9.7f に
なったようなので、バージョンをあげてみた。細かくは見てないけど、
including important bugfixes
ってあるので、それなりに変更があったのでしょう。sh4 のクロスコンパイル環境で。

[toyota@kashyyyk]% wget http://www.openssl.org/source/openssl-0.9.7f.tar.gz
[toyota@kashyyyk]% tar xvfz openssl-0.9.7f.tar.gz
[toyota@kashyyyk]% cd openssl-0.9.7f
[toyota@kashyyyk]% ./Configure linux-elf-arm

と、20日に使った patch を使って、そのまま make したら出来上がった。ちょっと
手応え不足かな。

3/29
Other
EOS Kiss を買って、手持ちのシグマ 28-300mm F3.5-6.3 を付けようと考えて
いたのだけど、これって 35mm 換算で 42.5-450mm ぐらいで、広角側が少し淋しく
なる。色々と見ていたら、10倍や12倍レンズ標準装備の一眼じゃないデジカメの
少し古めのが 3万円とかで売っている。さらにレンズが F2.8 とか滅茶苦茶明るい
のがついてるし、広角側も 35mm レンズ換算で 35mm とか 38mm なんで、便利
だろうし。 EVF が我慢できるのだったら、そんなんでも良いかな、なんて思って
きた。

3/30
Other
アルミホイールの規格に JWL というのがある。このマークは、

「乗用車(乗用定員11人以上の自動車、二輪車及び側車付二輪自動車を除く)
用軽合金ホイールに適用されている安全基準」

らしい。しかし二輪車のアルミホイールにも JWL が必要って書いてある web page
とかあったりして、よくわからない。マルケジーニ製品のところにも
http://ridersnavi.com/youhin/0109.html

「日本の車検合格の基準となるJWL規格(注2)に対する試験を実施したうえで
JWLシリアルを入れています。」

なんて書いてあるし。実際、二輪車のアルミホイールには強度申請が必要なのか
よくわからない。明日、私のスクーターのホイールをじっくり眺めてみようかな。

3/31
WWW
geocities の移行をすっかり忘れていて、今日までだと気がついて、急いで移行
してみた。今日が終わる1時間ぐらい前に。なんとかなったみたいだけど、3つ
あるページのうち、2つは更新しないことにした。1年以上更新してなかったし。


21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi
since 2003