【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(24) C++からC#を呼び出す方法を調べようぜ☆<その3>(^▽^)www!

2015-12-27 22:31

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆

正月明けから バイトが忙しくなるし、

今のうちに 囲碁プログラム やろーぜ☆」

KIFUWARABE_80x100x8

「今日は どこからだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしの作った .dll 、 Dependency Walker 2.2 で動かないんだけど、

というところなんだぜ☆」

KIFUWARABE_80x100x8

「よし、見ていこうぜ☆」


22:35

201512272235

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「現状は こういう感じだぜ☆」

KIFUWARABE_80x100x8

「赤い文字を グーグル検索に貼り付けて ググろうぜ☆!」


22:39

201512272238

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Dependency WalkerのホームページのQ&Aが出てきたぜ☆」

KIFUWARABE_80x100x8

「何て書いてあるんだぜ☆?」


22:44

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「仕組みを理解しろ、みたいな内容だぜ☆ 分からないぜ☆

エラーがあっても 無視してもいいものが あるんじゃないか☆?」

KIFUWARABE_80x100x8

「お父んの作った .dll は、空っぽなのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そこが問題だぜ☆ 調べてみるかなんだぜ☆」


22:52

201512272251

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfthink は、わたしの調べた方法とは ちがう方法で .dll を作っているみたいだぜ☆?」

KIFUWARABE_80x100x8

「お父んが調べた .dll を作る方法は そもそも間違っている可能性があるのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「調べるか~☆」


22:59

 

人生をかるくする秘密のバックヤード 『ダイナミック リンク ライブラリ(DLL)の基礎知識』

http://exlight.net/devel/windows/dll/windll.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 __declspec( dllexport ) を関数の頭に付ける方法が説明されているぜ☆」

KIFUWARABE_80x100x8

「お父んは 何やったんだぜ☆?」


 

23:02

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こっちが Cpp2Csharp.dll☆」

#pragma once

#include <vector>

using namespace System;

namespace Grayscale {
namespace Cpp2Csharp {
namespace P___500_Variant____ {
namespace L500_Variant {

	class Variant
	{
	private:
		std::vector<int> _vector;

	public:
		void AddVariant(int value);
		int GetVariantAt(int index);
	};

}}}}

 

#include "stdafx.h"
#include "Variant.h"
#include <vector>

namespace Grayscale {
namespace Cpp2Csharp {
namespace P___500_Variant____ {
namespace L500_Variant {

	void Variant::AddVariant(int value)
	{
		this->_vector.push_back(value);
	}

	int Variant::GetVariantAt(int index)
	{
		return this->_vector[index];
	}

}}}}

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こっちが DllDemo.exe☆」

// DllDemo.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

extern void printError(const char *name, int err);

typedef int(__stdcall *FUNC_test)(int a);

int main()
{
	HMODULE hDll = LoadLibrary( TEXT( "Cpp2Csharp.dll") );
	if (hDll == NULL) {
		printError("LoadLibrary", GetLastError());
		return -1;
	}

	FUNC_test addVariant = (FUNC_test)GetProcAddress(hDll, "AddVariant"); //関数名での指定
	if (addVariant == NULL) {
		printError("GetProcAddress", GetLastError());
		return -2;
	}

	FUNC_test getVariantAt = (FUNC_test)GetProcAddress(hDll, "GetVariantAt"); //関数名での指定
	if (addVariant == NULL) {
		printError("GetProcAddress", GetLastError());
		return -2;
	}

	addVariant(5963);
	addVariant(4649);
	addVariant(2469);

	std::cout << std::to_string(getVariantAt(1)) << endl;
	std::cout << std::to_string(getVariantAt(2)) << endl;
	std::cout << std::to_string(getVariantAt(3)) << endl;

	if (!FreeLibrary(hDll)) {
		printError("FreeLibrary", GetLastError());
		return -3;
	}

    return 0;
}

void printError(const char *name, int err)
{
	//setlocale(LC_ALL, "");

	LPVOID lpMsgBuf;
	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER |
		FORMAT_MESSAGE_FROM_SYSTEM |
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		err,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPWSTR)&lpMsgBuf, //(LPTSTR)&lpMsgBuf, //(char*)&lpMsgBuf,
		0,
		NULL
		);
	printf("%s: %d:%s\n", name, err, lpMsgBuf);
	LocalFree(lpMsgBuf);
}

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あれ☆? .dll の方、DLLを作るために何か関数の頭に付けていたつもりで、

何も付いていないぜ☆?」

KIFUWARABE_80x100x8_02_Hidosu

「ヒューマン・エラーはノー・ギルティーだぜ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「手順を積み上げていって、これをやったから、これは動いているはず、

と頭の中で つなげていっているのに、

実は これをやった というのは錯覚だった、

というのが お父ん には多いぜ☆」

KIFUWARABE_80x100x8

「お父んの プログラムの バグを 修正しようぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『何故』とか『不思議』が出てきたときは、手順1 から洗いなおすしか

なさそうだぜ☆」


23:13

__declspec(dllexport)
int __stdcall test(int a)
{
	return a+1;
}

ひしだま’s ホームページ 『DLL作成方法・呼出方法』

http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dll.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ 関数の頭に __declspec( dllexport ) を付けるのが

正しい方法なのかだぜ☆?」


23:19

201512272318

201512272319

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ヘッダーと ソースの両方とも、関数の頭に __declspec( dllexport ) を

乗っけてみたぜ☆ こんなことして いいのかだぜ☆?」

KIFUWARABE_80x100x8

「サンプルでは そう書いてあるし、ビルドも通っているぜ☆

Dependency Walkerさんに見てもらおうぜ☆!」


23:25

201512272325

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ 右側中段、 なんか2行 出てるぜ☆?」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」


23:32

201512272332

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GetProcAddress の第2引数には、なんていう名前で指定すればいいんだぜ☆?」

KIFUWARABE_80x100x8

「その台詞をそのまま グーグル検索欄に放り込んで ググろうぜ☆?」


23:37

201512272338

EternalWindows 『DLL / 関数のエクスポート』

http://eternalwindows.jp/windevelop/dll/dll06.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆! ばっちり パーフェクトな説明だぜ☆!」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」


23:42

201512272341

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.cppソースの方は良かったんだが……☆」

201512272346

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.hヘッダファイルの方では、extern “C” に赤い波線が付いていて、

下の Error List ウィンドウでは、誰に許可されてリンケージ修飾してんだ、オォゥっ!?

ってマイクロソフトに怒られているんだぜ☆!」

KIFUWARABE_80x100x8

「じゃあ、リンケージ修飾 外したらどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そうするぜ☆」


23:50

201512272349

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「池の主の怒りは鎮まったぜ☆

やはり 丘の上の祠に供えた おはぎ が効いたのかだぜ☆?」

KIFUWARABE_80x100x8

「池の主は見ている☆

おはぎを 供えることを 怠るなだぜ☆」


23:54

201512272354

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「でも、エラーコード 127☆ そんなプロシージャないって言ってるぜ☆?」

KIFUWARABE_80x100x8

「おはぎを 2つに増やそうぜ☆?」


2015-12-28 01:11

 

ロベールのC++教室 『第47章 C±±』

http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03047.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ふむ……☆ ヘッダ・ファイルで extern “C” を付けることもできるのかだぜ……☆」

201512280114

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「extern “C” { } で、クラス全体……、ネームスペース全体を囲むようにすると、

ビルドが通ったぜ☆?」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」


01:17

201512280117

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「でもエラーだぜ☆」

KIFUWARABE_80x100x8

「何が原因でエラーが出ているんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーコード127は、プロシージャが見つかりません、ぐらいの意味だぜ☆」

KIFUWARABE_80x100x8

「エラーコード127を重点的にググろうぜ☆?」


01:29

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ネームスペース外してもダメかだぜ☆」


01:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「多分、なんらかの やってないこと、

なんらかの やってはいけないこと、

あるいは 全体的な思い違い、

何かがあると思うんだが、どうすれば 解決すると思うなんだぜ☆?」

KIFUWARABE_80x100x8

「お父んが C++の .dll を作れるようになる方法についてか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そうだぜ☆」

KIFUWARABE_80x100x8

「既に動いている .dll のソースコードを真似ようぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし……、cgfthink をコンパイルして、ちゃんと動いているのか調べてみるぜ☆」


01:38

201512280137

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ちょっと いじっちゃっているんだが、

CgfGoBan では、.exe の横に cgfthink.dll を置いているみたいだな☆

『.dll がありません』とかいうエラーがたまに出るが、cgfthink.dll の有無かもしれないな☆」

KIFUWARABE_80x100x8

「まずは現状確認だぜ☆

cgfthink.dll を、お父んがコンパイルした cgfthink.dll に入替えようぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やってみるぜ☆」


01:45

201512280145

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Rebuild Solutionリビルド] をしたのが、この cgfthink.dll だぜ☆」


01:47

201512280147

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まず、『せい』がどういうのか、という確認だが、

Computer(DLL)を選んで対局すれば、cgfthink.dll との対局になるんじゃないかと

思ってるんだが、合ってるのかだぜ☆?」

KIFUWARABE_80x100x8

「調べようぜ☆?」


01:51

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ホームページには載ってないぜ☆ とりあえず ランダム置き をするのかどうか

動きを見てみようぜ☆」


01:53

201512280153

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ランダムかどうかは分からないが、石を真横にぶつけてくるのは分かったぜ☆」

KIFUWARABE_80x100x8

「よし、お父んのコンパイルした cgfthink.dll に差し替えようぜ☆!」


01:55

201512280155

KIFUWARABE_80x100x8

「ファイルサイズが 698KB も違うようだが☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Debugビルドと、Releaseビルドの違いなのだろうかなんだぜ☆?

とりあえず 実行しちゃえなんだぜ☆!」


01:59

201512280158

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

YOSHIよし☆! いけてるぜ☆!」

KIFUWARABE_80x100x8

「お父んは cgfthink.dll を拡張して 囲碁プログラムを組んだらいいんじゃないかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

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

KIFUWARABE_80x100x8

「じゃあ、ソースを調べようぜ☆?」


02:02

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっと、ここで在宅バイトだぜ☆ 囲碁プログラミングは ここまでだぜ☆」

KIFUWARABE_80x100x8

「在宅バイト 早く終わらせようぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「在宅バイトが 終わるのを待っていると、囲碁プログラムができないぜ☆」


 

cgfthink.c をコンパイルして .dll を作って cgfgoban.exe で動かしてみたぜ☆!

cgfthink は C言語だったのかだぜ……☆

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進だぜ☆!

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(24) C++からC#を呼び出す方法を調べようぜ☆<その3>(^▽^)www!
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(23) C++からC#を呼び出す方法を調べようぜ☆<その2>(^▽^)www!

2015-12-27 08:24

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「記事が長くなったので、1個前の記事の続きだぜ☆」

KIFUWARABE_80x100x8

「C++言語で作った .dll を、C++で動的に利用しよう、

というところだったんだぜ☆」

201512270831

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.exe と .dll は、同じフォルダーにあるのかだぜ☆

じゃあ がんばって .dllの動的リンクの サンプル・コードを真似てみるぜ☆」

 

ひしだま’s ホームページ 『DLL作成方法・呼出方法』

http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dll.html


08:37

201512270837

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーが出てしまったぜ☆

const char型の配列、14文字+\0 の計15文字サイズが指定されていますが、

LPCWSTR型じゃないのでエラーです、

というものだぜ☆

ロング・ポインター・コンスト・ワイド・ストリング型だっけ☆?

文字を入れるメモリが1バイトじゃなくなって大きくしたという型じゃないか☆?」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


08:44

PCWSTR, LPCWSTR NULL で終わる変更できないワイド文字列へのポインタ

WisdomSoft 『基本データ型と文字列』

http://www.wisdomsoft.jp/421.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うむ☆ だから、”Cpp2Csharp.dll” で、何がダメなんだぜ☆?」

KIFUWARABE_80x100x8

「そう書くと、末尾に \0 が付加された、const char型の配列だと思われるみたいだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「どう書いたら LPCWSTR 型だと思ってくれるんだぜ☆?」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


08:50

201512270850

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっきの記事に書いてあった TEXT( ) で挟むという技を使うと、

エラーが治まったぜ☆?」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」

201512270852

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここもエラーが出ていたので、勝手に書き替えておいたぜ☆?」

KIFUWARABE_80x100x8

「おう☆」


09:07

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ソースコードを、次のように書いてみたぜ☆」

// DllDemo.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

extern void printError(const char *name, int err);

typedef int(__stdcall *FUNC_test)(int a);

int main()
{
	HMODULE hDll = LoadLibrary( TEXT( "Cpp2Csharp.dll") );
	if (hDll == NULL) {
		printError("LoadLibrary", GetLastError());
		return -1;
	}

	FUNC_test addVariant = (FUNC_test)GetProcAddress(hDll, "AddVariant"); //関数名での指定
	if (addVariant == NULL) {
		printError("GetProcAddress", GetLastError());
		return -2;
	}

	FUNC_test getVariantAt = (FUNC_test)GetProcAddress(hDll, "GetVariantAt"); //関数名での指定
	if (addVariant == NULL) {
		printError("GetProcAddress", GetLastError());
		return -2;
	}

	addVariant(5963);
	addVariant(4649);
	addVariant(2469);

	std::cout << std::to_string(getVariantAt(1)) << endl;
	std::cout << std::to_string(getVariantAt(2)) << endl;
	std::cout << std::to_string(getVariantAt(3)) << endl;

	if (!FreeLibrary(hDll)) {
		printError("FreeLibrary", GetLastError());
		return -3;
	}

    return 0;
}

void printError(const char *name, int err)
{
	LPVOID lpMsgBuf;
	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER |
		FORMAT_MESSAGE_FROM_SYSTEM |
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		err,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPWSTR)&lpMsgBuf, //(char*)&lpMsgBuf,
		0,
		NULL
		);
	printf("%s: %d:%s\n", name, err, lpMsgBuf);
	LocalFree(lpMsgBuf);
}

KIFUWARABE_80x100x8

「実行してみようぜ☆!」


09:12

201512270912

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「疲労が どっと 来たぜ☆ 寝ようかな☆」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


09:21

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「アプリケーションが関連付けられていない拡張子のファイルを叩いた時に

出てくるエラーメッセージなんじゃないのかだぜ、これ☆?」

KIFUWARABE_80x100x8

「そりゃ、.dll ファイルなんて、叩くものじゃないだろうなんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何が間違っていたのか……☆?」


09:23

201512270923

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.dllを読み込もうとしている行の、左端の柱をクリックして、

デバッグ・モードで起動してみるぜ☆?」

201512270925

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「デバッグ・モードで起動するには、[F5]キーを押すだけでいいのかだぜ☆?」


09:27

201512270926

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Debugモードで動かそうとしたら、エラーの説明が出てきてくれたぜ☆

ん☆? DllDemo.exe を動かしているつもりだったんだが、

Cpp2Csharp.dll を起動しようとしていたのかだぜ☆?

そりゃ 動くわけないぜ☆?」


09:28

201512270928

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「確かに Cpp2Csharp の方が、 DllDemo より太字だぜ☆」


09:31

201512270931

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 プロジェクト名の[DllDemo] を右クリックして、[Set as StartUp Project]をクリックするぜ☆」


09:33

201512270932

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「今度は DllDemo の方が 太字になったな☆」

KIFUWARABE_80x100x8

「 [F5]キーを押して、実行してみようぜ☆!」


09:34

201512270934

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんだぜ、こりゃ☆? ビルドでも忘れてたっけなんだぜ☆?

とりあえず [YES]ボタンを押してみるかだぜ☆?」


09:37

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんか ビルドでも始まったのかだぜ☆?」

201512270938

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆ ごつい画面が出てきたぜ☆?

赤い丸を付けたブレークポイントで 実行が一時停止しているな☆」

201512270940

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よく使うボタンはこのあたりなんだぜ☆

プログラムを1行ずつ実行したり、一気に進めたり、できるわけだぜ☆

詳しくは 各自 調べてくれだぜ☆」


09:44

201512270943

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「if文で、エラーのある方に落とされているぜ☆

残念だぜ☆」


09:46

201512270946

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーメッセージも、出してくれているんだが、文字化けしているぜ☆

残念だぜ☆」

KIFUWARABE_80x100x8

「お父んが、エラーが出てたので テキトー に直したところじゃないのか、これ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うむむ☆!」


09:53

201512270953

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「お父んが適当にいじった関数の名前を右クリックして、

[Go To Definition] をクリックするぜ☆」


10:16

201512271016

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「定義文が出てきたな☆ お父んがいじったところ、LPWSTR で合ってると思うぜ☆?」

KIFUWARABE_80x100x8

「合ってたか☆

文字化けは別の理由か☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「理由は ちょっと分からないぜ☆」

KIFUWARABE_80x100x8

「ググろうぜ☆!」


10:19

 

>MakeLogFile(LPCSTR errorMsg)

LPCSTR ということは const char *
早い話MBCSですね。

プロジェクトの設定はMBCSですか。
VC2008とかはデフォルトでUNICODEになってます。

あるいは
MakeLogFile(LPCTSTR errorMsg)
にして両対応にしちゃうとか・・・

YAHOO!JAPAN 知恵袋 『GetLastError関数の戻り値をFormatMessage』

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1062449370

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「んー(^~^)☆? ソースを もう1回 見てみるかだぜ☆?」


10:27

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ソースコードに変わったところはなさそうだぜ☆

Microsoft Visual Studio は、内部的には UTF-8 を使っているのかも知れないな☆」

201512271028

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ウィンドウの左上のアイコンをクリックして、[既定値(T)]をクリックしてみるぜ☆」

KIFUWARABE_80x100x8

「そんなところに何があるんだぜ☆?(^~^)??」


10:31

201512271030

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「えっ☆! UTF-8 がない☆!」

KIFUWARABE_80x100x8

「残念か☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「残念だぜ☆」


10:41

ERROR_PROC_NOT_FOUND 127 0x0000007F 指定されたプロシージャが見つかりません。

シーラ家 『Win32エラーコード一覧』

http://ir9.jp/prog/ayu/win32err.htm

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーコードは 127 と分かっているんだぜ☆

ネットで探すと、127は、プロシージャが無いのか……☆」

KIFUWARABE_80x100x8

「どんなプロシージャならあるのか、調べられないのかだぜ☆?」


11:00

 

soundengine.jp 『Dependency Walkerでアプリケーションの使用DLLを調査 【やってみた】』

http://soundengine.jp/wordpress/tips/try/555/

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.dll に入っている関数名を一覧するツールがあるみたいなんだぜ☆

Microsoft Visual Studio 2015 には付いていないのかなんだぜ☆?」


11:03

『Dependency Walker 2.2』

http://www.dependencywalker.com/

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしのPCは Windowsの64bit機だから、x64 のを落とせばいいのかだぜ☆?」


11:52

201512271152

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「落としてみたぜ☆ .exe を叩いてみるぜ☆」

201512271153

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「適当にボタンを押しまくってみるかだぜ☆」


11:57

201512271157

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし、WAKATTAわかったぜ☆!

ファイルパスに日本語が含まれているとダメだが、[File] – [Open…] で

.dll ファイルを開くだけで 中が見れるぜ☆」


12:21

201512271221

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしの作った Cpp2Csharp.dll は、エラーがいっぱいで悲しいぜ☆

CPUが違う、って書いてるんじゃないか☆? 32 という数字も見かけるし☆

わたしのPCは64bit機なので、64bit用にコンパイルした方がいいのかなんだぜ☆??」

KIFUWARABE_80x100x8

「がんばれだぜ、お父ん☆!」


12:27

201512271226

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここらへんを触った方がいいのか、それとも……☆」

201512271228

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こっちを触った方がいいのか、うーん☆(^~^)」


12:30

201512271230

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「上を触ると、下も一斉に変わったぜ☆」


12:46

201512271245

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Build Solution] だと、.dll ファイルのタイムスタンプが変わっていなかったようなので、

[Rebuild Solution] をクリックしてみたぜ☆ .dll のファイルのタイムスタンプも変わったぜ☆」


12:49

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ デペンデンシーワーカーの方ではエラーが出るぜ……、あっ☆!」

201512271249

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Releaseモードと Debugモードでは設定は別なのかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「と思ったらちごた……☆ Activeでないモード、Activeなモードという分け方があるのかなんだぜ☆?」


12:52

201512271253

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「と思って Activeなモードも 64ビットに変えたら Rebuild Solution でエラーが出てきたぜ☆」


12:55

201512271255

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「上の設定ごとに、下の設定も 設定しなおすのかだぜ☆?」


12:57

201512271257

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、/ZI も /Zi に設定し直しかだぜ☆」


12:59

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Rebuild Solution して、.dll を見にいったら、x64 というフォルダーができていて、

その下に Debug というフォルダーができていたぜ☆? その中に .dll があったぜ☆」

201512271259

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーの数は減ったみたいだぜ☆」

KIFUWARABE_80x100x8

「ちょっと進んだな☆!」


13:07

201512271307

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あらまっ☆!」


13:09

201512271309

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.dll にしないと……☆」


13:11

201512271311

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これでも ダメなのかだぜ☆ もう寝るぜ☆」

KIFUWARABE_80x100x8

「おやすだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おやすー☆」


 

Dependency Walker を練習中だぜ☆!

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進なんだぜ☆!

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(23) C++からC#を呼び出す方法を調べようぜ☆<その2>(^▽^)www!
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(22) C++からC#を呼び出す方法を調べようぜ☆(^▽^)www!

2015-12-26 22:46

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「在宅バイトの方で、やらなくてはいけないネタ仕込みの量が マウンテン なので

ふらふらと 囲碁ブログ の方に来てしまったぜ☆」

KIFUWARABE_80x100x8

「お父んの中では、ここは 囲碁ブログ なのかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁プログラムについて、現状では わたしの前に 2つの関心ごとがあるんだぜ☆

(1)GTP碁 テキスト プロトコルを使ってCgfGoBanの囲碁エンジンとして使う方がいいの☆?

(2)cgfthinkを使ってCgfGoBanの囲碁エンジンとして使う方がいいの☆?」

KIFUWARABE_80x100x8

「それぞれの利点と欠点を教えてくれだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「(1)GTPは よくわからんのが欠点。 GnuGoでも使われているぐらいには有名、というのが長所☆

(2)cgfthinkは CgfGoBan専用というのが欠点。 分かりやすいのが長所☆」

KIFUWARABE_80x100x8

「CgfGoBan専用というのは、何か欠点があるのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「特にないよな☆ NNGSNo Name 碁 サーバーにつなぐのもCgfGoBanを使うんだったら、大会に出れるかもしれないし☆

CgfGoBanを使って UEC囲碁大会の NNGSサーバーにつなげられなかったら、

お父んは 椅子にずっと着席しておくぜ☆」

KIFUWARABE_80x100x8

「(1)と、(2)のどちらの選択肢でも、CgfGoBanを使う前提じゃないのかだぜ☆?

CgfGoBanが UEC囲碁大会の NNGSサーバーにつながらないようなら、

(1)、(2)のどちらの選択肢を選んでも お父んは 椅子にずっと着席しているぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、(1)GTP は よくわからん、 (2)cgfthink は かんたん、

というのを天秤にかけて、(2) からやってみるかだぜ☆

これ、C#の .dll なのか、comオブジェクトなのか知らないんだが、

C#も読み込めるように、改造が必要だと思うんだぜ☆」


23:02

 

#define NO_MONEY 0 『C++から利用可能なC#によるクラスライブラリの作成』

http://d.hatena.ne.jp/kayn_koen/20091103/1257205235

 

KIFUWARABE_80x100x8

「以前もこのページを読んでいたようだが、C++のコンパイルを通せるようになった今、

改めて読んでみて 何かわかることはあるかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「もちつけ☆ 泡立てるなだぜ☆」

KIFUWARABE_80x100x8

「落ち着け☆ 慌てるなだぜ☆」


23:10

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「普段 みかけない 変わったものを 抜き出してみるぜ☆」

 

using System.Runtime.InteropServices;

 

[ComVisible(true)] ※インターフェースの上に乗せる。

 

[ClassInterface(ClassInterfaceType.AutoDual)] ※クラスの上に乗せる。

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「あれ☆? この3行だけかだぜ☆? 他には……☆」

アセンブリ情報: [アセンブリをCOM参照可能にする]をON☆

ビルドタブ内: [COM相互運用~]をON☆

ビルド後の生成されたdll: regasm

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「以上が C#側のやることなのかだぜ☆? 思ったより少ないぜ☆

次に C++側のやること☆」

 

ソースコードに

『#import “C:\\full\\path\\COMVariant.tlb” named_guids raw_interfaces_only』

と書く☆

 

次の1行を書き足す☆

『CoInitialize(NULL);』

 

C++側では、スマートポインタを使って、C#のプログラムを見る。

なんだか分からないが次の2行で hRes の準備ができる。これを使う。

IVariantPtr dotNetCOMPtr; // Smart Pointer Name = IVariant + Ptr

HRESULT hRes = dotNetCOMPtr.CreateInstance(COMVariant::CLSID_Variant);

// Instancialize

 

最後に次の1行を書いて終わり☆

『CoUninitialize();』

 

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「…………、やってみて覚える感じかだぜ☆?」

KIFUWARABE_80x100x8

「サンプルを作って、やってみようぜ☆?」


23:35

[File] – [New] – [Project] – [Win32 Console Application]

Name: Cpp2Csharp

Location: C:\Root_Igo_CgfGoban\cgfgoban108\

[OK]

あとは道なりに進む☆

201512262335

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++の 新しいプロジェクト を作成したぜ☆

見ろ☆!

もう 何をしていいのか わからないぜ☆」

KIFUWARABE_80x100x8

「ハローワールドを作ってみようぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし☆!」


23:38

 

C++マニアック 『最初のプログラム』

http://homepage2.nifty.com/well/FirstProgram.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「真似して書いて見るぜ☆」


23:42

201512262340

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

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


23:44

[Build] – [Build Solution]

201512262343

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ビルドは通ったみたいだぜ☆? 実行できるの、これ☆?」


23:45

[Debug] – [Start Without Debugging]

201512262346

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「動いたぜ☆ 高校生だったころ、このあと MFCのリファレンスを読んで

説明の書かれていない『イベントハンドラ』の意味が分からなくて C++を 投げたんだぜ☆」

KIFUWARABE_80x100x8

「……(>_<)? やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆」


23:54

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「このあと、どんなプログラムを書けばいいのか 分からないぜ☆?」

KIFUWARABE_80x100x8

「C#の方も、サンプル通り プログラムを作ろうぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

YOSHIよし☆」


2015-12-27 00:05

201512270005

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Close Solution] なんていうボタンを使う日がくるとは……なんだぜ☆

C++ から C# に切り替えたいときとかに ソリューション一式を 閉じるボタンかだぜ☆」


00:08

201512270008

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [File] – [New] – [Project…] と進むぜ☆?」


00:26

201512270026

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Visual C#] – [Windows] – [Console Application] と選び、

Name: Csharp2Cpp

Location: C:\Root_Igo_CgfGoban\Cgfgoban108\csharp2cpp\

と打ち込んで、[OK]ボタンをクリックだぜ☆」


00:28

201512270028

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C#の画面は 馴染み深いので 何をしたいなら何をするべきか、すぐに分かるぜ☆」

KIFUWARABE_80x100x8

「C++も そのレベルになってくれだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「サンプル・プログラム通り作ってみるかだぜ☆

インターフェースがあって、それを実装したクラスがあって、

メインでは そのクラスのインスタンスでメソッドを呼び出して 標準入出力に出力するんだぜ☆」

KIFUWARABE_80x100x8

「(>_<)?」


01:07

201512270107

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしは フォルダーを掘るのが大好きなんだぜ☆

階層を深くして、右クリックして [Add] – [New Item…] 」

201512270109

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Visual C# Items] – [Interface] と選んで、

Name: Variant.cs と、ちょっと名前の付け方をサンプルとは変えて、

[Add]ボタンをクリックだぜ☆」


01:11

201512270111

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな感じで インターフェースのファイルの雛型が作られるんだぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おう、やったぜ☆」


 

01:19

201512270118

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムには namespace というものがあるんだぜ☆」

KIFUWARABE_80x100x8

「C++ にもあったな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムの部品にも、長い苗字があるんだと思えばいいんだぜ☆

ちょっと、ネームスペースを変えるぜ☆」


01:22

201512270121

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プロジェクト名を右クリックして、[Properties] をクリックだぜ☆」

201512270123

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「とりあえず、アセンブリ名と ネームスペースだけは 変えておきたいぜ☆」


01:33

201512270133

(※注・このときの namespace はあとで思ってたのと違うことに気づくんだぜ☆)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『ぐれーすけーる』というサークル名で活動しているので、

頭に Grayscale と付けてみるぜ☆

アセンブリ名は Grayscale.Csharp2Cpp.exe みたいになるんだぜ☆

ネームスペースの方は、フォルダー階層の方に Csharp2Cpp というプロジェクト名が

もうあるので、

次にクラスを新規追加したときからは Grayscale.Csharp2Cpp という名前でネームスペースが始まるはずだぜ☆」

KIFUWARABE_80x100x8

「お父んが ヘロヘロ だぜ☆ がんばれ、お父ん☆!(>_<)」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムを打ち進めることが 一番の回復薬だぜ☆(^▽^)

[Ctrl]+[S]キーを押してファイルを保存☆」


01:38

201512270138

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「既存のコードのネームスペースは、手打ちで修正して回るぜ☆

Program.cs の方も Grayscale.Csharp2Cpp というネームスペースに変えておくぜ☆」


01:42

201512270142

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「サンプルの通りに書き出すと、こんな感じだぜ☆

using に2行追加したり、[ComVisible(true)] を interface の頭に乗っけたり、

void とか object で始まる2行を追加したんだぜ☆」

KIFUWARABE_80x100x8

「ほう☆」


01:45

201512270144

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「右クリックして [Organize Usings] – [Remove and Sort Usings] をクリックすると……☆」


01:46

201512270146

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ファイルの冒頭の、using のところが2行に減ったな☆

使われていない using が消えて、アルファベット順にソートされたんだぜ☆

すっきりしたな☆」

KIFUWARABE_80x100x8

「散髪か☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「散髪とは違うぜ……☆」

KIFUWARABE_80x100x8

「違うのかだぜ……☆」


01:55

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ドキュメント・コメントについても説明しておくぜ☆」

201512270155

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「AddVariant 関数にコメントを添えたいときは、

スラッシュ『/』を3本 打鍵するんだぜ☆ 1つ、2つ……☆」

201512270157

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「3つ打鍵すると あら不思議☆!

コメントの雛型が ごっそり自動で追加されたな☆

ドキュメント・コメントの書き方は 各自 調べてくれだぜ☆」

KIFUWARABE_80x100x8

「おっ おっ☆(^▽^)!」


02:01

201512270201

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな感じで インターフェースの作成は おしまいだぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は classクラス だぜ☆」


02:04

201512270204

(※注・ interface の頭に public の文字がヒツヨウ)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

classクラス も、 interfaceインターフェース も、おんなじテキストファイルなんだぜ☆

追加の仕方は同じだぜ☆

[Solution Explorerソリューション エクスプローラー]ビューから、フォルダーを選んで[Add] – [New Item…] とクリック☆」


02:07

201512270206

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Visual C# Items] – [Class] と選んで、

Name: VariantImpl.cs

と打ち込み、[Add]ボタンを押すんだぜ☆ クラス名の命名方法はわたしの趣味だぜ☆」


02:12

201512270211

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「クラスファイルがでけたぜ……、あっ☆!

namespace が思ってたのと違うぜ☆」

201512270214

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こう書いていた方が 良かったのかなんだぜ……☆?」


02:31

201512270232

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしは、インターフェースと クラスを 別の namespaceネームスペース に置くので、

クラスの方には

using Grayscale.Csharp2Cpp.P___500_Main_______.L500_Main;

という1行を追加しているぜ☆」

using System;
using System.Runtime.InteropServices;

namespace Grayscale.Csharp2Cpp.P___500_Main_______.L500_Main
{
    /// <summary>
    /// C++、C#のどちらでも使えるインターフェースです。
    /// </summary>
    [ComVisible(true)]
    public interface Variant
    {
        /// <summary>
        /// リストに要素を追加します。
        /// </summary>
        /// <param name="obj">要素</param>
        void AddVariant(Object obj);

        /// <summary>
        /// リストのnum番目の要素を取得します。先頭の要素はnum=0。
        /// </summary>
        /// <param name="num">要素のインデックス</param>
        /// <returns>要素</returns>
        Object GetVariantAt(int num);
    }
}

 

using Grayscale.Csharp2Cpp.P___500_Main_______.L500_Main;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace Grayscale.Csharp2Cpp.P500____Main_______.L500_Main
{
    /// <summary>
    /// C++、C#のどちらでも使えるインターフェースです。
    /// </summary>
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class VariantImpl : Variant
    {
        private List<Object> _list;

        public VariantImpl()
        {
            _list = new List<object>();
        }

        public void AddVariant(Object obj)
        {
            Debug.WriteLine("AddVariant " + obj + ": type=" + obj.GetType());
            _list.Add(obj);
        }

        public Object GetVariantAt(int num)
        {
            if (_list.Count > num)
            {
                Object obj = _list[num];
                Debug.WriteLine("GetValueAt[" + num + "] => " + obj);
                return obj;
            }

            //num is exceeding limit
            Debug.WriteLine("GetValueAt exceeded limit");
            throw new Exception("Exceeded Limit");
        }
    }
}

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「クラスとインターフェースを書いたところで、次は main 関数だろうかなんだぜ☆?」


02:38

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっきのサンプル・プログラムには main 関数が無いぜ☆

自分で書くかだぜ☆」


02:42

\ カタタタタタ☆ /

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし、うまくいったぜ☆ main 関数を説明するぜ☆」

KIFUWARABE_80x100x8

「おう☆」

201512270242

using Grayscale.Csharp2Cpp.P___500_Main_______.L500_Main;
using Grayscale.Csharp2Cpp.P500____Main_______.L500_Main;
using System;

namespace Grayscale.Csharp2Cpp
{
    class Program
    {
        static void Main(string[] args)
        {
            Variant variant = new VariantImpl();

            variant.AddVariant("hello!");
            variant.AddVariant(5963);
            variant.AddVariant(true);
            //エラー! variant.AddVariant(null);

            Console.WriteLine(variant.GetVariantAt(0));
            Console.WriteLine(variant.GetVariantAt(1));
            Console.WriteLine(variant.GetVariantAt(2));
            //Console.WriteLine(variant.GetVariantAt(3));
        }
    }
}

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「static修飾の Main( ~ ) 関数というのは、.exe をダブルクリックしたときに最初に実行される関数なんだぜ☆」

KIFUWARABE_80x100x8

「(^▽^)☆? おう☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Variant型のインスタンスを生成して、

.AddVariant( ) メソッドで値を追加し、

.GetVariantAt( ) メソッドで値を取り出すんだぜ☆

Console.WriteLine( ) メソッドを使って、値を コンソール画面に出力したぜ☆」

KIFUWARABE_80x100x8

「(^▽^)☆??? おっ おうっ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C#で これらを書いたわけなんだが、これを C++からも使えたら、

CgfGoBanから、わたしの書くC#の囲碁プログラムを使えるということだな☆」

KIFUWARABE_80x100x8

「(^▽^)☆?? おっ おーう☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、今回C#で書いたサンプル・プログラムと同じものを、C++でも書いてみるぜ☆」

KIFUWARABE_80x100x8

「おう☆! 同じものを C++ で作ろうぜ☆!(^▽^);;;」


03:04

201512270304

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++は 早くも ヘッダーと、ソースに フォルダーが分かれていて

出鼻をくじかれるぜ☆」

KIFUWARABE_80x100x8

「お父んは 自分でフォルダーを掘って インターフェースと クラスを分けて

いたじゃないかなんだぜ☆? 同じことじゃないかなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、ヘッダーファイルと、ソースファイルを1個ずつ作ってみるかなんだぜ☆?」


03:09

201512270309

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「お父ん、C++にトラウマがあって 先に進むのが嫌だぜ☆」

KIFUWARABE_80x100x8

「今から初めて C++ を触る気分で 進めようぜ☆」


03:13

201512270313

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Visual C++] – [Header File (.h)] と選んで、

Name: Variant.h

というファイル名にして、[Add]ボタンを押してみるぜ☆」


03:15

201512270315

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんだぜ、これ☆?」

KIFUWARABE_80x100x8

「ヘッダ・ファイルは でけたか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「でけたぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆

#pragma って、コンパイラーが独自実装できるスイッチだったかなんだぜ☆?

once ってことは、このヘッダー・ファイルは 1回しか読み込みません、ということなのかだぜ☆?

#ifndef VARIANT_H

#define VARIANT_H

~ヘッダーファイル本文~

#endif

と書くのは もう古いということなのかだぜ☆?」

KIFUWARABE_80x100x8

「(^▽^)☆???」


03:35

201512270335

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしは フォルダー階層を深くするのが好きなんだぜ☆!

C++のネームスペースの作り方は これでいいのかなんだぜ☆?」

KIFUWARABE_80x100x8

「一目見ただけで違和感があるぜ☆」


03:46

201512270346

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おや☆? C++ に、Object クラスって無いのかだぜ☆?

System というネームスペースも無いし☆

System::Object というクラスがあるかと思ったんだが……☆」

KIFUWARABE_80x100x8

「ググろうぜ☆」

 

using namespace Systemですよね?

であれば、プロジェクトのプロパティにて「共通言語ランタイム サポート」という項目を「共通言語ランタイム サポート (/clr)」に設定して下さい。

なお、このオプションを有効にすると、.NET Frameworkが必要なアプリケーションになること、C++/CLIと呼ばれるC++ベースの独自の言語に変わることを理解しておいて下さい。

(純粋なC++アプリケーションとは言えなくなる)

(MSDN 『名前空間 namespace の追加方法について』/Azulean(MCC, MVP) )

https://social.msdn.microsoft.com/Forums/ja-JP/8268488c-dc2d-447d-9c95-c9d03349da71/-namespace-?forum=vcgeneralja

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむむ☆

C++の原案に System::Object なんか無いから、 .NET Framework にしろってことなのかだぜ☆?

『共通言語ランタイム サポート(/clr)』というのにすればいいのかだぜ☆?」

KIFUWARABE_80x100x8

「やってみようぜ☆?」


04:03

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「見つけたぜ☆」

201512270403

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Project] – [プロジェクト名 Properties…] と進んで……☆」

201512270405

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [General] – [Common Language Runtime Support] の▼ボタンを押すと、

『Common Language Runtime Support (/clr)』というのがあるな☆ 多分これだぜ☆」


04:07

201512270407

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆! 赤い波線が消えたぜ☆!」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!

緑色の波線が気になるぜ……☆」


04:27

201512270427

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「マウスカーソルを合わせると、何か出たぜ☆?」


04:53

201512270453

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Variant.cpp に AddVariant の定義がないから作るぜ、って書いてあるんだが、

そもそも Variant.cpp なんて作ってない気がするんだぜ☆

ボタンを押すとどうなるんだぜ☆? 押してみるか……☆」


04:55

201512270455

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何が起こったのか……☆?」


04:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Ctrl]+[S]キーでセーブっと☆ ん☆?」

201512270457

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「増えてる☆!?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そりゃあ 便利だぜ☆」


05:03

201512270503

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「調子にのって 緑色の波線から create をしていたら、

エラーの出るコードを作られてしまったぜ☆」

KIFUWARABE_80x100x8

「あーあ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Object 型にコンストラクタはありませんよ……、まあ そうだろう、こんな抽象クラス

作れるわけないぜ☆ null とかに変えられるだろうかなんだぜ☆?」


05:07

201512270507

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++言語で ヌルを返すって、どうやるんだぜ☆?

ほらみろ、詰まった☆!」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


05:10

 

C++/CLIとC# 『null』

http://bear09.blog118.fc2.com/blog-entry-32.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++/CLI には、nullptr というキーワードがあるのかなんだぜ☆?」

KIFUWARABE_80x100x8

「使ってみようぜ☆?」


05:13

201512270513

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ダメだったぜ☆! ほらみろ、詰まった☆!」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


05:34

201512270534

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++のやり方が分からないぜ☆」

KIFUWARABE_80x100x8

「Object型というのは、返せるものなのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そこらへん、さっぱり分からないぜ☆」


05:47

201512270547

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ 基礎知識がないので、何ができて、何ができないのか分からないぜ☆」

KIFUWARABE_80x100x8

「お父んに Object型は 早いんじゃないかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆」


05:52

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ひとまず、int 型しか返却しない、ということで サンプル・プログラムを

書き直すことにするかだぜ☆」

KIFUWARABE_80x100x8

「おう☆」


06:08

\ ぶくぶくぶくぶくぶくぶくぶくぶく☆ /

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「C# で import System.Collection.Generic; List<int> list; と書くコレクションは、

C++ だとどう書くんだぜ☆? vector? どうやって使うんだぜ☆?」

KIFUWARABE_80x100x8

「ググろうぜ☆?」

 

ViVi Home 『手を動かしてさくさく理解する C++ 動的配列クラス std::vector 入門』

http://vivi.dyndns.org/tech/cpp/vector.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆

#include <vector>

std::vector<int> v;

なのかだぜ☆?」

 


06:19

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ひとまず、次のように書いてみたんだぜ☆」

#pragma once

#include <vector>

using namespace System;

namespace Grayscale {
namespace Cpp2Csharp {
namespace P___500_Variant____ {
namespace L500_Variant {

	class Variant
	{
	private:
		std::vector<int> _vector;

	public:
		void AddVariant(int value);
		int GetVariantAt(int index);
	};

}}}}

 

#include "stdafx.h"
#include "Variant.h"
#include <vector>

namespace Grayscale {
namespace Cpp2Csharp {
namespace P___500_Variant____ {
namespace L500_Variant {

	void Variant::AddVariant(int value)
	{
		this->_vector.push_back(value);
	}

	int Variant::GetVariantAt(int index)
	{
		return this->_vector[index];
	}

}}}}

KIFUWARABE_80x100x8

「int型のvectorになったおかげで、

なんでも型の配列という うまみ がなくなったな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そうなんだぜ☆

次は メイン関数を書こうぜ☆」


06:35

201512270635

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「がんばったぜ☆

#include <cstdio> は要らなくなったかなんだぜ☆」

KIFUWARABE_80x100x8

「ビルドは通ったみたいだな☆! 実行してみようぜ☆!」


06:38

201512270638

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Vectorは範囲外☆? 添え字は 0 から始めるのが正しいのかだぜ☆?」


06:41

201512270641

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし☆ でけた☆!」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆!」

// Cpp2Csharp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
//#include <cstdio>
#include <iostream>
#include <string>
#include "Variant.h"

using namespace std;
using namespace Grayscale::Cpp2Csharp::P___500_Variant____::L500_Variant;

int main()
{
	Variant variant = Variant();

	variant.AddVariant(5963);
	variant.AddVariant(4649);
	variant.AddVariant(1192);
	variant.AddVariant(2469);

	
	std::cout << std::to_string(variant.GetVariantAt(1)) << endl;
	std::cout << std::to_string(variant.GetVariantAt(3)) << endl;
	std::cout << std::to_string(variant.GetVariantAt(2)) << endl;
	std::cout << std::to_string(variant.GetVariantAt(0)) << endl;

	return 0;
}

06:43

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は、.dll を読み込んで、.dllの中の .AddVariant( )、GetVariantAt( ) を使う、

というC++言語のプログラムを書いてみたいぜ☆」

KIFUWARABE_80x100x8

「おう☆!」


07:02

 

MSDN 『チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)』

https://msdn.microsoft.com/ja-jp/library/ms235636.aspx

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆(^~^)?」


07:08

201512270708

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

Solution Explorerソリューション エクスプローラー の プロジェクト名を右クリックして、

[Propertiesプロパティーズ]を選ぶんだぜ☆」

201512270711

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そして [General] – [Configuration Type] の▼ボタンを押すんだぜ☆

その中に Dynamic Library (.dll) というのがあるな☆ 多分これだぜ☆」


07:15

201512270714

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Cpp2Csharp.dll というファイルができているな☆

あれ☆?

ファイル名は Grayscale.Cpp2Csharp.dll じゃないのかなんだぜ☆

設定し忘れなのかだぜ☆」


07:20

201512270719

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は、.dll を呼び出す方のプログラムを作るぜ☆

Solution Explorer の ソリューションを右クリック、

[Add] – [New Project…] をクリックだぜ☆」


07:24

201512270724

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Visual C++] – [Win32 Console Application] を選んで、

Name: DllDemo

と適当にプロジェクト名を付けて [OK]ボタンを押すんだぜ☆」


07:26

201512270726

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これは [Finish] を押そうかだぜ☆」


07:45

201512270745

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「新しく作ったプロジェクトの Main 関数には、

さっき作った Cpp2Csharpプロジェクトの Main 関数を だいたいコピーだぜ☆

この Variant クラスを、 .dll ファイルの中身から取ってくれればいいんだが、

どうやるかだぜ☆」

KIFUWARABE_80x100x8

「参照すればいいんじゃないのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やってみるぜ☆」


08:04

201512270803

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Solution Explorer の プロジェクト・フォルダーの下にある、

[References] を右クリックして、[Add Reference…]を選ぶんだぜ☆」

201512270806

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんか 画面が出てきたぜ☆ うーむ、.dll は無いのかだぜ☆?」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


08:11

 

ひしだま’s ホームページ 『DLL作成方法・呼出方法』

http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dll.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんか 思ったよりタイヘンそうだぜ☆?」

KIFUWARABE_80x100x8

「サンプル通り書いてみたらどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これが C#の .dll を利用するのに役立つかどうか分からないが、

やるだけやるんだぜ☆

ここらで、記事が長くなったので、次の記事に移るぜ☆」

KIFUWARABE_80x100x8

「おう☆!」


 

C++の ハローワールドを コンパイルして実行するところまで でけたぜ☆!

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進だぜ☆!

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(22) C++からC#を呼び出す方法を調べようぜ☆(^▽^)www!
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(21) C++を調べようぜ☆(^▽^)www

2015-12-26 09:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 『優先度 高』 の作業の数が マウンテン で、

囲碁プログラムに全然時間を割けないから、

前向き かつ 積極的に バイトをサボって 囲碁プログラムしよーぜ☆」

KIFUWARABE_80x100x8

「前向き かつ 積極的な意見だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「今回は、C++を調べたいと思うぜ☆」

KIFUWARABE_80x100x8

「ほう☆?」


09:16

201512260916

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「前に VisualStudio 2015 を入れたんだが、

これが C++ も使えるという話しなんだぜ☆

それを調べてみるぜ☆」

KIFUWARABE_80x100x8

「おう☆」


09:22

201512260922

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「多分、この .dsw というファイルを、

Microsoft Visual Studio 2015 なら、開けられるんじゃないか、

と 踏んでいるんだぜ☆」

KIFUWARABE_80x100x8

「やってみれば 1秒 で分かるぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よーし、お父ん、がんばっちゃうぞ☆」


09:27

201512260926

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆! 開くファイルの一覧に入っているぜ☆!

これは いけるんじゃないか☆?!」


09:28

201512260928

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんのこっちゃ☆」

KIFUWARABE_80x100x8

「何て書いてあるんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「読まなくても、こういうときに出てくるダイアログボックスというのは

過去版には戻れなくなりますがバージョンアップしますか? とか、そういうのだと予想☆

とりあえず 読む努力をしてみるぜ☆」


09:34

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「単語単位でグーグル翻訳……☆」

either … どちらか。

behavior impacting … 行動衝撃。

such that … そのような。

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ なんのこっちゃ☆

[OK]ボタンを押してみるかだぜ☆?」

KIFUWARABE_80x100x8

「おう☆」


09:39

201512260939

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ふーむ☆? 読み込めたのかだぜ☆?」

KIFUWARABE_80x100x8

「お父ん、ブラウザーに Migration Report というタブが開いているぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「マイグレーションって何だっけ☆? すぐに辞書を引くのは嫌だぜ☆

まったく記憶に かすりもしないぜ☆」

201512260944

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「エラーが1個出ているのが気になるぜ☆」

KIFUWARABE_80x100x8

「お父ん、Migration は移行という意味らしいぜ☆? グーグル翻訳した☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」

KIFUWARABE_80x100x8

「エラーは、バックアップできなかったというだけなのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「メッセージが2件あるみたいだから、読んでみようぜ☆?」


09:50

201512260949

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「確かに、Backupフォルダーの中は空だぜ☆

Solution migrated successfully って書いてあるだろ☆ 移行は成功したんじゃないか☆?」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Visual Studio をちょっと触ってみるかだぜ☆」


09:53

201512260953

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆! .dsw ファイルが無くなって、 .sln ファイルができているぜ☆!

これ、C# でよく使う、ソリューション・ファイルだぜ☆」

KIFUWARABE_80x100x8

「ええかんじか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ええかんじかもしれないぜ☆」


09:59

201512260959

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.sln ファイルを叩くと、黒い画面はどこかへ行ったのか、こういう画面が出てきたぜ☆」

KIFUWARABE_80x100x8

「この画面は何だぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「プログラムを書いたり、動かしたりする画面だな☆

Visual Studio 2012 と だいたい似ているんだが、細かく違う感じだな☆

一番上の タイトルバーの右寄りにある、紫色の2の字が気になるぜ☆ クリックしてみよーぜ☆」


10:03

201512261003

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「えっ☆! これって お試し版トライアルライセンスなのかだぜ☆? あと6日とか書いてないかなんだぜ☆?」

KIFUWARABE_80x100x8

「6日後には使えなくなるのかなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そんなんなったら、お父んは ハンギング・ネック、ダイビング・ヘブン だぜ☆」

KIFUWARABE_80x100x8

「調べようなんだぜ☆」


10:08

 

手っ取り早く教えて 『Visual Studio Community 2015で有効期限が切れた』

http://hayakute.kantan-sakusaku.com/visualstudio/2015/0831113326/

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「サインインすると 何回でも延長できる感じなのかだぜ☆?」

KIFUWARABE_80x100x8

「生存確認か☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まあ、ボタンを押すだけなら、やるけど☆」


10:16

201512261015

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ほら、きふわらべ☆ ここにファイルが並んでるだろ☆」

KIFUWARABE_80x100x8

「おう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 .h が ヘッダ・ファイル、 .cpp が C++シープラプラファイルだぜ☆

.ico はファイルアイコン、 .bmp はビットマップ画像ファイルだな☆

お父んは一度、これらのファイルを C#化 しようとして そのまんまになっている経験があるので、

中身はだいたい予想が付くぜ☆」

KIFUWARABE_80x100x8

「それより早く動かそうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「一応確認だぜ☆

cgf というのは Computer Go Forumコンピュータ 碁 フォーラム の頭文字だぜ☆

wsk というのは Windows Socketウィンドウズ ソケット の頭文字だぜ☆ 通信部分だな☆

term というのは 規約という意味だと思うんだが、

通信部分の上に乗っかっているデータのやり取り、『Standard Go Modem Protocol標準 碁 モデム・プロトコル(SGMP)』が書かれている感じだぜ☆

pipe は、『GnuGoグニュー碁』と対戦するための『Go Text Protocol碁テキスト・プロトコル(GTP)』 が書かれている感じだぜ☆

main というのは、プログラムのエントリー・ポイントのことだと思うんだぜ☆ スタート地点な☆

win というのは、碁というよりは、Windowsの画面とかを主に扱うプログラムみたいだな☆」

KIFUWARABE_80x100x8

「コンピューターの思考はどこなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CgfGoBanは、『Graphical User Interfaceグラフィカル・ユーザー・インターフェース(GUIグイ)』と言ってな、画面だけだぜ☆

思考部分は、cgfgobanフォルダーの隣にある cgfthinkフォルダーの中にあるぜ☆」

KIFUWARABE_80x100x8

「そっちも後で見ようぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おうだぜ☆」


10:58

201512261058

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++というのはコンパイル型言語で、同時翻訳インタープリター型言語の対義語だぜ☆

コンパイル型言語は makeメイクファイルのようなものを使って、 コンパイル、リンク を行うことで

ライブラリの参照などを解決し、

中間オブジェクト言語を作りながら、最終的に 実行形式のバイナリファイルを 出力するんだぜ☆

これらのことを、

[ソリューションのビルド] というメニューボタン1発でやってくれるのが

Microsoft Visual Studio なんだぜ☆」

KIFUWARABE_80x100x8

「そうか☆ じゃあ押そうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「……☆」(カチッ)


11:04

201512261104

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「げぇーっ☆!(横山光輝風)」

KIFUWARABE_80x100x8

「エラーが出ているぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

incompatibleインコンパチボー というのは互換性がないという意味だろ☆

command-line optionsコマンド ライン オプションズ というのは、プログラムをスタートするときに最初に与えておく条件だぜ☆

じゃあ、 /ZI と /Gy は何か、なんだが そんなん覚えているわけがないぜ☆

コンパイラ・オプションだと思うんだぜ☆ 例えば、32bit と 64bit 機は違うぜ、とか☆」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


11:18

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「見ろ☆!」

201512261120

MSDN 『/Z7、/Zi、/ZI (デバッグ情報の形式)』

https://msdn.microsoft.com/ja-jp/library/958x11bc.aspx

 

KIFUWARABE_80x100x8

「使用できないのなら、じゃあ どうすればいいんだぜ☆?」


11:26

201512261123

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Project] – [プロジェクト名 Properties…] と進み……☆、」

201512261128

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [C/C++] – [Debug Information Format] 欄の▼ボタンを押すと、選べるぜ☆」

KIFUWARABE_80x100x8

「どれを選ぶといいんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「知らん☆!」

KIFUWARABE_80x100x8

「ググろうぜ☆?」


11:34

201512261135

MSDN 『方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する』

https://msdn.microsoft.com/ja-jp/library/9yb4317s.aspx

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんのこっちゃか わからんが、 /Zi にしとけば いいのかなんだぜ☆?」

KIFUWARABE_80x100x8

「とりあえず /ZI 以外のそれっぽいものを選んで 先に進んでみようぜ☆?」


11:38

201512261137

\ ガクブル ガクブル ガクブル ガクブル ガタタタタタタタタ☆ /

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「コンパイルが……………………、通った……………………☆」

KIFUWARABE_80x100x8

「でけたか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「でけたっぽいぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「このコンパイラ・オプションが通らないから C# で書き直そう、という話しだったのに☆」

KIFUWARABE_80x100x8

「ものの 2時間30分 ぐらいで コンパイルとやらが完了したみたいだが☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「じゃあ、実行ボタン押すと 動くのこれ☆?」


11:46

201512261146

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「 [Debug] – [Start Without Debugging] を押すと デバッグじゃないモードで実行できるはずだぜ☆

Visual Studio 2012 の頃は [F5]キー一発で実行でけたんだが、

Visual Studio 2015 では [F5]キー一発で実行できないのかなんだぜ☆?」


11:49

201512261148

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まじかー☆ C++が動いている画面を18年ぶりぐらいに見たぜ☆」

KIFUWARABE_80x100x8

「でけたか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「半分ぐらいはでけた☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やったぜ☆」


11:57

201512261157

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「.dll がないとか ダイアログボックスが出てたと思うんだが、動いているぜ☆

前に、どれだったか、.dllが無いと サウンドが出なくなるが 動きはする囲碁プログラムを見たことがあるぜ☆

反応がないので クリックしてたら 黒石を置いてしまって いきなりヘボ試合だぜ☆」

KIFUWARABE_80x100x8

「勝てよな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そういえば、cgfthink はランダム置きだったはずだぜ☆

まだ勝機はあるぜ☆!」


12:04

201512261203

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「白いの、全然ランダム置きじゃなくて、殺しにかかってくるんだけど☆」


12:15

201512261215

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんか お父ん、負けた気がするんだぜ☆」

KIFUWARABE_80x100x8

「おお、おとんよ、まけてしまうとは なさけない☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンパイルに通って 囲碁に負けるとは このことかだぜ☆」


12:18

KIFUWARABE_80x100x8

「これで、何ができるようになったんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++がコンパイルできるようになったといっても、

C++でプログラムが組めるかというと また別なんだぜ☆

C#で囲碁プログラムを書いて、

C#の囲碁プログラムを読める CgfGoBan をC++で書く、

ぐらいのことができればいいかな、と思うんだぜ☆」

KIFUWARABE_80x100x8

「でけそうか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ さっぱり……☆ 次の課題だな☆ 今日はここまでだぜ☆」

KIFUWARABE_80x100x8

「おつだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おつ~☆」


 

C++のコンパイルが通ったぜ☆!

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進なんだぜ☆!

 

 


 

13:23

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ眠りに落ちないので cgfthink もコンパイルしようぜ☆」

KIFUWARABE_80x100x8

「おう☆」


 

13:27

201512261326

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「同じ手順で 2分とかからず コンパイル完了した感じ☆」

KIFUWARABE_80x100x8

「cgfthinkの中身はどうなっているんだぜ☆?」


 

13:35

201512261333

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「恐らく、cgfthink.c という C言語のファイルが1個だけ入っていて……☆」

 

201512261337

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgfthink.c の中の cgfgui_thinking(~) という関数が、CgfGoBan から呼び出されるんだと思うんだぜ☆

cgfgui_thinking( ) 関数がやるべき仕事は、石を置く位置 z (交点を数字1個で表す)を返すか、

パスを意味する 0 を返すか、どちらかをやることなんだぜ☆」

KIFUWARABE_80x100x8

「C#で cgfgui_thinking(~) を作ることはできないのかなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++側に改造が要ると思うんだぜ☆

C++は、C#で作った .dll を読むことはできなくて、 com だか何だかなら読めるとか

読んだ気がするんだぜ☆

さて、GnuGoのように作るか、CgfThinkのように作るか、

どっちが簡単なものかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「今日はここらへんで終わりだぜ☆」

KIFUWARABE_80x100x8

「おやすだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おやす~☆」

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(21) C++を調べようぜ☆(^▽^)www
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【将棋】いけいけ☆!第26回世界コンピュータ将棋選手権(3) ちょっと動かしてみるかだぜ☆?(^~^)

2015-12-21 17:28

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やらなければならないことの数が マウンテン で

どうにもこうにも ブルドッグ だぜ☆」

KIFUWARABE_80x100x8

「ブルドッグとは どういう状態なんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Microsoft Visual Stdio 2015 は無料だぞ、

という話しを聞いたので、インストールに挑戦してみるぜ☆

C#の仕事を抱えていない今ならできるぜ☆」

KIFUWARABE_80x100x8

「わたしと何の関係があるんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「開発環境の更新だぜ☆」

KIFUWARABE_80x100x8

「ふむ☆ なんだかわからないが、やってくれだぜ☆」


17:36

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ちなみに わたしが今まで使っていた環境は

Microsoft Visual Studio Express 2012 for Windows Desktop

だぜ☆」

201512211736

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ひとまず、Cドライブの容量を空けるかだぜ☆」


18:00

201512211800

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「16ギガバイトほど、Cドライブの容量を空けたぜ☆

このページからダウンロードできるのかだぜ☆?」


18:04

201512211803

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「3つも選択肢があるなんて、ひどいぜ☆!

どれを選んだらいいか、分かるわけないぜ☆

右上の緑色のボタンを押してみるかなんだぜ☆」


18:06

201512211806

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「分け分からんので Community にしておいたぜ☆」


18:09

201512211809KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「この 5ギガバイト のプログラム言語を 1つ入れるだけで

容量は せいいっぱいだぜ☆」


18:15

201512211815

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なぜ C++ を入れているのか 分からないが、

黙って見ておくんだぜ☆

いろんな言語を入れる気かなんだぜ☆?」


18:48

201512211848

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これでいいのだろうかなんだぜ☆?」


18:52

201512211851

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「どれが Visual Studio 2015 のエントリー・ポイントなのか

分からないぜ☆

Blend for とか、Python とか、わたしを惑わすのはやめてほしいぜ☆」


18:54

201512211854

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんだぜ~☆?

まっ黒で怖いぜ☆

こんなので ほんとうに きふわらべ を開けるのかなんだぜ☆?」

KIFUWARABE_80x100x8

「がんばれだぜ、お父ん☆!」


18:59

201512211859

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さて……、このファイルを開けられるのかどうかなんだぜ☆?」


19:01

201512211901

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんだぜ☆? この かっこいい 画面は☆?

きふわらべは ここに いるのかなんだぜ☆?」

KIFUWARABE_80x100x8

「ここだぜ~~☆!

お父ん、探してくれ~~☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ スタートアップ・プロジェクトを設定して、 ビルドから 実行するという

流れで いけるかどうか☆」


19:04

201512211904

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ いたぜ☆! きふわらべ☆」

KIFUWARABE_80x100x8

「ヘヘッ☆!(^▽^)」


19:06

201512211906

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「きふわらべの好きな NDFから学習した 後手四間飛車だぜ☆

よーし、2015の環境に移れそうだぜ☆」

KIFUWARABE_80x100x8

「やったな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ひとまず ここで休憩だぜ☆ 晩飯買ってこようぜ☆」

KIFUWARABE_80x100x8

「98円のカレーを20個ぐらい 買っておこうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ 78円のときを狙いたいぜ☆」


 

Microsoft Visual Studio 2015 への環境移行が 進んだぜ☆!

第26回世界コンピュータ将棋選手権に向けて、微速微進、遅々前進だぜ☆


22:12

201512212211

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Blend for を適当にダブルクリックしていると、

Blend for じゃない別のエディターが開いて GUIを編集できるようになったぜ☆?」


22:41

201512212241

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「初期局面を好きにならないような工夫を

なんとか入れるんだぜ☆ww(^q^)」


23:07

201512212307

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここからビジュアル・エディターに移動できるのかだぜ☆

覚えておかなくちゃななんだぜ☆」


00:28

201512220028

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これで 13手目~30手目 だけを うそがくしゅう することにより、

序盤の ぎっこんがっこん を改善することを期待だぜ☆」

KIFUWARABE_80x100x8

「よし、やってみるぜ☆!(^▽^)」


01:09

201512220109

KIFUWARABE_80x100x8_02_Hidosu

「どうへほ☆! おっおっおっ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「駒の利きが分かればいいんだが、まあ がんばったんじゃないかだぜ☆

どんまいだぜ☆(^▽^)」


 

 

はてなブックマーク - 【将棋】いけいけ☆!第26回世界コンピュータ将棋選手権(3) ちょっと動かしてみるかだぜ☆?(^~^)
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(20) CgfGoBanを調べようぜ☆<その3>(^▽^)www

2015-12-15 12:34

\ ケロッ☆ /

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やらなければならないことの数が マウンテン なんだが、

囲碁ブログを最初に開いてしまったぜ☆」

KIFUWARABE_80x100x8

「囲碁プログラムが先か、在宅バイトが先か、

手順前後で 同じ局面に合流すればいいだろうなんだぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「CgfGoBan に、囲碁エンジンを 接続するには、どうすればいいんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「とりあえず、CgfGoBanに付いている cgfthink.dll のソースを読もうぜ☆

わたしが読めるのは C# なので、

C++を C#に翻訳する必要があるけど☆」


12:44

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C#から、C++のdllを使うことはできるのかだぜ☆

その逆はどうだぜ☆?」

 

Qiita 『C#からC++のDLLを使う』

http://qiita.com/ask/items/ee2ff5b8706effc0c3d8

 


12:46

 

#define NO_MONEY 0 『C++から利用可能なC#によるクラスライブラリの作成』

http://d.hatena.ne.jp/kayn_koen/20091103/1257205235

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっぱり暗号な世界だが、ちょっと読んでみるぜ☆」


12:50

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++側に改造を加えないと、C#のdllを読み込めないみたいだぜ☆

C++を ノー・改造で C#のdllを読む方法はないのかだぜ☆?」


12:52

 

森下功啓製作所ホームページ 『Visual C++でC#やVBで作ったDLLファイルを利用する方法』

http://morimori2008.web.fc2.com/contents/PCprograming/Cplusplus/HowToImportCSLib.html

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンパイル☆? 実行☆? ノー・コンパイルでやってほしいんだぜ☆」


12:54

 

端くれプログラマの備忘録 『[C#] C++からC#のDLLを呼ぶ方法』

http://www.84kure.com/blog/2014/07/17/c-c%E3%81%8B%E3%82%89c%E3%81%AEdll%E3%82%92%E5%91%BC%E3%81%B6%E6%96%B9%E6%B3%95/

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++から C#のdll を読み込むことは不可能で、

C++からできることは C#で作ったcomライブラリ を読み込むことらしいんだぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「CgfGoBanは、comライブラリを読み込んでくれるのかなんだぜ☆?ww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CgfGoBanのソースコードも読んでみるかだぜ☆」


13:01

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーん☆ CgfGoBan を、C# に改造しようかだぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

「それより 碁エンジンを 早く作ろうぜ☆wwww!」


13:04

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「winsock.h って何やってるんだぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

「windows の socket 通信だろ☆ww

接続して、送信、受信☆!」

 

全ては時の中に… 『【C++】ソケット通信』

http://blog.livedoor.jp/akf0/archives/51585502.html

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「通信制御じゃなくて、囲碁エンジン書きたいんだが☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「C++をコンパイルしろ☆!ww 10分だろ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C++は分からないので……☆」


13:28

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgf_win.cpp の中に書いてある PRT 関数が なにやら万能な働きをしているんだぜ☆」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「ログを取ったり、スクロールしたり、何やってるんだろうななんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GUIにテキスト描画でもしているのかだぜ☆?」


13:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「INVALID_SOCKET 定数って何だぜ☆?」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「おかしなソケットなのかだぜ☆? ヌル・オブジェクトっぽい見た目をしているが、

わからないぜ☆」


13:47

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgf_win.cpp の WndProc でかー☆」


13:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「WM_USER_ASYNC_SELECT というウィンドウ・メッセージが飛んできたときに、

nngs用の非同期の応答を行うような感じだぜ☆」


14:02

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「OnNngsSelect関数が、NNGSからの非同期受信のハンドラーだぜ☆

かんたんに言うと、スタート地点だな☆」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「そいつが 囲碁サービスを受けているクライアントかだぜ☆?」


14:08

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「OnNngsSelect を、 OnReceivedNngs にリネームするぜ☆」


14:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「nngsAnalysis が、いろんな返却値を返して 処理を分岐させているぜ☆

プログレス・バーか何かみたいなことをやりたいんだろうかなんだぜ☆

とりあえず 後回しだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ログインぐらいにしか使ってない気もするな☆」


14:15

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「はあ☆! コールバック関数がケッコウ重要だぜ☆ 接続に使っているぜ☆」


14:17

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「はあ☆

ダイアログボックスが いろいろやっているのかだぜ☆

C++のWindowsフォームは そういう作りなのかだぜ☆

よく調べないといけないな☆

これってあれだろ、対局開始の開始ボタンを押すところのフォームか何かじゃないか☆?」


14:28

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「勝手に enum 化だぜ☆ これは Result だな☆」

namespace CgfthinkCs.P400____Nngs.L400_Analysis
{
    /// <summary>
    /// 旧、定数。
    /// NNGS_LOGIN_TOTYU
    /// NNGS_LOGIN_END
    /// NNGS_GAME_END
    /// NNGS_UNKNOWN
    /// </summary>
    public enum NngsConnection
    {
        /// <summary>
        /// login処理の途中
        /// </summary>
        LOGIN_TOTYU = -3,

        /// <summary>
        /// login処理が終了した
        /// </summary>
        LOGIN_END   = -2,

        /// <summary>
        /// 対局終了
        /// </summary>
        GAME_END    = -1,

        /// <summary>
        /// 無意味なデータ。無視する。
        /// </summary>
        UNKNOWN     = -4
    }
}

14:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「StartProc というイベントハンドラもあるのか☆

こっちが ダイアログボックスの表示だったのかだぜ☆」


14:45

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「SendQuery もいろいろやってそうだぜ☆

石の色を聞いたり☆」


14:49

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「cgf_term.cpp には、何かいろいろ入っているぜ☆

NNGS の通信規約に合わせた実装は ここにまとめてあるのかだぜ☆?」


15:04

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は、

(1)通信インフラ、

(2)通信プロトコル、

(3)その他

の3階層に分けたいぜ☆ まず、(1)を作ろうぜ☆」

KIFUWARABE_80x100x8

「おう、やってくれ☆」


15:09

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「一番底に、GlobalTusin というダサい名前の静的クラスを作るかだぜ☆

ここに通信用のグローバル変数を詰め込むぜ☆」


15:22

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「PF_INET とか、SOCK_STREAM とか、謎の定数が つらい☆」


15:24

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「WSAStartupも謎☆」


15:33

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「LPARAMって、何だぜ☆?」

 

通信用語の基礎知識 『LPARAM』

http://www.wdic.org/w/TECH/LPARAM

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「64bit機のC#なら、Int64 でいいかだぜ☆?」


16:01

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まず、通信インフラ部分は こんな感じだぜ☆」

using System;

namespace CgfthinkCs.P100____TusinInfra
{
    /// <summary>
    /// 旧名:
    /// FD_CONNECT
    /// FD_CLOSE
    /// FD_WRITE
    /// FD_READ
    /// </summary>
    public enum SelectEventFD
    {
        /// <summary>
        /// FIXME: うそ値。
        /// </summary>
        USO,

        /// <summary>
        /// 接続に成功
        /// </summary>
        CONNECT,

        /// <summary>
        /// 接続を切られた
        /// </summary>
        CLOSE,

        /// <summary>
        /// 送信バッファに空きができた
        /// </summary>
        WRITE,

        /// <summary>
        /// データを受信する
        /// </summary>
        READ,
    }

    public abstract class GlobalTusin
    {
        /// <summary>
        /// 旧名:SOCKET_ERROR
        /// </summary>
        public static int SO_CKET_ERROR = -1;//FIXME:数字はうそ。

        /// <summary>
        /// 旧名:WSAEWOULDBLOCK
        /// </summary>
        public static int EWOULDBLOCK = -2;//FIXME:数字はうそ。

        /// <summary>
        /// 
        /// </summary>
        public static int INADDR_NONE = -3;//FIXME:数字はうそ。

        /// <summary>
        /// 旧名 Sock
        /// </summary>
        public static So_cket2 So_ck { get; set; }

        static GlobalTusin()
        {
            GlobalTusin.So_ck = So_cket2Impl.InvalidSo_cket;
        }

        /// <summary>
        /// 旧名:WSAStartup
        /// </summary>
        public static int Startup()
        {
            //WSADATA WsaData;

            return 0;// WSAStartup(0x0101, &WsaData);
        }

        /// <summary>
        /// 旧名:socket
        /// </summary>
        public static So_cket2 CreateSo_cket()
        {
            // socket( PF_INET, SOCK_STREAM, 0 ) で、
            // ソケットを作れるらしい。
            return new So_cket2Impl();
        }

        /// <summary>
        /// 旧名:WSAGetLastError
        /// </summary>
        /// <returns></returns>
        public static int GetLastError()
        {
            return 0;
        }

        /// <summary>
        /// 旧名:WSAAsyncSelect
        /// </summary>
        /// <returns></returns>
        public static int AsyncSelect()
        {
            return 0;
                //WSAAsyncSelect(
                //         GlobalTusin.So_ck,
                //         ghWindow,
                //         WM_USER_ASYNC_SELECT,
            //             SelectEventFD.CONNECT | SelectEventFD.WRITE | SelectEventFD.READ | SelectEventFD.CLOSE
                //     );
        }

        /// <summary>
        /// 旧名:WSACleanup
        /// </summary>
        public static void Cleanup()
        {
        }

        /// <summary>
        /// 旧名:WSAGETASYNCERROR
        /// </summary>
        public static int GetAsyncError(Int64 lParam)
        {
            return 0;//FIXME:うそ値。
        }

        /// <summary>
        /// 旧名:WSAGETSELECTERROR
        /// </summary>
        public static int GetSelectError(Int64 lParam)
        {
            return 0;//FIXME:うそ値。
        }

        /// <summary>
        /// 旧名:WSAGETSELECTEVENT
        /// </summary>
        /// <returns></returns>
        public static SelectEventFD GetSelectEvent(Int64 lParam)
        {
            return SelectEventFD.USO;//FIXME:うそ値。
        }

        /// <summary>
        /// 旧名:inet_addr
        /// IPアドレスを数値に変換。
        /// </summary>
        /// <returns></returns>
        public static long inet_addr(string ipAddress_str)
        {
            return 0;//FIXME:うそ値。
        }

        /// <summary>
        /// 旧名:gethostbyname
        /// </summary>
        /// <returns></returns>
        public static string GetHostByName(string ipAddress_str)
        {
            return "";//FIXME:うそ値。
        }


        /// <summary>
        /// 旧名:send( GlobalTusin.So_ck, message, message.Length, 0)
        /// </summary>
        /// <param name="so_ck"></param>
        /// <param name="message"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int Send( So_cket2 so_ck, string message)
        {
            int num = 0;

            return 0;//FIXME:うそ値。nByteSend
        }
    }
}

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「通信ソケットはこんな感じだぜ☆」

namespace CgfthinkCs.P100____TusinInfra
{
    public interface So_cket2
    {
        void CloseSo_cket();


        /// <summary>
        /// 旧名:connect
        /// </summary>
        void ConnectSo_ck();
    }
}

 

namespace CgfthinkCs.P100____TusinInfra
{
    public class So_cket2Impl : So_cket2
    {
        
        /// <summary>
        /// 旧名:INVALID_SOCKET
        /// </summary>
        public static So_cket2Impl InvalidSo_cket { get; set; }

        static So_cket2Impl()
        {
            So_cket2Impl.InvalidSo_cket = new So_cket2Impl();
        }

        public void CloseSo_cket()
        {
            // TODO: ソケットを閉じて下さい。
        }

        /// <summary>
        /// 旧名:connect
        /// </summary>
        public void ConnectSo_ck()
        {
        }

    }
}

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これを、C#のソケット通信に書き換えられるかだぜ☆?」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「自分同士でソケット通信するプログラムを C#で書いてみたらどうだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やってみるかだぜ☆」


16:09

 

MSDN 『非同期なサーバーのソケットの例』

https://msdn.microsoft.com/ja-jp/library/fx6588te(v=vs.110).aspx

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これは 碁サーバー の方のソケット通信部だろう☆

碁クライアント の方のソケット通信部の例はあるのかだぜ☆?」


16:10

 

MSDN 『非同期なクライアントのソケットの例』

https://msdn.microsoft.com/ja-jp/library/bew39x2a(v=vs.110).aspx

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これか☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「サーバーとクライアント、両方立てないと テストができないな☆!ww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ふーむ☆ やってみようぜ☆」


16:33

201512151632

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ソケット通信、うまくいかないな☆

今日の囲碁プログラムは ここまでだぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「囲碁のプログラムまで まだ行ってないぜ☆www」

KIFUWARABE_80x100x8

「次回はソケット通信だな☆」


 

ソケット通信の ベンキョーに 着手 だぜ☆!

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進なんだぜ☆!



 

16:38

UEUESHIMA_Komado_80x80x8_03_jitoo

「ところで なんで NNGS との通信部分を書いているんだぜ☆?

CgfGoBan に接続する方法を調べないのかだぜ☆?

グニューゴ3.6 みたいに☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆ GTP(Go Text Protocol) か☆

それも調べておく必要があるななんだぜ☆」


 

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(20) CgfGoBanを調べようぜ☆<その3>(^▽^)www
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(19) CgfGoBanを調べようぜ☆<その2>(^▽^)www

2015-12-14 21:37

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「やべー、この1週間、全然囲碁プログラムやってねー☆!」

KIFUWARABE_80x100x8

「お父んの顔からは 緊張感が見えないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CgfGoBan のダウンロード・ボタンを押そうぜ☆!」

 

Hiroshi’s Computer Shogi and Go 『CgfGoBan』

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

 


21:44

201512142143

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ほう☆」

KIFUWARABE_80x100x8

「まずは ドキュメントを読もうぜ、お父ん☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「えっ☆? 左上から順番に 全てのボタンを押していけば

いいんじゃないのかだぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

「残機99から始める置いてある地雷は全て踏んでいくメソッドは、

ここぞ、と範囲が限定されたときに使うんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「教科書の55ページから 57ページが中間テストに出るぞ☆!

覚えておけよ~☆!」

KIFUWARABE_80x100x8

「そうだぜ、学校のセンセーとおんなじ働きをするのが

ドキュメントだぜ☆ ドキュメント読もうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」

UEUESHIMA_Komado_80x80x8_03_jitoo

「人の話を聴かないのは3流、人の話を聞くのは2流、

人の話を聞いて工夫を加えるのが1流だって 将棋の偉い人が

言ってたって 又聞きのツイートで読んだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「……………………☆」

KIFUWARABE_80x100x8

「ナットクしていない顔だぜ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「しかたない……、そんなに読んでほしいのなら

ドキュメントを読むぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「よーし、ドキュメントの目次を左上から順に読んでいこうぜ☆!」


 

CGF碁盤の解説

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

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「執筆日は 2006年の1月じゃないか……☆

この4ヵ月後に ボナンザが出てきて 山下さんは目を丸くするのかだぜ☆?」

UEUESHIMA_Komado_80x80x8_03_jitoo

「話を膨らませずに、本文を読もうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「将棋所と似たようなもんだな☆

囲碁エンジンの名前は cgfthink.dll にして置き換えるといいらしいぜ☆」

201512142202

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こいつか☆!

でも、囲碁エンジンの2プレイヤーはどうするんだぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

「続きを読もうぜ☆www」


22:09

201512142209

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CgfGoBan が 2015/03/16 にバージョンアップをした16日前、

PageONではサービスが終了していた……☆!」

UEUESHIMA_Komado_80x80x8_02_nitaari

「あれっ☆? 今年じゃないか☆www」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「CgfGoBanの著作権表記を見ると 2005-2015 と書いてあることから、

リンクを貼りなおすのが めんどくさかったとするなら

PageON は 2005 年頃から 10年ぐらいサービスを提供していたのかもしれないぜ☆!」

KIFUWARABE_80x100x8

「ググろうぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Page ON で15年サイトを運営していた人が サイトを引越しする質問を

投げかけているページがあったぜ☆

それだけの長寿サイトが 顧客を手放したのはなぜなのかだぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

「それより 碁☆! 碁~~~~☆!www」


cgfthink.dll の解説

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

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なるほど……、ドキュメントとは 上から順番に読んでいくものなのか……☆

話しが続き物になっているぜ☆」

KIFUWARABE_80x100x8

「勉強したな☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ほーう☆! なるほど、人間にも読みやすい桁揃えの符号に腐心しているんだぜ、

16進数だけど☆!」

KIFUWARABE_80x100x8

「残念だったな☆ 囲碁は 19路盤じゅーきゅーろばん だぜ☆

16進では 3つ 足りないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そこで、16進2桁にしたみたいだな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「初期局面 + 棋譜 というセットになっているみたいだな☆

これは 将棋所のUSIプロトコル通信も同じだぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「将棋所が、CgfGoBanと同じ、という可能性はないのかだぜ☆wwww

どっちの歴史が古いんだぜ☆?wwww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「将棋所を起動して [ヘルプ] を押せばでてくるだろうかなんだぜ☆?

歴史の古さ 対決だぜ☆!」


22:32

201512142232

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「……………………☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「……………………☆」

KIFUWARABE_80x100x8_02_Hidosu

「……………………☆」


22:36

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「てっきり、USIプロトコル通信みたいに

CgfGoBan に 標準入出力からテキスト読み書きすれば

コンピューター囲碁ができるのかと思ったんだが、

説明を読んでみると、.dll を作って 指定の名前でメソッドを公開しろって

ことなのかだぜ☆?」

UEUESHIMA_Komado_80x80x8_01_futu

「最後まで説明を読もうぜ☆?」


Borland C++ 5.5でのコンパイルの仕方

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

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ここから先は わたしには関係ないと思うぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「目だけ通しておこうぜ、すらーっと☆ すらーっと☆」


22:42

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」

 

    C MAGAZINEのホームページ

 

http://www.cmagazine.jp/setbcc.html (※リンク先は書籍のC MAGAZINEとは別っぽい☆)

 

UEUESHIMA_Komado_80x80x8_02_nitaari

「2011年9月から 別の人がドメインを取得したんじゃないか☆www」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「C MAGAZINEって、2006年に廃刊になっていたのか……、これも 2006年☆?

最近復刻とか書いてるけどホントかなんだぜ☆?」

KIFUWARABE_80x100x8

「C MAGAZINEを 画像検索でググったら グラマラスなモデルがずらーっと並んでいるぜ☆?」

UEUESHIMA_Komado_80x80x8_02_nitaari

シーより ☆! 碁~~~~☆!wwww」


Gnu Go(グニューゴ)で遊んでみたい方へ

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

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ cgfthink も動かしてないんだが、Gnu Go の遊び方ドキュメントも

読んでおくかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Gnu Go のバイナリー、636KB なのに やけにダウンロードに時間がかかっているんだぜ☆

山奥のスキー場の山頂の小屋にでも ADSL回線で サーバーが置いてあるんじゃないかなんだぜ☆?

リモートログインしたら Windows XP だよな☆」

KIFUWARABE_80x100x8

「顧客の中に そういうのが1つでも含まれていると 旧バージョンの仕様は なかなか切れないよな☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「そうと決まったわけじゃないだろ☆wwww」


22:59

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よーし、ドキュメントは読んだぜ☆ 対局しよーぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「まずは cgfthink.dll と対局しよーぜ☆!

9路盤きゅーろばん はないのかだぜ☆?」

201512142301

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あるぜ☆!

なんか、初めて触った気のしない インターフェースなんだぜ☆

気のせいなのかだぜ☆?」


23:05

201512142304

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そういえば、ドキュメントを読んだところ、

cgpthink.dll は ランダムで指してくるって 書いてあったな……☆?」

KIFUWARABE_80x100x8

「ランダムな指し手はオススメだぜ☆!」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「お父ん、シチョウで決めてくれなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんな局面で シチョウ ができるのだろうかなんだぜ……☆?」


23:17

201512142316

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「駒を生き延びさせようとしない相手に、シチョウは決まらないぜ☆!」

UEUESHIMA_Komado_80x80x8_02_nitaari

「おおっ☆! お父んが 囲碁の遊び方を覚えている☆!?」

KIFUWARABE_80x100x8

「パーフェクトできるのかだぜ☆?」


23:20

201512142320

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆ コンピューターが パスをしてきたぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「1個も取らせずに、うまいこと 追い詰めていったな☆!」

KIFUWARABE_80x100x8

「お父んは ランダムよりは かしこい ということか……☆!」


23:25

201512142324

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「勝ったと思うんだが……☆

囲碁って 勝ってるのか 負けてるのか よく分からんよな☆」

UEUESHIMA_Komado_80x80x8_03_jitoo

「全部黒だし、勝ったんだろ☆?」

KIFUWARABE_80x100x8

「HAMA が 47 というのが、すごいところなんじゃないか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「この盤面をみて、 47 という数字はどこから出てきたんだぜ☆?」

UEUESHIMA_Komado_80x80x8_03_jitoo

「取った石の数の2倍と、自分の石で囲んだ 空き地の数じゃないのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そうなのかだぜ☆?

設定画面で見た 6.5コミ というのも怪しいぜ☆

みたところ 0.5 という端数はどこにもないようだぜ☆?」

KIFUWARABE_80x100x8

「謎だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なにかもっとこう、盤面を見て、

誰がどうみても どっちが勝った、みたいな何かがほしいよな☆」

UEUESHIMA_Komado_80x80x8_03_jitoo

「整地するとか……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「整地をしてくれる囲碁プログラムを まだ見たことないぜ☆」

KIFUWARABE_80x100x8

「盤を横に振ったり、縦に振れば 整地できないのか☆?」

UEUESHIMA_Komado_80x80x8_03_jitoo

「陣地の囲いが崩れるので……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「勝っているところで さっさとパスしないと、

石を置きすぎて 自分の陣地を 1マスずつ損していくこともあるゲームだったような

記事を読んだ気もするぜ☆

むむむ☆

ちゃちゃっと作りたいのに、勝利条件が分かりにくいゲームって、先が思いやられるぜ☆」


23:35

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は GnuGo3.6 との対局にも挑戦したいぜ☆」

KIFUWARABE_80x100x8

「よっしゃ☆」


23:50

201512142350

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「この ドロップダウン・リストボックス みたいな ユーザー・コントロールには

テキストを コピー&ペースト することもできるのかなんだぜ☆」


23:54

201512142354

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ こんなのでいいのかどうか……☆?」


23:58

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆ 始まったぜ☆」

 

\ ぽちっ ぽちっ /

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」

201512142358

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆? なんでコンピューターは もうパスをしてくるんだぜ☆?」

KIFUWARABE_80x100x8

「相手は グニューゴ3.6 だぜ☆

ランダム指しの cgfthink.dll とは強さが違うぜ☆

早く続きを指すんだぜ☆!」

UEUESHIMA_Komado_80x80x8_03_jitoo

「まさかお父ん、もう勝っているのでは……☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「だから、囲碁って

自分が 勝ってるのか 負けてるのか、さっぱりわからないんだぜ☆

KIFUWARABE_80x100x8

「もう1回パスしてみれば 分かるんじゃないか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「負けるの嫌だし☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「そういえば、グニューゴ3.6 は、自分の判断で勝手に投了してくるようになったって

ドキュメントに書いてあったんだぜ☆www

オプション設定で –never-resign を付けて勝手に投了しないようにしたはずなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「これは投了じゃなくて、パスだし……☆」

KIFUWARABE_80x100x8

「今回はノーゲームだと思って パスして 動作確認しようぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「……………………☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「ナットクしていない顔なんだぜ☆wwwwww」

KIFUWARABE_80x100x8

「コンピューターは 自分が勝ったと思ったから パス してきたのかもしれないな☆

もうお父んの負けじゃないか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「……………………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よし、パスして はっきりさせてやるぜ☆!」

UEUESHIMA_Komado_80x80x8_02_nitaari

「wwwwwwwwwww☆」


2015-12-15 00:08

201512150008

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「何も起こらないぜ☆?」

KIFUWARABE_80x100x8

「今度は どっちも HAMA が 0 だぜ☆!」

UEUESHIMA_Komado_80x80x8_02_nitaari

「引き分けじゃないのか☆wwwwwwwwwwwwww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まだ いっぱい 置くところがあるのに……☆

囲碁って、やっぱり 結果画面が わからないぜ☆」


 

00:10

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「とりあえず、CgfGoBan は動かせたというところで 今日はおわりだぜ☆

結局、CgfGoBanとの通信方法は よくわからないが……☆」

KIFUWARABE_80x100x8

「次から いよいよ CgfGoBanとの通信の調べ物だな☆!」

UEUESHIMA_Komado_80x80x8_02_nitaari

「ちゃちゃーっと作ろうぜ☆wwww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「んー、まあ、なんとかしたいところだぜ☆」


 

CgfGoBan の動作確認を した ぜ☆!

第9回UEC杯コンピュータ囲碁大会に向けて、微速微進、遅々前進なんだぜ☆!

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(19) CgfGoBanを調べようぜ☆<その2>(^▽^)www
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(18) CgfGoBanを調べようぜ☆wwww

2015-12-08 19:41

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「バイトが終わらねー☆ 1日で終わるかと思った軽い仕事が

何日目かだぜ☆?」

KIFUWARABE_80x100x8

「ちょうど12月1日スタートだから、8日目が経過しようとしているぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「…………☆! 予定の8倍☆!」

KIFUWARABE_80x100x8

「まだ伸びるぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_04_Aozame

「…………☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「終わらないものは仕方ないし、囲碁プログラムやろーぜ☆」

KIFUWARABE_80x100x8

「おう☆!」

UEUESHIMA_Komado_80x80x8_03_jitoo

「お父んが バイトからいなくなったと思ったら 囲碁ブログの方に来てたのか☆」


19:45

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「11月24日ごろぐらいから始めた囲碁プログラム、

まだ ほとんど 未着手だぜ☆

他人のソースコードを開けて 動かないように

ぐちゃぐちゃに壊した程度だぜ☆」

KIFUWARABE_80x100x8

「ぐちゃぐちゃなものを 納品するのは 得意技だろ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コメント欄で CgfGoBan というのを読むといいというのを、

nonameさんが教えてくれたんだぜ☆

知ってるぜ、noname というのは 碁サーバー の名前だぜ☆」

KIFUWARABE_80x100x8

「名無しさんじゃないのか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「むむ……☆」


 

19:53

 

CgfGoBan

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

 

KIFUWARABE_80x100x8

「なぜお父んは これを見つけられないのか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「深さ優先探索なので……☆」

KIFUWARABE_80x100x8

「目次の一番上にあるのに……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Cgf、何それ、みたいな……☆」

KIFUWARABE_80x100x8

「NTT東日本。フレッツ光マンションタイプ」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「あっ☆ はいっ☆ 代理店の勧誘ですね☆! 転用番号を教えます☆!」

KIFUWARABE_80x100x8

「Cgf。碁盤」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「誰だぜ Cgf って☆ 知らないぜ☆ (ガチャン)」

KIFUWARABE_80x100x8

「……………………☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「ピカチュウの碁盤にしようぜ☆wwwwww

目次に並んでたら ぜったい最初に開けるだろ☆wwwww」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「……………………☆」


20:13

UEUESHIMA_Komado_80x80x8_03_jitoo

「あっ、バイトの方のプログラム また 動いてないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_03_Ahee

「またダメだったかだぜ☆! 見にいくぜ☆!」


 

 

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(18) CgfGoBanを調べようぜ☆wwww
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(17) Go Text Protocol(GTP)、何これなんだぜ~☆!www(^▽^)

2015-12-08 09:38

\ えー☆! /

KITASHIRAKAWA_Chiyuri_80x100x8_02_Hidosu

「えー☆!」


 

09:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「とりあえず GTPの実装の一例は、

GNUGO3.8 interface フォルダーに入っている、

gtp.h

gtp.c

play_gtp.c

に入っているぜ☆

そのうち、次の4つのコマンドは まだ使ってるのかどうか ぼんやりしている☆

gtp_fixed_handicap

gtp_list_commands

gtp_estimate_score

gtp_query_orientation」

KIFUWARABE_80x100x8

「コマンドって何だぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「例えば、誰かが、

囲碁GUI と 囲碁サーバー を作っておけば、

囲碁エンジンを作るプログラマーは助かるだろ、と思って

囲碁GUI と 囲碁サーバー を作るだろ☆

でも、わたしは C# しか分からないんだぜ☆

そこで、 C++ で書かれている

囲碁GUI と 囲碁サーバーを C# で作り直すところから始めるわけだが、

そんなときに目にするのが コマンド だぜ☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「なぜ 囲碁エンジンだけにしとこう、としないんだぜ☆www」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンピューター将棋では、

フラッドゲート というサーバー、

将棋所 というGUI

が鉄板で 将棋所は フラッドゲートにつながるんだが、

これが コンピューター囲碁になると

No Name Go Server(NNGS) というサーバー、

GoGui というGUI

になるらしいんだぜ☆

そして GoGui と NNGS サーバーは通信しない☆ はず☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GoGui は Go Text Protocol(GTP)、

NNGS は Go Modem Protocol(GMP)☆

そして GTP を GMP に変換するツールがあるらしいんだぜ☆

その名も GTP2NNGS ☆ こいつは .rb (Ruby言語か) で書かれていて

C#マンのわたしには 使えないぜ☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Go Modem Protocol は、電線を通ってそうなプロトコルだぜ☆

1111 1111 1111 1111

とか書いて通信するんだぜ☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「Go Text Protocol は、コマンドが ざっと見 136 個ほどあるぜ☆」

UEUESHIMA_Komado_80x80x8_07_piririUmauma

「囲碁をするのに、コマンドが 136 個☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「見えているところを指で数えて 136個 だぜ☆ まだ出てくるかもしれないぜ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「このイゴ・マウンテンを登頂する道のりは、…………、

ちなみに コンピューター将棋では どうだったかを 復習しておくぜ☆!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンピューター将棋では、USI プロトコルを書けば

将棋所に 将棋エンジンを登録できる☆ あとは全部 将棋所 がやってくれるぜ☆」

UEUESHIMA_Komado_80x80x8_02_nitaari

「USIプロトコルって どんなんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ざっくり言えば、

駒の配置図が飛んでくるので、 指し手 を投げ返す、

そんなキャッチボールをする通信だぜ☆」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「コンピューター囲碁の GTPプロトコル ってどんなだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「謎☆! これから読む☆!

すくなくとも ドラゴン とか フクロウ が飛び交っていることは確実だぜ☆!」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「…………☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そして UEC の大会では、

NNGS を使います、使っていいコマンドは 5つの種類だけです、

とあるんだぜ☆

NNGS の 5種類のコマンドが、 GTP では どのコマンドか 謎☆!」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「…………☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「うーむ☆ どうしたものかだぜ☆」

KIFUWARABE_80x100x8

「イゴ・マウンテンの入り口はどこだぜ☆? バスは出ていないのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まず、GoGui に登録できて、動く、 囲碁エンジン を目指そうぜ☆

そして これは、UECの大会に出すには 関係ない作りだぜ☆

それができたら、Ruby を勉強しようぜ☆

GTP2NNGS が使えるようになれば、オッケーだろ☆

12月中に、1月末までに それが完了するという目星が ついていないようだと、

よくて、間に合わせで ランダムに石を置くだけの囲碁プログラム を目指すことになるぜ☆

大会は 3月18日☆」

UEUESHIMA_Komado_80x80x8_09_Nikoniko

「むむむ…………☆」


 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(17) Go Text Protocol(GTP)、何これなんだぜ~☆!www(^▽^)
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア
email this
LINEで送る
Pocket

【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(16) GoGuiを見てみようぜ☆ww(^▽^)

2015-12-07 02:48

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「バイトの cron は1時間に1回しかテストできないし、

囲碁プログラムやろうぜ☆」

KIFUWARABE_80x100x8

「バイト主は 1時間に1回しかテストできない cron の合間に

もう片方のバイトをやっていると思っているぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「バイト主もあてが外れたようだな☆

囲碁プログラムをやるんだぜ☆」


02:49

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンピューター将棋でいうところの 将棋所 にあたるソフトが

GoGui らしいんだぜ☆

どんな感じのものか、見てみようぜ☆」

 

GoGui

http://gogui.sourceforge.net/

 

KIFUWARABE_80x100x8

「見覚えがある気がするんだが……☆」


02:53

201512070253

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「おっ☆ これは初めて見るソフトだぜ☆」

KIFUWARABE_80x100x8

「そうか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁エンジンの登録はあるのかな~、なんだぜ☆?」


02:55

201512070255

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「このメニューとかどうだぜ☆?」


02:58

201512070258

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ほう☆

懐かしいぜ☆

将棋所のときは、ボナンザや、レッサー改などを入れて遊んだぜ☆

囲碁エンジンには どんなものがあるんだぜ☆?」

KIFUWARABE_80x100x8

「ググろうぜ☆」


03:03

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「さっぱりわからんぜ☆

ここにある、役に立つ記事に目を通そうぜ☆」

 

囲碁プログラムを作る人向けのリンク集

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

 


03:23

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そういえば、ponanGO は、ponanza の弟らしいぜ☆」

KIFUWARABE_80x100x8

「ponanzaではない……☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「どっちも倒そうぜ☆」

KIFUWARABE_80x100x8

「おう☆!」


03:38

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「そういえば、コンピューター将棋のときに」

KIFUWARABE_80x100x8

「わたしのことか☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「人間にわかりやすいようにプログラムを書こう☆!

として ひどい目に遭ったんだぜ☆

データは コンピューターが 手を付けやすいように、

表示は 人間が 見やすいように、

切り分けて両立させないといけないな☆」

KIFUWARABE_80x100x8

「勉強したな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「勉強したぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「モデル・ビュー・コントローラ アーキテクチャ そのまんま の話しなんだが、

もし 人間の誰かさんの見やすさに合わせて 世界が成り立っていたら、

他人さんは 世界の中心さんの端っこに立っていて、

地面が ゆがんでいる~、とか言って 大慌てだよな☆」

KIFUWARABE_80x100x8

「人間の見やすさのことを言っている ビューは、

調整したものだということだな☆

ビューに合わせて 世界を設計しては、

レンズの端っこで身長が伸びたり縮んだりしている人がいるぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「哲学だな☆」

KIFUWARABE_80x100x8

「哲学だぜ☆」


04:27

勝也GUIの著作権は作者(池泰弘)が保有します。

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「むむ☆!(^~^) 勝也GUIの作者は 勝也さんじゃないのか……☆!

どこかで聞いた人の名前だぜ☆むむぅ~☆!(^~^)」


04:39

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「よ~し☆

勝也GUIのソースコードを読んでみようぜ☆」

KIFUWARABE_80x100x8

「バイトは……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「バイトは cron の起きる 5:00 だぜ☆」


04:48

201512070448

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「わたしには C++(シープラプラ)は読めないので、

C#に意訳していくぜ☆」

KIFUWARABE_80x100x8

「おう☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まず、C++に必要なファイルを削除します☆だぜ☆」


04:52

201512070452

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「こんなところかだぜ☆」


04:54

201512070454

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は、C言語で必要な 関数プロトタイプ宣言を

削除していこうぜ☆」

KIFUWARABE_80x100x8

「まるで魚の骨を取り除くかのようだぜ☆」


05:00

201512070500

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「次は、こういう #define の整数の定数を、

C#のenum型にしようぜ☆」

KIFUWARABE_80x100x8

「5時だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「crom から届いている エラーメール を確認するかだぜ……☆」


05:12

201512070512

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「名無し型には、てきとーに型名を与えていくぜ☆」

KIFUWARABE_80x100x8

「おう☆」


12:06

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「第9回UEC杯コンピュータ囲碁大会の通信手段って何だぜ☆?

ググるか……☆」


12:07

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「NNGS 1.1.22 かだぜ☆

調べるかだぜ☆」


 

12:11

 

<<xgospel, xigc, nngs のソースコードからのIGS (NNGS)プロトコル解析>>

http://www.geocities.co.jp/SiliconValley-Oakland/4458/nngs_protocol.txt

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「ソースコード解析じゃなくて、仕様が欲しいぜ……☆」


19:24

201512071924

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GoGui のプロトコルは、Go Text Protocol(GTP)みたいだな☆

UECの大会は No Name Go Server(NNGS)のサーバーを使うみたいなんだが、

プロトコルは何なんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「NNGSは、Standard Go Modem Protocol なのかだぜ☆?

GoGui で動かしても、大会とは関係ないのかだぜ☆?」

 

1996.01.30 須永 『これは Wilcox、Fotland氏の”Standard Go Modem Protocol Rev.1.0″の 日本語要約です。前書きやサンプルプログラムは省略しています。』

http://www.computer-go.jp/gomodemj.txt

 


19:32

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「コンピュータ囲碁フォーラム(CGF)のページを読むかだぜ☆」

http://www.computer-go.jp/indexj.html#publicdoc

 


19:39

通信対局にはNNGSを用います。ただし、使ってよい命令は下記の5種類に限らせて いただきます。

  1. ログイン・ログアウトのための通信[ユーザ名, パスワードの送信, “quit”コマンド]
  2. 対局を開始・終了するための通信[“match”コマンド、”done”コマンド]
  3. 対局のための通信[石を打つ位置の指定, “pass”]
  4. 表示を簡略化するための命令[“set client FALSE”, “set verbose FALSE”]
  5. 残り時間を問い合わせる命令[“time”]

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

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

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「なんのこっちゃだぜ☆

碁モデム・プロトコルで通信してくれるGUIは無いものかだぜ☆」


KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「使いやすいGUI は GoGui で、

大会は 碁モデム・プロトコル で、

GoGui は、碁モデム・プロトコル に対応していなくて、

ふぅむ☆ ばらばら だぜ☆」


19:57

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「囲碁フォーラムに置いてある Gtp2Nngs を使うと、

GTPプロトコル を NNGS で使えるように変換してくれるみたいなんだが、

Ruby言語で書かれているんだぜ☆

Rubyをどうやって動かすのか、謎だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「まず GTP プロトコルを使える囲碁エンジンを作って

GoGui で動かすといいのかだぜ☆?」


20:06

 

『GTP – Go Text Protocol』

http://www.lysator.liu.se/~gunnar/gtp/

 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GTPはここかだぜ☆ 通信方法は何だぜ☆?

標準入出力☆? TCP☆? UDP☆?」


20:35

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu

「GNUGO3.4以降の実装を見ろって感じかだぜ☆?

また今度だぜ☆」


 

次は GTP を調べればよさげという目安が 付いた な☆!

第9回UEC杯コンピュータ囲碁大会 に向けて、微速微進、遅々前進だぜ☆!

 

はてなブックマーク - 【囲碁】きふわらべがポナンザ(の弟)を倒す☆!目指せ第9回UEC杯コンピュータ囲碁大会(16) GoGuiを見てみようぜ☆ww(^▽^)
[`yahoo` not found]
[`yahoo_buzz` not found]
このエントリーを Google ブックマーク に追加
Digg にシェア
Facebook にシェア
reddit にシェア
LinkedIn にシェア
[`evernote` not found]
StumbleUpon にシェア
GREE にシェア