引数が正しくありません。
自分で作成した AP のテストをしていて,「引数が正しくありません。」.
20 年位前から変更していないコードのバグだった.
かなりイレギュラーな操作をしない限り,現象は発生しない.
実際の操作としては,データの挿入場所を指定しないで,強制的に「確定」した場合.
またその操作の前にある手順やデータが影響する.
表示されるメッセージは,MFC のバージョンにより異なる.
また,Windows API 内でこのメッセージが表示されることもある みたい.
今回のものは,配列に対して,確保されている領域を超えてアクセスしたことが原因.
アクセスする前に,要素数が満たしているかのチェックをすることで回避できる.
if ( 2 < ary.GetSize() ) { data = ary[1] ; }
これって何とかならないものかといつも思ってしまう.
クラスとして書いた時には,デフォルト値を返すようにしたりしているが…
S.M.A.R.T. 障害が検出されました
2022/05/06 に不良セクタが発生したドライブ.この時,プチフリーズの様な現象で気づいた.
すぐにデータなどは他のデバイス( \\DS220\Public\ )にコピーしたので,特に失われたものはないと思う.
その後テンポラリ( VC の Fallback や SymbolCache )として使って様子を見ていた.
時々,少し遅くなることはあったが,エラーになるようなことはなかったと思う.
前回,この PC の別のドライブが壊れた時のものは次の所.
https://mish.hatenablog.jp/entry/2021/03/04/PC_D_drive_WD_Red_
今日 CrystalDiskInfo を見ると「異常」に.
イベントビューアにも「重大」として記録されている.
もうダメみたい.どうしたものか?
* 不良セクタなどが発生した場合,バックアップがない場合のみコピーして,アクセスしない様にして下さい.
「デュプリケーター」でコピーすることにより,失うものを最小限にすることができるかもしれません.
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);
}
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() ;
}
DS220+ VMM Antivirus Essential
「Redirection」の設定
mish.myds.me から dev.mish.work へのデータの移行ができたので,リダイレクトの設定.
WordPress の移行なので,プラグインの「Redirection」を利用することにした.
移行するデータのルートは次の様な感じ.
https://mish.myds.me/wordpress/dev/
https://dev.mish.work/wordpress/
「正規表現」がよくわかっていないので,簡単な方法で指定した.
…/dev/2020 から 2021 は,単純にリダイレクト.
…/dev/2022 は,「ログイン状態」ではリダイレクトしない様に設定した.
VS Installer 2022
以前 VS 2017 などで「VS インストーラ」プロジェクトを作成した.
今回は VS 2022 で使用できる様にする設定など.
*「VS インストーラ」は,VS 2012 と VS 2013 にはなさそう.
先ず,プロジェクト テンプレートの追加.VS の「拡張機能の管理」メニューを選択.
検索ボックスに「Installer」と入力.
「ダウンロード」ボタンを押して,一度 VS を終了させる.
「新しいプロジェクトの追加」で「Installer」と入力.
「Setup Project」を選択して「次へ」.あとはプロジェクト名を指定して「作成」.
「File System」のウィンドウを開き「Application Folder」を選択.
エクスプローラなどから exe をドロップ.
プロジェクトの「プロパティ」.
AddRemoveProgramsIcon | 「アプリと機能」で表示されるアイコンの指定 |
Description | |
ProductName | 製品名 インストール先フォルダ名にも使用される |
RemovePreviousVersions | 「True」に |
必要に応じて「Application Folder」-「プロパティ」-「Default Location」を変更.
「ツリー」の「Install」-「Start」-「インストール フォルダー」を選択.
プロパティの「InstallAllUsersVisible」を Flase に.
DS220+ HDD 追加
先日セットアップした DS220+ に HDD を追加.
ホットスワップ可能な機種だが,交換ではない場合の手順がよくわからないので,シャットダウンして HDD を挿入.
起動させるとうまく認識していない.もう一度シャットダウン.挿し方が甘かった.
今度は,ちゃんと DISK 2 の LED ランプも点いている.
「ストレージマネージャ」で見ると今度は表示されている.
すぐに再構築されるのかと思ったが,そうではなさそう.
「利用可能なドライブの管理」でどの様な目的の追加なのかを指定するみたい.
「ストレージ拡張用のドライブを追加する」と「ストレージプールの作成」のどちらかだと思うが…
「ストレージ拡張用のドライブを追加する」を選んで進めてみた.
リビルドと思われる動作になったのでこれで良いのだろうと思う.
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.
DSM 7.1 に更新
Synology NAS の DSM 7.1 があったので更新.
更新に必要な時間は DS220+ で 30 分,DS116 は 1 時間程度.
DSM 起動後,幾つかのパッケージを更新.
DS116 の方は特に問題なさそう?
DS220+ は,Virtual Machine Manager の Win10 が起動できない.
空きメモリが足りないみたいで,メモリの割り当てを 3 GB から 2560 MB に変更.
DSM 6 から 7 に あげた時ほどの問題はなさそう.細かな影響はこれから確認.
2022/04/29
テーマの問題かもしれないが,WordPress の表示がうまくない.
画像が表示されなかったり,スマートフォンでは背景とずれている.
http ではうまく表示されているが https だとうまくないみたい.
AfxResolveShortcut
個人的に作成したダイアログベースのツールで,lnk をドロップした時に開けない.
これに対応するには,lnk から doc を求めることで対応できる.
同じ様に作成した SDI exe の場合は,うまく開ける?
デバッガで追いかけると,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 ;
}
DS220+ Antivirus Essential
先日,多くのファイルをバックアップ.
週末の昼に HDD の音が気になった.
原因は Antivirus Essential .
メモリが足りないのか,スワップしていたみたいで,仮想マシン を停止.
その後 40 時間程度放置したが,あまり進んでいない.
NAS を再起動.
もう一度「フルスキャン」を実行すると,前回よりは速いか?
MailPlus Server も停止して様子見.
DS116 リバースプロキシ設定
別のことを調べていて「リバースプロキシ」というのを見つけた.
Synology NASにリバースプロキシを設定して他ホストのWebサーバを中継する
今までは,ポートで他の Web サーバに振り分けていた.
また mish.work を取ってからは,AAAA レコード でうまく使えてはいた.
https://dev.mish.work/wordpress/2022/01/24/nas-virtual-host-port/
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+ を,リバースプロキシのサーバとして設定.
ルータのポートフォワーディングの設定で切り替え可能な様にした.
Synology MailPlus Server
以前 DS116 で Mail Server の設定を行った.
Synology MailPlus Server および Synology Mail Server の間の違いは何ですか?
今回の DS220+ は MailPlus Server も利用できるので,それをインストール.
Synology MailPlus Server を開くと,セットアップが始まる.
あとはそのままで設定は完了.
Synology MailPlus をインストールして確認すると,メールが受信できている.
メールを受信するまでの範囲は,特に難しくはない.
あとは,セキュリティの設定と,配信など.
意図しない Web サーバへのアクセス
1 週間ほど前から,Web サーバにアクセスしたログが残る様になってしまった.
LAN 内のアクセスの場合,必要以上には記録しない様にしている.
スマートフォンからのアクセスでは問題ない.
PC も限られた環境?
アクセス先の Web サーバがどれかはあまり関係ない.
今日,今まで大丈夫だった PC のログが残る様になったことに気づいた.
昨日変更したことを思い出して…
そういえば「VT4Browsers」を追加したことを思い出した.
最近バージョンが上がって,それによる影響みたい.
「VT4Browsers」を「オフ」にすることで対応.
2022/03/28
この記事を書いた時より,アクセスの記録が減った?
Raspberry Pi Desktop 解像度設定
以前インストールした Raspberry Pi Desktop を使いたくなった.
起動してみると画面サイズが小さい.
Raspberry Pi では「Raspberry Pi の設定」に「Display」タブがあってそこで変更できる.
が,Desktop 版にはそれがない.
いろいろ弄っていると「Main Menu Editor」の「設定」に「モニタの設定」があった.
「モニタの設定」メニューが増える.
それを選択すると,解像度を変更できる.
「Jetpack を設定」でエラー
先日セットアップした DS220+ などでも WordPress の Jetpack がうまく設定できないでいた.
探し方が悪いのか,検索をかけてもそれらしい情報がない(幾つか見つかるが該当しない).
WordPress 以下のファイルの違いなどを比べても,影響しそうな所はなそさう.
うまく機能している DS116 の環境と比べると…
一時的に,WAN から 80 ポートで DS220+ となる様にすることでうまくいった.
TS253D も同様で通ったが,AS5202T はうまくいかなかった.
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! はうまくいく.