shogi-serverのソースを読んでいこうぜ(^~^)

shogi-serverのソースを読んでいこうぜ(^~^)

20210124shogi2a2b1.png
「 👇 前の記事は これな」

📖 shogi-serverのコードを読もうぜ(^~^)

kifuwarabe-futsu.png
「 localhostの中に立っているサーバーをテストする前提になっていて Dockerで使いづらいぜ。
外部にあるホストをテストしにいって欲しいぜ」

ohkina-hiyoko-futsu.png
「 テストが定期的に自動で走らないんじゃ、改造もやりにくいわよ」

bin

ramen-tabero-futsu2.png
「 将棋エンジンのブリッジかな」

usiToCsa

ramen-tabero-futsu2.png
「 シェルスクリプトだな。 usiToCsa.rb を呼び出してるんじゃないかな」

usiToCsa.rb

ramen-tabero-futsu2.png
「 Rubyスクリプトだな。USIエンジンを、CSAプロトコルに対応させるブリッジだと思うぜ」

sample

ramen-tabero-futsu2.png
「 プログラム言語のファイル生成、タイムスタンプの性能を調べてるのかな」

check_file.rb

ramen-tabero-futsu2.png
「 ファイルを作っては消し、というのを1万回やってるのかな。何だろな」

check_time.rb

ramen-tabero-futsu2.png
「 10万回、現在時刻を調べているのかな。何だろな」

check_time2.rb

ramen-tabero-futsu2.png
「 1万回、日付の 0時と、23時59分59秒0.999999 を比較してるのかな。何だろな」

start-server.sh

ramen-tabero-futsu2.png
「 ポート4000を開けてサーバーを起動してるのかな」

stop-server.sh

ramen-tabero-futsu2.png
「 単に 将棋サーバーのプロセスをキルするぜ」

test_time.rb

ramen-tabero-futsu2.png
「 日付に加法は通用するか 試してんのかな? 何だろな」

shogi_server

ramen-tabero-futsu2.png
「 サーバーのソースだぜ」

league

ramen-tabero-futsu2.png
「 フラッドゲートに総当たりモードとかあるんだろうか?」

floodgate_thread.rb

ramen-tabero-futsu2.png
「 マッチングのスレッドだろうか?」

floodgate.rb

ramen-tabero-futsu2.png
「 対局付けてんだろうか?」

persistent.rb

ramen-tabero-futsu2.png
「 プレイヤーの成績を YAMLファイルに保存するから パーシステントだ、ということだろうか?
📂league はこれでおしまい」

board.rb

P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI *  *  *  *  * -KA * 
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 *  *  *  *  *  *  *  *  * 
P5 *  *  *  *  *  *  *  *  * 
P6 *  *  *  *  *  *  *  *  * 
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA *  *  *  *  * +HI * 
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
+

ramen-tabero-futsu2.png
「 👆 こういうやつ作ってるぜ」

buoy.rb

ramen-tabero-futsu2.png
「 buoy は海に浮いてるブイだが、指定局面のことらしいぜ。
buoy をデータベースに出し入れしてるのかな。何だろな」

command.rb

ramen-tabero-futsu2.png
「 コマンドをパースして、オブジェクトにして返してるんじゃないかな」

compatible.rb

ramen-tabero-futsu2.png
「 Ruby言語のバージョンの互換性のためにあるのかな」

config.rb

ramen-tabero-futsu2.png
「 shogi-server.yaml と関係あるのかな」

game_result.rb

ramen-tabero-futsu2.png
「 ゲームの結果が タイムアップだとか、投了だとか、イリーガルムーブだとかいう情報を、オブジェクトにしたものだぜ」

game.rb

ramen-tabero-futsu2.png
「 対局がアグリーされたとか、そういうやつだぜ。
ゲームの結果のオブジェクトとか持ってるぜ」

handicapped_boards.rb

ramen-tabero-futsu2.png
「 香落ちとか、角落ちとか、駒落ちの盤のオブジェクトだぜ」

league.rb

ramen-tabero-futsu2.png
「 総当たりなんだろうけど、このプログラムでデータベースというときは、 YAMLファイルを指すのかもしれないな」

login.rb

ramen-tabero-futsu2.png
「 ログインしたときの、 OK とか、 LOGIN:incorrect とか出してるとこだぜ」

move.rb

ramen-tabero-futsu2.png
「 指し手だな。成るとか、取った駒とか」

pairing.rb

ramen-tabero-futsu2.png
「 レーティングとかを見て2者の組みを選ぶやつだな」

piece.rb

ramen-tabero-futsu2.png
「 駒だな」

player.rb

ramen-tabero-futsu2.png
「 対局者情報だな」

time_clock.rb

ramen-tabero-futsu2.png
「 持ち時間の減り方だな。チェスモードとかストップウォッチモードとか」

timeout_queue.rb

ramen-tabero-futsu2.png
「 キューだが、何なんだろな」

usi.rb

ramen-tabero-futsu2.png
「 position sfen で有名なあれを作ってるぜ」

util.rb

ramen-tabero-futsu2.png
「 ランダムとか、シャッフルとか、階乗とか、コンビネーションとか、数学っぽい関数の集まりだな。
shogi_server はこれでおしまい」

showgame

controller

main.rb

ramen-tabero-futsu2.png
「 ポート 9000番に Webサーバー的な何か立ってるのかだぜ?」

gen-rb

graphicserver_constants.rb

ramen-tabero-futsu2.png
「 自動生成したものだから、編集すんな、ということだぜ」

graphicserver_types.rb

ramen-tabero-futsu2.png
「 自動生成したものだから、編集すんな、ということだぜ」

ShogiGraphic.rb

ramen-tabero-futsu2.png
「 自動生成したものだから、編集すんな、ということだぜ」

lib

usi.rb

ramen-tabero-futsu2.png
「 文字を pieceオブジェクトに変換したりしてるぜ」

public

ramen-tabero-futsu2.png
「 Webアプリケーションでおなじみのフォルダーだろ」

css

ramen-tabero-futsu2.png
「 スタイルシートが入っているフォルダーだぜ」

ramaze_error.css

ramen-tabero-futsu2.png
「 スタイルシートだな」

js

jquery.js

ramen-tabero-futsu2.png
「 拾ってきた jQuery のライブラリだろ。 MIT と GPL のデュアルライセンスだぜ」

dispatch.fcgi

ramen-tabero-futsu2.png
「 start.rb のファイルパスを返してるけど、何だろな」

favicon.ico

ramen-tabero-futsu2.png
「 ブラウザーにちっこく表示されるホームページのアイコンみたいなやつだぜ」

ramaze.png

ramen-tabero-futsu2.png
「 favicon.ico の元画像と思うぜ」

spec

main.rb

ramen-tabero-futsu2.png
「 何だろな。URLでアクセスしたときの最初の方の処理だろうか?」

view

ramen-tabero-futsu2.png
「 もりわきのおじいちゃん、Webページの練習に使ったアプリを放置してるんじゃないか」

error.xhtml

ramen-tabero-futsu2.png
「 エラー・ページじゃないか」

game.xhtml

ramen-tabero-futsu2.png
「 単に箇条書き、あるいはリスト表示のHTML部品だな」

index.xhtml

ramen-tabero-futsu2.png
「 なんかチュートリアルが乗ってるページだぜ。使ってないんじゃないか?」

page.xhtml

ramen-tabero-futsu2.png
「 HTMLページのテンプレートみたいなもんだな」

sfen.xhtml

ramen-tabero-futsu2.png
「 単に画像を表示するHTML部品だな」

README

ramen-tabero-futsu2.png
「 Webページの起動方法が載ってるぜ」

start.rb

ramen-tabero-futsu2.png
「 7000番ポートにWebサーバー立てるんだろうか?」

start.ru

ramen-tabero-futsu2.png
「 ramaze というアプリをスタートさせるみたいだが、分かんないぜ」

test

ramen-tabero-futsu2.png
「 ユニットテストだぜ」

csa

jishogi_kachi.csa

ramen-tabero-futsu2.png
「 テストの入力だな。持将棋で勝ちのケースじゃないか」

max_moves_draw.csa

ramen-tabero-futsu2.png
「 手数の上限で引き分けのケースなんだろう」

not_sennichite.csa

ramen-tabero-futsu2.png
「 千日手にならない怪しいケースなのだろうか?」

not_uchifuzume.csa

ramen-tabero-futsu2.png
「 打ち歩詰めにならない怪しいケースなのだろうか?」

oute_sennichite.csa

ramen-tabero-futsu2.png
「 王手千日手のケースその1だろうか?」

oute_sennichite2.csa

ramen-tabero-futsu2.png
「 王手千日手のケースその2だろうか?」

oute_sennichite3.csa

ramen-tabero-futsu2.png
「 王手千日手のケースその3だろうか?」

uchifuzume.csa

ramen-tabero-futsu2.png
「 打ち歩詰めのケースだろうか?」

wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa

ramen-tabero-futsu2.png
「 さあ何やら。 benchmark.rb で使ってるから、ベンチマークなのかな」

baseclient.rb

ramen-tabero-futsu2.png
「 ソケット接続のところかなあ」

benchmark.rb

ramen-tabero-futsu2.png
「 localhost の 4000番ポートでつなぐテストだぜ」

ohkina-hiyoko-futsu.png
「 これよこれ。このテスト、外部のホストから実行できないの?」

mock_game.rb

ramen-tabero-futsu2.png
「 テスト用の中身のないゲームじゃないか?」

mock_log_message.rb

ramen-tabero-futsu2.png
「 テスト用の働かないロガーじゃないか?」

mock_player.rb

ramen-tabero-futsu2.png
「 テスト用の中身のないプレイヤーじゃないか?」

players.yaml

ramen-tabero-futsu2.png
「 295件あるプレイヤーデータだぜ。テストに使うぜ」

README.txt

ramen-tabero-futsu2.png
「 テストの始め方が書いてるぜ」

TC_ALL.rb

ramen-tabero-futsu2.png
「 ユニットテスト全部やるんじゃないか」

TC_before_agree.rb

ramen-tabero-futsu2.png
「 ログインした直後に LOGOUT したらどうなるかテストしてるのだろうか?」

TC_board.rb

ramen-tabero-futsu2.png
「 盤面を見て、勝ち判定できるか確かめたり、次の一手を動かしてみて合法か確かめている?」

TC_buoy.rb

ramen-tabero-futsu2.png
「 海に浮いているブイが将棋サーバーと何の関係があるのか分からないが、ゲーム名かログイン時の条件指定をテストしている?」

TC_command.rb

ramen-tabero-futsu2.png
「 コマンドをパースできたか確かめている?」

TC_compatible.rb

ramen-tabero-futsu2.png
「 Rubyの構文を確かめている?」

TC_config.rb

ramen-tabero-futsu2.png
「 何かファイルのテスト?」

TC_floodgate_history.rb

ramen-tabero-futsu2.png
「 test_floodgate_history.yaml ファイルのテスト?」

TC_floodgate_next_time_generator.rb

ramen-tabero-futsu2.png
「 タイムスタンプのテスト?」

TC_floodgate_thread.rb

ramen-tabero-futsu2.png
「 2人のプレイヤーを使った何かのテスト?」

TC_floodgate.rb

ramen-tabero-futsu2.png
「 対局のペアリングされるかのテスト?」

TC_fork.rb

ramen-tabero-futsu2.png
「 FORK コマンドのテスト?」

TC_functional.rb

ramen-tabero-futsu2.png
「 すぐ投了して勝った、負けたが付くかのテスト?」

TC_game_least_0.rb

ramen-tabero-futsu2.png
「 対局ログのテスト?」

TC_game_result.rb

ramen-tabero-futsu2.png
「 ゲームの結果オブジェクトのテスト?」

TC_game.rb

ramen-tabero-futsu2.png
「 ゲーム オブジェクトのテスト?」

TC_handicapped_boards.rb

ramen-tabero-futsu2.png
「 駒落ちボードのテスト?」

TC_jishogi_kachi.rb

ramen-tabero-futsu2.png
「 持将棋の勝ち宣言のテスト?」

TC_league.rb

ramen-tabero-futsu2.png
「 総当たりのテスト?」

TC_logger.rb

ramen-tabero-futsu2.png
「 ログの書き出しのテスト?」

TC_login.rb

ramen-tabero-futsu2.png
「 ログインのテスト?」

TC_max_moves_draw.rb

ramen-tabero-futsu2.png
「 最大手数引き分けのテスト?」

TC_move.rb

ramen-tabero-futsu2.png
「 指し手のテスト?」

TC_not_sennichite.rb

ramen-tabero-futsu2.png
「 千日手ではないというテスト?」

TC_oute_sennichite.rb

ramen-tabero-futsu2.png
「 王手千日手のテスト?」

TC_pairing.rb

ramen-tabero-futsu2.png
「 レーティングが近い2者がペアリングされるかのテスト?」

TC_player.rb

ramen-tabero-futsu2.png
「 プレイヤー名から 人間かコンピューターか判定したりとか いろいろテスト」

TC_rating.rb

ramen-tabero-futsu2.png
「 行列を使って 平均とかレーティングとかのテストか?」

TC_time_clock.rb

ramen-tabero-futsu2.png
「 持ち時間の境界値のテストとか?」

TC_uchifuzume.rb

ramen-tabero-futsu2.png
「 打ち歩詰めになるか、ならないかのCSA棋譜を使ったテスト」

TC_usi.rb

ramen-tabero-futsu2.png
「 SFENのテスト」

TC_util.rb

ramen-tabero-futsu2.png
「 タイムスタンプとか 曜日のパースとか 階乗とか いろいろテスト」

test.yaml

ramen-tabero-futsu2.png
「 空っぽのプレイヤー・データ」

utils

correct-bug14635.rb

ramen-tabero-futsu2.png
「 棋譜ファイルのバグ修正に使ったスクリプトだろうか?」

csa-filter.rb

ramen-tabero-futsu2.png
「 条件を付けて CSAファイルを拾い出すツールだろうか?」

eval_graph.rb

ramen-tabero-futsu2.png
「 評価値のプロット・グラフを作るんだろうか?」

histogram.R

ramen-tabero-futsu2.png
「 ヒストグラムを作るのかもしれないが分からん。R言語だろうか?」

players_graph.rb

ramen-tabero-futsu2.png
「 プレイヤーのレーティング推移グラフでも作るんだろうか?分からん」

statistics.rb

ramen-tabero-futsu2.png
「 プレイヤーの今月の強さとか、統計を取るんだろうか?」

.dockerignore

ramen-tabero-futsu2.png
「 Dockerコンテナにコピーしたくないファイルを書くやつ」

.gitignore

ramen-tabero-futsu2.png
「 GitHubとかにアップロードしたくないファイルとかを書くやつ」

changelog

ramen-tabero-futsu2.png
「 更新履歴」

csa-file-filter

ramen-tabero-futsu2.png
「 シェルスクリプト。 *.csa ファイルを何かフィルタリングするんだろうけど」

Dockerfile

ramen-tabero-futsu2.png
「 Dockerコンテナを作るためのファイル」

floodgate-0-240.conf.sample

ramen-tabero-futsu2.png
「 何かの設定ファイルの、書き方の例」

Makefile

ramen-tabero-futsu2.png
「 テストをするとか、Dockerを起動するとかのスクリプトだぜ」

mk_game_results

ramen-tabero-futsu2.png
「 ゲームの結果を出力するRubyスクリプトなのだろうか?」

mk_html

ramen-tabero-futsu2.png
「 HTMLを出力するRubyスクリプトなのだろうか?」

mk_rate

ramen-tabero-futsu2.png
「 レーティングを出力するスクリプトなのだろうか?」

players.yaml

ramen-tabero-futsu2.png
「 空っぽの プレイヤーのデータ・ファイル」

README

ramen-tabero-futsu2.png
「 使い方の説明」

shogi_server.rb

ramen-tabero-futsu2.png
「 ファイルを読み込んだりしているが、初期設定だろうか?」

shogi-server

ramen-tabero-futsu2.png
「 Rubyで書かれたシェルスクリプト。将棋サーバーの実行ファイル」

shogi-server-profile

ramen-tabero-futsu2.png
「 Rubyで書かれたシェルスクリプト。calltree.log を書き出すようだが、何だろうか」

webserver

ramen-tabero-futsu2.png
「 Rubyで書かれたシェルスクリプト。HTTPを使ったWebサーバーが立つようだぜ」

次の記事: shogi-server にどんな機能があるか見てみようぜ(^~^)?

ツイッターでシェア
みんなに共有、忘れないようにメモ

むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント

bin
lib
css
js
csa