Perlコーディング初心者質問スレ Part 45
■ このスレッドは過去ログ倉庫に格納されています
0001988
2005/12/08(木) 22:48:27ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0558nobodyさん
2006/01/10(火) 09:25:04ID:j2HoU23funshift(@hoge, splice(@huga, 1, 1));
@hugaの1番目だけを、@hogeの先頭にくっつけたいのです。
本の通りなのですができません。
何故なのでしょうか?
0559nobodyさん
2006/01/10(火) 09:37:51ID:???splice @huga, 0, 1
0561nobodyさん
2006/01/10(火) 10:57:13ID:j2HoU23f>>559,>>560
レスありがとうございます。
「splice @huga, 0, 1」も「shift @huga」も、@hugaの1番目のみを削除しているんですよね?
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
っていうファイルを
2,3,4,5
7,8,9,10
12,13,14,15 と変える...?
ちょっと違うような。@hugaから抜いた1番目のものを
@hogeの先頭にくっつけるには
unshiftを使って、<配列の先頭に要素を追加する>と書いてありました。
更にそのまま引用すると
●配列の$i番目の要素を別の配列の先頭に追加する
unshift(@newarray, splice(@oldarray, $i, 1));
(CGI/perlポケットリファレンスより抜粋)
何が間違っているのでしょうか......
0562nobodyさん
2006/01/10(火) 12:06:07ID:???perlの配列は添字が0から始まるので、最初の要素から
0番目,1番目,...とあらわすことがよくあります。ポケット
リファレンスはこの書き方を採用しているようですな。
0563nobodyさん
2006/01/10(火) 12:09:39ID:???> 何が間違っているのでしょうか......
ここ↓
> ●配列の$i番目の要素を別の配列の先頭に追加する
splice の第二引数は配列の先頭からのオフセットなので 0 から始まるのよ。
即ち通常は splice し始める要素の添字と一致する。従って、
> unshift(@newarray, splice(@oldarray, $i, 1));
の動作はその本の記述に合わせると、
「配列の$i+1番目の要素を別の配列の先頭に追加する」
ということになる。
@oldarray から取り除くものが先頭要素に固定されているのなら >>559 の言うように、
unshift @newarray, shift @oldarray;
で等価。
0565563
2006/01/10(火) 12:44:26ID:???おせっかいついでに、
当方は
「あなたがどんな結果を期待しているのか」
「実行したコード」
「実際の結果」
のうちどれひとつとして知らないので、本来は「何が間違っているのでしょうか」と問われても「何かが間違ってるんでしょうねぇ」としか答えられないのですわ。
だから期待した返答がなくても、あるいは期待しなかった返答すらなくても許してね。ぼくがんばったの。
0566nobodyさん
2006/01/10(火) 15:28:44ID:???マジお勧め!
0567nobodyさん
2006/01/10(火) 15:57:35ID:???$namae = 'kansuu';
$bangou = 1;
${$namae . $bangou} = kansuu;
&$kansuu1;
sub kansuu { print 'hoge' }
0568nobodyさん
2006/01/10(火) 16:06:53ID:???0569nobodyさん
2006/01/10(火) 16:24:34ID:???これでOK?
ちなみになぜ&kansuu1;でいいのかいまいちわかってなかったりするw
myとか使ってやってみてるけどデキネorz
#!/usr/local/bin/perl
use strict;
$main::namae = 'kansuu';
$main::bangou = '1';
$main::{$main::namae . $main::bangou} = 'kansuu';
&kansuu1;
sub kansuu { print 'hoge' }
0570567
2006/01/10(火) 16:31:00ID:???それがstrictじゃ無い環境だと勝手に文字列扱いしてくれるんだよね、これが
-wで警告が出るけど、その辺の解釈が微妙だからstrict subsがあるわけだ
my $hoge = func;
sub func { print 'hoge' }
print $hoge;
>>569
ちょ、おまw
>>567はネタで考えられる限りの悪例だぞw
> ちなみになぜ&kansuu1;でいいのかいまいちわかってなかったりする
${$namae . $bangou}ここで$namaeと$bangouを連結した名前の変数、
つまり$kansuu1に代入してるから。
strictに真面目に書くとこう
my $name = 'kansuu';
my $num = 1;
my %hash;
$hash{$name}[$num] = \&func;
&{$hash{$name}[$num]};
sub func { print 'hoge' }
0571nobodyさん
2006/01/10(火) 16:37:22ID:???俺もまさかそのままで通るとは思わなかったw
一応strictになってるっぽいw
あと、$kansuu1に連結して、&kansuu1で呼び出すのはわかるんだけど、
なぜ&kansuu1;でサブルーティン呼び出せるのかがいまいちわからんのだ
0572nobodyさん
2006/01/10(火) 17:11:34ID:???あースマン$がないの読み落としてた
これは、名前空間を直接操作してmain::kansuu1にkansuuを登録しちゃってるから。
$, = "\n";
print keys %main::;
とかやってみるとわかると思う
0573nobodyさん
2006/01/10(火) 17:34:33ID:???ちょっとだけわかってきた気がする
#!/usr/local/bin/perl
use strict;
$main::test = 'yeah';
$main::{$main::test} = 'kansuu';
&yeah;
sub kansuu { print 'hoge' }
これでも呼び出せるって事か
つかややこしいなぁ
初心者の俺には理解の範疇を超えそうな感じだよ
色々試してがんばって消化してみる
0574nobodyさん
2006/01/10(火) 17:34:45ID:NnDCxprG0575nobodyさん
2006/01/10(火) 18:05:03ID:???俺はこのやり取りを見ずに>>573を見ても、
何でだかさっぱりわからなかったと断言できるかも。
普通にsub yeahを探しちゃうだろうし。
0576nobodyさん
2006/01/10(火) 18:07:05ID:???0577nobodyさん
2006/01/10(火) 18:15:52ID:???確かにuse strict;は通るがそういう問題じゃない
0578nobodyさん
2006/01/10(火) 18:15:53ID:???0579nobodyさん
2006/01/10(火) 20:48:46ID:???0581nobodyさん
2006/01/10(火) 23:19:13ID:???Shift_JISコードのCSVファイルを読み込んで、jcode.pl を使ってJISコードに変換してから
ブラウザに吐き出すCGIプログラム(プログラムはJISコード)を作成中なのですが、
1. CSVを読み込む
2. htmlタグ文字のエスケープ(<>&"')
3. JISコードに変換
4. 出力
の場合には文字化けは起こらなかったのですが、2. と 3. の処理を逆
(変換してからエスケープ)にすると文字化けしてしまいました。
これは、JISコードの日本語文字中に、htmlタグ文字(<>&"'のどれか)が
含まれているのが原因という認識でいいのでしょうか?
その回避策として、Shift_JISの状態でエスケープをするのは問題ないでしょうか?
(Shift_JIS の場合は「\」が入る文字があるのは認識してますが他にも含まれる文字があればマズイですよね…)
ご教示いただけると幸いです。
0582nobodyさん
2006/01/10(火) 23:27:58ID:???> これは、JISコードの日本語文字中に、htmlタグ文字(<>&"'のどれか)が
> 含まれているのが原因という認識でいいのでしょうか?
そのとおり。どれかどころか全部含まれる
> その回避策として、Shift_JISの状態でエスケープをするのは問題ないでしょうか?
その五つの文字に関してはShift_JISの範囲外だから問題ない。
良く知られている\のほかにも色々な文字が範囲に入っているので
EUC-JPに変換したほうが良いこともある。
ここを見ると良く解ると思う
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html
0584581
2006/01/11(水) 02:32:30ID:???レスありがとうございます。
JISコードの場合は <>&"' が全部出てくる可能性があるんですね。
非常に勉強になります。。
ちなみに、タグ文字をエスケープ(< など)で現れる
セミコロンは自体は大丈夫でしょうか?
(日本語の1byte目とくっついて文字化けなど)
とりあえずはSJISのエスケープでやってみます。
ありがとうございました。
0585nobodyさん
2006/01/11(水) 03:01:58ID:???範囲内にあるかは>>582のページと適当なASCIIコード表をつき合わせればわかる。
ttp://adlib.rsch.tuis.ac.jp/~akira/lect/softa/ascii.html とか
--------------------------------81=====9F---------------E0=====FC-: SJIS全角 上位
----------------40=============================================FC-: SJIS全角 下位
に対しセミコロンは3Bで範囲外
そもそも、範囲内だったしてもamp;のように1byte目となる位置は必ずアルファベットでしょうが
0586nobodyさん
2006/01/11(水) 09:19:18ID:???これは絶対外せないルールなのか?
0587nobodyさん
2006/01/11(水) 10:05:55ID:CQ4aDWhiこのCGIをダウソしたんですが、CGIを設定することができずに困ってます
とりあえずウェブスペースにうpしたら「500 Internal Server Error」と表示されました
どなたかお願いします
0588nobodyさん
2006/01/11(水) 10:41:24ID:???0589587
2006/01/11(水) 10:49:16ID:???このあたりの設定も満足にできていません
>>588
たぶん自分のコーディングミスだと思います
0590587
2006/01/11(水) 10:56:49ID:???ここに設置しようと思ってます
0591nobodyさん
2006/01/11(水) 11:22:37ID:???0592nobodyさん
2006/01/11(水) 12:01:21ID:???0593587
2006/01/11(水) 15:39:23ID:CQ4aDWhi薄々聞く場所を間違えたのではないかと思っていましたが
お邪魔しました
他をあたります
レスありがとうございました
0594nobodyさん
2006/01/11(水) 18:11:07ID:???use strict;
use warnings;
use utf8;
binmode(STDOUT,':encoding(shiftjis)');
use LWP::UserAgent;
my($ua,$req,$res);
$ua = LWP::UserAgent->new;
$ua->timeout(10);
$req = HTTP::Request->new( GET => $ARGV[0] );
$res = $ua->simple_request($req);
この状態で$res->header('Content-Type')を出力するとなぜか二重になって返ってきます。
例えばYahooにアクセスさせて出力すると
text/html;charset=euc-jptext/html; charset=euc-jp
なんて文字列が返ってきます。
これはおかしいと思うのですが、なにか間違えていますか?
HTTP::ResponseはActive Perl 5.8.7についてたやつで、バージョン1.52です。
0595nobodyさん
2006/01/11(水) 18:12:22ID:???$iにはmyとかつけてあげた方が負荷的には少なかったりする?
再利用されるならグローバル変数でも問題なさそうな気がするけど、
こういう所って負荷を気にするならどうするのかなとちょっと質問。
もっと気をつけるところはあるんだろうけど、とりあえずやれるだけはやっておきたいので。
0596nobodyさん
2006/01/11(水) 18:27:30ID:???0597nobodyさん
2006/01/11(水) 18:50:18ID:???0598nobodyさん
2006/01/11(水) 18:55:27ID:rynIEcBA0599nobodyさん
2006/01/11(水) 18:59:22ID:???0600nobodyさん
2006/01/11(水) 19:07:41ID:???リダイレクトを自動的に処理させたくないのでsimple_requestを使っています。
また $ua->get をつかっても、やはりContent-Typeが二重になって返ってきます。
今気がつきましたが、Googleにアクセスすると完全に二重ではなく
text/htmltext/html; charset=Shift_JIS
という、すごい中途半端な感じになります…。
0601nobodyさん
2006/01/11(水) 19:14:24ID:???ってしたらリダイレクトされんと思うが
0602nobodyさん
2006/01/11(水) 19:26:15ID:???それリスト ("text/html", "text/html; charset=Shift_JIS")
as_stringでprintしてみ
0604nobodyさん
2006/01/11(水) 19:48:01ID:???そうすればgetメソッドでもできましたか。
しかし、個人的に見た目にすぐわかるのでsimple_requestを使っておきます。
>602-603
なるほど。リストでしたか。
解決できました。本当にどうもありがとう。
META要素も読んでいるのですか?
HTTP関係のモジュールは継承がすごくてどのモジュールをperldocすればいいのか…。
0605nobodyさん
2006/01/11(水) 19:54:11ID:???use utf8;
意味解って使ってるか?
0606nobodyさん
2006/01/11(水) 20:20:40ID:???はい、スクリプト中のリテラルをすべてUTF-8として扱い、
それらをUTF-8フラグ付き文字列に変換するということですよね。
今回のスクリプトではマルチバイトの文字がないので意味はないですが、
よく、スクリプトを作るに出力するエンコードをbinmodeですぐ変換できるようにつけていました。
その習慣で今回もつけてしまいました。すいません。
0607nobodyさん
2006/01/11(水) 20:59:00ID:???use encoding 'utf8';
じゃないのか? まぁどっちでもいいのかもしれんけど。
use utf8;
$useutf8したからこんな変数名も使える = '中身';
print $useutf8したからこんな変数名も使える;
exit;
0608nobodyさん
2006/01/11(水) 21:19:14ID:???> META要素も読んでいるのですか?
LWP::Protocol::httpがLWP::Protocolのcollect()を呼び出していて、
そこでHTML::HeadParserをrequireしてる。
0609nobodyさん
2006/01/11(水) 22:10:05ID:???encondingプラグマはスコープがグローバルなはずなので、
他のエンコードで書かれたモジュールで問題が起きませんか?
マルチバイト使ったモジュールなんかそう無いので気にする必要ないかもしれませんが、
自分で何か作った時に、「した覚えがないのにUTF-8化されている」のはなんかハマる気がします…。
>>608
LWP::UserAgentからちょっと呼んでみました…。
…私には荷が重いようで…。
よくわからないので、headerメソッドの第1要素を使っておきます…。
どうもありがとうございます。
0610nobodyさん
2006/01/12(木) 01:27:01ID:???CGI を書くときには 有名なとほほさんの http://www.tohoho-web.com/cgi/wwwperl.txt のように
環境変数を直接読むのが普通です。
ただ、近頃は、CGI.pm を使うの方法も増えているようです。
でも、聞いた話によると、CGI,pmを読み込む分、環境変数を直接扱うより遅くなるそうですし、
使えない環境もあるそうです。
なんか、CGI.pmのマニュアル見ても難しそうだし、結局、CGI.pmを使うメリットというのは何なのでしょう?
0611nobodyさん
2006/01/12(木) 01:31:28ID:???バイナリかよ、って笑っちゃうぐらい
今は物好きしか使ってないんじゃない?
0612610
2006/01/12(木) 01:40:26ID:???環境変数直接扱い → CGI.pm
と変わってきたけど、結局、今はまた環境変数直接扱いの方が見直されてきたということで良いんでしょうか?
0614nobodyさん
2006/01/12(木) 07:19:00ID:???パフォーマンス的に問題が無ければ
何も考えないでCGI.pm使っておけば問題ないよ
0615nobodyさん
2006/01/12(木) 07:28:05ID:???0616nobodyさん
2006/01/12(木) 07:42:43ID:???逆を言えば、パフォーマンス的に問題があるかどうかわからない場合、CGI.pm使わない方が良い?
0617nobodyさん
2006/01/12(木) 07:59:39ID:???1日に何万ヒットもあったりレン鯖でCPUやメモリの制限に引っかかるようだったら
自前で用意したりカスタマイズしたほうが良いんじゃない
単純にデコードだけしたいんならCGI::Liteでもいいんじゃね?
結局はケースバイケース
0618nobodyさん
2006/01/12(木) 08:07:57ID:???パフォーマンスに困るぐらいのアクセスがあってから言えってんだ。
0619nobodyさん
2006/01/12(木) 09:08:02ID:???いや、俺のことだが。
0620nobodyさん
2006/01/12(木) 12:42:21ID:???0621nobodyさん
2006/01/12(木) 12:48:54ID:???初心者のうちは。
0622nobodyさん
2006/01/12(木) 13:25:04ID:???なんて言っても、痛い目を見ないと分かってくれないわけだが。
0625nobodyさん
2006/01/12(木) 14:41:25ID:???フォームをパースするだけにしか使わんから
自作した
0626nobodyさん
2006/01/12(木) 14:47:32ID:fUom/aNQ%COMMENT = (1 => "未設定", 2 => "重要", 3 => "ビジネス", 4 => "個人用");
%CLASS = ("#602000" => "none", "#FF0000" => "important", "#008040" => "business", "#0000BB" => "personal");
こんなハッシュがある状態で、
$color = "#008040";
という変数を使って、
%COMMENTの"ビジネス"を取得って可能でしょうか。
0627nobodyさん
2006/01/12(木) 14:51:45ID:???0628nobodyさん
2006/01/12(木) 15:07:23ID:fUom/aNQハッシュのキーと値をペアで取り出せるeach関数なんていうのがあったんですね!
%VALUE = (1 => "#602000", 2 => "#FF0000", 3 => "#008040", 4 => "#0000BB");
%COMMENT = (1 => "未設定", 2 => "重要", 3 => "ビジネス", 4 => "個人用");
%CLASS = ("#602000" => "none", "#FF0000" => "important", "#008040" => "business", "#0000BB" => "personal");
$color = "#008040";
while (($key, $value) = each (%VALUE)) {
if ($color eq $value) {
while (($new_key, $value) = each (%COMMENT)) {
if ($key eq $new_key) {
$comment = $value;
}
}
}
}
print $comment;
ありがとうございました。
0629nobodyさん
2006/01/12(木) 18:06:27ID:???例えばこう内側のループが消えるように。
while (($key, $value) = each (%VALUE)) {
if ($color eq $value) {
$comment = $COMMENT{ $value };
last;
}
}
0630nobodyさん
2006/01/12(木) 18:07:26ID:???$COMMENT{ $value }; → $COMMENT{ $key };
0631nobodyさん
2006/01/12(木) 18:36:39ID:???{
my %temp = reverse %VALUE;
$comment = $COMMENT{$temp{"#008040"]}
}
が楽だと思う。
0632nobodyさん
2006/01/12(木) 19:21:41ID:Xjv4jYTd更新めんどくてperlでhtmlファイル管理、生成のプログラム書いてみたんだけど、なにせド素人なもんで、そんで質問以下の構造のモノって鯖に負担になりますか?
-------------
上:ヘッダ一部、トップlogo部分
左;左メニュー、左メニューに日記の新着記事、左メニュー広告欄
中:中央センター上部広告、本文(※)、フッタ
右:右リンクメニュー、右メニューの広告欄
部品的に見てこれらでレイアウト(構成)されてるサイトなんですが「本文(※)」以外は、全ページの共通表示部分になるのです。
要するに、サイト全体の共通部分を上記の様に部品別に.logでバラバラに保存してそれをCGIでHTML生成する時に、上記の部品を一回一回読み込んで、配列に代入して、printで出力。
本文は別のログに保存してあって、それだけブラウザで編集可能、それも同時に読み込んで行って、htmlとして出力される作り。
本文が保存されているlogファイルは、数十ページの本文内容を、件名<>本文<>etcの様に、<>で区切って、改行別に保存(ページ数が増えるとドンドン重たくなる)
で、問題はここから★
サイト全体でページ数が200〜300ぐらいになるのです。(更新すりゃもっと増加)
こう言った作りだと、共通表示部分、例えば、「左メニュー.log」のコンテンツへのリンクを変更すれば、サイトのページ300ファイルを全部更新(html生成)し直さなくちゃいけない訳です。
ちなみに300ファイル一気に生成するわけではなくって、同じスクリプトを複数設置しているのでサイトのテーマ別、例えば「サイト案内」のコンテンツだけで10ファイルあって、
それらを複数のスクリプトで計300ファイル程度を生成する作りです。
なにせド素人なもんで、変な無鉄砲なモノした組めないです。情けない
これって、とゆうか、配列の乱用?と計、数メガにのぼるhtml生成って負担になりますか?
なんか自分で書いてて、何がなにやらよく分からん様になってきた。アホ文失礼。orz
0633nobodyさん
2006/01/12(木) 19:24:13ID:vLiWBj2uそれともっと簡潔に
でなきゃサイトを晒すか・・・
0634nobodyさん
2006/01/12(木) 19:32:13ID:???> 本文が保存されているlogファイルは、数十ページの本文内容を、件名<>本文<>etcの様に、<>で区切って、改行別に保存(ページ数が増えるとドンドン重たくなる)
本文が再帰してるように読める
0635nobodyさん
2006/01/12(木) 19:33:31ID:???ここが意味不明。
1つのHTMLファイルが数メガになるのか?
0636nobodyさん
2006/01/12(木) 19:50:39ID:vLiWBj2uログファイルは月ごとぐらいで更新する (といっても1年で1000ページとか行かないだろうから1年あたり1つのログでいいかも)
(ただそのファイルがぶっ飛んだらその年のページが全部飛ぶことになるので月ごとが安全っちゃ安全か)
ページ (行ね) には必ず ID を割り振る
これを条件として、CGI には テーマ ID、ログファイル名、ページ ID を渡す
ページ ID が取得できなければそのログ一覧を。
ログファイル名が取得できなければログ一覧 (各月の一覧か隔年の一覧なのかは自分で決めてね)
テーマ ID が取得できなければテーマ一覧を表示する。
こうすればページあたりのヒット数とか、テーマ別ヒット数とかが用意に取得できるようになる
0637nobodyさん
2006/01/12(木) 19:51:47ID:vLiWBj2uディレクトリで分けてもいいな
./テーマ ID /ログファイル
んでテーマ ID とするディレクトリにテンプレート用 HTML を置いておくとか
0638nobodyさん
2006/01/12(木) 20:47:10ID:???というかクエリー取得のためだけに CGI.pm 使ってる人って十中八九
「なんちゃってモジュール使っちゃってます厨」
でしょ。
おまえら資源のムダだから大人しく自分で車輪の再発明してろと(ry
0641nobodyさん
2006/01/12(木) 23:14:10ID:???普通にblog使ったら?
今あるデータをコンバートする方向で。
システム作るより、コンバータ書いた方が楽だと思う。
どういうデータにしたら良いかは、実際にここログとか無料のblogに入ってみて、
データを書き出してみれば分かるはず。
その形式で出力するように、今あるデータに対するフィルタを書く。
0642nobodyさん
2006/01/12(木) 23:14:14ID:pW3y8Hzchttp://hoge.com/ho/ge というのと hoge.com/hoge/ge が両方
<a href="http://hoge.com/ho/ge">hoge.com/ho/ge</a> というリンクになる
変換をしたいと思います。 これを正規表現で一発でやるというのは出来るのでしょうか?
0643nobodyさん
2006/01/12(木) 23:17:32ID:vLiWBj2u0644nobodyさん
2006/01/12(木) 23:19:36ID:???正規表現で処理する以前に、
hoge.com/hoge/ge
がURLであるかどうか、判断できないような…。
www*.hoge.com/hoge/ge
とかならURLと見なして処理することも出来るだろうけど。
0645nobodyさん
2006/01/12(木) 23:24:33ID:???サーバー側でやるような処理じゃないよ。ローカル側で処理すべき。
そもそも300ファイルすべてに左メニューとか右メニューとか必要なの?
上部に1本、パンくずリンクでもあれば済むんじゃないの?
なんの情報も生まない、しかも広告入りのメニューが左右を延々占領するのもかなわん。ユーザビリティの履き違えかエロサイトの仕様だ。
0647nobodyさん
2006/01/13(金) 00:08:31ID:???くらいで大雑把にとか。
0649nobodyさん
2006/01/13(金) 00:29:47ID:42x/OYc6テンプレみたいなあげ足取りですね
0650nobodyさん
2006/01/13(金) 00:30:59ID:???0651nobodyさん
2006/01/13(金) 00:35:03ID:???おまえらどこでそんな中途半端なモジュールの使い方覚えてきたのかと。
0652nobodyさん
2006/01/13(金) 00:37:15ID:???0653nobodyさん
2006/01/13(金) 00:41:22ID:???$domain = '[\w\-]+\.[\w\-\.]+';
$path = '\/[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+';
s/(http:\/\/|\b)($domain($path)?)/<a href=\"http:\/\/$2\">$2<\/a>/g;
0654nobodyさん
2006/01/13(金) 00:47:54ID:???0655nobodyさん
2006/01/13(金) 00:51:26ID:???ちゃんと取得できてるのか確認しながらコーティングするとこうなるんよ
0656nobodyさん
2006/01/13(金) 01:00:29ID:???■ このスレッドは過去ログ倉庫に格納されています