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

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

前回の記事:shogi-serverのソースを読んでいこうぜ(^~^)

20210124shogi2a2b1.png
「 将棋サーバーにどんな機能があるか見ていこうぜ?」

kifuwarabe-futsu.png
「 Makefile にいろいろ書かれているぜ」

ohkina-hiyoko-futsu.png
「 全部実行してみましょう!」

Makefile

doc

make doc

ramen-tabero-futsu2.png
(カタカタカタカタ……)

20210520shogi100.png

ramen-tabero-futsu2.png
「 👆 なんか巨大なディレクトリーがでけたぜ?」

ohkina-hiyoko-futsu.png
「 Webサイトなんじゃないの?」

20210520shogi101.png

ramen-tabero-futsu2.png
「 👆 API ドキュメントがでけたぜ。あとで使お」

test-run

ramen-tabero-futsu2.png
「 テストランの機能が付いていたのかだぜ!」

kifuwarabe-futsu.png
「 先に調べないから……」

make test-run

ramen-tabero-futsu2.png
(カタカタカタカタ……)

20210520shogi102a1.png

ramen-tabero-futsu2.png
「 👆 今 18時4分なんだが、次の対局は 19時に始まるらしいぜ」

kifuwarabe-futsu.png
「 あと回しにしようぜ?」

ramen-tabero-futsu2.png
「 なんか 他のやつもサーバー立てるみたいだし、同じことになるかもしらん。 API ドキュメントでも先に読んでようぜ」

20210520shogi103.png

ramen-tabero-futsu2.png
「 👆 19時に フラッドゲートがスタートしたんだが、誰もいないから終わったぜ」

ohkina-hiyoko-futsu.png
「 れさかい と きふわらべちゃんを ログインさせておきましょう!」

20210520shogi104.png

ramen-tabero-futsu2.png
「 👆 ログインしようとしたら、弾かれてしまったぜ?」

ohkina-hiyoko-futsu.png
「 4081番ポートは 純正のCSAプロトコルを使う無印のサーバーの方ねぇ」

ramen-tabero-futsu2.png
「 同様に弾かれたぜ」

kifuwarabe-futsu.png
「 なんかログイン条件があるのかだぜ?」

ramen-tabero-futsu2.png
「 それを説明してくれないと 分かんないぜ」

test-run-daemon

make stop-daemon

make test-time-run

image-build

make clean

mk_game_results

mk_html

mk_rate

shogi-server

ramen-tabero-futsu2.png
「 これ、将棋サーバーの本体の入り口だぜ。Rubyのシェルスクリプト」

showgame

Start a thrift server

  $ ./graphicserver --port 9090 -d ./public/images

ramen-tabero-futsu2.png
「 👆 graphicserver というシェルが無いから実行できないぜ」

20210520shogi106.png

ramen-tabero-futsu2.png
「 👆 ramaze というフレームワークが要るのかだぜ?」

20210520shogi108.png

kifuwarabe-futsu.png
「 👆 1枚目に ramaze 要るって書いてるぜ」

RUN gem install rgl
RUN gem install ramaze # 要らないんじゃないか(^~^)?

ramen-tabero-futsu2.png
「 👆 Dockerfile に追記しとくけど」

ruby start.rb
start.rb:4:in `<main>': undefined method `/' for "/shogi-server/showgame":String (NoMethodError)

ramen-tabero-futsu2.png
「 👆 動かね」

とっても便利な Kernel#acquire, DIR

kifuwarabe-futsu.png
「 👆 2008年に便利な機能だったらしいぜ、 ramaze

ramen-tabero-futsu2.png
「 Bonanzaが優勝した2年後で、コンピューター将棋が盛り上がってた頃だな。 ramaze 要らなくね?」

ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]

kifuwarabe-futsu.png
「 👆 rubyのバージョンは 2.1 以上あるんだけどな。 ramaze 用のコードが動かないぜ」

ohkina-hiyoko-futsu.png
「 Rubyのバージョンって上げれないの?」

apt-get update
apt-get install -y rbenv
rbenv --version
rbenv 1.0.0

ramen-tabero-futsu2.png
「 👆 Rubyのバージョンを上げるための rbenv のバージョンが旧いぜ」

📖 Debian 9 Stretch に rbenv をインストールして Ruby の最新バージョンを使う

ramen-tabero-futsu2.png
「 👆 手順 長……」

apt install -y git
mkdir -p "$(rbenv root)"/plugins
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
apt install -y wget
apt install -y gcc-6 autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
rbenv install --list
rbenv install 2.7.3
rbenv versions
# * system (set by /root/.rbenv/version)
#   2.7.3
rbenv global 2.7.3
rbenv versions
#   system
# * 2.7.3 (set by /root/.rbenv/version)
export PATH="$(rbenv root)/shims:$PATH"
ruby --version
# ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
echo 'export PATH="$(rbenv root)/shims:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

ramen-tabero-futsu2.png
「 👆 なんか 旧いバージョン消されていくみたいだから、 Dockerfile も永続的に使える書き方ができないな」

root@f579f8d09ec7:/shogi-server/showgame# ruby start.rb
Traceback (most recent call last):
start.rb:4:in `<main>': undefined method `/' for "/shogi-server/showgame":String (NoMethodError)

ramen-tabero-futsu2.png
「 👆 動かないし」

shogi-server-profile

webserver

ruby webserver

ramen-tabero-futsu2.png
(カタカタカタカタ……)

Traceback (most recent call last):
        5: from webserver:180:in `<main>'
        4: from webserver:148:in `main'
        3: from webserver:148:in `new'
        2: from webserver:40:in `initialize'
        1: from webserver:40:in `open'
webserver:40:in `initialize': No connection could be made because the target machine actively refused it. - connect(2) for "localhost" port 4081 (Errno::ECONNREFUSED)

ramen-tabero-futsu2.png
「 👆 先に CSAモードで 対局サーバー立てとくかだぜ」

ruby webserver 
webserver:73: warning: Object#timeout is deprecated, use Timeout.timeout instead.

20210520shogi105.png

ramen-tabero-futsu2.png
「 何かに接続した気はしないぜ。 Windows だから? もしかして これも Docker化した方がいい?」

ruby webserver &
curl http://localhost:4081
LOGIN:incorrect
LOGIN:incorrect
LOGIN:incorrect
LOGIN:incorrect
LOGIN:incorrect

ramen-tabero-futsu2.png
「 何をするツールか分からないな」

次の記事:shogi-serverのwebアプリケーション部分をPythonに書き直そうぜ(^~^)

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

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

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

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

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

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

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

コメント