2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 99,468 アクセス


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

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


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


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


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


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


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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

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 ドライブ 「異常」
もうダメみたい.どうしたものか?


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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

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

Is this 投稿 useful? Useful Useless 0 of 1 people say this 投稿 is useful.

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

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() ;
		}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ VMM Antivirus Essential

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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

AIO SEO データの移行

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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

「Redirection」の設定

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 は,「ログイン状態」ではリダイレクトしない様に設定した.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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」に

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ HDD 追加

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


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


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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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 に戻してうまく起動することを確認.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

AfxResolveShortcut

個人的に作成したダイアログベースのツールで,lnk をドロップした時に開けない.
S_asZ に lnk をドロップ
これに対応するには,lnk から doc を求めることで対応できる.
同じ様に作成した SDI exe の場合は,うまく開ける?
デバッガで追いかけると,CDocManager::OpenDocumentFile で AfxResolveShortcut を呼んでいる.
CDocManager::OpenDocumentFile で AfxResolveShortcut
但し,MFC のバージョンにより? ::CoInitialize が呼び出されていないと 1 回だけ.
CFileDialog などを呼出すと ::CoInitialize にあたるものが呼び出されるのでその後はうまくいく.
https://dev.mish.work/wordpress/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 ;
	}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ Antivirus Essential

先日,多くのファイルをバックアップ.
DS220+ にバックアップ
週末の昼に HDD の音が気になった.
原因は Antivirus Essential .
メモリが足りないのか,スワップしていたみたいで,仮想マシン を停止.
その後 40 時間程度放置したが,あまり進んでいない.
DS220+  Antivirus Essential


NAS を再起動.
もう一度「フルスキャン」を実行すると,前回よりは速いか?
MailPlus Server も停止して様子見.


2022/04/19
最初のうちはそこそこ進んだ様に思うが,ある程度すると遅くなってしまう?
DS220+  Antivirus Essential

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS116 リバースプロキシ設定

別のことを調べていて「リバースプロキシ」というのを見つけた.
Synology NASにリバースプロキシを設定して他ホストのWebサーバを中継する


今までは,ポートで他の Web サーバに振り分けていた.
ポートマッピング
また mish.work を取ってからは,AAAA レコード でうまく使えてはいた.
https://dev.mish.work/wordpress/2022/01/24/nas-virtual-host-port/


リバースプロキシを使うともっと簡単になるみたい.
DSM 7 リバースプロキシ設定


2022/04/10
幾つかのサブドメインをリバースプロキシで設定.
https://jml.mish.work
https://dev.mish.work
https://test.mish.work
https://ts.mish.work
https://as.mish.work
https://ws.mish.work
証明書に関しては検索したがあまりいい情報が引っ掛からなかった.
いろいろ試したが,それぞれの NAS で取得したものをエクスポートして,DS116 でインポートした.


2022/04/11
他の NAS で取った証明書は,「証明書」タブの「設定」でサブドメインに合わせて選択する必要がある?
「証明書」-「設定」-「構成」


2022/05/04
DS220+ を,リバースプロキシのサーバとして設定.
ルータのポートフォワーディングの設定で切り替え可能な様にした.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ PHP GD

DS220+ で PHP を動かすと,うまく動作しないものがある.
原因は「GD ライブラリ」を使用したものなどか動作していない.
「Web Station」-「スクリプト言語の設定」を「選択」.
「カスタマイズされたプロファイル」-「PHP 7.4」を「選択」して「編集」.
「拡張」タブを選択し「gd」に「チェック」,「保存」.
DS220+ PHP プロファイルを編集 gd
これでうまく動作する様になった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Synology MailPlus Server

以前 DS116 で Mail Server の設定を行った.
Synology MailPlus Server および Synology Mail Server の間の違いは何ですか?
DS220+ Synology MailPlus Server
今回の DS220+ は MailPlus Server も利用できるので,それをインストール.
DS220+ Synology MailPlus Server インストール
Synology MailPlus Server を開くと,セットアップが始まる.
Synology MailPlus Server セットアップ
あとはそのままで設定は完了.


Synology MailPlus をインストールして確認すると,メールが受信できている.
DS220+ Synology MailPlus
メールを受信するまでの範囲は,特に難しくはない.
あとは,セキュリティの設定と,配信など.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

意図しない Web サーバへのアクセス

1 週間ほど前から,Web サーバにアクセスしたログが残る様になってしまった.
LAN 内のアクセスの場合,必要以上には記録しない様にしている.


スマートフォンからのアクセスでは問題ない.
PC も限られた環境?
アクセス先の Web サーバがどれかはあまり関係ない.


今日,今まで大丈夫だった PC のログが残る様になったことに気づいた.
昨日変更したことを思い出して…
そういえば「VT4Browsers」を追加したことを思い出した.


最近バージョンが上がって,それによる影響みたい.
「VT4Browsers」を「オフ」にすることで対応.
「VT4Browsers」を「オフ」に


2022/03/28
この記事を書いた時より,アクセスの記録が減った?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Raspberry Pi Desktop 解像度設定

以前インストールした Raspberry Pi Desktop を使いたくなった.
起動してみると画面サイズが小さい.
Raspberry Pi Desktop 「Main Menu Editor」
Raspberry Pi では「Raspberry Pi の設定」に「Display」タブがあってそこで変更できる.
が,Desktop 版にはそれがない.
いろいろ弄っていると「Main Menu Editor」の「設定」に「モニタの設定」があった.
Raspberry Pi Desktop 「Main Menu Editor」 「モニタの設定」にチェック
「モニタの設定」メニューが増える.
Raspberry Pi Desktop 「モニタの設定」メニューが増える
それを選択すると,解像度を変更できる.
Raspberry Pi Desktop 解像度の変更

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

「Jetpack を設定」でエラー

先日セットアップした DS220+ などでも WordPress の Jetpack がうまく設定できないでいた.
「Jetpack を設定」でエラー


探し方が悪いのか,検索をかけてもそれらしい情報がない(幾つか見つかるが該当しない).
WordPress 以下のファイルの違いなどを比べても,影響しそうな所はなそさう.


うまく機能している DS116 の環境と比べると…
一時的に,WAN から 80 ポートで DS220+ となる様にすることでうまくいった.
TS253D も同様で通ったが,AS5202T はうまくいかなかった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ セットアップ-6

LAN 内からは 192.168.xx.xx/wordpress/ などでアクセスできる様になった.
ASUSTOR NAS などでは,192.168.xx.xx:54321/wordpress/ などとしてアクセスできる.
同様に設定しているつもりだが,Synology NAS ではうまくいかない.
いろいろと弄っていて… WordPress や Joomla! にアクセスするための設定.


Synology NAS では「パッケージ サーバー ポータル」で設定するみたい.
「パッケージ サーバー ポータル」を選択
パッケージの選択.
パッケージの選択
ポートの指定.
ポートの指定
これで 192.168.xx.xx:65432 などとしてアクセスできる様になる.
ポートでのアクセス


但し,WordPress のそれぞれの記事にはこの設定だけでは対応できないみたい.Joomla! はうまくいく

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.