Author Archives: admin

C#のRichTextBoxのフォントが途中で変わる

RichTextBoxのIMF_DUALFONTIMF_AUTOFONTフラグをクリアする。デフォルトでオンになっている。

参考:http://pineplanter.moo.jp/non-it-salaryman/2017/11/25/post-5255/

VMwareのゲストのWindows10にWSL2のubuntuがインストールできない

Error: 0x80370102 The virtual machine could not be started because a required feature is not installed.

このエラーはゲストのvmxに以下の設定を記述する。

Error: 0xc03a001a The requested operation could not be completed due to a virtual disk system limitation. Virtual hard disk files must be uncompressed and unencrypted and must not be sparse.

ubuntuをインストールするフォルダがntfs圧縮されているとインストールできない。以下のフォルダの圧縮を解除する。

アプリがクラッシュしたときクラッシュダンプを作成する

レポジトリ

レジストリへ登録

レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\iwillcrash.exe以下にダンプ情報を作成する。

これはレポジトリにあるcreatecrashdump.regを実行することで作成できる。

クラッシュさせる

iwillcrash.exeを実行して、「Access Null Pointer」をクリックするとアプリが落ちて、%LOCALAPPDATA%\CrashDumpsにダンプファイルが作成される。

任意のアプリの登録

上記の実例ではiwillcrash.exeというファイルのアプリのみのダンプをとるので、レジストリキーのiwillcrash.exeのキー名を対象アプリのファイル名に変えれば任意のアプリのダンプをとることができる。

参考情報

Registry:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

bashのifとtestとサブシェル

ハマったので適当なまとめ

if 1

1はコマンドではないので文法エラー

if x

xはコマンドではないので文法エラー。

ifの次にはコマンドを書かなければならない。

if uname

unameはコマンドで正常終了して0を返す。0は真と扱われる。

uname -b

unameには-bというオプションはないので、エラーになり1が返される。0以外は偽と扱われる。

if $(command)

$(command)はコマンドではなく、commandを実行した結果の標準出力なので文法エラー。

if [ $(command) ]

[はコマンド。$(command)[の引数、$(command)commandを実行し結果の標準出力の文字列を表す。][の引数。[の終わりを表す。[は文字列が与えられたときは長さが0でないときは真になる。unameを実行すると標準出力に文字を出力するので真になる。

if [ $(command -b) ]

uname -bはエラーになって標準出力にはなにも出力されないので、[には長さ0の文字列が与えられ偽になる。

問題:システムの種類によって処理を分ける

システムがMingかどうかを判定するif unameの出力がgrep -qの入力になり、MINGWで始まるときは0を返すので真になる。-qは標準出力に結果を表示しない。つまり戻り値だけを見る。

別回答

unameの出力がMINGWで始まるときはgrepが標準出力に結果を表示するので、それがあれば真になる。

ここでは[[[の違いは考慮してないが同じだと思う。[は古い形式のただのコマンド。[[はバッシュの組み込みだと思う。[[のほうがいいといわれている。

ダメな回答

grep -qは決して標準出力に出力しないので常に偽になる。

ソース

https://github.com/ambiesoft/blogprogs/tree/master/5786

static_assertで型チェック

is_sameで同じ型かどうかを判定する。
declspecで式から型を得る。
invoke_resultで関数の戻り値の型を得る。

ソース:https://github.com/ambiesoft/blogprogs/tree/master/5775/static_assert_type_check

emplace_backでムーブコンストラクタがあるのにコピーコンストラクタが呼ばれる

puch_backよりもemplace_backがいいと言われていて実験したら、push_backだとコピーコンストラクタが呼ばれないのに、emplace_backだと呼ばれる現象が発生。

結論

ムーブコンストラクタにnoexceptをつければコピーコンストラクタの代わりにムーブコンストラクタが呼ばれる。

ソース:https://github.com/ambiesoft/blogprogs/tree/master/5767