【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(25) 何やってたっけ☆ww(^▽^)www!

2016-01-23 05:00

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何やってたっけ…………☆

1ヶ月ぐらい放置していて、忘れてしまったぜ☆」

KIFUWARABE_80x100x8

「CLRを使って、C++のメソッドを C#から呼び出そうとしていたんじゃないかだぜ☆?」


05:04

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「1ヶ月前のブログを読むと、

cgfthink.dll と cgfgoban.exe が連携している手順を知りたがっていたみたいだぜ☆

なんのこっちゃだぜ☆」


05:07

201601230506

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「1ヶ月前に 多分こんな感じで cgfthink.dll を自作して、

cgfgoban.exe を動かして、できたできた、と言ってたところまでなんだろうなんだぜ☆」

KIFUWARABE_80x100x8

「cgfthink.dll が自作できるのなら、

コンピューター囲碁通信できるんじゃないのかなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「自作の cgfthink.dll が何やってたのか さっぱり忘れたので、

自分のコードを読み直すところからだぜ☆」


05:12

201601230512

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ふむ……☆ 弱っちょろいぜ☆

この cgfthink.dll の中身を見てみるかだぜ☆」


05:24

201601230523

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆

この cgfthink のソースが見つからないぜ☆」

KIFUWARABE_80x100x8

「山下さんのソースをコンパイルしたら 作られるんじゃないかだぜ☆?」


05:26

201601230526

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これか…………☆

山下さんのソースをコンパイルして cgfthink.dll できた、って言ってたわけかだぜ、

1ヶ月前は☆」

KIFUWARABE_80x100x8

「現状から推測すると、そのようだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、cgfgoban と、cgfthink がどのように連携しているのか、

ログを取って 調べたいところだな☆」


05:31

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンピューター囲碁、将棋とは別に、C++言語のまとめブログを作りたいぜ☆」

KIFUWARABE_80x100x8

「作ろうぜ☆」


06:29

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++のプログラムは、こっちのブログにまとめていくぜ☆」

http://cpp.warabenture.com/

 


06:32

201601230640

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「今気づいたんだが、cgfthink は、C++じゃなくて、C だぜ☆」

KIFUWARABE_80x100x8

「拡張子を .c から .cpp に変えようぜ☆?」


06:42

201601230643

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな パソコン初心者 みたいなことして いいのかなんだぜ……☆」


06:45

201601230644

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆ ビルドが通ったぜ☆」


06:49

201601230648

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんなんで いいのかだぜ☆?

わたしは いつ デストラクタが呼び出されるのかも 知らないぜ☆?」

KIFUWARABE_80x100x8

「推測すると、関数のスコープで生成しているから、

関数のスコープを抜けたときには デストラクタが呼び出されるだろう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「メモリリークして PCが壊れたら 3月18日は 家で 唐揚げ大会 な☆」


06:56

201601230655

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やる気メーターが 下がってくるぜ☆(^~^)」

KIFUWARABE_80x100x8

「追加した行が原因なのか、

それとも .c を .cpp に変えたのが原因なのか、調べてみようぜ☆!」


07:01

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Clean Solution してから Build Solution しないと、結果が違っているぜ☆?

キャッシュでもされているのだろうかなんだぜ☆?」


07:31

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「拡張子を .cpp に変えたのがダメみたいだぜ☆?」

KIFUWARABE_80x100x8

「なぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ .c の .dll ならよくて、 .cpp の .dll はダメなのかなんだぜ☆?」


07:37

温COM知新 (おんこむちしん) 『あえて C言語で COMコンポーネントを作る – 5』

http://www.asahi-net.or.jp/~kv8s-yjm/another/yja205.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっぱり わからないぜ☆」

KIFUWARABE_80x100x8

「cgfgoban の方を C++ に改造できないのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やってみるかだぜ☆」


07:39

201601230739

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfgoban の方は既に C++ だぜ☆」

KIFUWARABE_80x100x8

「cgfgoban は、cgfthink.dll が C++ だと読めないのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そこらへんの仕組みが分からないぜ☆」


07:42

201601230742

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「多分このあたりで cgfthink の関数を呼び出していると思うんだが☆」

KIFUWARABE_80x100x8

「cgfgoban の方に ログ出力 を埋め込んでみようぜ☆」


07:47

201601230747

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ cgfgoban.exe の方は、ログ出力できるんだぜ☆」

KIFUWARABE_80x100x8

「.exe にできて、 .dll になぜ できないんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっぱり 分からないぜ☆」


07:55

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「拡張子の .c を、 .cpp に変えたのが そもそも おかしいのでは……☆?」

KIFUWARABE_80x100x8

「気づいたか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.c を、 .cpp に変換する方法をググろうぜ☆」


08:05

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『Fail GetProcAddress() … 2』 をググろうぜ☆」

 

stack overflow 『GetProcAddress() failing, error 127』

http://stackoverflow.com/questions/25877507/getprocaddress-failing-error-127

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「extern “C” を、関数プロトタイプ宣言の前ぐらいに付けておけばいいのかだぜ☆?」


08:13

201601230813

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「拡張子を .c から .cpp に変えて、

関数のプロトタイプ宣言を extern “C” { ~ } で囲ったんだが、

こんなことして、いいのかだぜ☆?」

KIFUWARABE_80x100x8

「動けばおk☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「動くのだろうか……☆」


08:15

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ダメだぜ☆ 同じエラーだぜ☆」

KIFUWARABE_80x100x8

「なぜなのか☆」


08:17

201601230817

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ファイル全体を extern “C” { ~ } で囲んでみようぜ☆?」


08:18

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おや☆? エラーが出なかったような☆

あとで もうちょっと精査するぜ☆ 朝飯だぜ☆」

KIFUWARABE_80x100x8

「おう☆!」



 

08:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「extern “C” { ~ } の囲いの中に C++ のコードを書いてビルドしたら

エラーになるんだぜ☆」

KIFUWARABE_80x100x8

「extern “C” { ~ } の囲いの外に C++ のコードを書こうぜ☆?」


08:36

201601230835

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな奇妙な書き方が許されるのかどうかだぜ☆」


 

08:38

201601230838

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆! 動いたぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」


 

08:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、ログ出力のコードを 置きまくるかだぜ……☆」


09:56

 

ヒューマンエラー学

http://www015.upp.so-net.ne.jp/notgeld/humanerror.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「この文章が面白すぎて 読み終わらないぜ☆」

KIFUWARABE_80x100x8

「ヒューマン・エラーだぜ☆」


10:11

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんか、cgfthink.c (.cpp) の中で覚えておいた方がいい関数は、

  • DLL_EXPORT void cgfgui_thinking_init( ~ )
  • DLL_EXPORT void cgfgui_thinking_close( ~ )
  • DLL_EXPORT int cgfgui_thinking( ~ )

の3つだけな気がするぜ☆」

KIFUWARABE_80x100x8

「気づいたようだな☆

説明書にも そう書いてあるぜ☆」

 

cgfthink.dll の解説

http://www.yss-aya.com/doc_cgfthink.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」


10:18

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfgui_thinking( ~ ) という関数が、囲碁盤上の交点を表す番号を返す、

というのが コンピューター囲碁エンジン cgfthink.c のリクツかだぜ☆」

KIFUWARABE_80x100x8

「賢くなったか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「賢くなったぜ☆」


 

10:21

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfgui_thinking 関数をもう少し調べてみるかだぜ☆」


10:33

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁の盤上の座標を しっかりと把握しておくことが必要だぜ☆

説明書によると、

左開きの横書き文章を読むような順で数字が増えていくぜ☆

123

456

789

という方向で、256列、256行 まで書けるように用意されていて、

路盤ろばん でも、13路盤でも、 19路盤でも、計算式は同じ、

座標 = (Y座標)*256 + X座標

だぜ☆」

KIFUWARABE_80x100x8

「なんだ簡単だな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「簡単だぜ☆」


11:04

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「引数の説明も 目・耳に入れておくかだぜ☆」

int init_board[];     初期盤面(置き碁の場合は、ここに置石が入る)
int kifu[][3];        棋譜  [][0]...座標、[][1]...石の色、[][2]...消費時間(秒)
int tesuu;            手数
int black_turn;       手番(黒番...1、白番...0)
int board_size;       盤面のサイズ
double komi;          コミ
int endgame_type;     0...通常の思考、1...終局処理、2...図形を表示、3...数値を表示
int endgame_board[];  終局処理の結果を代入する(図形、数値表示の場合も)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「初期盤面と、棋譜が送られてくるのかだぜ☆

cgfgui_thinking( ~ ) では、棋譜を進めて 現局面を再現しないといけないな☆

棋譜は、『座標』『石の色』『消費時間』 か、なるほど☆

手数と、手番は 将棋にもあるな☆

盤面サイズというのは 将棋にはないぜ☆wwww 多分、9とか13とか19とか入っているのだろう☆

コミは 毎回送られてくるのかだぜ☆? 対局のハンディキャップか何かじゃないのかだぜ☆?

エンドゲームは よく分からないな☆」

KIFUWARABE_80x100x8

「説明書をよく読めだぜ☆」


11:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「はあ☆ この説明書自体が、cgfgui_thinking( ~ ) の説明書にもなっているのかだぜ☆

対局中か、試合が終わっているから石の死活情報を入れろとか、

そういう用途があるのかだぜ☆」

KIFUWARABE_80x100x8

「cgfthinkの使い方がだいぶわかってきたな☆!」


11:13

201601231010

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ところで ログが、追記じゃなくて 上書きになっているようなんだぜ☆」

KIFUWARABE_80x100x8

「調べて直せ☆!」


11:15

#include <fstream>

int main()
{
	std::ofstream ofs( "test.txt", std::ios::out | std::ios::app );

	ofs << "append test" << std::endl;

	return 0;
}

Programming Place Plus 『●C++編(標準ライブラリ) 第33章 ファイルストリーム』

http://ppp-lab.sakura.ne.jp/cpp/library/033.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ふぅむ☆」


11:30

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし☆ 分かってきたぜ☆」

201601231129

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「対局開始のときに cgfgui_thinking_init( ~ ) が呼び出され、

コンピューターの手番になるごとに cgfgui_thinking( ~ ) が呼び出され、

アプリケーションを終了するときに cgfgui_thinking_close( ~ )が呼び出されたんだぜ☆」

KIFUWARABE_80x100x8

「だから そうだと 説明書に書いてあるのに☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ログを書き出すために書いたコードは、こんな感じだぜ☆」

// ファイルの冒頭の方に書く。
#include <iostream>
#include <fstream>
using namespace std;

// 関数の中で
// ログを取り始めるときに書く。
	ofstream outputfile("muzudho_cgfthink_log.txt");
	outputfile << "called: cgfgui_thinking_init" << endl;

// 初回よりあとは、追記にする。
	ofstream outputfile("muzudho_cgfthink_log.txt", ios::app);
	outputfile << "called: cgfgui_thinking_close" << endl;

 


11:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfgoban.exe で、サーバーに接続できるのかだぜ☆?」

KIFUWARABE_80x100x8

「cgfgoban で大会のサーバーに接続した、という記事があったはずだぜ☆」

 

YSSと彩のページ 『15/11/12 CGOSの9路と19路を私のサーバで走らせています。繋ぎ方』

http://www.yss-aya.com/bbs_log/bbs2009.html#bbs169

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんのこっちゃだぜ☆」

KIFUWARABE_80x100x8

「分からないかだぜ☆?」


12:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CGOS と、NNGS って、どういう関係なんだぜ☆?」

KIFUWARABE_80x100x8

「UEC杯は、NNGSノー・ネーム碁サーバー だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

CgfGoBanシージーエフ碁盤CGOSコンピューター碁サーバー につないで、どうするんだぜ☆?」

KIFUWARABE_80x100x8

「CGOS ではなくて、NNGS へつなげだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ NNGS につなげるには どうすればいいんだぜ☆」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


12:24

201601231224

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ NNGS と対局設定してみても、動いている様子はないぜ☆」


12:31

201601231231

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「胴元のコンピューターが閉鎖されているんじゃないのかだぜ☆?」

KIFUWARABE_80x100x8

「オープンされている NNGS のホスト・コンピューターを探そうぜ☆?」


13:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「NNGSサーバー、どこにあるんだぜ~☆」


13:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「自分で NNGS を立てて ローカルでテストしたらいいのかなんだぜ☆?

大会で 一発本番テスト で うまく動くのかだぜ☆?」

KIFUWARABE_80x100x8

「UEC杯のページに何か情報は載ってないのかだぜ?」


14:05

5.テストサーバ

本番で使用するサーバをテスト公開しています。

プログラムの動作チェックにご使用ください。

サーバ:jsb.cs.uec.ac.jp

ポート:9696

(Telnetで接続する例):telnet jsb.cs.uec.ac.jp 9696

テストサーバについて

    • NNGS 1.1.22に独自パッチを当てたプログラムを使用しています
    • ユーザ登録をしなくてもゲストアカウントとして接続&対戦ができます
    • 自作プログラムvs自分のようにプログラムの動作確認にご使用ください
    • サーバが動いていない場合はメールにて連絡をください
    • ユーザ登録(メールアドレスが必要)をしてもかまいません

【登録用コマンド】register ログイン名 メールアドレス 名前 名字

・メールアドレスにパスワードが送信されます

・以後、接続にこのパスワードが必要となります

第9回UEC杯コンピュータ囲碁大会 『通信対局規約』

http://jsb.cs.uec.ac.jp/~igo/network.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ 何か書いてあるぜ☆

えーと、どれどれ☆

サーバーと ポートは jsb.cs.uec.ac.jp の 9696。

ゲストユーザーで入れる、

自作プログラムと、自分で対戦してください☆

ふむ☆ やってみるかだぜ☆」

KIFUWARABE_80x100x8

「よっしゃ☆ この きふわらべの

cgfthinkパクリ・プログラム が試されるときが きたようだな☆」


14:12

201601231411

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こういう理解でいいのかだぜ☆?」

KIFUWARABE_80x100x8

「理解していようと していなかろうと、正しく動くまで 異なる操作を繰り返そうぜ☆!」


14:15

201601231415

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ポート番号は書かないほうがいいのかだぜ☆?」

201601231414

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何か出てきた……どちらさんで☆?」


14:18

KIFUWARABE_80x100x8

「サーバーが止まっているのでは……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁プログラムができてないのに メールを出すのも 気が引けるぜ☆

また今度だぜ☆」


 

C++でのログ・ファイル書き出しを実装したぜ☆!

UEC杯に向けて、微速微進、遅々前進なんだぜ☆!



15:05

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムを2個立ち上げて、

先手 LAN、後手 人間 でログインするといいんじゃないか、

というツイートをもらったんだぜ☆」

KIFUWARABE_80x100x8

「どういうことだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こういうことじゃないか☆?」

201601231508


15:10

201601231509201601231509

KIFUWARABE_80x100x8

「問題が2倍になっただけでは☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「もっと いろいろな組み合わせを試してみるかだぜ☆」


15:22

201601231521

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ 化かされているのか☆?」


15:34

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わかんねー☆

おわりだぜ☆」


 

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(25) 何やってたっけ☆ww(^▽^)www!
Bookmark this on Yahoo Bookmark
Buzz This
Bookmark this on Google Bookmarks
Bookmark this on Digg
Share on Facebook
Share on reddit
Share on LinkedIn
Share on StumbleUpon
Share on GREE
email this
LINEで送る
Pocket