[ ホームページ ] [ 携帯用URL ]
将棋所のサポート掲示板
将棋所についての質問やバグ報告、USIエンジンの作成報告などに使用して下さい。

[ EZBBS.NET | 新規作成 | ランキング | オプション ]
iモード&(絵文字)、au対応!ケータイからも返信できる無料掲示板!
名前
 E-mail 
題名
内容
   タグ有効 改行有効 等幅フォント
URL



225.Windows8で、「PCが保護されました。」となり起動しない。 返信  引用 
名前:lawamura48    日付:2013/1/4(金) 19:36
Windows8で、「WindowsによってPCが保護されました」となり、
「Windows Smartscreenは認識されないアプリの起動を停止しました。
このアプリを実行すると、PCに問題が起こる可能性があります。」
でストップします。
将棋所が起動しません。



229.Re: Windows8で、「PCが保護されました。」となり起動しない。
名前:将棋所の作者    日付:2013/1/4(金) 21:33
例えば、以下のところに説明がありますが、

http://qa.support.sony.jp/solution/S1209070041490/

[詳細情報]を選択して内容を確認してから[実行]ボタンを選択すると、将棋所が起動すると思います。


231.Re: Windows8で、「PCが保護されました。」となり起動しない。
名前:lawamura48    日付:2013/1/5(土) 10:22
将棋所の作者さん、
どうもありがとうございます。
おかげで実行できるようになりました。

219.検討時の評価値の正負について 返信  引用 
名前:山猫    日付:2012/11/26(月) 2:53
いつも将棋所を使わせていただいており、ありがとうございます。

棋譜解析時の評価値は、常に先手が有利ならプラス、後手が有利ならマイナスとなっています。検討時も同様に、先手有利ならプラス、後手有利ならマイナスに表示するオプションを追加していただくわけにはいかないでしょうか?
というのも、検討時に現在は先手が有利なのか、それとも後手が有利なのかと常に考えなければならないので、プラスなら先手有利、マイナスなら後手有利と固定してしまったほうが分かりやすいと思うからです。
よろしくお願いします。



220.Re: 検討時の評価値の正負について
名前:将棋所の作者    日付:2012/11/27(火) 20:38
確かに、検討時と棋譜解析時で後手の評価値が反転するので、わかりにくいというのは思っていました。ご要望の通り、そのようなオプションを追加しようと思います。
表示設定ダイアログに「対局と検討で後手の評価値を反転表示」というチェックボックスを用意して、それがオンなら対局時と検討時の後手の評価値を反転表示するようにします。
また、棋譜解析時には、メインウィンドウの表示と棋譜解析結果ウィンドウの表示が食い違うのを防ぐため、メインウィンドウの後手の評価値を常に反転表示にしようかと思っています。ただ、そのやり方がいいかどうかよくわからないので、もっといい方法があるかどうか、もうちょっと考えてみます。


221.Re: 検討時の評価値の正負について
名前:山猫    日付:2012/11/27(火) 22:17
さっそくの返答ありがとうございます。
気長に待ちますので、余裕があるときにでも対応していただけるとありがたいです(^^


222.Re: 検討時の評価値の正負について
名前:山猫    日付:2012/12/11(火) 21:24
2.7.0ダウンロードさせていただきました
後手の評価値が反転表示できるようになって、分かりやすくなりました。
こんなに早く対応していただき、ありがとうございました。

217.(untitled) 返信  引用 
名前:名前    日付:2012/11/19(月) 21:45
Windows8ではうまく作動しないのでしょうか?



218.Re: (untitled)
名前:将棋所の作者    日付:2012/11/19(月) 23:43
将棋所は.NET Framework 2.0を使っているのですが、Windows8と一緒にインストールされる.NET Frameworkのバージョンは4なので、2.0とは互換性がありません。そのため、.NET Frameworkの古いバージョンのインストールが必要になります。
Windows8の製品版を持っていないので詳しいことがわからないのですが、将棋所を起動しようとして「.NET Framerowkのインストールが必要です」みたいなダイアログが出たら、それに従ってインストールして下さい。そういうダイアログが何も出なかったら、以下のところから、.NET Framework 3.5をインストールして下さい(3.5は2.0を含んでいるので問題ありません)

http://www.microsoft.com/ja-jp/download/details.aspx?id=22

なお、近いうち、使用する.NET Frameworkを4に変更した、新しいバージョンを出そうかと思っています。

210.インタプリタ 返信  引用 
名前:SaE    日付:2012/9/9(日) 22:1
こんにちわ。
数日前より使わせてもらってます。

簡易的な解析などを行いたいのですが、
エンジンにインタプリタ(テキストファイル)を直接使えるようにしてもらえないでしょうか?



211.Re: インタプリタ
名前:将棋所の作者    日付:2012/9/9(日) 23:39
すみません、ちょっと意味がわからないのですが、エンジンとして実行形式(exe)ではなくテキストファイルを登録したい、ということでしょうか?
それだとコマンドのやり取りとかできませんし、何を目的にそうしたいのかよくわかりません。具体的にどういう使い方をしたいのか詳しく教えて下さい。


212.Re: インタプリタ
名前:SaE    日付:2012/9/10(月) 0:41
お早いお返事ありがとうございます。

>エンジンとして実行形式(exe)ではなくテキストファイルを登録したい
いえ、初回にファイル本体をexeと仮定して関連付けを動かしてくれるだけで構いません。
ようはマクロやインタプリタの起動と同じことをしてほしいです。

(ちなみにほとんどのインタプリタは、テキスト自分自身を実行ファイルとして扱ったまま標準入出力や相対パスなどを構築しますので問題はないです。例えば、ダブルクリックで起動した場合、外部のプログラムから見てexeもインタプリタも変わりはありません)。

現状だと、インタプリタを走らる場合、exeを1クッションおき、
そのexeがインタプリタを起動してコマンドのバケツリレーをしなければならないので、出来ればお願いします。


213.Re: インタプリタ
名前:将棋所の作者    日付:2012/9/10(月) 21:31
インタプリタというのをあまり使ったことがないのでいまいち理解してないのですが、登録するファイルはexe以外で、エンジン起動時にはそのファイルを指定して、それに関連付けされたソフトで開くようにする、ということでしょうか。
ただ、それで本当にちゃんと動くのかよくわかりません。そのような動作と、現在の動作(エンジンを指定して、そのプロセスを起動する)は、呼ぶ側からすると別の動作になるからです。
要望されていることを実現するには、エンジンの起動方法を変更する必要があると思いますが、それで問題なく動作するか調べる必要があります。とりあえず、そういうことを要望されているという理解で正しいでしょうか?


214.Re: インタプリタ
名前:SaE    日付:2012/9/10(月) 22:24
そうゆう要望です、ありがとうございます。

要望理由は様々あるんですが、
ロジックの採用や処理の手順決定など、インタプリタを使ってチェックしたほうがその解析のためのプログラミング時間が1/10にも1/20にもなるんです。

あとはインタプリタだと実行中に好きな文字を読み込んで
それを記述を見なしてコンパイルして、変数や名前空間、関数なども共有して、
まるであたかも最初から一緒に記述されてコンパイルされてました。
みたいな乱暴な処理が普通にできたりするんです。

メモリの管理やデータ構造や内部データの関連付けの管理も
ほぼ全部自動でやってくれるのでテストさせるには一番いい感じと言う事です。
しかも実行時は常に、コンパイラと言語用デバッガーも平行起動して自由にアクセスさせてくれる過保護ぶりです。

実行は遅いけど、開発が手っ取り早くて楽ってことですね。
初期の開発はエンジンの基盤が確定するまでインタプリタでやりたいのでございます。
もちろん、その後もロジックのテストやエンジン自体の動作解析にインタプリタを使いたいという希望もあります。


起動さえしてしまえばプロセスのおしゃべりは変わりがありません。
ただ初回起動はテキストを全部コンパイルするので若干初回の返答が遅くなります。



インタプリタをお使いになったことがなくてテストがしたい場合は、
例えばPerlをインストールして
( http://www.activestate.com/activeperl
MSI(インストーラー版)だと環境変数や関連付けは自動でおこなわれます。再起動しないと環境変数はダメかもしれません)。

print "test\n";

とだけ書かれた 拡張子 .pl のファイルを作りダブルクリックしてみてください。
exeと同様の標準出力が得られます。(一瞬で終了しますので目視は出来ませんが)。


あとはコマンドで開く場合は(環境変数がちゃんとなってるなら)
perl ファイル名
とすればあたかもそのテキストファイルがexeであるかのように起動できるはずです。


ちなみにこの掲示板もインタプリタで出来てると思います。
一回アクセスするごとにテキストがコンパイルされてるはずです。
初回返答が間に合わないほどコンパイルが遅くなったりはしないと思います。


215.Re: インタプリタ
名前:将棋所の作者    日付:2012/9/13(木) 21:49
インタプリタのファイルを指定して、それを関連付けされたソフトで開くのはできるのですが、そのように起動した場合にコマンドのやり取りをする方法がわかりませんでした。
そちらではリレー用のexeファイルを既に作っているということなので、どのように作ったのか教えていただけないでしょうか。


216.Re: インタプリタ
名前:SaE    日付:2012/9/14(金) 8:45
すみません、お騒がせしております。
exeもインタプリタで作っていたのでたぶんCとはやり方が違ったんだと思います。
ただいま出張中でございまして、手元にファイルがございません。

一応、私の環境下では、
PerlやPython、Rubyなどのプログラムファイル(実質テキストファイル)
をexeとみなしてコマンドから起動させると、それ自体がexeであるかのように動くので、その方法で起動しています。

関連付けが正常ならば実は、
(例えばPerlなら)
"Perl ファイル名" と書いて起動しますが、
単に "ファイル名" としただけでも起動するのでそれを採用してました。
(別のプログラムからでも、プロンプトからでも、ファイル名を指定すればexeと同等に起動して標準入出力がやり取りされた)。



ただ、お願いしておいて申し訳ないのですが、
現在この問題は別の方法で解決されました。

バケツリレー方式を取りやめ、
GUIから自身が起動された瞬間、
別プログラムであるインタプリタ(思考エンジン)を起動しつつ、
自身のプロセスをエンジンに置き換えて、
その場で自殺します。(execと言われるやつです)。

うまいこと他人を自分に改ざんしつつ自殺が出来たようで、
入出力も、GUIと思考エンジンが直通できました。


なんとか対応しようとご苦労いただいたみたいで、
本当にありがとうございます。

207.エンジン設定の変更のみ行ったとき、最後の"quit"が受信されない 返信  引用 
名前:NB0    日付:2012/7/8(日) 21:26
将棋所 Version 2.5.2をありがたく利用させていただいております。
早速ですが、例えばエンジンとしてLesserKaiを選んであるとして、将棋所のメニューから
 [対局]→[検討]→[エンジン設定]ボタンクリック→[OK]ボタンクリック
とすると、デバッグウィンドウを見る限り次の通信を行うようですが、
>C:usi
<C:id name Lesserkai 1.3.3
<C:id author Program Writer
<C:option name BookFile type string default public.bin
<C:option name UseBook type check default true
<C:usiok
>C:setoption name BookFile value public.bin
>C:setoption name UseBook value true
>C:quit
最後の「quit」が実際にはエンジンに受信されていないようです。

これは、Lesserkai.cppの70行目あたり(ReceiveThread()内)を
 if (strncmp(buf, "quit", strlen("quit")) == 0) {
  ::MessageBoxA(NULL, "'quit' received.", "info", MB_OK); // ←追加
  while (commandQueue.size() > 0) {
として、"'quit' received."のダイアログボックスが出ないことから確かめられます。
(Windows 7環境でVS2010にてビルド)

じゃあ"stop"の受信はどうなのか、と思い、LesserKai.cppの85行目あたりを
 if (strncmp(buf, "stop", strlen("stop")) == 0) {
  ::MessageBoxA(NULL, "'stop' received.", "info", MB_OK); // ←追加
  isStopReceived = true;
 }
としてみると、[検討]→[中断]で一瞬だけ"'stop' received."のダイアログボックスが出て、[OK]ボタンがクリックされるのを待たずに勝手に終了するか、まったく出ないか、です(発生比率1:9ぐらい)。

これらのことから、どうも将棋所がquit送信とほぼ同時にエンジンのプロセスをabortする挙動になっているように見られるのですがどうでしょうか。

この挙動は、自作エンジンで"setoption name"以外を受信したとき通知されたオプション設定をまとめてファイル保存する、というしくみにしたら、[検討]→[エンジン設定]ボタンクリック→[OK]に限り動かなかったので気がつきました。
これをLesserkaiのように"setoption name"受信毎に行うことは可能ですが、本当にエンジンのプロセスが将棋所の"quit"送信とほぼ同時にabortされるのだとすれば、保存処理完了までの時間マージンが取れない恐れがあります。また、LesserkaiのReceiveThread()内のコメントを見る限り、過去には受信できていたように見受けられますが…



208.Re: エンジン設定の変更のみ行ったとき、最後の"quit"が受信されない
名前:将棋所の作者    日付:2012/7/9(月) 21:42
まず、将棋所は、quitを送ると同時にエンジンを強制終了させる、ということはやっていません。エンジン設定ダイアログでOKを押してもsetoptionとquitを送るだけです。例えば、quitを受信しても終了しない(exit()を呼ばない)エンジンを作って、タスクマネージャでエンジンのプロセスを見るとわかると思います。

> これは、Lesserkai.cppの70行目あたり(ReceiveThread()内)を
>  if (strncmp(buf, "quit", strlen("quit")) == 0) {
>   ::MessageBoxA(NULL, "'quit' received.", "info", MB_OK); // ←追加
>   while (commandQueue.size() > 0) {
> として、"'quit' received."のダイアログボックスが出ないことから確かめられます。
> (Windows 7環境でVS2010にてビルド)

同じようにやってみましたが、ダイアログは表示されました。ただ、なぜか前面に出てこないので気付きにくいかもしれません。下のタスクバーにダイアログのアイコンが表示されているので、それをクリックすると前面に出ます。

> じゃあ"stop"の受信はどうなのか、と思い、LesserKai.cppの85行目あたりを
>  if (strncmp(buf, "stop", strlen("stop")) == 0) {
>   ::MessageBoxA(NULL, "'stop' received.", "info", MB_OK); // ←追加
>   isStopReceived = true;
>  }
> としてみると、[検討]→[中断]で一瞬だけ"'stop' received."のダイアログボックスが出て、[OK]ボタンがクリックされるのを待たずに勝手に終了するか、まったく出ないか、です(発生比率1:9ぐらい)。

USIプロトコルでは、エンジンはstopを受信したら思考を打ち切ってbestmoveを返すことになっています。将棋所で検討する場合、検討中に中断ボタンを押すとエンジンにstopを送り、それに対してbestmoveが返ってきたらquitを送るので、そこでエンジンが終了するという流れになります。Lesserkaiで検討させてみて、そのログを見るとわかると思います。
しかし実際には、stopを送ってもbestmoveを返さないエンジンがあるので、そういうエンジンの対策として、stopを送ってから1秒たってもbestmoveが返ってこなかったら強制終了するようにしています。
この例の場合、エンジンがstopを受信するとダイアログを表示するので、そこで処理が止まってしまい、bestmoveを返さないために1秒後に強制終了されることになります。

というわけで、quitを送ったからといって、その場ですぐ強制終了させているわけではありません。ただ、quitを送っても終了しないエンジンもあるかもしれないので、そういうエンジンのプロセスが残っていたら、適当なタイミングで強制終了させています。例えば、検討ダイアログからエンジン設定ダイアログを開いた場合、OKボタンを押してもquitを送るだけですが、そのあとで検討ダイアログを閉じるとき、さっきのプロセスが残っていたら強制終了させています。


209.Re: エンジン設定の変更のみ行ったとき、最後の"quit"が受信されない
名前:NB0    日付:2012/7/14(土) 13:44

大変失礼いたしました。
Lesserkaiによる再現を試みたところ、おっしゃるとおり、ダイアログボックスが出ていたのだが見損ねた、ということだったようです。

自作エンジンの方も調べ直したところ、強制終了はされるものの、そのタイミングが(quitの場合)"quit\r\n"受信のタイミングよりずっと後(改めて「エンジン設定」ボタンをクリックした時、等)であることを確認いたしました。当初のチェックが甘く申し訳ございません。

なお、Lesserkaiがストリームからはfgets()で常に1行丸ごと読み込む方式なのに対し、自作エンジンの方は実はストリームからトークン単位で読むつもりでstd::cinを使っておりまして、std::cinを使う場合の解決策をご報告できればせめてもの埋め合わせになるかと思い、下記組み合わせをいろいろ試してみたのですが、トークン単位の読み込みは、quitやstop等、最後のトークンの読み込みでブロックし、結局うまくいきませんでした。
[初期設定] -- 下記を全て有効、または部分的にコメントアウト等
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
std::ios_base::sync_with_stdio(false);
std::cin.rdbuf()->pubsetbuf(NULL, 0);
std::cin.setf(ios::skipws);
[読み込み]
string token; std::cin >> token または
string token; char buf[1024]; scanf("%s", buf); token = buf;

というわけで、Lesserkai方式にして解決しました…
std::cinよりfgets()の方が読み込み速度上も有意に有利らしいので、これで行きます。

ページ: |< << 44 45 46 47 48 49 50 51 52 53 

無料アクセス解析

アクセス解析の決定版!無料レンタルで最大100ページ解析!

   投稿KEY
   パスワード

EZBBS.NET produced by InsideWeb