tag:crieit.net,2005:https://crieit.net/tags/%E3%82%BA%E3%83%9D%E3%83%BC%E3%83%83%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed 「ズポーッ(^~^)」の記事 - Crieit Crieitでタグ「ズポーッ(^~^)」に投稿された最近の記事 2021-05-20T23:33:44+09:00 https://crieit.net/tags/%E3%82%BA%E3%83%9D%E3%83%BC%E3%83%83%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed tag:crieit.net,2005:PublicArticle/17205 2021-05-20T01:18:42+09:00 2021-05-20T23:33:44+09:00 https://crieit.net/posts/shogi-server shogi-serverのソースを読んでいこうぜ(^~^) <h1 id="shogi-serverのソースを読んでいこうぜ(^~^)"><a href="#shogi-server%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A7%E3%81%84%E3%81%93%E3%81%86%E3%81%9C%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89">shogi-serverのソースを読んでいこうぜ(^~^)</a></h1> <p><a href="https://crieit.now.sh/upload_images/8c797790a05a74ca58efc4b7430abcce60a51310c7a1c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c797790a05a74ca58efc4b7430abcce60a51310c7a1c.png?mw=700" alt="20210124shogi2a2b1.png" /></a><br /> 「 👇 前の記事は これな」</p> <p>📖 <a href="https://crieit.net/drafts/60a2598c6230f">shogi-serverのコードを読もうぜ(^~^)</a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a5135c813ce.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c260a5135c813ce.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 localhostの中に立っているサーバーをテストする前提になっていて Dockerで使いづらいぜ。<br /> 外部にあるホストをテストしにいって欲しいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a5138e03b0f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a5138e03b0f.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 テストが定期的に自動で走らないんじゃ、改造もやりにくいわよ」</p> <h2 id="bin"><a href="#bin">bin</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 将棋エンジンのブリッジかな」</p> <h3 id="usiToCsa"><a href="#usiToCsa">usiToCsa</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 シェルスクリプトだな。 <code>usiToCsa.rb</code> を呼び出してるんじゃないかな」</p> <h3 id="usiToCsa.rb"><a href="#usiToCsa.rb">usiToCsa.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Rubyスクリプトだな。USIエンジンを、CSAプロトコルに対応させるブリッジだと思うぜ」</p> <h2 id="sample"><a href="#sample">sample</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プログラム言語のファイル生成、タイムスタンプの性能を調べてるのかな」</p> <h3 id="check_file.rb"><a href="#check_file.rb">check_file.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルを作っては消し、というのを1万回やってるのかな。何だろな」</p> <h3 id="check_time.rb"><a href="#check_time.rb">check_time.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 10万回、現在時刻を調べているのかな。何だろな」</p> <h3 id="check_time2.rb"><a href="#check_time2.rb">check_time2.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 1万回、日付の 0時と、23時59分59秒0.999999 を比較してるのかな。何だろな」</p> <h3 id="start-server.sh"><a href="#start-server.sh">start-server.sh</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ポート4000を開けてサーバーを起動してるのかな」</p> <h3 id="stop-server.sh"><a href="#stop-server.sh">stop-server.sh</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 単に 将棋サーバーのプロセスをキルするぜ」</p> <h3 id="test_time.rb"><a href="#test_time.rb">test_time.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 日付に加法は通用するか 試してんのかな? 何だろな」</p> <h2 id="shogi_server"><a href="#shogi_server">shogi_server</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 サーバーのソースだぜ」</p> <h3 id="league"><a href="#league">league</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 フラッドゲートに総当たりモードとかあるんだろうか?」</p> <h4 id="floodgate_thread.rb"><a href="#floodgate_thread.rb">floodgate_thread.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 マッチングのスレッドだろうか?」</p> <h4 id="floodgate.rb"><a href="#floodgate.rb">floodgate.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 対局付けてんだろうか?」</p> <h4 id="persistent.rb"><a href="#persistent.rb">persistent.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プレイヤーの成績を YAMLファイルに保存するから パーシステントだ、ということだろうか?<br /> 📂league はこれでおしまい」</p> <h3 id="board.rb"><a href="#board.rb">board.rb</a></h3> <pre><code class="plain">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 + </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こういうやつ作ってるぜ」</p> <h3 id="buoy.rb"><a href="#buoy.rb">buoy.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 buoy は海に浮いてるブイだが、指定局面のことらしいぜ。<br /> buoy をデータベースに出し入れしてるのかな。何だろな」</p> <h3 id="command.rb"><a href="#command.rb">command.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コマンドをパースして、オブジェクトにして返してるんじゃないかな」</p> <h3 id="compatible.rb"><a href="#compatible.rb">compatible.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Ruby言語のバージョンの互換性のためにあるのかな」</p> <h3 id="config.rb"><a href="#config.rb">config.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>shogi-server.yaml</code> と関係あるのかな」</p> <h3 id="game_result.rb"><a href="#game_result.rb">game_result.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲームの結果が タイムアップだとか、投了だとか、イリーガルムーブだとかいう情報を、オブジェクトにしたものだぜ」</p> <h3 id="game.rb"><a href="#game.rb">game.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 対局がアグリーされたとか、そういうやつだぜ。<br /> ゲームの結果のオブジェクトとか持ってるぜ」</p> <h3 id="handicapped_boards.rb"><a href="#handicapped_boards.rb">handicapped_boards.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 香落ちとか、角落ちとか、駒落ちの盤のオブジェクトだぜ」</p> <h3 id="league.rb"><a href="#league.rb">league.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 総当たりなんだろうけど、このプログラムでデータベースというときは、 YAMLファイルを指すのかもしれないな」</p> <h3 id="login.rb"><a href="#login.rb">login.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ログインしたときの、 <code>OK</code> とか、 <code>LOGIN:incorrect</code> とか出してるとこだぜ」</p> <h3 id="move.rb"><a href="#move.rb">move.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 指し手だな。成るとか、取った駒とか」</p> <h3 id="pairing.rb"><a href="#pairing.rb">pairing.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 レーティングとかを見て2者の組みを選ぶやつだな」</p> <h3 id="piece.rb"><a href="#piece.rb">piece.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 駒だな」</p> <h3 id="player.rb"><a href="#player.rb">player.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 対局者情報だな」</p> <h3 id="time_clock.rb"><a href="#time_clock.rb">time_clock.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 持ち時間の減り方だな。チェスモードとかストップウォッチモードとか」</p> <h3 id="timeout_queue.rb"><a href="#timeout_queue.rb">timeout_queue.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 キューだが、何なんだろな」</p> <h3 id="usi.rb"><a href="#usi.rb">usi.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>position sfen</code> で有名なあれを作ってるぜ」</p> <h3 id="util.rb"><a href="#util.rb">util.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ランダムとか、シャッフルとか、階乗とか、コンビネーションとか、数学っぽい関数の集まりだな。<br /> shogi_server はこれでおしまい」</p> <h2 id="showgame"><a href="#showgame">showgame</a></h2> <h3 id="controller"><a href="#controller">controller</a></h3> <h4 id="main.rb"><a href="#main.rb">main.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ポート 9000番に Webサーバー的な何か立ってるのかだぜ?」</p> <h3 id="gen-rb"><a href="#gen-rb">gen-rb</a></h3> <h4 id="graphicserver_constants.rb"><a href="#graphicserver_constants.rb">graphicserver_constants.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 自動生成したものだから、編集すんな、ということだぜ」</p> <h4 id="graphicserver_types.rb"><a href="#graphicserver_types.rb">graphicserver_types.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 自動生成したものだから、編集すんな、ということだぜ」</p> <h4 id="ShogiGraphic.rb"><a href="#ShogiGraphic.rb">ShogiGraphic.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 自動生成したものだから、編集すんな、ということだぜ」</p> <h3 id="lib"><a href="#lib">lib</a></h3> <h4 id="usi.rb"><a href="#usi.rb">usi.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 文字を pieceオブジェクトに変換したりしてるぜ」</p> <h3 id="public"><a href="#public">public</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Webアプリケーションでおなじみのフォルダーだろ」</p> <h4 id="css"><a href="#css">css</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 スタイルシートが入っているフォルダーだぜ」</p> <h5 id="ramaze_error.css"><a href="#ramaze_error.css">ramaze_error.css</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 スタイルシートだな」</p> <h4 id="js"><a href="#js">js</a></h4> <h5 id="jquery.js"><a href="#jquery.js">jquery.js</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 拾ってきた jQuery のライブラリだろ。 MIT と GPL のデュアルライセンスだぜ」</p> <h4 id="dispatch.fcgi"><a href="#dispatch.fcgi">dispatch.fcgi</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>start.rb</code> のファイルパスを返してるけど、何だろな」</p> <h4 id="favicon.ico"><a href="#favicon.ico">favicon.ico</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ブラウザーにちっこく表示されるホームページのアイコンみたいなやつだぜ」</p> <h4 id="ramaze.png"><a href="#ramaze.png">ramaze.png</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>favicon.ico</code> の元画像と思うぜ」</p> <h4 id="spec"><a href="#spec">spec</a></h4> <h5 id="main.rb"><a href="#main.rb">main.rb</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何だろな。URLでアクセスしたときの最初の方の処理だろうか?」</p> <h4 id="view"><a href="#view">view</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 もりわきのおじいちゃん、Webページの練習に使ったアプリを放置してるんじゃないか」</p> <h5 id="error.xhtml"><a href="#error.xhtml">error.xhtml</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 エラー・ページじゃないか」</p> <h5 id="game.xhtml"><a href="#game.xhtml">game.xhtml</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 単に箇条書き、あるいはリスト表示のHTML部品だな」</p> <h5 id="index.xhtml"><a href="#index.xhtml">index.xhtml</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 なんかチュートリアルが乗ってるページだぜ。使ってないんじゃないか?」</p> <h5 id="page.xhtml"><a href="#page.xhtml">page.xhtml</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 HTMLページのテンプレートみたいなもんだな」</p> <h5 id="sfen.xhtml"><a href="#sfen.xhtml">sfen.xhtml</a></h5> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 単に画像を表示するHTML部品だな」</p> <h4 id="README"><a href="#README">README</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Webページの起動方法が載ってるぜ」</p> <h4 id="start.rb"><a href="#start.rb">start.rb</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 7000番ポートにWebサーバー立てるんだろうか?」</p> <h4 id="start.ru"><a href="#start.ru">start.ru</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>ramaze</code> というアプリをスタートさせるみたいだが、分かんないぜ」</p> <h2 id="test"><a href="#test">test</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユニットテストだぜ」</p> <h3 id="csa"><a href="#csa">csa</a></h3> <h4 id="jishogi_kachi.csa"><a href="#jishogi_kachi.csa">jishogi_kachi.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テストの入力だな。持将棋で勝ちのケースじゃないか」</p> <h4 id="max_moves_draw.csa"><a href="#max_moves_draw.csa">max_moves_draw.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 手数の上限で引き分けのケースなんだろう」</p> <h4 id="not_sennichite.csa"><a href="#not_sennichite.csa">not_sennichite.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 千日手にならない怪しいケースなのだろうか?」</p> <h4 id="not_uchifuzume.csa"><a href="#not_uchifuzume.csa">not_uchifuzume.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 打ち歩詰めにならない怪しいケースなのだろうか?」</p> <h4 id="oute_sennichite.csa"><a href="#oute_sennichite.csa">oute_sennichite.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 王手千日手のケースその1だろうか?」</p> <h4 id="oute_sennichite2.csa"><a href="#oute_sennichite2.csa">oute_sennichite2.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 王手千日手のケースその2だろうか?」</p> <h4 id="oute_sennichite3.csa"><a href="#oute_sennichite3.csa">oute_sennichite3.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 王手千日手のケースその3だろうか?」</p> <h4 id="uchifuzume.csa"><a href="#uchifuzume.csa">uchifuzume.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 打ち歩詰めのケースだろうか?」</p> <h4 id="wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa"><a href="#wdoor%2Bfloodgate-900-0%2Bgps_normal%2Bgps_l%2B20100507120007.csa">wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa</a></h4> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 さあ何やら。 <code>benchmark.rb</code> で使ってるから、ベンチマークなのかな」</p> <h3 id="baseclient.rb"><a href="#baseclient.rb">baseclient.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ソケット接続のところかなあ」</p> <h3 id="benchmark.rb"><a href="#benchmark.rb">benchmark.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>localhost</code> の 4000番ポートでつなぐテストだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a5138e03b0f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6caf6840c8b04f280fd7b5f447c040fc60a5138e03b0f.png?mw=700" alt="ohkina-hiyoko-futsu.png" /></a><br /> 「 これよこれ。このテスト、外部のホストから実行できないの?」</p> <h3 id="mock_game.rb"><a href="#mock_game.rb">mock_game.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テスト用の中身のないゲームじゃないか?」</p> <h3 id="mock_log_message.rb"><a href="#mock_log_message.rb">mock_log_message.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テスト用の働かないロガーじゃないか?」</p> <h3 id="mock_player.rb"><a href="#mock_player.rb">mock_player.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テスト用の中身のないプレイヤーじゃないか?」</p> <h3 id="players.yaml"><a href="#players.yaml">players.yaml</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 295件あるプレイヤーデータだぜ。テストに使うぜ」</p> <h3 id="README.txt"><a href="#README.txt">README.txt</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テストの始め方が書いてるぜ」</p> <h3 id="TC_ALL.rb"><a href="#TC_ALL.rb">TC_ALL.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ユニットテスト全部やるんじゃないか」</p> <h3 id="TC_before_agree.rb"><a href="#TC_before_agree.rb">TC_before_agree.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ログインした直後に <code>LOGOUT</code> したらどうなるかテストしてるのだろうか?」</p> <h3 id="TC_board.rb"><a href="#TC_board.rb">TC_board.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 盤面を見て、勝ち判定できるか確かめたり、次の一手を動かしてみて合法か確かめている?」</p> <h3 id="TC_buoy.rb"><a href="#TC_buoy.rb">TC_buoy.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 海に浮いているブイが将棋サーバーと何の関係があるのか分からないが、ゲーム名かログイン時の条件指定をテストしている?」</p> <h3 id="TC_command.rb"><a href="#TC_command.rb">TC_command.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 コマンドをパースできたか確かめている?」</p> <h3 id="TC_compatible.rb"><a href="#TC_compatible.rb">TC_compatible.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Rubyの構文を確かめている?」</p> <h3 id="TC_config.rb"><a href="#TC_config.rb">TC_config.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何かファイルのテスト?」</p> <h3 id="TC_floodgate_history.rb"><a href="#TC_floodgate_history.rb">TC_floodgate_history.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>test_floodgate_history.yaml</code> ファイルのテスト?」</p> <h3 id="TC_floodgate_next_time_generator.rb"><a href="#TC_floodgate_next_time_generator.rb">TC_floodgate_next_time_generator.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイムスタンプのテスト?」</p> <h3 id="TC_floodgate_thread.rb"><a href="#TC_floodgate_thread.rb">TC_floodgate_thread.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 2人のプレイヤーを使った何かのテスト?」</p> <h3 id="TC_floodgate.rb"><a href="#TC_floodgate.rb">TC_floodgate.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 対局のペアリングされるかのテスト?」</p> <h3 id="TC_fork.rb"><a href="#TC_fork.rb">TC_fork.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>FORK</code> コマンドのテスト?」</p> <h3 id="TC_functional.rb"><a href="#TC_functional.rb">TC_functional.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 すぐ投了して勝った、負けたが付くかのテスト?」</p> <h3 id="TC_game_least_0.rb"><a href="#TC_game_least_0.rb">TC_game_least_0.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 対局ログのテスト?」</p> <h3 id="TC_game_result.rb"><a href="#TC_game_result.rb">TC_game_result.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲームの結果オブジェクトのテスト?」</p> <h3 id="TC_game.rb"><a href="#TC_game.rb">TC_game.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲーム オブジェクトのテスト?」</p> <h3 id="TC_handicapped_boards.rb"><a href="#TC_handicapped_boards.rb">TC_handicapped_boards.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 駒落ちボードのテスト?」</p> <h3 id="TC_jishogi_kachi.rb"><a href="#TC_jishogi_kachi.rb">TC_jishogi_kachi.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 持将棋の勝ち宣言のテスト?」</p> <h3 id="TC_league.rb"><a href="#TC_league.rb">TC_league.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 総当たりのテスト?」</p> <h3 id="TC_logger.rb"><a href="#TC_logger.rb">TC_logger.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ログの書き出しのテスト?」</p> <h3 id="TC_login.rb"><a href="#TC_login.rb">TC_login.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ログインのテスト?」</p> <h3 id="TC_max_moves_draw.rb"><a href="#TC_max_moves_draw.rb">TC_max_moves_draw.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 最大手数引き分けのテスト?」</p> <h3 id="TC_move.rb"><a href="#TC_move.rb">TC_move.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 指し手のテスト?」</p> <h3 id="TC_not_sennichite.rb"><a href="#TC_not_sennichite.rb">TC_not_sennichite.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 千日手ではないというテスト?」</p> <h3 id="TC_oute_sennichite.rb"><a href="#TC_oute_sennichite.rb">TC_oute_sennichite.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 王手千日手のテスト?」</p> <h3 id="TC_pairing.rb"><a href="#TC_pairing.rb">TC_pairing.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 レーティングが近い2者がペアリングされるかのテスト?」</p> <h3 id="TC_player.rb"><a href="#TC_player.rb">TC_player.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プレイヤー名から 人間かコンピューターか判定したりとか いろいろテスト」</p> <h3 id="TC_rating.rb"><a href="#TC_rating.rb">TC_rating.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 行列を使って 平均とかレーティングとかのテストか?」</p> <h3 id="TC_time_clock.rb"><a href="#TC_time_clock.rb">TC_time_clock.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 持ち時間の境界値のテストとか?」</p> <h3 id="TC_uchifuzume.rb"><a href="#TC_uchifuzume.rb">TC_uchifuzume.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 打ち歩詰めになるか、ならないかのCSA棋譜を使ったテスト」</p> <h3 id="TC_usi.rb"><a href="#TC_usi.rb">TC_usi.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 SFENのテスト」</p> <h3 id="TC_util.rb"><a href="#TC_util.rb">TC_util.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 タイムスタンプとか 曜日のパースとか 階乗とか いろいろテスト」</p> <h3 id="test.yaml"><a href="#test.yaml">test.yaml</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 空っぽのプレイヤー・データ」</p> <h2 id="utils"><a href="#utils">utils</a></h2> <h3 id="correct-bug14635.rb"><a href="#correct-bug14635.rb">correct-bug14635.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 棋譜ファイルのバグ修正に使ったスクリプトだろうか?」</p> <h3 id="csa-filter.rb"><a href="#csa-filter.rb">csa-filter.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 条件を付けて CSAファイルを拾い出すツールだろうか?」</p> <h3 id="eval_graph.rb"><a href="#eval_graph.rb">eval_graph.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 評価値のプロット・グラフを作るんだろうか?」</p> <h3 id="histogram.R"><a href="#histogram.R">histogram.R</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ヒストグラムを作るのかもしれないが分からん。R言語だろうか?」</p> <h3 id="players_graph.rb"><a href="#players_graph.rb">players_graph.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プレイヤーのレーティング推移グラフでも作るんだろうか?分からん」</p> <h3 id="statistics.rb"><a href="#statistics.rb">statistics.rb</a></h3> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プレイヤーの今月の強さとか、統計を取るんだろうか?」</p> <h2 id=".dockerignore"><a href="#.dockerignore">.dockerignore</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Dockerコンテナにコピーしたくないファイルを書くやつ」</p> <h2 id=".gitignore"><a href="#.gitignore">.gitignore</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 GitHubとかにアップロードしたくないファイルとかを書くやつ」</p> <h2 id="changelog"><a href="#changelog">changelog</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 更新履歴」</p> <h2 id="csa-file-filter"><a href="#csa-file-filter">csa-file-filter</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 シェルスクリプト。 <code>*.csa</code> ファイルを何かフィルタリングするんだろうけど」</p> <h2 id="Dockerfile"><a href="#Dockerfile">Dockerfile</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Dockerコンテナを作るためのファイル」</p> <h2 id="floodgate-0-240.conf.sample"><a href="#floodgate-0-240.conf.sample">floodgate-0-240.conf.sample</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 何かの設定ファイルの、書き方の例」</p> <h2 id="Makefile"><a href="#Makefile">Makefile</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テストをするとか、Dockerを起動するとかのスクリプトだぜ」</p> <h2 id="mk_game_results"><a href="#mk_game_results">mk_game_results</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ゲームの結果を出力するRubyスクリプトなのだろうか?」</p> <h2 id="mk_html"><a href="#mk_html">mk_html</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 HTMLを出力するRubyスクリプトなのだろうか?」</p> <h2 id="mk_rate"><a href="#mk_rate">mk_rate</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 レーティングを出力するスクリプトなのだろうか?」</p> <h2 id="players.yaml"><a href="#players.yaml">players.yaml</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 空っぽの プレイヤーのデータ・ファイル」</p> <h2 id="README"><a href="#README">README</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 使い方の説明」</p> <h2 id="shogi_server.rb"><a href="#shogi_server.rb">shogi_server.rb</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ファイルを読み込んだりしているが、初期設定だろうか?」</p> <h2 id="shogi-server"><a href="#shogi-server">shogi-server</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Rubyで書かれたシェルスクリプト。将棋サーバーの実行ファイル」</p> <h2 id="shogi-server-profile"><a href="#shogi-server-profile">shogi-server-profile</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Rubyで書かれたシェルスクリプト。<code>calltree.log</code> を書き出すようだが、何だろうか」</p> <h2 id="webserver"><a href="#webserver">webserver</a></h2> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d60a514e885b74.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Rubyで書かれたシェルスクリプト。HTTPを使ったWebサーバーが立つようだぜ」</p> <p>次の記事: <a href="https://crieit.net/posts/shogi-server-60a66ff3b9a3b">shogi-server にどんな機能があるか見てみようぜ(^~^)?</a></p> むずでょ