tag:crieit.net,2005:https://crieit.net/tags/%E3%81%8A%E3%81%A3%E3%81%BD%E3%82%93%E3%81%BD%E3%82%93%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed 「おっぽんぽん(^~^)」の記事 - Crieit Crieitでタグ「おっぽんぽん(^~^)」に投稿された最近の記事 2021-05-21T00:21:31+09:00 https://crieit.net/tags/%E3%81%8A%E3%81%A3%E3%81%BD%E3%82%93%E3%81%BD%E3%82%93%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed tag:crieit.net,2005:PublicArticle/17211 2021-05-20T23:19:31+09:00 2021-05-21T00:21:31+09:00 https://crieit.net/posts/shogi-server-60a66ff3b9a3b shogi-server にどんな機能があるか見てみようぜ(^~^)? <h1 id="shogi-server にどんな機能があるか見てみようぜ(^~^)?"><a href="#shogi-server+%E3%81%AB%E3%81%A9%E3%82%93%E3%81%AA%E6%A9%9F%E8%83%BD%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E8%A6%8B%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%81%9C%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89%EF%BC%9F">shogi-server にどんな機能があるか見てみようぜ(^~^)?</a></h1> <p>前回の記事:<a href="https://crieit.net/posts/shogi-server">shogi-serverのソースを読んでいこうぜ(^~^)</a></p> <p><a href="https://crieit.now.sh/upload_images/8c797790a05a74ca58efc4b7430abcce60a6200bb31e9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c797790a05a74ca58efc4b7430abcce60a6200bb31e9.png?mw=700" alt="20210124shogi2a2b1.png" /></a><br /> 「 将棋サーバーにどんな機能があるか見ていこうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Makefile にいろいろ書かれているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 全部実行してみましょう!」</p> <h2 id="Makefile"><a href="#Makefile">Makefile</a></h2> <h3 id="doc"><a href="#doc">doc</a></h3> <pre><code class="shell">make doc </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタカタカタカタ……)</p> <p><a href="https://crieit.now.sh/upload_images/7174c36aaa80aa6aabc237dbcec16b2060a62408df16e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7174c36aaa80aa6aabc237dbcec16b2060a62408df16e.png?mw=700" alt="20210520shogi100.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか巨大なディレクトリーがでけたぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 Webサイトなんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/f2116a306d71cc077962be8f760a110d60a625af91812.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f2116a306d71cc077962be8f760a110d60a625af91812.png?mw=700" alt="20210520shogi101.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 API ドキュメントがでけたぜ。あとで使お」</p> <h3 id="test-run"><a href="#test-run">test-run</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テストランの機能が付いていたのかだぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 先に調べないから……」</p> <pre><code class="shell">make test-run </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタカタカタカタ……)</p> <p><a href="https://crieit.now.sh/upload_images/ff58f3f40dc0029de6aeddbe8c7a0d1860a626d7d5ab3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff58f3f40dc0029de6aeddbe8c7a0d1860a626d7d5ab3.png?mw=700" alt="20210520shogi102a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 今 18時4分なんだが、次の対局は 19時に始まるらしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 あと回しにしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんか 他のやつもサーバー立てるみたいだし、同じことになるかもしらん。 API ドキュメントでも先に読んでようぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1b5da9723b686a7713301fe0ba79771f60a63a1dbffd5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1b5da9723b686a7713301fe0ba79771f60a63a1dbffd5.png?mw=700" alt="20210520shogi103.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 19時に フラッドゲートがスタートしたんだが、誰もいないから終わったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 れさかい と きふわらべちゃんを ログインさせておきましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/3c1ab11e82a8d5abea1c8334e00b415860a63b27810cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3c1ab11e82a8d5abea1c8334e00b415860a63b27810cb.png?mw=700" alt="20210520shogi104.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ログインしようとしたら、弾かれてしまったぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 4081番ポートは 純正のCSAプロトコルを使う無印のサーバーの方ねぇ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 同様に弾かれたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんかログイン条件があるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 それを説明してくれないと 分かんないぜ」</p> <h3 id="test-run-daemon"><a href="#test-run-daemon">test-run-daemon</a></h3> <h3 id="make stop-daemon"><a href="#make+stop-daemon">make stop-daemon</a></h3> <h3 id="make test-time-run"><a href="#make+test-time-run">make test-time-run</a></h3> <h3 id="image-build"><a href="#image-build">image-build</a></h3> <h3 id="make clean"><a href="#make+clean">make clean</a></h3> <h2 id="mk_game_results"><a href="#mk_game_results">mk_game_results</a></h2> <h2 id="mk_html"><a href="#mk_html">mk_html</a></h2> <h2 id="mk_rate"><a href="#mk_rate">mk_rate</a></h2> <h2 id="shogi-server"><a href="#shogi-server">shogi-server</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 これ、将棋サーバーの本体の入り口だぜ。Rubyのシェルスクリプト」</p> <h2 id="showgame"><a href="#showgame">showgame</a></h2> <pre><code class="shell">Start a thrift server $ ./graphicserver --port 9090 -d ./public/images </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>graphicserver</code> というシェルが無いから実行できないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0b7ffb8334d7ae995f94c1edddb0d35c60a65d56d8c6e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0b7ffb8334d7ae995f94c1edddb0d35c60a65d56d8c6e.png?mw=700" alt="20210520shogi106.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>ramaze</code> というフレームワークが要るのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/6049ee9fa6cfcede6fb0b48ed790879160a65dba3dc2e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6049ee9fa6cfcede6fb0b48ed790879160a65dba3dc2e.png?mw=700" alt="20210520shogi108.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 1枚目に <code>ramaze</code> 要るって書いてるぜ」</p> <pre><code class="plain">RUN gem install rgl RUN gem install ramaze # 要らないんじゃないか(^~^)? </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Dockerfile に追記しとくけど」</p> <pre><code class="plain">ruby start.rb start.rb:4:in `<main>': undefined method `/' for "/shogi-server/showgame":String (NoMethodError) </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 動かね」</p> <p><a target="_blank" rel="nofollow noopener" href="https://keita-yamaguchi.hatenadiary.org/entry/20080324/1206360798">とっても便利な Kernel#acquire, <strong>DIR</strong></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 2008年に便利な機能だったらしいぜ、 <code>ramaze</code>」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Bonanzaが優勝した2年後で、コンピューター将棋が盛り上がってた頃だな。 <code>ramaze</code> 要らなくね?」</p> <pre><code class="shell">ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu] </code></pre> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a62046c3220.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 rubyのバージョンは 2.1 以上あるんだけどな。 ramaze 用のコードが動かないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a620636fea5.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 Rubyのバージョンって上げれないの?」</p> <pre><code class="shell">apt-get update apt-get install -y rbenv rbenv --version rbenv 1.0.0 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 Rubyのバージョンを上げるための rbenv のバージョンが旧いぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/niwasawa/items/65c7bb720788df4f8092">Debian 9 Stretch に rbenv をインストールして Ruby の最新バージョンを使う</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 手順 長……」</p> <pre><code class="shell">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 </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか 旧いバージョン消されていくみたいだから、 Dockerfile も永続的に使える書き方ができないな」</p> <pre><code class="plain">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) </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 動かないし」</p> <h2 id="shogi-server-profile"><a href="#shogi-server-profile">shogi-server-profile</a></h2> <h2 id="webserver"><a href="#webserver">webserver</a></h2> <pre><code class="shell">ruby webserver </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> (カタカタカタカタ……)</p> <pre><code class="plain">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) </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 先に CSAモードで 対局サーバー立てとくかだぜ」</p> <pre><code class="plain">ruby webserver webserver:73: warning: Object#timeout is deprecated, use Timeout.timeout instead. </code></pre> <p><a href="https://crieit.now.sh/upload_images/5872a893881749da5d74d809c3086fe560a6575062209.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5872a893881749da5d74d809c3086fe560a6575062209.png?mw=700" alt="20210520shogi105.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何かに接続した気はしないぜ。 Windows だから? もしかして これも Docker化した方がいい?」</p> <pre><code class="shell">ruby webserver & curl http://localhost:4081 LOGIN:incorrect LOGIN:incorrect LOGIN:incorrect LOGIN:incorrect LOGIN:incorrect </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a6237d3112a.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何をするツールか分からないな」</p> <p>次の記事:<a href="https://crieit.net/posts/shogi-server-web-Python">shogi-serverのwebアプリケーション部分をPythonに書き直そうぜ(^~^)</a></p> むずでょ