Perlコーディング初心者質問スレ Part 49
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/05/31(水) 04:32:28ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0740nobodyさん
2006/06/21(水) 13:10:47ID:QAUqj+Eucvs?といいますか、特定の文字で区切られた(12個)ファイルを読み込んで
二次元配列に入れて、処理をしたい。
2: それでこんな風にやってみたが・・・
for文(i++)で行を読み込んでから、それをさらにfor文(j++)で区切りずつに
わけ、その都度$list[$i][$j]に入れていくようにしました。
3: こんなエラーが出て上手く行かなかった。
12行目に来たところで突然ちゃんと配列に入らなくなってしまいました・・・。
読み込むファイルに原因があるのかと思い、1行から20行まで同じ内容のファイルを作ったのですが
同じように読み込めませんでした・・・。どのようなことが原因と考えられるでしょうか・・・?
0741nobodyさん
2006/06/21(水) 13:21:16ID:???Perlメモには多くの人がお世話になっているはず。
そのページの他の項目も非常に為になりますよ。
>>740
どんなエラーですか・・・
0743737
2006/06/21(水) 13:46:58ID:Jpc8QU0aこれはとても勉強になりそうです。
逆引きなのが助かります。
ところで、>>738にて指摘してもらった箇所を参考にしてみたんですが
>>737に即して書き直すと
$i = 0;
undef(%jusho);
foreach $name ('北海道', '東京', '愛知', '', '大阪', '福岡') {
$jusho{$name} = $i++;
}
@data = map {$_->[0]}
sort {$jusho{$a->[5]} <=> $jusho{$b->[5]}}
map {[$_, split /<>/]} @data;
というふうになるかと思うんですが、「住所」の項には都道府県以下の内容も含まれているので、
この方法で対処しようとすると「住所」の項とは別に「都道府県」の項を設けるか、
住所を「都道府県」と「それ以下」とに分けなければダメですよね?
これはこれで大変便利で、参考になりましたが、
今の記述内容のファイルでは、やはり>>737の方法しかないんでしょうか?
0744nobodyさん
2006/06/21(水) 13:49:01ID:???マッチする前の部分も表示されました。
一応$& $'と書くことで、自分のやりたいことはできてるんですが、
なぜこうなるのか気になります。
何か特別な理由があるんでしょうか?
0745nobodyさん
2006/06/21(水) 13:49:48ID:???別に20行目とか多次元配列で何か起こるってことはないと思う。
どうみても処理のせいです。
同じように多次元配列(ハッシュ) にいれるモジュール作ったけど、そんなことは起きなかったし。
データが shiftjis で、その特定のマーカーと知らないうちにかぶってるとか。
0747nobodyさん
2006/06/21(水) 14:00:01ID:???応用しようぜw
@data = map {$_->[0]}
sort {$jusho{$a->[1]} <=> $jusho{$b->[1]}}
map { my @tmp = split(/<>/); $tmp[5] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1] } @data;
まあニュアンスね。試してないけど。
0748nobodyさん
2006/06/21(水) 14:00:50ID:???sort {$jusho{$a->[1]} <=> $jusho{$b->[1]}}
↓
sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
0749737
2006/06/21(水) 14:20:59ID:Jpc8QU0a>sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
これは「名前」でソートするってことですか?
>$tmp[5] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1]
この部分が分かりません・・・。
簡単にで良いので解説を・・・。
0750nobodyさん
2006/06/21(水) 14:35:16ID:???()の中身を取って$1に入れときたいのです。
0752nobodyさん
2006/06/21(水) 14:44:47ID:???0753737
2006/06/21(水) 14:54:48ID:Jpc8QU0a解説ありがとうございます。
とすると、
>>747の処理をして一旦「都道府県」だけを取り出して>>743の処理をする
という解釈で良いんでしょうか?
それとも>>743のコードの6行目以下を>>747のニュアンスのように書き換える
ということなんでしょうか?
京都府に関しては岸部四郎に免じてお許しを。
0754nobodyさん
2006/06/21(水) 15:02:29ID:???0755nobodyさん
2006/06/21(水) 15:11:00ID:???0756737
2006/06/21(水) 15:19:55ID:Jpc8QU0a0757nobodyさん
2006/06/21(水) 15:26:09ID:???0758nobodyさん
2006/06/21(水) 15:27:40ID:???0759nobodyさん
2006/06/21(水) 15:33:54ID:???0760nobodyさん
2006/06/21(水) 15:40:10ID:???0761nobodyさん
2006/06/21(水) 15:42:59ID:???0762nobodyさん
2006/06/21(水) 15:47:58ID:???HTTP上の問題は今になって考えればなかっただろうが。
UAでの解釈問題はあるかもな。
今の出力コードでおすすめは何?
c-HTMLではSJIS onlyなi-modeも拡張されたの?
0763nobodyさん
2006/06/21(水) 15:50:04ID:???0764744
2006/06/21(水) 15:51:28ID:sa5CDJCkすみません、こんな感じです。
$euc_regex = "(?:$ascii|$two_bytes|$three_bytes)*?";
#検索
while (chomp ($_ = <IN>)) {
if (/<DOCID>(.+)<\/DOCID>/) {
$docid = $1;
}
if (/<TITL>(.+)<\/TITL>/) {
$title = $1;
}
if (/<AUTHOR>(.+)<\/AUTHOR>/) {
$author = $1;
}
if ($form{'tosho1'} eq "all") {
if (/^$euc_regex($key1)/) {
$found++;
print "ID=$docid TITLE=$title AUTHOR=$author<BR>\n";
print "$& <BR>\n<BR>\n";
}
}
}
0765744
2006/06/21(水) 15:52:07ID:sa5CDJCk………石
のように表示されます。
質問は「なぜ$&を使ったのにマッチした部分以前も表示されてしまうか」です。
最低限がどれくらいかわからなかったんですが、
もっとソースの大部分を書いたほうがいいでしょうか?
0766nobodyさん
2006/06/21(水) 15:55:04ID:???メールも7bitだけだしなー。
携帯のブラウザのプログラマはほんと何考えて作ってんだと思うよ。
0767nobodyさん
2006/06/21(水) 15:55:41ID:???0768nobodyさん
2006/06/21(水) 15:56:15ID:???$euc_regex = "(?:$ascii|$two_bytes|$three_bytes)*?";
ちょw おまwww
0769nobodyさん
2006/06/21(水) 15:59:46ID:???> $euc_regex = "(?:$ascii|$two_bytes|$three_bytes)*?";
> if (/^$euc_regex($key1)/) {
え、当たり前では。
「石」で検索かけるってことは、$key1 = "石"なんだよね。多分。
このとき正規表現は
/^(?:$ascii|$two_bytes|$three_bytes)*?(石)/
なんだから、$&ではマッチした部分全部が取れる。
"石"だけ取りたいなら $& じゃなくて $1 でしょう。
0770737
2006/06/21(水) 16:30:27ID:Jpc8QU0a$i = 0;
undef(%jusho);
foreach $name ('北海道', '東京', '愛知', '', '大阪', '福岡') {
$jusho{$name} = $i++;
}
@data = map {$_->[0]}
sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
map { my @tmp = split(/<>/); $tmp[4] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1] } @data;
ラスト3行については下から処理してるんですよね?
なぜ、正規表現で取り出した()の中身を$1に入れて
sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}となるのか分かりません。
岸部四郎の件で気分を害されたならお詫びします。
0771nobodyさん
2006/06/21(水) 16:36:13ID:???解読してみる。
$jusho{ $a->[1] }
・↑の $a の部分は [ $_, $1 ] である、
・つまり $a は [ 元のデータ , 県名 ]
・なので、 $a->[1] は 県名
・$jusho{ $a->[1] } は
$jusho{ 県名 } ということ。
あってる?
0772737
2006/06/21(水) 17:07:18ID:Jpc8QU0a解説ありがとうございます。ラスト3行の意味がやっと理解できました。
そうすると、ハッシュとして割り当てる名前にも都道府県を付ける必要があるわけですね。
$i = 0;
undef(%jusho);
foreach $name ('北海道', '東京都', '愛知県' , '大阪府', '福岡県') {
$jusho{$name} = $i++;
}
@data = map {$_->[0]}
sort {$jusho{$a->[1]} cmp $jusho{$b->[1]}}
map { my @tmp = split(/<>/); $tmp[4] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1] } @data;
としてみましたが、やはりうまくいきません…。
ちなみに読み込む@dataに入っている情報は
岸部4郎<>57<>男<>077-XXXX-XXXX<>京都府京都市伏見区・・・<>
のような形態です。
0773nobodyさん
2006/06/21(水) 17:07:26ID:???公開資料上で全機種対応なのはSJIS。
だが実際は、ほとんどの機種は四大エンコードに対応している。
>>766
糞仕様を決めたのはドコモ。
0775nobodyさん
2006/06/21(水) 17:50:44ID:???鵜呑みじゃなくて、ちょっと考えて流用しようよ。
>>747 のコードが間違ってるんだってば。
本人ニュアンスだけで試してないって書いてあるし。
それと >>751 も忘れずに。
0776nobodyさん
2006/06/21(水) 18:05:31ID:???>>743 に ('北海道', '東京', '愛知', '', '大阪', '福岡') ってあったけど
今度 ('北海道', '東京都', '愛知県' , '大阪府', '福岡県') ってしてるのに、コード変えてないから・・
その場合 /^(.*?(?:県|都|府|道))/ こうねw
まあ京都府問題あるけどね。
0777nobodyさん
2006/06/21(水) 18:06:54ID:???0778nobodyさん
2006/06/21(水) 18:10:36ID:???('北海道', '東京都', '愛知県', '京都', '大阪府', '福岡県')
うわー頭の悪い解決法w
漏れの出生地だったりもします♪
そういや本7も京都府、、、
0780nobodyさん
2006/06/21(水) 19:54:18ID:???0781740
2006/06/21(水) 21:36:56ID:YEOwQDJjこんな感じです。
while (<SOCKET>){
m/ここから後ろが12行で一区切り/ and last;
}
for ($i = 0 ; $i < 100; $i++ )
{
for ($j = 0 ; $j < 13; $j++ )
{
$list[$i][$j] = <SOCKET>;
}
}
[12][5]ぐらいあたりから次に([12][7])ずれてしまいます・・・。
[12][4]までは、ちゃんと入っています。データはeuc-jp?でした。
0782nobodyさん
2006/06/21(水) 21:48:58ID:???$j は 13個で回ってるんだがそれはOKなの?
0783nobodyさん
2006/06/21(水) 21:56:27ID:???ですよねぇ。。。
SOCKETなんて名前を使っているところを見ると何かしら通信しているのかしら?
となると、改行問題とかもありそうな。
しかし、whileでSOCKETを読み捨てているのもなんだかなぁ。。。
0785nobodyさん
2006/06/21(水) 23:05:30ID:???ユーザディレクトリ内に任意のディレクトリ構造を作って利用できます。
ユーザディレクトリ内はCGI経由で閲覧しますので、画像などもCGI経由でバイナリで書き出そうと思い
実際やってみたのですが、画像へ直リンク張るのに比べ、格段に表示が遅いです。
よく、画像の無断直リンク防止のためにCGI経由ってのはあると思うのですが、上記のように、
サイトの全画像をCGI経由ってのは設計としてよろしくないのでしょうか。
0786nobodyさん
2006/06/21(水) 23:08:34ID:???1ページでプロセスいくつ使ってると…。
0787785
2006/06/21(水) 23:11:12ID:???HTTPで通信してデータ取得する場合、一行のサイズに限界があるから、
サーバ側が勝手に(というか仕様に基づいて)改行コードを入れる可能性がある。
サイズが長い行でずれてるのでは?
0791nobodyさん
2006/06/22(木) 00:09:28ID:???本当にあのコードで12行目まで動いてるのだとしたら、
何がやりたいのか分からんのでお手上げだが。
やりたいのは実はこういうことじゃないのか?
while (<SOCKET>){ chomp; push @list, [(split /特定の文字/, $_)[0..11]]; }
0792nobodyさん
2006/06/22(木) 00:58:05ID:???.htaccess が利用できるなら
<FilesMatch "\.(gif|jpe?g|png)$">
SetEnvIf Referer "^$" shutout
Deny from env=shutout
</FilesMatch>
でどうです?
0793nobodyさん
2006/06/22(木) 00:58:34ID:???>785 宛でした
0794nobodyさん
2006/06/22(木) 00:59:58ID:qN5f1h6gまず下のコードは、見ていただければ分かると思いますが、
「$come」や「$name」などが未記入であった場合、「&error」を実行させるという基本的なコードなのですが、
下では「$come」、「$name」、「$title」が”全て未記入”であっても、
「コメントが入力されていません」と、一箇所だけしかエラーが吐き出されません。
全て未記入であった場合
------------------------------------------------------
コメントが入力されていません
名前が入力されていません
タイトルが入力されていません
------------------------------------------------------
等、全てのエラーを”一度に全部”吐き出したいのですが、やり方が分からず困っています・・・・。
どうかよろしくお願いします。
------------------------------------------------------
if ($come eq "") { &error("コメントが入力されていません"); }
if ($name eq "") { &error("名前が入力されていません"); }
if ($title eq "") { &error("タイトルが入力されていません");}
------------------------------------------------------
sub error {
local($msg) = @_;
print "<br>\n";
print "<table border=\"1\" cellpadding=\"3\" width=\"500\" cellspacing=\"0\">\n";
print "<tr><td align=\"center\">\n";
print "$msg\n";
print "</td></tr>\n";
print "</table>\n";
exit;
}
0796nobodyさん
2006/06/22(木) 01:07:27ID:???my $errormsg = "";
if(!$come){ $errormsg .= "コメントが入力されていません<br>\n"; }
if(!$name){ $errormsg .= 名前が入力されていません<br>\n"; }
if(!$title){ $errormsg .= タイトルが入力されていません<br>\n";}
if($errormsg){ &error($errormsg); }
こんな感じでしょか
0797nobodyさん
2006/06/22(木) 01:09:10ID:???実行してるソースに書くときは忘れずに・・・
0799nobodyさん
2006/06/22(木) 01:30:47ID:???$come eq ""を!$comeに変えたのはあまり宜しくないと思うぞ
"0"が入ってきたらどうする
# 確かに無意味そうな投稿だから弾いても良いかも知れんが
0800785
2006/06/22(木) 01:42:48ID:???ありがとうございます!
今回、CGI経由にする目的の一つに、テンプレート内の相対パス指定がCGI経由で
崩れるのを回避するため、ファイル指定関数でfile.cgiを呼び出す、というのが
あったのですが、それは別の方法で解決するとして、一般的な直リンク防止の仕組みは
おっしゃる方法でみんなやってそうですね。試してみます。
>>789
ごめん、全く憶測で言ってるので鵜呑みにしないでください。
0801nobodyさん
2006/06/22(木) 10:08:11ID:???1000を1,000に変換する関数とかってありますか?
0802nobodyさん
2006/06/22(木) 10:14:14ID:???0803nobodyさん
2006/06/22(木) 10:47:24ID:???> 画像をCGI経由で呼び出すと格段に遅い
そう? 実際簡単に↓のようなソース作ってやってみたけど、
#!/usr/bin/perl
my @begin = times();
{
my $img = $ENV{QUERY_STRING} || './hoge.png';
$img =~ s/^\?//;
my $ext = ($img =~ s/\.([A-Za-z]+)$//) ? lc $1 : 'png';
open (IMG, $img .'.'. $ext) or die;
my ($size, $modified) = (stat(IMG))[7, 9];
read (IMG, $_, $size);
close (IMG);
binmode (STDOUT);
print "Last-Modified: ", scalar (gmtime $modified), "\n";
print "Content-length:", $size, "\n";
print "Content-type: image/", ($ext eq 'jpg' ? 'jpeg' : $ext), "\n\n";
print $_;
}
my @end = times();
open (FILE, '>times.txt');
print FILE 'user: ', ($end[0] - $begin[0]), ' , sys: ', ($end[1] - $begin[1]);
close (FILE);
exit;
結果 user: 0 , sys: 0.0078125 とかで、0.01秒かかるかかからないかくらいだったよ?
試したときの画像のサイズは 2.3Mb くらい。
もしかして1行ずつ読みこんでるとかじゃないよねw それとも何十個のファイルを一度に出すとか?
まあ、いちいち負荷かけるのはうちもどうかとは思うけど。
0804nobodyさん
2006/06/22(木) 10:49:30ID:???ある値を空にするとき
$scalar = "";とするのと$scalar = '';とするのとは厳密に言えばどっちが正しいの?
あと、要素が空かどうかを調べるとき
if($scalar eq "")とif($scalar eq '')とか。
0805nobodyさん
2006/06/22(木) 10:52:09ID:???0806nobodyさん
NGNG0808nobodyさん
NGNG代入の場合はダブルの方が高速だったんだけどなぁ
スマソ ソースはム板だったような
0809nobodyさん
NGNG好みの問題なのでわ
0810nobodyさん
2006/06/22(木) 11:15:30ID:???0812nobodyさん
NGNG比較対象or代入対象が長い文字列な程
ダブルクオートの方が速くなった
0813801
2006/06/22(木) 12:03:04ID:???何気にスルーされてる801です。
1000を1,000のように変換することってできませんでしょうか?
0814nobodyさん
2006/06/22(木) 12:04:36ID:???0815801
2006/06/22(木) 12:18:36ID:???$a = Perlメモ($a);
こんなかんじ?
Perlメモの意味がわかりません・・・
0816nobodyさん
NGNG0819737
2006/06/22(木) 12:58:32ID:fNuZm9nk>>775-778
ありがとうございます。
お蔭で住所によるソートについてうまく動作するようになりました。
本当に助かりました。
>>780
「住所」の項を「都道府県」と「それ以下」に分けることも考えたのですが
さらに「市町村」でソートすることも今後ないとは言えないので
柔軟に対応できるようなコードがあれば、そっちの方が良いかなと思った次第でした。
0820737
2006/06/22(木) 13:04:30ID:fNuZm9nk「フォームで選択された項目のみを出力する」という方法が
やはり>>737で書いたようなやり方しか考え付きません。
どうすればもっとスッキリとして処理になるでしょうか?
# 「$nenrei」「$seibetsu」「$denwa」はそれぞれ
# 「年齢」「性別」「電話番号」情報を出力するかどうかのフラグ。
open ( LOG, "< name.txt" ) || die ( "ERROR: $!" );
flock ( LOG,1 );
while ( <LOG> ) {
my @tmp = split (/<>/);
if ( !$denwa ) { splice ( @tmp , 3 , 1 ); }
if ( !$seibetsu ) { splice ( @tmp , 2 , 1 ); }
if ( !$nenrei ) { splice ( @tmp , 1 , 1 ); }
push ( @data , join (',' , @tmp ) );
}
close ( LOG );
# 以下、昨日教えていただいたコードで処理。
$i = 0;
undef(%jusho);
foreach $name ('北海', '東京', '愛知' , '大阪', '福岡') {
$jusho{$name} = $i++;
}
@data = map {$_->[0]}
sort {$jusho{$a->[1]} <=> $jusho{$b->[1]}}
map { my @tmp = split(/<>/); $tmp[4] =~ /^(.*?)(?:県|都|府|道)/; [ $_, $1] } @data;
# @dataを出力。
0821nobodyさん
2006/06/22(木) 13:39:30ID:???ダブルクォートだと変数展開しようとするから遅いんじゃないの??
>>815
ワロタww
「Perlメモ」でググってみ
0822nobodyさん
2006/06/22(木) 13:41:23ID:???ってか >>820 のやりかただとデータの配列ぶっこわれて map 内の $tmp[4] が違うくなるよーな。
splice するより、$tmp[3] = ''; とか空白にすればいいんでないかい?
0823nobodyさん
2006/06/22(木) 13:43:16ID:???その時は文字列を連結すりゃいいじゃん
データ構造を考えるのもプログラミングのうちですよ。
0824nobodyさん
2006/06/22(木) 13:52:02ID:???都道府県/市区町村/それ以下
の3つのカラムに分けておくね、俺なら。
既存のデータがあるの?
0825nobodyさん
2006/06/22(木) 13:54:34ID:???0826nobodyさん
2006/06/22(木) 14:01:39ID:1JauVdIN上記のように、カンマ区切りのCSVデータを文字列として配列に入れた状態で、
CSV内、2つめの値が1のものだけを@bの配列にいれるには、
foreachで全レコードを回し、条件式を使って@bにpushするしかないんでしょうか?
こういった状態にしたいんですが。
@b=("a,1","c,1");
0827nobodyさん
2006/06/22(木) 14:05:22ID:???0828nobodyさん
2006/06/22(木) 14:05:51ID:???0829737
2006/06/22(木) 14:17:17ID:fNuZm9nkあ!その通りですね・・・。
できるなら配列を短くした方が処理としては良いと思って削ってました。
>>823-824
なるほど。最初から細かい部品に分けておいて
必要に応じて連結して対応する形にする方が効率的ですね。
一応、既存のデータはありますがそれほど数は多くありませんし
テキストエディタでも使えばすぐに書き換えられそうなので
データファイルの構造を変えようと思います。
繰り返しになりますが「フォームで選択された項目のみを出力する」という方法については
whileで1回1回全て開いてから、選択されているかどうかをチェックする方法(>>820の前段)で良いんでしょうか?
もちろん動くことは動くんですが、選択の有無のチェックを各行ごとに行う処理を
1回のチェックでできないかと悩んでいます。
0830nobodyさん
2006/06/22(木) 14:21:42ID:???そろそろ自分でやりなよ
0831nobodyさん
2006/06/22(木) 14:24:10ID:???0832nobodyさん
2006/06/22(木) 14:26:23ID:???のはダメ?
0835nobodyさん
2006/06/22(木) 14:33:56ID:/RLzZFvLundef my $pass;
undef my @temp;
my $val = 7; #パスワード8文字
my @char = ('a'..'k','m','n','p'..'z','A'..'H','J'..'N','P'..'Z','2'..'9');
srand(time ^ $email);
foreach (0..$val) {
{
push(@temp,splice(@char,rand(@char),1)) while @char;
@char = @temp;
}
$pass = $char[($_)] . $pass;
}
return $pass;
}
として、パスワードを生成しているんですが、同一プロセスで二つ以上の異なったパスワードを生成したい場合
どうしたらいいんでしょうか?
$emailはグローバル変数でユニークです。$emailが違う毎に違うパスワードを生成したいんですが、
同じ値が返ってきます。
srandって呼び出しできるの一回だけなんですよね。
0836nobodyさん
2006/06/22(木) 14:37:24ID:???0837nobodyさん
2006/06/22(木) 14:43:03ID:???0838nobodyさん
2006/06/22(木) 14:43:23ID:/RLzZFvLおお。できました
ありがとです<(_ _)>
0839737
2006/06/22(木) 14:45:33ID:fNuZm9nkデバッグ・・・そんなつもりはなかったんですけど、
結果的にそういうことになってましたか・・・。
すみません。
「配列の中から必要なものだけ」という点についても
何かアドバイスが欲しかったので、しつこく聞いてしまいました。
すみませんでした。
>>831
その通りでした。
>>822にて指摘していただいた通り
spliceするのではなく要素を空にする方法にします。
>>832>>834
>View側で表示しないよう分岐
にしても、結局同じように@data内を1行ずつ展開して
表示させるかどうかのチェックをする方法しか思いつきませんでした。
アドバイスありがとうございました。
>>833
もしかしたら、自分のやりたいことと書いてるコードが全然見当違いのことをやっていて
「そんな無駄な処理しなくても、こうやった方が良い」というのがあるのかな、と思って質問しました。
特段、妙なコードを書いているわけではないと分かっただけでもありがたいです。
同じような質問、くだらないことを何度もしつこく書き込みをしてすみませんでした。
今まで懇切丁寧に色々と教えて下さった方々本当にありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています