【PHP】下らねぇ質問はここに書き込みやがれ 69
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/27(火) 18:04:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0573nobodyさん
2008/06/16(月) 12:47:09ID:???世界最高のハッカーでもそれは無理な相談だ。
2文字じゃなく4バイトなんだよな?
4バイト目がマルチバイトの一部の場合は、
3 or 5バイト取得したいってわけでもないんだよな?
この意味が分からんなら、ちょっとバイトについて勉強してこい。
この意味が分かるなら、人に伝達する努力をしろ。
0574nobodyさん
2008/06/16(月) 12:48:35ID:???それよりバイトしろ。
0575nobodyさん
2008/06/16(月) 12:51:05ID:???0576nobodyさん
2008/06/16(月) 13:01:42ID:???0577nobodyさん
2008/06/16(月) 13:08:57ID:???0578nobodyさん
2008/06/16(月) 13:55:38ID:???0580nobodyさん
2008/06/16(月) 14:05:46ID:???0582nobodyさん
2008/06/16(月) 14:10:54ID:???0583nobodyさん
2008/06/16(月) 14:29:35ID:???普通にふぃっちするだけなんだけど。
0585nobodyさん
2008/06/16(月) 15:01:09ID:???$sql = "select * from users order by id ";
$stmt = Db::singleton()->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt->execute();
var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 3) );
var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 1) );
こんな感じ
普通にIdが1・2・3という順番でくる
0586nobodyさん
2008/06/16(月) 15:29:45ID:???ぐぐったら上から3つ目くらいに出てきた
0587nobodyさん
2008/06/16(月) 16:49:42ID:NSiUFpCpなにか良いアイデアはないでしょうか?
このとき、多次元配列の深さ(?)はマチマチです。
たとえば、
$hoge = array(
'a' => 'a1',
'b' => array(
'b1' => 'b1',
'b2' => array(
'b2_1',
'b2_2'
)
)
);
このような配列があるとき
print(in_array('b2_1', $hoge));
で、trueが返ってくるようにしたいのです。
自分なりに考えたのは
foreachで回して、もし配列だったらさらにforeachで回す、
というような方法なのですが、
もうすこしスマートなやりかたがあったら教えていただきたいのですが・・・
アドバイスお願いします。
0588nobodyさん
2008/06/16(月) 17:10:05ID:???0589nobodyさん
2008/06/16(月) 17:14:43ID:???function recursive_in_array($str, $arr){
$ret = false;
foreach($arr as $v){
if(is_array($v)) $ret = recursive_in_array($str, $v)?true:$ret;
else $ret = $v==$str?true:$ret;
}
return $ret;
}
0590587
2008/06/16(月) 17:25:50ID:NSiUFpCparray_walkという関数は知っていましたが
array_walk_recursiveという関数もあったのですね!
これをうまく使えばなんとかなりそうです。
>>589
あらかじめ関数を作って、配列が見つかったらもう一度関数を呼び出す、
ということですね!
たしかにこれならスマートにできますね!
ほんとうにみなさんの知識や発想にはいつも驚かされます。
ありがとうございました!
0591nobodyさん
2008/06/16(月) 18:28:20ID:???$target = 'b2_1';
array_walk_recursive( $hoge, create_function( '$value,$key', 'if( $value == $target ) print "true";' ) );
眠くて、全然思考がまとまらんのに、なぜこんなことやってんだろ?w
0592nobodyさん
2008/06/16(月) 19:51:28ID:pwDo5eRwPDOを使った、総レコード数を出すにはどうしたらよいでしょうか?
rowCount()は知っているのですが、これもいまいち使えません。。。
ちなみに、ページ切り替え処理をやるために、総レコード数を出そうとしています。
宜しくお願いいたします。
0594nobodyさん
2008/06/16(月) 20:23:25ID:pwDo5eRwありがとうございます。
ただ、
$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->query($SQLtxt);
print "レコード数:$ss<BR>";
上記でもダメだったのですが、
数値化するために何かする必要はありますか?
0595nobodyさん
2008/06/16(月) 20:25:17ID:???0597nobodyさん
2008/06/16(月) 20:42:31ID:pwDo5eRwありがとうございます。できました!
向学ののために知りたいのですが、fechでも可能なのでしょうか?
$dbh = new PDO($host, $user, $pass);
$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->fech($SQLtxt);
print "レコード数:$ss<BR>";
上記で実行したところ、fetchの行がエラーとなりました。。。
このあたり、prepareとか使えば、このあたり処理が速くできそうですね。
0598nobodyさん
2008/06/16(月) 20:42:54ID:IjgN4Ncjテキストファイル(実態はhtmlのソース)の中から、
<img src=".*">となっているところのみを抜き出して表示したいのですが、
if (preg_match_all("/<img src=.*>/si", file_get_contents("hoge.txt"), $matchs)) {
foreach ($matchs as $value) {
echo $value . "<br>\n";
&nsbp;}
}
という風な感じだと、
最初に現れる<img src=から、最後に現れる</html>まで全てmatchしてしまいます。
<img src=.*>のものだけを取り出すにはどのように改良したらよいか教えてください。
<img src="example0.jpg"><br>
<img src="example1.jpg"><br>
<img src="example2.jpg"><br>
このようにしたいです。
0602nobodyさん
2008/06/16(月) 22:00:42ID:6F6SIf0Vとして60秒間はクッキーが有効になる設定をしているのですが、
60秒経ってもクッキーが消えていない時があります。(ifでチェックすると)
こういう場合、どうすればいいのでしょうか?
アクセスする環境やPCの問題なので、仕方ないのでしょうか?
0603nobodyさん
2008/06/16(月) 22:46:53ID:???きっちり60秒で消えなければいけない場合は時計の同期を考えないといけない
誤差程度の時間で消えてるなら気にしなくても大丈夫
どうしても60秒経過の判定が必要なら
何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい
0604nobodyさん
2008/06/17(火) 00:58:42ID:uGaLdLWHheader( "Content-type:text/html;charset:utf-8" );
print "こんにちは";
?>
上記スクリプトを、
UTF-8で記述すると、IE7で文字化けします(Shift-JISで表示)。
※ ちなみに、FireFox2.0 / OPERA / Safari は、OKでした。
また、上記スクリプトの記述を、Shift-JIS にすれば、IEで正常に表示されます。
UTF-8で記述した上記のスクリプトでも、IEで文字化けしない対策はありませんでしょうか?
また、こういった事例と対策が説明されているページや資料などありましたら、
ご教示頂けましたら幸いです。
0605nobodyさん
2008/06/17(火) 01:02:32ID:???0606nobodyさん
2008/06/17(火) 01:08:30ID:???うわ……w
ありがとうございます。
もの凄い単純なミスでした。
どうして気付かないときは、半日でも一日でも気付かないんだろう……orz
0607nobodyさん
2008/06/17(火) 01:15:38ID:???$port = 8080;
$url = "http://";
$fp = fsockopen($proxy, $port);
while(!feof($fp)){
$line = fgetss($fp, 4000);
print($line);
}
fclose($fp);
このようにプロキシ経由でソースを取得します。
mb_strpos関数である文字列が最初に現れる位置を探し
mb_substr関数で上記で取得した位置に+2した値から
文字を取り出すようなプログラムを考えています。
これら2つの関数の使い方は分かるのですが
fgetssを使用しているので上手く組み込むことが出来ません。
ソースの取得法又は関数で何かご教授いただきたいです。
0608nobodyさん
2008/06/17(火) 01:18:10ID:???してループ抜けてからmb使えば?
0609568
2008/06/17(火) 01:22:10ID:???遂にセッションIDを上書きする方法を見つけました!
header('Set-Cookie: '.session_name().'='.session_id().'; path=/');
とheaderで出力したら二行になりませんでした
0610nobodyさん
2008/06/17(火) 01:28:33ID:???それらの行全体での位置を探し、取り出したいので
ループを抜け出すと一行分しかできません。
取得法を変えるしかないですかね。
0614nobodyさん
2008/06/17(火) 07:04:37ID:???0615nobodyさん
2008/06/17(火) 10:27:36ID:cJ7L3+9Aとりあえず、設定がしてあるときにはfunctionの中身を定義して、
無いときには、空のfunctionを定義しています。
0616nobodyさん
2008/06/17(火) 10:33:45ID:???0617615
2008/06/17(火) 10:42:28ID:cJ7L3+9ACだと、
#if
#define NANIKA (hogehoge())
#else
#define NANIKA ()
#endif
という風にやれば、ある条件の時のみ、hogehoge()が実行されます。
PHPのほうでは
function nanika() {hogehoge();} と
function nanika() {;} をifの分岐でそれぞれ定義しています。
今のやり方よりも、実行時の負荷の低くなるやり方があれば、教えてください。
0618nobodyさん
2008/06/17(火) 10:45:13ID:???0620602
2008/06/17(火) 11:16:09ID:???レスありがとうございます。数秒の誤差は気になりますので
やっぱりちゃんと判定できる必要があります。
>何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい 何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい
と言うのはタイムスタンプを入れてそれで判別するということでしょうか?
0621615
2008/06/17(火) 11:18:54ID:cJ7L3+9A整理しなおしてみます。
Cだと、
#if jouken
#define nanika(x) (nanika_func(x))
#else
#define nanika(x) ()
#endif
のようにすれば、nanika(hogehoge());は、
joukenのときだけnanika_func(hogehoge());を実行し、
joukenから外れる場合はnanika_func()もhogehoge()も実行されません。
PHPのほうでは
if (jouken)
function nanika(x) {nanika_func(x);} else
function nanika(x) {;}
のようにしておいて、nanika(hogehoge());というコードを書いています。
この場合、joukenに合わない場合、hogehoge();が一度実行されますが、
hogehoge();も実行されないようにできれば、
負荷を減らせられると考えています。何かありませんか?
hogehoge();が実行されるときの副作用に関しては、
現時点でも注意を払っています。
0622nobodyさん
2008/06/17(火) 11:30:17ID:???if(JOKEN) nanika(hogehoge());
ではアカンの?
0623nobodyさん
2008/06/17(火) 11:30:33ID:???そこまで負荷を気にするのであればAPC等のアクセラレータを考えたほうがいい
0624nobodyさん
2008/06/17(火) 11:36:08ID:???Cだと、条件成立時には前者が関数としてコード化され実行ファイルに組み込まれ、
不成立だと消滅する。
実行時に条件判定をするなら、これは使えないんじゃないかな。
0625615
2008/06/17(火) 12:10:45ID:cJ7L3+9Aインタプリタなスクリプト言語でも、構文解析はともかく、
実行時は処理せずスキップする何かがあるかもと思って質問しました。
よくよく考えると実行時にスキップできるような処理系なら、
特別な構文とか技を使わなくても処理をカットするように実装するだろうから、
普通に記述してれば最適なようになってるでしょうね。
>>624
実行時というか、nanika()を呼ぶたびではなく、
function nanika();の定義時にjoukenを判断するだけでかまいません。
0626nobodyさん
2008/06/17(火) 13:13:39ID:DvvNmeRSmodみたいな…
test.htmlをCGIに偽装して
test.cgiみたいにできる奴…
0627nobodyさん
2008/06/17(火) 13:19:40ID:???0628nobodyさん
2008/06/17(火) 14:25:05ID:???なぜかこちらの情報が保存されてるサイトがあったから、
MACアドレスでも収集したのかとずっと思ってたんだが、
Flashクッキーなんてものがあったのね。
知らなかったわー
0629nobodyさん
2008/06/17(火) 14:32:18ID:???0630nobodyさん
2008/06/17(火) 14:36:04ID:???0631nobodyさん
2008/06/17(火) 14:39:18ID:wifkyQV+「この商品を見てる人はこんな商品も見てます。」
こういうの良く見るけど、どうやってるのでしょうか?PHPで出来ますでしょうか?
よろしくお願いします。
0632nobodyさん
2008/06/17(火) 14:42:53ID:cLskKZdP{
$array['x'] = 15;
$array['y'] = 15;
switch($i)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}
for($j = 1 ; $j <= 4 ; $j++)
{
switch($j)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}
$array_map[] = "[{$array['x']}/{$array['y']}]";
}
}
array_unique($array_map);
print_r($array_map);
こういったループを徐々に深く(3重や4重)にしていきたいんですが、
ループを重ねるのはやはり大変なので、何か良いループ方法はありますでしょうか?
0633nobodyさん
2008/06/17(火) 15:13:18ID:???hoge.php
--------------------
function hoge(){
//code
}
main.php
---------------------
if(jouken){
require_once('hoge.php');
}
とか。
0634nobodyさん
2008/06/17(火) 15:22:28ID:???できますよ、実装は様々だけど。
例えばリファラを記録しておいて、一定数に達したらそういうメッセージ出すとか、
実際にはこんな商品を見ているという事実がなくても、
関連商品のリンクを見ているということにして貼る方法もあります。
下の方法は嘘になりますが見てる側からはわからないです。
また下の方法はHTMLだけで出来るのでPHPすら必要ないでしょうね。
0635603
2008/06/17(火) 15:42:12ID:???そういうことです。
必要なデータ+時間をクッキーで送って
時間から60秒経過していれば〜の処理をする
のような感じでいいかと
でもクッキーはユーザー側で切ったり消したり値を書き換えたりできるから
60秒きっちりが取れないかもしれない。
特に連投制限のようなものだと意図的にやってる人には効果が無いので
もしそういう処理をやろうとしているならサーバ側でも何かしないとあまり意味が無いよ。
0636PHP℃素人
2008/06/17(火) 16:35:00ID:6VYoJ2QR切断できたら便利だと思いPHPでシェルを実行するスクリプトを考え中です。
サーバOSはLinuxでユーザーに予め電源切断のみの権限を与えておきます。
<?php
echo shell_exec('shutdown -h now');
?>
としたのですがこれでよいでしょうか?
0637nobodyさん
2008/06/17(火) 16:39:44ID:???echoはしなくてもいいんじゃない?
あとパスワード設定するか誰でもアクセスできるような位置にはおかないこと
0638nobodyさん
2008/06/17(火) 16:40:27ID:???0639PHP℃素人
2008/06/17(火) 16:45:30ID:6VYoJ2QR実行したか確認したいのですがechoはいりませんか?
0640nobodyさん
2008/06/17(火) 16:54:26ID:???タイミングでは既に落ちてるんじゃ?
0641nobodyさん
2008/06/17(火) 16:54:34ID:???shutdownするってことはwebサーバも落ちるんだから確認のしようがないんじゃ?
外部のレンタルサーバにpingうつスクリプト置くか、pingうってくれるサイトから、
自鯖をシャットダウン後、ping送って確認してみるといいんじゃないか?
0643nobodyさん
2008/06/17(火) 18:41:16ID:jPkgqGii上記でHTMLエンティティに変換したのですが、
HTMLエンティティを元に戻すにはどうしたらよいのでしょうか?
0644nobodyさん
2008/06/17(火) 18:57:48ID:???http://jp.php.net/htmlspecialchars
0647nobodyさん
2008/06/17(火) 20:44:51ID:???念のために確認するが、
$array['x'] = 15;
$array['y'] = 15;
は、最初のループの内側でいいのか?
毎回初期化されるぞ。
どういう用途を想定しているのか分からんけど、再帰使えばいいと思う。
0648nobodyさん
2008/06/17(火) 20:57:00ID:???0649nobodyさん
2008/06/17(火) 21:01:32ID:???http://www.php.net/manual/ja/function.fgetcsv.php
少しはマニュアルよめ
0650nobodyさん
2008/06/17(火) 22:30:39ID:???$arr[0]['name']=イヌ
$arr[0]['color']=白
$arr[0]['sex']=オス
$arr[1]['name']=ネコ
$arr[1]['color']=黒
$arr[2]['name']=リス
$arr[2]['color']=茶
$arr[2]['sex']=オス
上記のようなデータが格納された配列「$arr」があるとして、
0にあるものを配列「$hoge0」←(name=>イヌ,color=>白,sex=>オス)
1にあるものを配列「$hoge1」←(name=>ネコ,color=>黒)
2にあるものを配列「$hoge2」←(name=>リス,color=>茶,sex=>オス)
といった感じに、各配列に分解したいのですが、その方法を教えてください。
0652nobodyさん
2008/06/17(火) 22:34:08ID:???array_walk_recursive
試しもせず、具体的なロジックまで求めだしたら、教えて君。
0653nobodyさん
2008/06/17(火) 22:59:51ID:cLskKZdP座標(15,15)から8歩でいける場所を全て抽出しようと思ってます
再帰とはどのようなものなのですか?
0654nobodyさん
2008/06/17(火) 23:09:37ID:???>>650
for( $i=0; $i < count($arr); $i++) {
foreach($arr[$i] as $key => $value) {
${hoge.$i}[$key] = $value;
}
}
>>653
関数の中でその関数を呼び出す
0655nobodyさん
2008/06/17(火) 23:54:31ID:7t0PU3Q3昔CGI-PLANTさんで配布していた
設定したファイルが更新していた場合に別ファイルで更新マークを付けられる、GETSTAMPを愛用いていました。
この度久しぶりにサイトを作る事にして、
古いデータからそのパッケージを発掘しまして、再利用する事にしました。
ところが、説明書などがなく、配布元さんでは公開停止。
ググって出てきた情報とうろ覚えの記憶で
JavaScript版の設定と記述をしたのですが、
CGI自体は動作しているのですが、HTMLでの表示が出来ません。
エラーなどではなくただスルーされてる感じなのですが、
いかんせんきちんとした説明書がないため何が足りないのかわかりません。
CGIを起動して、IDなどは一通り設定しました。
表示させたいファイルで、CGIを指定する記述と、
マークを出したい部分へはDocument〜の記述もしました。
申し訳ないのですが、どなたかこのCGIの説明書などをお持ちの方、
JavaScript版の設定方法を教えて頂けませんでしょうか。
0656nobodyさん
2008/06/17(火) 23:55:17ID:???ソレを出したいってことなら、一回発想変えてみたら?
方眼紙とか用意して点打ってみると、もっと効率のいい方法が見えてくる気がする。
function x_y($x, $y, $walk=8){
$map = array();
for($i=0;$i<=$walk;$i++){
$move_x = $i;
$move_y = $walk-$i;
for($j=0;$j<=$move_y;$j++){
$map[] = "[".($x+$move_x)."/".($y+$j)."]";
$map[] = "[".($x-$move_x)."/".($y+$j)."]";
$map[] = "[".($x+$move_x)."/".($y-$j)."]";
$map[] = "[".($x-$move_x)."/".($y-$j)."]";
}
}
return $map;
}
$map = x_y(15, 15, 8);
echo "<pre>";
print_r(array_unique($map));
echo "</pre>";
たとえばこんな。
0658655
2008/06/18(水) 00:04:28ID:29hzMdPjすみません、PHP専用のスレだと気がつきませんでした。
大変失礼しました。
0659nobodyさん
2008/06/18(水) 00:33:45ID:???0660nobodyさん
2008/06/18(水) 00:38:31ID:???もういやd
0662nobodyさん
2008/06/18(水) 00:45:48ID:???みたいなアドレスでPHP_SELFでやりましたら、
/hoge/hoge.php
のような感じで出てきたのですが、
http://localhost/hoge/hoge.php
という感じに出せないのでしょうか?
0664nobodyさん
2008/06/18(水) 01:27:41ID:???検索やキーワードで簡単に調べられるのに、それすらしないのな?
PHPのマニュアルは、スクリプト言語史上、最も親切な部類に属するのに。
だから、いつまで経ってもバカなんだよ。
まともな知識のある奴とバカの温度差が激しすぎる。
0665PHP℃素人
2008/06/18(水) 01:32:36ID:FEsYSSp5はじめにsudo設定でユーザhogeにノーパスワードおよびシステム終了権限を与える。
<?php echo shell_exec('sudo shutdown -t 5'); ?>
は白ページが出てなにも実行されない
そこでwhoコマンドであなたは?とたずねる
<?php echo shell_exec('who'); ?>
hogeですよと表示される hoge pts/0 Jun 17 20:22 (192.168.1.10)
でもsudoの実行ログを確認すると
Jun 17 22:01:45 linux sudo: (pam_unix) authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=www-dataとなっていた
Apacheはwww-dataユーザの権限で動作しているのが原因か?
0666nobodyさん
2008/06/18(水) 01:44:19ID:???$ php -f hoge.php
こいつらってなんか違うの?
0667nobodyさん
2008/06/18(水) 01:50:39ID:???以下のサイトにあるサンプルをサーバにあげて実行したのですが、
エラーになって正常に動きません。
エラーメッセージは xmlDoc has no properties です。
ttp://www.geekpage.jp/web/google-maps-api/gxmlhttp-3.php
このサンプルでは、phpからXML出力したものを読み込んでいますが、
ためしに、読み込み先をxmlファイルにして、サーバにxmlファイルを置くと
問題なく処理されます。
他のサイトで見つけたものを試しても、PHPからのXMLではうまくいかず、
読み込み先をxmlにした場合にうまくいきます。
関係あるかわかりませんが、サーバはXREAを使っています。
よろしくお願いします。
0668nobodyさん
2008/06/18(水) 01:53:31ID:???よくわかりませんがajaxはJavaScriptですよね
よくわかりませんがheaderでこのファイルはxmlですよって教えてあげてください
よくわかりませんがxrea無料なら自動広告が原因の可能性もなきにしもあらず
よくらからないのはめんどうなので適当にレスしたからです
0669nobodyさん
2008/06/18(水) 04:43:20ID:zzNhp0Rl何かよい方法ないでしょうか?
ネカフェ専用のブラウザがあったりして特別なUA持たせてるとか、
届け出るときにIP帯も届け出て公開しなければならなくてどこかに一覧があるとか、
ネカフェは絶対特定のProxy経由で接続しないといけないとかとか・・・
犯罪予告の防止にも国として何か対策を講じてくれるのが一番なのですが、
現状ないので何かネカフェからの接続がわかるような方法がありませんか?
0670nobodyさん
2008/06/18(水) 05:06:32ID:z89NqzwY$text = "a=1@b=2@c=3@=@@";
$hash = parseText($text,"@","=");
echo $hash["a"] // 1
echo $hash["b"] // 2
echo $hash["c"] // 3
こんな感じにしたいのですが。
0671nobodyさん
2008/06/18(水) 05:12:48ID:???0672nobodyさん
2008/06/18(水) 05:27:50ID:z89NqzwY■ このスレッドは過去ログ倉庫に格納されています