Iwao dev.mish

気付いたことをメモしています.

この画面は、簡易表示です

Iwao

VC 2019 以降の include

投稿日 by Iwao

%LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props がないとの問い合わせが…


次の所は以前まとめたもの.VC 2010 以降は,これが引き継がれるものと思っていた.
VC include lib のパス
私の環境の VC 2022 で確認すると,ちゃんと引き継がれている.
VC 2022 プロパティ マネージャー
検索すると VC 2019 から Microsoft.Cpp.Win32.user.props は使用されなくなった?
Microsoft.Cpp.Win32.user.props file missing
Visual Studio プロジェクトの設定を共有または再利用する


今の所は Win32 のみなので,また今度時間がある時に調べる.
VC Linux の include 設定

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:

MFC OnUpdate… が来ない?

投稿日 by Iwao

自前の Doc::UpdateCommand で CCmdUI の処理を実装して,イベントが来なかった.
MFC OnUpdate... が来ない
原因は,範囲の指定が間違っていた.
ON_UPDATE_COMMAND_UI_RANGE (ID_Start, ID_End, OnUpdateCmd)
すぐに気づかなかったのでメモ.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


vector<long> などを文字列に

投稿日 by Iwao

std::vector<long> の文字列への変換.
何年も前に書いたコードで,使い方を忘れているのでそのまとめ.


次の様な関数を用意している.
template <class VX> tstring Vx_To_tstring(const VX& vx,LPCTSTR sp=_T(" "))
vxx_tstr.hxx  ::Vx_To_tstring
次の様な使い方で long の配列を文字列へ変換できる.
tstring vl_str = ::Vx_To_tstring<v_long>(long_ary) ;


クラスの配列のダンプ

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


ツールバーのコマンドが効かない

投稿日 by Iwao

ある AP の動作で,ツールバーの一部のコマンドが入らない.
ツールバーのコマンドが効かない
いろいろと確認すると,x64 exe で,リリース版,デバッグ版は関係ない.
x86 exe は問題ない(ちゃんと機能する).
2015/11 の exe でも同様の現象を確認.
メニューの同様のコマンドは問題ない.


ツールバーがちらつくので,UPDATE_COMMAND_UI の実装でうまくない部分があると思われる.
一時的に Disable にしているなど…


調べるのに時間がかかりそうなので,取りあえずメモ.
状態により,次の矛盾したものが呼ばれることがあったため修正.
pCmdUI->Enable(FALSE) ;
pCmdUI->Enable(TRUE) ;

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


WordPress のバックアップ

投稿日 by Iwao

Twitter を見ていたら,次の様なものがあった.
QNAPはWordPressを対象に、ライセンスフリーでオールインワンのバックアップソリューションを発表
QNAPはWordPressを対象に、ライセンスフリーでオールインワンのバックアップソリューションを発表
チュートリアルを見ると,WordPress のプラグインと MARS と言う NAS アプリを使うみたい.
How to Back up and Restore a WordPress Website Using Multi- Application Recovery Service (MARS)?


先ず,プラグインをインストールして「有効化」.
WordPress プラグイン QNAP NAS Backup


QNAP NAS に MARS をインストール.
QNAP NAS に MARS をインストール


WordPress の「QNAP Backup」で表示される「AccessKey」を「コピー」.
MARS の「アプリケーション」-「WordPress」で「サービスの追加」.
MARS の「アプリケーション」-「WordPress」で「サービスの追加」


MARS の「バックアップ」で「バックアップジョブの作成」.
MARS の「バックアップ」で「バックアップジョブの作成」
「今すぐバックアップ」でバックアップが始まる.


ログを見ると「成功」にはなっているが,転送サイズが 656 Byte なので,うまく動作していない?
QNAP NAS MARS  バックアップ結果


ここを同じ様にやってみたら,うまくバックアップはできたと思われる.
//dev.mish.work/wordpress のバックアップ結果

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DS116 entware

投稿日 by Iwao

localtime が正しく求められない ままの環境.
https://jml.mish.work/index.php/various/nas/synology-nas.html
ある程度 DS220+ に移行したので,SSH 接続環境の再設定.


CLI コマンドの導入.
DS220+ と同様
名前 :「SynoCommunity」
場所 :「https://packages.synocommunity.com/」
「SynoCli File Tools」をインストールして tree , mc , nano などを追加.
これで追加した tree は,localtime が正しく求められている.
DS116  tree -D


Entware のインストール.
Install on Synology NAS

Iwao@DS116:~$ sudo -i
Password:
root@DS116:~# mkdir -p /volume1/@Entware/opt
root@DS116:~# rm -rf /opt
root@DS116:~# mkdir /opt
root@DS116:~# mount -o bind "/volume1/@Entware/opt" /opt
root@DS116:~# uname -m
armv7l
root@DS116:~# wget -O - https://bin.entware.net/armv7sf-k3.2/installer/generic.sh | /bin/sh
--2022-06-15 14:51:04--  https://bin.entware.net/armv7sf-k3.2/installer/generic.sh

DS116  wget entware
ここまでで localtime はうまく求まる様になった.


タスクスケジューラの登録.
「作成」-「トリガーされたタスク」-「ユーザー指定のスクリプト」.
「Entware」「root」「ブートアップ」を指定.
「タスク設定」タブのスクリプトを記述するの所に,貼り付け.
NAS を再起動.


gcc のインストール.

Iwao@DS116:~$ sudo -i
root@DS116:~# opkg update
Downloading http://bin.entware.net/armv7sf-k3.2/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
root@DS116:~# opkg install gcc
Installing gcc (7.4.0-7) to root...

DS116  gcc インストール

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


TS-253D SSL 証明書の更新

投稿日 by Iwao

DS220+ を追加 して,その後いろいろと設定を変更したためか,TS-253D の証明書がうまく更新されない.
「コントロールパネル」-「セキュリティ」-「SSL 証明書…」-「証明書更新」でエラーになる.
原因は,以前「代替名」で指定していた jml.mish.work などがうまくなかったものと思われる.
現在 jml.mish.work は DS220+ の方に割り当てている.


もう一度,「証明書の交換」から入って,次の様に指定することで取得できた.
TS-253D  Let's Encrypt


同様に AS5202T の方も…
AS5202T  Let's Encrypt  エラー
こちらの場合は一度削除する必要があった.
AS5202T  Let's Encrypt


2022/06/13
Synology NAS DS116 は,まだ完全に移行できていないので,ポートマッピングの設定を一時的に変更して取得.
DS116  Let's Encrypt
ポートマッピング
次の画像は「既存の認証を書き換えます」としたもの.
Synology NAS Let's Encrypt 「サブジェクトの別名」の指定の間違い
「サブジェクトの指定の別名」での区切り文字(セミコロン)が間違っているため,「完了」が押せない.


あとは,それぞれの証明書をエクスポートして,リーバースプロキシを設定したサーバでインポート.
DS220+ ASUSTOR NAS の証明書のインポート

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


Win.ini [Mail] MAPI=1

投稿日 by Iwao

Win.ini がなくて MAPI が動作しなかった(Disable だった)と報告を受けた.


4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する.
それらのコードは MFC のコード docmapi.cpp を参考にしたもの.
VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている.
docmapi.cpp  ::GetProfileInt(_T("MAIL"), _T("MAPI"), 0)
最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない.


何もインストールしていない環境で Win.ini は存在する?
Win10 Pro 21H2 では次のものが存在している.
Win10 Pro 21H2  win.ini
何かをアンインストールすると削除されることがあるのか?

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


引数が正しくありません。

投稿日 by Iwao

自分で作成した AP のテストをしていて,「引数が正しくありません。」.
20 年位前から変更していないコードのバグだった.


かなりイレギュラーな操作をしない限り,現象は発生しない.
実際の操作としては,データの挿入場所を指定しないで,強制的に「確定」した場合.
またその操作の前にある手順やデータが影響する.


表示されるメッセージは,MFC のバージョンにより異なる.
また,Windows API 内でこのメッセージが表示されることもある みたい.
AfxThrowInvalidArgException VC 8  無効な引数が発生しました。
AfxThrowInvalidArgException VC 10  引数が正しくありません。


今回のものは,配列に対して,確保されている領域を超えてアクセスしたことが原因.
VC 2017 でデバッグ AfxThrowInvalidArgException


アクセスする前に,要素数が満たしているかのチェックをすることで回避できる.
if ( 2 < ary.GetSize() ) { data = ary[1] ; }


これって何とかならないものかといつも思ってしまう.
クラスとして書いた時には,デフォルト値を返すようにしたりしているが…

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


S.M.A.R.T. 障害が検出されました

投稿日 by Iwao

2022/05/06 に不良セクタが発生したドライブ.この時,プチフリーズの様な現象で気づいた.
E ドライブ 不良セクタ
すぐにデータなどは他のデバイス( \\DS220\Public\ )にコピーしたので,特に失われたものはないと思う.


その後テンポラリ( VC の Fallback や SymbolCache )として使って様子を見ていた.
時々,少し遅くなることはあったが,エラーになるようなことはなかったと思う.
前回,この PC の別のドライブが壊れた時のものは次の所.
https://mish.hatenablog.jp/entry/2021/03/04/PC_D_drive_WD_Red_


今日 CrystalDiskInfo を見ると「異常」に.
E ドライブ 「異常」
イベントビューアにも「重大」として記録されている.
E ドライブ 「異常」
もうダメみたい.どうしたものか?


* 不良セクタなどが発生した場合,バックアップがない場合のみコピーして,アクセスしない様にして下さい.
  「デュプリケーター」でコピーすることにより,失うものを最小限にすることができるかもしれません.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


Joomla! デジタル署名の期限切れ?

投稿日 by Iwao

QNAP NAS で,アプリのデジタル署名の期限切れのメッセージ.
QNAP NAS  メッセージ: [App Center] アプリのデジタル署名の期限が切れました。Joomla
どうも Joomla! の期限が 2022/05/20 までになっているみたい.
QNAP NAS  Joomla! デジタル署名の期限が切れています。
Joomla! でのパッケージは更新してるのに…
実際動作しているものは 3.10.9 になっている.
どこかに書かれている情報が更新されていないだけか?
よくわからないのでこのまま放置.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


MDI exe に lnk のドロップで開けない

投稿日 by Iwao

MDI exe に lnk(ドキュメントへのショートカット)をドロップすると,
MDI exe に lnk をドロップ 「エラーはありませんでした。」
—————————
BLAM
—————————
エラーはありませんでした。
—————————
OK
—————————


ショートカット先のドキュメントファイルであれば開ける.
一度 GetOpenFileName などで ダイアログを開くと,その後は問題ない.


デバッガで追いかけると,AfxResolveShortcut でエラーになっている.


対応としては InitInstance の最初に以下を追加.

	if (!AfxOleInit()) {
		AfxMessageBox(_T("OLE の初期化に失敗しました。")) ;
		return	FALSE ;
		}

今回これを調べたのは,WM_DROPFILES の動作.
InitInstance で次の様にしている場合,CMainFrame::OnDropFiles で処理する.
m_pMainWnd->DragAcceptFiles();


MDI exe では,CView や CChildFrame で処理できそうだが,そのままでは呼ばれることはない.
予めそれぞれで DragAcceptFiles() が必要みたい.
例えば,次の様に CView で呼び出すと WM_DROPFILES が処理できる様になる.

void CBLAMView::OnInitialUpdate() 
{
	this->DragAcceptFiles();
//	...
	}
void CBLAMView::OnDropFiles(HDROP hDropInfo) 
{
	CView::OnDropFiles(hDropInfo);
	}

CMainFrame など以外の実装は Default() を呼出しているだけみたい.

_AFXWIN_INLINE void CWnd::OnDropFiles(HDROP)
	{ Default(); }

ビューのウィンドウ以外(グレーの部分)にドロップすると CMainFrame::OnDropFiles が呼ばれる.


C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc\winfrm.cpp
void CFrameWnd::OnDropFiles(HDROP hDropInfo)
{
	SetActiveWindow();      // activate us first !
	UINT nFiles = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);

	CWinApp* pApp = AfxGetApp();
	ASSERT(pApp != NULL);
	for (UINT iFile = 0; iFile < nFiles; iFile++)
	{
		TCHAR szFileName[_MAX_PATH];
		::DragQueryFile(hDropInfo, iFile, szFileName, _MAX_PATH);
		pApp->OpenDocumentFile(szFileName);
	}
	::DragFinish(hDropInfo);
}

winfrm.cpp  CFrameWnd::OnDropFiles


CMainFrame で CDocument などを求める.
SDI の場合

CDocument*	pActiveDoc = GetActiveDocument() ;
CXxxView*	pView = (CXxxView*)GetActiveView() ;

MDI の場合は,GetActiveFrame() で CFrameWnd を求めてから.

CFrameWnd*	pActiveFrame = GetActiveFrame() ;

CDocument*	pActiveDoc = NULL ;
if (pActiveFrame != NULL) {
		pActiveDoc = pActiveFrame->GetActiveDocument() ;
		}

CXxxView*	pView = NULL ;
if (pActiveFrame != NULL) {
		pView = (CXxxView*)pActiveFrame->GetActiveView() ;
		}
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DS220+ VMM Antivirus Essential

投稿日 by Iwao

今日,幾つかのファイルをバックアップ.
Antivirus Essential が動き出すと,全体的な反応が悪くなってしまう.
このサイトなど Web ページを開くこともうまくできない状態に.
他に動作しているものとしては Virtual Machine と MailPlus Server .
一度,仮想マシンを終了させて,スキャンが終わるまで待った.
DS220+   Antivirus Essential
仮想マシンに割り当てているメモリを 3 GB から 2560 MB に.
標準で実装されているメモリ 2 GB だけでは,速度に不満が残るのかもしれない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


AIO SEO データの移行

投稿日 by Iwao

WordPress データを移行して,幾つかを リダイレクト するように設定した.
それで幾つかのページを見ていると,All In One SEO で設定したデータが引き継がれていない.
どうも,AIO SEO の情報は AIO SEO のツールにより出力して取り込む必要があるみたい.
「All In One SEO」-「ツール」
これで出力した json ファイルを,新しいサイトの AIO SEO でインポートすれば良い.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


「Redirection」の設定

投稿日 by Iwao

mish.myds.me から dev.mish.work へのデータの移行ができたので,リダイレクトの設定.
WordPress の移行なので,プラグインの「Redirection」を利用することにした.


移行するデータのルートは次の様な感じ.
 https://mish.myds.me/wordpress/dev/
 https://dev.mish.work/wordpress/
「正規表現」がよくわかっていないので,簡単な方法で指定した.
「Redirection」の設定
…/dev/2020 から 2021 は,単純にリダイレクト.
…/dev/2022 は,「ログイン状態」ではリダイレクトしない様に設定した.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


VS Installer 2022

以前 VS 2017 などで「VS インストーラ」プロジェクトを作成した.
今回は VS 2022 で使用できる様にする設定など.
*「VS インストーラ」は,VS 2012 と VS 2013 にはなさそう.


先ず,プロジェクト テンプレートの追加.VS の「拡張機能の管理」メニューを選択.
検索ボックスに「Installer」と入力.
VS 2022  「VS Installer プロジェクト テンプレート」の追加
「ダウンロード」ボタンを押して,一度 VS を終了させる.
「VS Installer 2022 プロジェクト テンプレート」のインストール


「新しいプロジェクトの追加」で「Installer」と入力.
VS 2022  プロジェクトの追加  Installer
「Setup Project」を選択して「次へ」.あとはプロジェクト名を指定して「作成」.


「File System」のウィンドウを開き「Application Folder」を選択.
エクスプローラなどから exe をドロップ.
VS インストーラ  exe の追加


プロジェクトの「プロパティ」.

AddRemoveProgramsIcon 「アプリと機能」で表示されるアイコンの指定
Description
ProductName 製品名 インストール先フォルダ名にも使用される
RemovePreviousVersions 「True」に

VS Installer プロジェクトのプロパティ


必要に応じて「Application Folder」-「プロパティ」-「Default Location」を変更.


「ツリー」の「Install」-「Start」-「インストール フォルダー」を選択.
プロパティの「InstallAllUsersVisible」を Flase に.
「InstallAllUsersVisible」を「Flase」に

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DS220+ HDD 追加

先日セットアップした DS220+ に HDD を追加.
ホットスワップ可能な機種だが,交換ではない場合の手順がよくわからないので,シャットダウンして HDD を挿入.
起動させるとうまく認識していない.もう一度シャットダウン.挿し方が甘かった.
今度は,ちゃんと DISK 2 の LED ランプも点いている.
「ストレージマネージャ」で見ると今度は表示されている.
DS220+ ディスク 2 「非初期化」
すぐに再構築されるのかと思ったが,そうではなさそう.
「利用可能なドライブの管理」でどの様な目的の追加なのかを指定するみたい.
DS220+  利用可能なドライブの管理
「ストレージ拡張用のドライブを追加する」と「ストレージプールの作成」のどちらかだと思うが…


「ストレージ拡張用のドライブを追加する」を選んで進めてみた.
リビルドと思われる動作になったのでこれで良いのだろうと思う.
DS220+ ストレージ マネージャ  ドライブを追加


2022/05/03
9 時間程かかった.
DS220+  ログセンター  expand
DS220+  リソースモニタ ディスク

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


FBX SDK 2020.3.1

久しぶりに FBX SDK のページを見たら 2020.3.1 があったのでダウンロード.
FBX SDK 2020.3.1


2022/05/02
追加のインクルードとライブラリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.1\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.1\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html


VC 2017 でビルドすると PDB が足りない?ため warning LNK4099 になる.
LibXml2-MD.lib(buf.obj) : warning LNK4099: PDB ‘libxml2.pdb’ が ‘LibXml2-MD.lib(buf.obj)’ で、または ‘c:\Temp\MICSTool\FBXtoM\Release.141\x64\libxml2.pdb’ に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
Zlib-MD.lib(adler32.obj) : warning LNK4099: PDB ‘zlib.pdb’ が ‘Zlib-MD.lib(adler32.obj)’ で、または ‘c:\Temp\MICSTool\FBXtoM\Release.141\x64\zlib.pdb’ に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
インストールされるものを見ると VC 2015 も同様.
VC 2019 ならば OK.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:

DSM 7.1 に更新

Synology NAS の DSM 7.1 があったので更新.
更新に必要な時間は DS220+ で 30 分,DS116 は 1 時間程度.


DSM 起動後,幾つかのパッケージを更新.
DSM 7.1  Virtual Machine Manager の「修復」
DS116 の方は特に問題なさそう?
DS220+ は,Virtual Machine Manager の Win10 が起動できない.
Virtual Machine Manager メモリ不足
空きメモリが足りないみたいで,メモリの割り当てを 3 GB から 2560 MB に変更.


DSM 6 から 7 に あげた時ほどの問題はなさそう.細かな影響はこれから確認.


2022/04/29
テーマの問題かもしれないが,WordPress の表示がうまくない.
画像が表示されなかったり,スマートフォンでは背景とずれている.
DS220+  DSM 7.1  WordPress
http ではうまく表示されているが https だとうまくないみたい.


メモリの使用量は 6 時間程で落ち着いたみたい.
DSM 7.1  DS220+  メモリ使用量
DSM 7.1  DS116  メモリ使用量
仮想マシンの割り当ても 3 GB に戻してうまく起動することを確認.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


AfxResolveShortcut

個人的に作成したダイアログベースのツールで,lnk をドロップした時に開けない.
S_asZ に lnk をドロップ
これに対応するには,lnk から doc を求めることで対応できる.
同じ様に作成した SDI exe の場合は,うまく開ける?
デバッガで追いかけると,CDocManager::OpenDocumentFile で AfxResolveShortcut を呼んでいる.
CDocManager::OpenDocumentFile で AfxResolveShortcut
但し,MFC のバージョンにより? ::CoInitialize が呼び出されていないと 1 回だけ.
CFileDialog などを呼出すと ::CoInitialize にあたるものが呼び出されるのでその後はうまくいく.
https://mish.myds.me/wordpress/dev/2021/03/31/win10-21h1-mdi-exe-error/


次の様な関数を用意して,ドロップされたファイルが lnk の時に対応.

tstring	LNK_Get_path	(HWND hwnd,LPCTSTR lnk_path)
{
	tstring	doc_path = lnk_path ;
	if (::Path_GetExtLow(lnk_path) == _T("lnk")) {
	      	doc_path = ::Get_path_lnk(hwnd,lnk_path) ;
		}
	return	doc_path ;
	}
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。



top