コンピュータ囲碁・将棋@2ch 動的リンク集作りました

http://misakirara.s296.xrea.com/shogi/index.php

やや突貫工事で作りましたが、動的リンク集の「囲碁・将棋」版を作りました。


今のところ巡回対象の板は、

$ita[0] = "ニュース速報+板";
$ita[1] = "科学ニュース+板";
$ita[2] = "将棋・チェス板";
$ita[3] = "プログラム板";
$ita[4] = "囲碁・オセロ板";

です。
2ch検索でてきとうに検索してみて関係ありそうなスレを含む板を調べました。


「こんなスレが抜けている」というのがありましたら、随時コメントにでも書いて下さい。
とりあえず公式に近いサイトのリンク集もフッターに入れておきました。


あと、手動更新なんで、見かけたら時々更新してやって下さい( ̄ー ̄)
息の長いスレが多いのでしばらくほっておいても大丈夫でしょうが。


今のところこんな感じ。

[科学ニュース+板] [スレ一覧]
 【コンピュータ】将棋ソフト世界一に「Bonanza(ボナンザ)」、人間との勝負では敗北 (162)
 【人工知能】将棋ソフト「ボナンザBonanza」、トップ棋士と対局 (290)

                                                                                                                                                              • -
[将棋・チェス板] [スレ一覧]  ▲コンピュータ将棋スレッド42▽ (194)  ξ凸ξ ★東大将棋下ネタ道場★ ξ凸ξ (15)  【将棋倶楽部24】ソフト指ししてそうな会員 Part8 (445)  ボナンザ Bonanza 専用スレ 9手目 (900)  k-shogi最弱に勝てないひと集合 (340)  【ボナるなよ】ハンゲーム将棋ソフト指しpart3 (231)  ■ゲーム機専用■将棋ソフトを語りましょう (656)  東大将棋 何 道場を作って欲しいか (263)  【将棋倶楽部24】ソフト指しの為の専用スレ (846)  ソフト指し経験者が優しく答えるスレ (16)  【ボナに】激指4【負けるな】 (881)  コンピューター将棋番外編5・アルゴリズム (495)  将棋プログラム作ります (95)  ソフト指しの奴らを懲らしめるにはどうすればよいか (318)  将棋ソフト ボナンザ は,負けさせられたのでは? (116)
                                                                                                                                                              • -
[プログラム板] [スレ一覧]  おまいら最強の将棋プログラムしてみろよ part6 (416)
                                                                                                                                                              • -
[囲碁・オセロ板] [スレ一覧]  日本囲碁ソフト (74)  囲碁ソフトについて語るスレ6 コンピュータゲーム (870)  銀星囲碁DS (42)  コンピュータ囲碁には勝てるけど人間に勝てない (58)

本当は理研富士通のプロ棋士研究スレも抽出したいんですが、ルールが難しい(^^;
プロ棋士富士通では、普通の将棋系のスレも抽出しそうだし。
ベイズみたいにキーワードで確率持てばいいけど、完全じゃないし、まあ、今後の課題ってことで。


一応、「棋士&&理研」で抽出してみました。

2chのスレッドをPHPで取得する方法

せっかくなので解説記事を。
知ってる人には自明ですが、覚えると色々と面白いこともできると思いますよ

$url="http://news22.2ch.net/newsplus/" //板のURLを入れて下さい
$HEADLINE = split("\n", http( $url."subject.txt" ) ); //subject.txtを付けると板一覧がテキストで取得出来ます
$url2[$j] = ereg_replace( "2ch.net/","2ch.net/test/read.cgi/",$url );

for($i=0;$i<=COUNT($HEADLINE);$i++)
{
  //スレ毎の処理
    list($dat,$title) = split( ".dat<>",$HEADLINE[$i],2);
    fwrite( $fp, " <a href=\"". $url2[$j].$dat  ."/l50\">".$title."</a><br>\n" );
}


httpという関数でソケット通信を行っています。
スレ一覧は板URL+"subject.txt"というテキストファイルで置いてありますので、
まずそれを取得します。
「\n」(改行)でsplit(分割)して配列として取得します
URLの一部を書き換えます
あとは、$HEADLINE配列に各スレのタイトル、URL等が入っています。
(<>で区切られた形式のテキストで1行)
「.dat<>」を条件にsplitで欲しい情報を取りますと、
この場合、$dat番号。$titleにタイトルが入っています。


上記の処理は、subject.txtの中身を見れば、どのように処理をすればいいかは自明ですが、


肝心の以下に2chの情報を取得するか?ですが、
ユーザーエージェントで判断されています。

ソケット通信で、
$request .= "User-Agent: Monazilla/1.00 (kanata/1.00)\r\n";
のようにユーザーエージェントを指定して下さい
必須は「Monazilla」の部分です。
これは2chブラウザなどの専用ツールであることを意味しています。
その後ろは自分のアプリケーションの名前を付けて下さい。
これで、dat自体も取得できます。

GoogleNewsから欲しいニュースをとってくる

$fp = fopen("./news.txt", "w"); // 新規書き込みモードで開く
$HEADLINE = split("<td valign=top class=j>", http( "http://news.google.com/news?hl=ja&ie=Shift_JIS&oe=Shift_JIS&um=1&tab=wn&q=%82%E7%82%AB%81%99%82%B7%82%BD&scoring=n" ) );

//スレ別ループ
for($i=0;$i<=COUNT($HEADLINE);$i++)
{
	if( ereg( "^<a href=",$HEADLINE[$i] ) )
	{
		$temp = ereg_replace( "</a>.+$","</a>",$HEADLINE[$i] );
		fwrite( $fp, " ".$temp."<br>\n" );
	}
}	
fclose( $fp );


http関数に渡すURLは、実際にGoogleNewsで検索したURLです(検索文字列がURLエンコードされてます)
この場合は「らき☆すた」です(たしか)
ソケット通信で取得したHTMLから、URLとタイトルをぶっこぬけば
RSS風の情報が作れます(笑


二ヶ月ぐらい前は動いてましたが、今試したワケではないので、GoogleNewsの方で生成HTMLに変更があった場合
うまく動かないかもしれません。

chessのソフト指し対策

たまたま動的リンク集で見つけたスレを読んでいて見かけた

チェスサイトで取られているソフト指し対策まとめ 
(ICC、Playchess.Comなど) 

1)クライアントがチェスソフト起動を感知し、警告を出したり負けに 
  したりする。 
2)頻繁にウインドウ切り替えを行っている場合、同じくクライアントが 
  感知して警告を出す。 
3)「無視」機能を実装して、嫌なプレイヤーからのゲーム申し込み、 
  チャットなどを自動的に拒否するようにする 
4)専門チームをつくって、怪しいと訴えのあったプレイヤーのゲームを 
  解析し、ソフト指しの疑いが濃い場合は警告メールを出したりアク禁 
  にする 

4)以外はすぐできるんじゃないの? 

ほとんどウイルス検知ソフトみたいですね(^^;
あとサーバー監視ソフトっていうか