かそくそうち このページをアンテナに追加 RSSフィード

2017-03-11

[]Visual Studio 2017 on Boost 1.63.0 13:02 Visual Studio 2017 on Boost 1.63.0を含むブックマーク Visual Studio 2017 on Boost 1.63.0のブックマークコメント

Visual Studio 2017がリリースされたのでビルド試してみました。

フォルダ構成が変わったり、インストール先がレジストリに書き込まれなくなったり、いろいろ変わっていてBBv2のコンパイラ自動検出が上手く動きません。

とりあえず、user-config.jam

local vc15dir = C:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\\2017\\Professional\\VC ;
using msvc
    :
    15.0
    :
    <setup-amd64>$(vc15dir)\\Auxiliary\\Build\\vcvars64.bat
    <setup-i386>$(vc15dir)\\Auxiliary\\Build\\vcvarsamd64_x86.bat
    <setup-arm>$(vc15dir)\\Auxiliary\\Build\\vcvarsamd64_arm.bat
    ;
using msvc ;

ならいけそうです。既定のインストール先でもエディションでパスが変わるので注意。

あとオートリンクのバージョンが合わないので、BOOST_ALL_NO_LIB=1でビルドしないと駄目です。

cl.exeの製品バージョンはプロパティ見るかぎり14.1っぽいんだけど、15.0でいいのかなぁ。

Boostの最新コードでも15.0で対応が進んでいる模様。


(03/21 追記)

その後「14.10」になって、接尾辞も「vc1410」になった挙句、結局「14.1」と「vc141」に落ち着きそうな感じ。


(04/20 追記)

Boost 1.64.0 で「14.1」で使えるようになりました。

「primary test compiler」でなく、「additional test compiler」ということでまだ試験的サポートのようです。

user-config.jam

using msvc ;

だけでOK

%TEMP%\b2_msvc_15.0_vcvarsall_amd64.cmd
%TEMP%\b2_msvc_15.0_vcvarsall_x86.cmd
%TEMP%\b2_msvc_15.0_vcvarsall_x86_arm.cmd

は将来のリリースでトラブらないように消しておいた方が安全。

トラックバック - http://d.hatena.ne.jp/y-hamigaki/20170311

2017-02-21

[]Windows Kitのバージョンアップrewrite-setup-scripts 01:34 Windows Kitのバージョンアップとrewrite-setup-scriptsを含むブックマーク Windows Kitのバージョンアップとrewrite-setup-scriptsのブックマークコメント

超久しぶりですが、備蓄録として書いておこうかと。

Direct3D12のサンプル見て書いたコードのビルドが通らなくて、おかしいなと思ったらWindows Kitが一つ古かったのです。

で、VS2015 Update3のセットアッププログラムから最新のWindows Kitをインストール

VS2015コマンドプロンプトでは確かに更新されているのに、素のコマンドプロンプトからb2でビルドすると相変わらず古いパスを見にいってる。

確かVSのコマンドラインツールを呼ぶ度にvcvars32.batとかを呼んでたはずと思い、b2に-nオプション付けてみたら、

%TEMP%\b2_msvc_14.0_vcvarsall_amd64.cmd
%TEMP%\b2_msvc_14.0_vcvarsall_x86.cmd
%TEMP%\b2_msvc_14.0_vcvarsall_x86_arm.cmd

なんてファイルが呼ばれてた。

どうも毎回バッチファイル実行すると遅いので、必要な環境変数の設定だけ抜き出してキャッシュしている模様。

ここに古いインクルードパスが残っていたのが原因で、このファイルを消してからビルドしたら直りました。

あるいは、user-config.jam

using msvc : : <rewrite-setup-scripts>always ;

とすれば毎回再生成されますが、毎回やる必要もないので、終わったら既定値の <rewrite-setup-scripts>on (もしくは無指定)に戻しておいた方がよいでしょう。

トラックバック - http://d.hatena.ne.jp/y-hamigaki/20170221

2012-07-21

「DQX スキルシミュレータ」v1.0

[]ドラゴンクエストXスキル考察支援「DQX スキルシミュレータ」v1.0が公開 23:29 ドラゴンクエストXのスキル考察支援「DQX スキルシミュレータ」v1.0が公開を含むブックマーク ドラゴンクエストXのスキル考察支援「DQX スキルシミュレータ」v1.0が公開のブックマークコメント

 「DQX スキルシミュレータ」は人気RPGドラゴンクエスト最新作ドラゴンクエストX(DQX)のスキル振り分けを試せるソフト。Windows XP/Vista/7および同64bit版に対応するフリーソフトで、作者のWebサイトからダウンロードできる。


 前作では全職業で獲得したスキルポイントを任意の職業のスキルに振り分ける事ができたが、本作では職業毎の管理となり他の職のスキルへ割り振ることができない。このため、スキルポイントが余っているにも関わらず欲しいスキルを獲得できなかったり、振り分けるスキルがないといったことも発生しうる。ゲーム中では基本的に一度割り振ったスキルポイントを取り消すことはできないが、本ソフトを利用することで事前に様々な振り分け方をシミュレートすることが可能だ。また、各職業でどのスキルに何ポイントを割り振ったか確認できるのも便利。


 なお、初期状態では前作(ドラゴンクエストIX)のスキル設定になっているので注意。設定を変更するには、付属のINIファイルを編集する必要がある。


著作権者】郵便はみがき 氏

【対応OSWindows XP/Vista/7/XP x64/Vista x64/7 x64

【ソフト種別】フリーソフト

【バージョン】1.0(12/07/21)


URL

DQX スキルシミュレータ

http://www12.ocn.ne.jp/~dante98/zip/DQXSkillSim.zip

トラックバック - http://d.hatena.ne.jp/y-hamigaki/20120721

2011-05-14

[][]boost::progress_display++ 21:23 boost::progress_display++を含むブックマーク boost::progress_display++のブックマークコメント

Boost.懇親会 #5 名古屋

http://partake.in/events/e9131e9c-0662-4179-bbd4-b0648909f921

boost::progress_displayの発表をしてきました。


発表資料

http://www12.ocn.ne.jp/~dante98/progress_display.pptx

ソースコード

http://www12.ocn.ne.jp/~dante98/zip/progress_display.zip


前々からboost::progress_displayが苛められているのを見るたびに、インタフェースでなく実装の問題だと思っていたので、二つの別実装を紹介しました。

以下、実装周りの解説です。


一つ目は、単純なWin32 GUI版です。

boost::progress_displayのインタフェースに合わせるためにはメッセージループを別スレッドで回す必要があります。

また、「ウィンドウの生成」、「メッセージループ」、「ウィンドウの破棄」は同じスレッドで行う必要があり、真面目に実装しようとすると意外と面倒だったりします。

progress_displayからメッセージループへの通知はウィンドウメッセージを投げることで行っています。

スレッドに投げるメッセージは

  • destroy_msg(ウィンドウ破棄)
  • set_expected_msg(最大値設定)
  • set_count_msg(現在値設定)

の三つです。

ウィンドウが生きているかどうかは他のスレッドから確認できないので、ウィンドウハンドルではなくスレッドに対してメッセージを投げています。

progress_display一つに対して一つのメッセージループスレッドを使っているからできる手法ですが。


もう一つの実装は、「Progress display - アンサイクロペディア」に載っている例(?)を実装したものです。

AAが「MS Pゴシック」前提なことと、ソースコードにShift JISで書きたかったことから日本語環境(コードページ932)限定です。

普通に論理フォントを作成してGDIで描いています。

ダブルバッファリングは手抜きでWS_EX_COMPOSITEDスタイルを使っていますが、もうXP以降前提でよいでしょう。

引数は、

boost::progress_display progress(count, std::cout,
    "クソスレ\n"
    "普通\n"
    "優良スレ",
    "スレ評価嬢",
"     88彡ミ8。   /)\r\n"
"     8ノ/ノ^^ヾ8。( i )))\r\n"
"     |(| ∩ ∩|| / /   <ココ!\r\n"
"    从ゝ__▽_.从 /\r\n"
"     /||_、_|| /\r\n"
"     / (___)\r\n"
"    \(ミl_,_(\r\n"
"      /.  _ \\r\n"
"     /_ /  \ _.〉\r\n"
"   / /   / /\r\n"
"   (二/     (二)\r\n"
);

こんな感じで設定します。後ろ三つが「凡例」、「タイトル」、「カーソル」になっています。

カーソルのホットスポットは最上部の右端に決め打ちで、かつ最後の文字は省いて計算しています。(つまり「     88彡ミ8。   /」の幅)

なので、アンサイクロペディアの例以外のAAだと上手く動きません。


ついでに、発表に使ったコマンドプロンプトもどきの解説。

というご要望にお応えして、即興で縞模様のコマンドプロンプトを作りました。

時間がなかったのでコマンドの入力はコマンドライン引数から、標準入力標準エラー出力はなしです。

縞模様はGDIでベタ書きして、その上に出力を描画しているだけです。

コマンド実行は、スレッドを起こしてCreateProcess()して、1文字ずつ読んで画面更新してました。(非同期I/O面倒なので)

GetStockObject()で取得できるブラシが白/黒/灰色ぐらいしかなかったので、最初は白と灰色の縞模様だったのですが、色が重要っぽいのでちゃんとブラシを作りました。

あと、よく分かってなくて危うく縦縞にするとこでした。

で、こんな面倒なことしなくてもコンソールの設定変えるだけで出来たらしい、、、。

トラックバック - http://d.hatena.ne.jp/y-hamigaki/20110514

2010-12-05

[]D言語版AATT 16:37 D言語版AATTを含むブックマーク D言語版AATTのブックマークコメント

メタプログラミングの会

http://atnd.org/events/9072

http://d.hatena.ne.jp/kmizushima/20101204/1291479701

以前作成したAATTを発表してきました。


発表資料

http://www12.ocn.ne.jp/~dante98/aatt.pptx

ソース

http://www12.ocn.ne.jp/~dante98/zip/aattd.zip


赤黒木の説明→実装アルゴリズム→Dへの移植話という流れです。

読み返してみるとC++版(.aattを食わせるとC++用のヘッダを出力)の話がなくて、いきなりDへの移植になってたり説明が足りないところがチラホラ。


今回はC++版をDへ単純移植したものでしたが、ソース中にAATTのパターン列を並べると長くて読みにくく、

一つの変換毎にインスタンス化して、パターンマッチの順次評価や再帰D言語側の処理に任せた方が分かりやすそうでした。

質問タイムにも「もっと汎用的に使えないのか?」といった意見をもらいましたし、コードに埋めること前提で再設計してみると面白いかもしれません。


あと、D版動かしていてバグを見つけたのでC++版も修正してあります。

http://www12.ocn.ne.jp/~dante98/zip/aattc.zip (CR/LF改行)

http://www12.ocn.ne.jp/~dante98/zip/aattc.tar.bz2 (LF改行)

count_black()が左部分木の黒高さ同士を比較していたので全くテストになってなかったという、、、。

トラックバック - http://d.hatena.ne.jp/y-hamigaki/20101205