持ち駒の処理に着手。
成り駒をそのまま手持ちにしている。 “xampp のお手軽感がちょうどいい、からのデバッグ その2” の続きを読む

本業回帰中
持ち駒の処理に着手。
成り駒をそのまま手持ちにしている。 “xampp のお手軽感がちょうどいい、からのデバッグ その2” の続きを読む
最近、JavaScript づいているので、ローカルにテスト環境を構築すべく xampp を導入した。Thinble もお手軽でよかったのだが、ディレクトリ掘って複数ファイルつっこんでいくとさすがに不安定になったので。
ついでにサイトのバックアップも取ったが、それでも xampp ディレクトリのサイズは1G 未満。
これは便利。
さっそく、将棋山脈というところで生成された kif ファイルを JSKifuForWP で読み込めないか検討。
なんとか、コメントは kif ファイルでも読み込めるようになった。一歩前進。 “xampp のお手軽感がちょうどいい、からのデバッグ” の続きを読む
今日は、JSKifuForWP (その後のResponsive-Kifu)のコードをいじる。
コメント出力も可能になった。
JSKifuForWP は読み込むことのできるデータ形式は、nkif 形式のみである(→その後、kif 形式も読めるように改変)。nkif というのは、私が勝手に名付けた名称で、その出自が某放送局のためこの名前となっている (笑)。
今日の作業でそのデータ構造はほぼ理解した。
nkif は一局面を例えば
p=1b191716101617191b0014000000000012001d1d1d1d1d1d1d1d1d0000000000
00000000000000000000000000000e000000000000000e000e0e0e0e0e0e
0e0003000000000005000c0a08070207080a0c26;
h1=;
h2=;
という形で表す。p は盤面の駒配置、h1 は先手の持ち駒、h2 は後手の持ち駒、である。
p はここでも調べていた。1一が 1b で香、2一が 19 で桂、‥‥というのはわかっていたのだが、これだと 81 * 2 = 162 文字で盤面の駒配置はすべて決定されるはずだが、実際には、164 文字ある。最後の 26 が余計だ。
今までこれがわからなかったのだが、わかってみればなんことはない、これは着手位置を表すマーカー画像の位置そのものだった。初手▲2六歩と飛車先を突いたので、こうなっている次第。余計な情報なので落としてもいいのかもしれない。
そこまでわかったので、テスト的にデータベースも作ってみた。とりあえず三局ほどデータを挿入。
この状態で
SELECT * FROM tbl_kifu where kifu like ‘%p=1b19171610161719‥(略)‥0a0c26;%’
を実行(SQL文はいつまでたっても慣れないっす)。
結果は、
問題の処理時間は、
これだと100局程度でも、同一局面をひろってくるのに数秒かかりそう。
んー、ちょっと遅いかな。
感想としては
・それっぽいシステムは組めそう
・が、「こなれた」システムをつくるのはそれなりのノウハウが必要
と思った。
やはり、データベースとか検索とかは苦手だ。
この blog は、レンタルサーバ上で WordPress を使っているのだが、ローカルに xampp を導入してそのコピーを置いている。
以前は VMware に Ubuntu を入れ、apache サーバを立てて…などとやっていたのだが、正直、バックアップをとる程度であれば、xampp の方が楽だ。
ただ、xampp の phpMyAdmin にはバグがあって、かなりの頻度で「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください」というメッセージが出るようだ。
修正方法は、ググればちらほらでてくるのだが、このとき謎のユーザ pma さんが存在することに気づいて、最初戸惑った。
要するに、『MySQL を管理ユーザ root で phpMyAdmin から直接操作するのは危険なので、代わりに pma さんを作り、pma さんに権利を委任することで各種データベースの操作を行う』ということらしい。
修正している最中、よくわからなくなってきたため、pma さんをごそっと削除し、再度、pma さんをアカウント登録してパスワードなどを設定し、権利を委譲したら、エラーメッセージは嘘のように消えたので、まあ、この理解でいいのだろう。
そういえば、pma というのも Php My Admin の略なんだろうな。なんか納得。
WordPress 使ってながら、PHP に関してはまったく無知だったので、CakePHP 3 をちょこちょこお勉強。
まずは公式チュートリアルから。最初のサンプルのブックマークがどうしたこうしたはまったく興味なかったのでブログの方から試す。
おそらく最終成果物はこうなると思います。
エンジニアというものは、自分のつくったプロダクツに責任を持ち、万難を排して保守にに努めるべし(略)…と考えていた時期が私にもありました。
実際には、大人の事情等があってそう理想的にはいかないんでしょうが、特にIT系に深入りすると「けっこう使えるのになぜかメンテが今一つで敬遠されているプロジェクト」が山ほどあることに気がつきます。「食わず嫌いの方も多いかもしれないが、こう使えばけっこう使えるよ」的なことを書いていきたいと思います。
まず、Java 系の IDE である NetBeans から。
Java 系の IDE というと eclipse の方がメジャーなんでしょうが、多機能すぎて私は使用を途中で放棄しました。操作が今一つわかりにくいっていうか。。。
もちろん、NetBeans にも悪いところはかなりあるのは知っています。例えば、プロジェクトから WildFly などアプリケーションサーバを走らせると、ほとんどの場合、停止しない、とか。最近もこの手の問題に直面しててこずりました。ですが、なにかちょっとしたコードを書きたいとき、断然、NetBeans の方が便利だと思います。プロジェクトをつくる仰々しさがないっていうんでしょうか。。。
ですが、残念なことにそのチュートリアルとかがひどかったりするのですね。
まず、なんでこんな迂遠な書き方するんだろう? 翻訳ということを差し引いてもちょっとどうかと思います。やっていることは単純で「アプリケーションサーバ上に二つの JSP ページを載せる。一方のフォーム上の入力欄に文字列を書き込み、投稿ボタンを押下するともう一方のページに遷移し、その文字列を表示する。コントロールは bean でおこなう」というものです。最初にこれを書いておかないものだから、目的地がどこなのか初心者は混乱します。
要するに
情報も古いです。サンプルソースがなにしろ JDK 1.6 対応だったりします。
今回、手を出したついでに同内容を 『JDK 1.8 + NeteBeans 8.1 + WildFly 10』で作りなおしたものを github に上げておきました。
これを作成したときのポイントは
・操作は下手にショートカットなどはつかわず、自分の手慣れたやり方でOK。(ページやクラスの作成などは右クリック→新規追加で十分でしょう)
・コードは基本コピペ。
・IDE はプラグインなどが不安定なものが多い。デプロイは面倒がらずに http://localhost:9990 からおこなう。
といったところでしょうか。
なお、chrome では、現在(2017年夏)、デフォールトでは Java が動きません。npapi というやつを有効化しておきましょう。
アドレスバーに以下を入力。
chrome://flags/#enable-npapi
なんか警告がでるが再起動。
もっとも単純にはこれで使えるようになるはず。
なお、JSPとは JavaServer Page の略で、サーブレットと同じくサーバ上で動作し、ブラウザで閲覧できる Java のウェブページです。
具体的なコードは、以下のような感じ。
<%@ page contentType="text/html;charset=UTF8" %>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<%
out.println(new java.util.Date());
%>
</body>
</html>
これを、適当なコンテナに載せブラウザでアクセスするとハロワールドしてくれます。
ちょっと解析してみました。
初手が
p=1b191716101617191b00140000000000120……. ;
となっていて最初何のことかわからなかったが、これは局面表示のようです。
1. 最初の2文字を切り出し、16進数として解釈。 ( ‘1b’→27 )
2. 次の2文字も同様に。( ’19’→25)
以下同様
で、27 は後手香車、25 は後手桂馬と別の場所で定義されているので、これは「1一, 2一, … のマスに置かれている駒の種類を 9×9 まで書き出したもの」ということになります。 sfen に似てますが、駒記号の解釈がわかりやすく、ブラウザ(JavaScript)を用いたクライアント・サーバシステムには相性の良い形式といえるのではないでしょうか。
air-h-128k-il
container1-1
container1