ソース管理の話

ある実装に苦労してる知人の話を聞いたが,
オープンソース界隈だと良い実装がひとつあると99.9%以上の人は
盲目的にそれをベースに使うだけで,ソースまで戻る人は少ない。
死蔵されるソースも多いし,有意義かどうかは微妙な面もある。
彼の努力が実るかどうかは正直疑わしい。
 
個人的には一昨年になるが,80年代から使われている秘伝のソース内に
比較的初歩的なバグを見つけた。フィードバックするにも管理されていないし
そもそもライセンス?って時代のものだ。
 
そして私は秘伝のソースと縁を切ることに決めた。
#縁が切れているとは言ってない
 
公開しても見る人のないソースはほぼ意味がない。
#ごくたまに中国や中東から面倒なメールを貰う程度

狼将棋の局面図の挿入テスト

【先日の一戦にて5三桂の場面】
後手:増田 
後手の持駒:飛 銀 歩三 
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂 ・ ・v玉 ・ ・ ・v香|一
| ・v飛 ・v銀v金 ・v銀 歩 ・|二
|v歩 ・v歩v歩 桂 ・v金 ・v歩|三
| ・ ・ ・ ・v歩v歩 ・ ・ ・|四
| ・ ・ 角 桂 ・ ・ ・v歩 角|五
| ・ ・ 歩 ・ ・ ・ ・ ・ ・|六
| 歩 歩 ・ 歩 歩 歩 ・ ・ 歩|七
| ・ ・ 金 ・ ・ ・ ・ ・ ・|八
| 香 ・ ・ 玉 銀 ・ ・ 桂 香|九
+---------------------------+
先手の持駒:金 
先手:藤井 

狼将棋のところのSVGが出来がよかったのでテストしてみる。

流用してください的なことが書いてあるが,個別に回答頂いたわけじゃないので問題あれば削除します。

ーーー

7/13追記

MITライセンスで公開だそうな

http://www.geocities.jp/ookami_maasa/shogizumen/

rawバイトリテラルで地雷

にわかpythonユーザである。

コメントアウトしたところでユニコードうんたらとエラーが出て,謎が解けたのでメモっておく。

問題となったのは以下のようなコード

'''

p=func(r'C:\Users\xxx\Documents\work')

'''

コメントアウト前はrawバイトリテラルで ファイルパスの区切りの¥をエスケープするのが面倒で使ってた。

コメントアウトしたら普通の複数行文字列のリテラル扱いなので「\U」のところが16進ユニコードリテラル扱いされてエラー(笑)

こういうのどうしたらいいのかねぇ。

皆一行ずつ#つけてるの?

Windowsで地雷になりがちなところ

Windows苦手な人が嫌がるところを見てみましょう。

習作として以下のElixirのサンプルをWindows環境で実行してみます。

当然地雷臭がしますが、Windowsネイティブバイナリを入れていきます。

 

employment.en-japan.com

 

まず、iexがPowerShellだとInvoke-Expression のエイリアスになってる。

最低です。Creators Update以降はPowerShellがデフォルトになっているのに、基本的なコマンドが別のエイリアスで規定されています。エイリアスを外すかコマンドプロンプトを起動しましょう。

 

日本語が文字化けします。

ありがちです。Elixir含めて最近の処理系はUTF-8がデフォルトですが、Windowsは歴史あるShif-JIS系のコードをしようしています。

Windowsではchcpというコマンドを使いましょう。引数はUTF-8にするには65001としていします。つまり「chcp 65001」と打てばいいのです。

また、ありがちなのですがWindowsではエディタで作ったファイルがShif-JIS系になりがちです。確認してUTF-8にしておきましょう。

以上の対応をしても一か所ダメでした。

MS-IMEの出力はどうしてもUTF-8にできませんでした。

つまり、コマンドラインの漢字は入力しても化けて読まれます。

どうしたらいいものかなぁ。

#敢えて地雷を踏みに行ってますので、それほど危惧してません。

 

Bash on Windowsと色々かぶる。

まぁ、解決策としてUbuntu系のバイナリが使えるBash on Windowsに逃げるのが今風なのですがCreators Update以降は素敵なことにbash中でWindowsバイナリも動きます。ええ、Windows側で指定したパスに実行ファイルがあるとそれが動きます。ということで上記で入れたWindowsバイナリをアンインストールしましょう。残ってると色々奇妙な現象にクラクラします。

 

今日はこれくらいにしてあげましょう。

RYZEN写真集

RYZEN仕入れてました。

開封の儀

ん!?

本体ちっさ!!

CPUファンが入ってない1800Xなので,これだけ売ってくれればいいのよ。

なんか,黒いです。(カラー写真です,悪しからず)

適当に見繕って貰ったファンでかっ!!

BIOSの誤字が人柱感満載でいい。

 

こんなものも激しく無駄な多層梱包で別送されてまして

がっつり厳つい感じになります。

上の方がRYZEN用のファンで下がビデオカードです。

上が95Wで下が250Wと言えば,基本的に熱設計間違えてると思いますよね。

 

将棋AIの続き

以前ディープラーニングの習作に将棋のAIを選んで適当に作った話をしていた。いわゆるチュートリアル的な完成度の高い練習問題じゃなく,正解があるようなないような位の実践的な課題として選んでみた。ネット上で参考になりそうなblogも3つ4つある程度で丁度いい。参考にするものが皆無だとチュートリアルからの脱却にはハードルが高い。

うちで考えたNN構造は駒の種類(8種+成り駒6種)を先手後手でそれぞれ。手駒は7種類を先手後手でそれぞれ。9x9のマスを42層作ることに試行錯誤の後に落ち着いた。手駒層でちょっと工夫したのは駒数が増えたときに入力値を増やしていったところと,9x9にベタで入れるのは無駄な気がして盤上の空きマスに駒数を配置した。イメージで的には打ち手可能エリアと数ってことだ。

こうして行った入力層を薄くする努力はさほど有効でないことは中間層の大きさで演算量が大きく変わることを身に染みて理解した。そしてCNNの10層はFull-Connectの2層よりも軽快であった。

 

 

ざっくり,動かした結果自分の手で対戦するのが最も明快な評価であった。かなり面白いと思ったのは以下の点。

0.即指し&再現性100%。まぁ当然ではあるがw

1.駒の動かし方は概ね学習してる(初心者レベルはクリア)

2.序盤と終盤は学習データから除外したのに,初手は角道を開けるなど駒連携を考えた序盤

3.付き合った「歩」などの当たりの駒は即取る。(実際は悪手も多い)

4.王手は回避する。陣形崩壊前に早逃げ等も見られた。(悪手となることも多い)

 

酷いなぁと感じたのは以下の点。

1.遠見の「角」に気づかない。飛車・香と比べ学習しづらいのかも。王手回避ミスすら出る。

2.成り駒は動かせるのに,駒成りの手が指せない。そもそも別の層のデータなので別の駒と認識しているのかな。そして,学習機会は確かに少ない。人間だと嬉しい指し手として覚えるのは早いが。

3.そして恐ろしく弱い。不正な手を指さないように補正をしてfloodgateに放流したが連敗である。負けないとレーティングが付かないと言われるのと同様に一度も勝たないとレーティングが付かない。(どのプレーヤーか分かる人は分かると思う。)

 

世界コンピュータ将棋選手権の影響でfloodgateがインフレをしている中へぼいプレーヤーを投入した件はここでお詫びする。一勝くらいしたかった・・・