【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第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!
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket