MFC OnUpdate… が来ない?
自前の Doc::UpdateCommand で CCmdUI の処理を実装して,イベントが来なかった.
原因は,範囲の指定が間違っていた.
ON_UPDATE_COMMAND_UI_RANGE (ID_Start, ID_End, OnUpdateCmd)
すぐに気づかなかったのでメモ.
vector<long> などを文字列に
std::vector<long> の文字列への変換.
何年も前に書いたコードで,使い方を忘れているのでそのまとめ.
次の様な関数を用意している.
template <class VX> tstring Vx_To_tstring(const VX& vx,LPCTSTR sp=_T(" "))
次の様な使い方で long の配列を文字列へ変換できる.
tstring vl_str = ::Vx_To_tstring<v_long>(long_ary) ;
ツールバーのコマンドが効かない
ある AP の動作で,ツールバーの一部のコマンドが入らない.
いろいろと確認すると,x64 exe で,リリース版,デバッグ版は関係ない.
x86 exe は問題ない(ちゃんと機能する).
2015/11 の exe でも同様の現象を確認.
メニューの同様のコマンドは問題ない.
ツールバーがちらつくので,UPDATE_COMMAND_UI の実装でうまくない部分があると思われる.
一時的に Disable にしているなど…
調べるのに時間がかかりそうなので,取りあえずメモ.
状態により,次の矛盾したものが呼ばれることがあったため修正.
pCmdUI->Enable(FALSE) ;
pCmdUI->Enable(TRUE) ;
WordPress のバックアップ
Twitter を見ていたら,次の様なものがあった.
QNAPはWordPressを対象に、ライセンスフリーでオールインワンのバックアップソリューションを発表
チュートリアルを見ると,WordPress のプラグインと MARS と言う NAS アプリを使うみたい.
How to Back up and Restore a WordPress Website Using Multi- Application Recovery Service (MARS)?
WordPress の「QNAP Backup」で表示される「AccessKey」を「コピー」.
MARS の「アプリケーション」-「WordPress」で「サービスの追加」.
MARS の「バックアップ」で「バックアップジョブの作成」.
「今すぐバックアップ」でバックアップが始まる.
ログを見ると「成功」にはなっているが,転送サイズが 656 Byte なので,うまく動作していない?
ここを同じ様にやってみたら,うまくバックアップはできたと思われる.
DS116 entware
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 が正しく求められている.
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
タスクスケジューラの登録.
「作成」-「トリガーされたタスク」-「ユーザー指定のスクリプト」.
「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...
TS-253D SSL 証明書の更新
DS220+ を追加 して,その後いろいろと設定を変更したためか,TS-253D の証明書がうまく更新されない.
「コントロールパネル」-「セキュリティ」-「SSL 証明書…」-「証明書更新」でエラーになる.
原因は,以前「代替名」で指定していた jml.mish.work などがうまくなかったものと思われる.
現在 jml.mish.work は DS220+ の方に割り当てている.
もう一度,「証明書の交換」から入って,次の様に指定することで取得できた.
同様に AS5202T の方も…
こちらの場合は一度削除する必要があった.
2022/06/13
Synology NAS DS116 は,まだ完全に移行できていないので,ポートマッピングの設定を一時的に変更して取得.
次の画像は「既存の認証を書き換えます」としたもの.
「サブジェクトの指定の別名」での区切り文字(セミコロン)が間違っているため,「完了」が押せない.
Win.ini [Mail] MAPI=1
Win.ini がなくて MAPI が動作しなかった(Disable だった)と報告を受けた.
4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する.
それらのコードは MFC のコード docmapi.cpp を参考にしたもの.
VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている.
最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない.
何もインストールしていない環境で Win.ini は存在する?
Win10 Pro 21H2 では次のものが存在している.
何かをアンインストールすると削除されることがあるのか?
引数が正しくありません。
自分で作成した AP のテストをしていて,「引数が正しくありません。」.
20 年位前から変更していないコードのバグだった.
かなりイレギュラーな操作をしない限り,現象は発生しない.
実際の操作としては,データの挿入場所を指定しないで,強制的に「確定」した場合.
またその操作の前にある手順やデータが影響する.
表示されるメッセージは,MFC のバージョンにより異なる.
また,Windows API 内でこのメッセージが表示されることもある みたい.
今回のものは,配列に対して,確保されている領域を超えてアクセスしたことが原因.
アクセスする前に,要素数が満たしているかのチェックをすることで回避できる.
if ( 2 < ary.GetSize() ) { data = ary[1] ; }
これって何とかならないものかといつも思ってしまう.
クラスとして書いた時には,デフォルト値を返すようにしたりしているが…