QNAP NAS ファン異常?
11月末位からファンのエラーの通知が来る様になった.
NAS 名: TS253D 重大度: Error 日付/時刻: 2020/12/07 13:40:09 アプリ名: ハードウェアの状態 カテゴリー: ファン メッセージ: [ハードウェアの状態] システムファン1に故障が発生しました。
このエラーは「システム温度」が 25℃を下回ると発生する様子.
「スマートファン」の設定は「温度閾値に応じて速度を調節」にしている.
検索しても特に情報が引っ掛からない.
それで「ユニスター」さんに問合せをかけてみたが,あまり有効な情報は得られなかった.
「温度閾値に応じて…」の設定にしている環境は少ないのかもしれない.
夏場でない限り,システム温度やディスクの温度が問題になることはないと思う.
「スマートファン」の設定を「温度をモニターし,それに応じて速度を調節」-「パフォーマンスモード」に変更.
この設定で 25℃を下回っていても,ファン速度は「1170 RPM」前後になっている.
2022/12/19
一年前はどうだったかわからないが,今のバージョン(QTS 5.0.1.2248 Build 20221215)では解消されている?
もう少し気温が下がらないと何とも言えないが,ファン速度は 1080 RPM で安定している.
MFC DLL error C2371 cerr
FBX SDK を使用したテストプロジェクト.
以前「MFC を使用する」になっていたもの.
関連するコードを変更して「MFC を使用しない」に書き換え.
そのままのコードを「MFC を使用する」に戻すと,…
--------------------構成: T_FBX - Win32 DebugM-------------------- コンパイル中... T_FBX.cpp c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(1941) : error C2371: 'cerr' : 再定義されています。異なる基本型です。 c:\program files\microsoft visual studio\vc98\include\iostream(19) : 'cerr' の宣言を確認してください。 nothing FS_VER VC 6 200508 cl.exe の実行エラー T_FBX.exe - エラー 1、警告 0
前に変更しているが,元に戻す方が良いのか?
そもそもこの部分を削除した方が良いか?
https://dev.mish.work/wordpress/2020/04/17/rc1047-c2679/
今回は i_define.hxx から次の部分を削除.
#ifdef _MSC_VER #ifdef _MFC_VER #else #ifndef afxDump #define afxDump std::terr #endif #endif #endif
必要があれば i_debug.hxx に追加する.
なんかおかしい? DS116 localtime
2020/12/02 0 時過ぎ,個人的に書いているコードがうまく動作していないことに気づいた.
全てではないが,日時の表示が GMT になってしまっている?
うまく動作しているものもあり,次のものは正しく表示される.
この様になった心当たりはある.
昨日 opkg の update と upgrade ,opkg install gcc などを行ったことが影響している?
tree … -D や cal なども GMT になっている.
どこが影響しているかを調べるために少しコードを書いてみた.
#include <clocale> #include <iostream> #include "_tdefine.hxx" #include "timefmt.hxx" int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { tstring now_time = ::Now_Format() ; std::tout << _T("::Now_Format() \t") << now_time << std::endl ; } { tstring gmt_time = ::Now_FormatGMT() ; std::tout << _T("::Now_FormatGMT()\t") << gmt_time << std::endl ; } return 0 ; }
Win10 環境では意図した動作.
Microsoft Windows [Version 10.0.18363.1198] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>\\TestXP\C_Temp\Test_cpp\t_mtime\t_localt\Release.060\t_localt.exe ::Now_Format() 2020/12/02 10:22:34 ::Now_FormatGMT() 2020/12/02 01:22:34 C:\Users\Iwao>
DS116 では localtime が正しく求まっていない.
Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ll total 44 drwxrwxrwx+ 2 Iwao users 4096 Dec 2 10:19 . drwxrwxrwx+ 5 Iwao users 4096 Dec 2 10:03 .. -rwxrwxrwx 1 Iwao users 14188 Dec 2 10:19 a.out -rwxrwxrwx+ 1 Iwao users 892 Dec 2 10:02 t_localt.BAK -rwxrwxrwx+ 1 Iwao users 917 Dec 2 10:17 t_localt.cpp -rwxrwxrwx+ 1 Iwao users 4476 Dec 2 10:02 t_localt.dsp Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ./a.out ::Now_Format() 2020/12/02 01:24:30 ::Now_FormatGMT() 2020/12/02 01:24:30 Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$
上の WebGL で現在日時を表示ている .out は,2017/07/19 にコンパイルしたもの.
他の .out で,古いものは正しく動作し,2020/02 のものはうまくない.
どこかに設定などがあるのか?
2020/12/09
GMT と同じ扱いになり困っていたのは,個人的なコードの i_drawlg.hxx .
今日のファイルを求める所で 24*60*60 を加えることで対応.
2022/06/15 DS116 entware
entware の更新で正しく動作する様になった.
NAS の再起動コマンド
SSH 接続 した NAS のシャットダウンと再起動のコマンド.
以前 Synology NAS では sudo shutdown -h now などと書いた.
その後 ASUSTOR NAS や QNAP NAS が増えたので,それらを含めたまとめ.
保有している 3 つの NAS でどれも使えるのは,シャットダウンは poweroff ,再起動は reboot .
Synology NAS ,ASUSTOR NAS では sudo poweroff と sudo reboot .
QNAP NAS では admin で入って poweroff と reboot .
FBX SDK サンプルのビルド
FBX SDK 付属のサンプルをビルドしようと思い ヘルプ を見て同様に操作しようとするが,プロジェクトファイル(*.vcxproj)が見当たらない?
…\FBX\FBX SDK\ 以下を新しいものから順に見ると,2019.0 には vcxproj が存在している.
c:\Program Files\ 以下はあまり汚したくないので,..\FBX SDK\2019.0\ 以下を E: ドライブにコピー.
最初 include や lib などはなくても良いかと思ったが,vcxproj での追加のインクルードやライブラリが相対位置の指定になっているのでそのままコピー.
コピーした …\2019.0\samples\ に「空のソリューションファイル」を作成.
ソリューションに幾つかのプロジェクトを追加してビルド.
T90Chi Windows Update その後 – 2
先日 T90Chi に Win10 x86 をインストール できたが,タッチパネルや「Fn」キーを押しながらの操作(ボリュームや画面の明るさ)ができないでいた.
ドライバ類をを入れなければならないのはわかっていたが,見当たらない?と思いそのままに.
次のページに入り「OSを選択してください」で「Windows 10 32-bit」を選択.
https://www.asus.com/jp/supportonly/T90CHI/HelpDesk_Download/
「すべてを表示する」を選択しないと表示されないものがいっぱいあった.
その中の「SOC Driver Package」が必要だった.
他にも「ASUS Live Update Utility」をダウンロードしてインストール.
「SOC Driver Package」のインストールで最初失敗した?が,再起動後やり直してうまくいった.
NAS の SSH 接続設定
Synology NAS
「コントロールパネル」-「端末とSNMP」-「ターミナル」タブ
QNAP NAS
「コントロールパネル」-「ネットワークとファイル」-「Telnet/SSH」
Win10 の「コマンド プロンプト」から次の様なコマンドで接続できる.
ssh -l Iwao as5202t
2021/03/31
ポート番号は 22 から他のものに変更して設定してください.例えば 54322 など.
その場合,ssh -p 54322 -l Iwao as5202t の様に接続します.
CListBox などのオーナードロー
リストスクロール時,動作が逆に見える現象の調査のため調べたこと.
WinCore.cpp CWnd::OnMeasureItem での CtlType の値
/* * Owner draw control types */ #define ODT_MENU 1 #define ODT_LISTBOX 2 #define ODT_COMBOBOX 3 #define ODT_BUTTON 4 #if(WINVER >= 0x0400) #define ODT_STATIC 5 #endif /* WINVER >= 0x0400 */
/* * Listbox Styles */ #define LBS_NOTIFY 0x0001L #define LBS_SORT 0x0002L #define LBS_NOREDRAW 0x0004L #define LBS_MULTIPLESEL 0x0008L #define LBS_OWNERDRAWFIXED 0x0010L #define LBS_OWNERDRAWVARIABLE 0x0020L #define LBS_HASSTRINGS 0x0040L #define LBS_USETABSTOPS 0x0080L #define LBS_NOINTEGRALHEIGHT 0x0100L #define LBS_MULTICOLUMN 0x0200L #define LBS_WANTKEYBOARDINPUT 0x0400L #define LBS_EXTENDEDSEL 0x0800L #define LBS_DISABLENOSCROLL 0x1000L #define LBS_NODATA 0x2000L #if(WINVER >= 0x0400) #define LBS_NOSEL 0x4000L #endif /* WINVER >= 0x0400 */ #define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
// Measure item implementation relies on unique control/menu IDs void CWnd::OnMeasureItem(int /*nIDCtl*/, LPMEASUREITEMSTRUCT lpMeasureItemStruct) { if (lpMeasureItemStruct->CtlType == ODT_MENU) { // ... } else { CWnd* pChild = GetDescendantWindow(lpMeasureItemStruct->CtlID, TRUE); if (pChild != NULL && pChild->SendChildNotifyLastMsg()) return; // eaten by child } // not handled - do default Default(); }
GetDescendantWindow で求めた pChild が NULL のため CListBox::OnChildNotify から MeasureItem が呼ばれない?
呼ばれた時の lpMeasureItemStruct->itemHeight は,ODT_LISTBOX は 18 ,ODT_COMBOBOX は 20 .
デバッガで高さを設定すると,その高さになる.
OWNERDRAWVARIABLE は項目ごとに呼ばれるが,OWNERDRAWFIXED の時はうまくない?
結局,VC 6 などの場合にそうなる(逆にスクロール)様子.
コモンコントロール Ver.6 を使う様にすることで回避できる.
VC 6 exe などの場合は (VC6_app).exe.manifest ファイルを用意する.
視覚スタイルを有効にする
T90Chi Windows Update その後
以前 Windows Update で,再起動を繰り返す状態になり そのままだった.
その後,幾つかの方法を試してみたが,BIOS 画面に入れずそのままとなっていた.
その時,音量の「-」と「電源ボタン」の同時長押しで起動すれば良い とあった.が,うまく入れないでいた.
久しぶりに調べてみると,USB キーボードを接続すれば良いとあったので試すとうまく BIOS 画面に入れた.
BIOS の起動は「F2」または「Delete」.「ESC」を押したときは「Please select boot device:」となる.
また,同じ様な状況になった人の記事も幾つかある.
ここまでは,昨日見つけた情報.
キーボード,マウス,Win10 インストール用 USB メモリ を接続して「ESC」を押して起動.
インストールを進めて…
上の「アップグレード」は選択してもその先に進めない.「カスタム」を選択.
4つのパーティションを削除.
「次へ」.
ライセンス認証は以前のものがそのまま引き継がれたみたい.
まだ設定は足りないが,何とか使えるようにはなった.
ドライブ名からリモート名に
ネットワークドライブ名から UNC での表現に変換するコード.
#include <clocale> #include "i_trace.hxx" //#include <winnetwk.h> #pragma comment (lib,"mpr.lib") tstring W_get_remote_name (LPCTSTR path_) { tstring dpath = path_ ; if (dpath.size() < 2) { return dpath ; } tstring drive = dpath.substr(0,2) ; tstring _path = dpath.substr(2) ; tstring remote_path ; if (drive.length() == 2) { if (drive[1] == _T(':')) { u_16 d_t = ::GetDriveType(drive.c_str()) ; if (d_t == DRIVE_REMOTE) { DWORD buf_size = MAX_PATH ; tstring remote_name ; remote_name.resize(buf_size+1) ; ::WNetGetConnection(drive.c_str(),&remote_name[0],&buf_size) ; if (!remote_name.empty()) { remote_path = remote_name.c_str() + _path ; } } } } if (remote_path.empty()) { return dpath ; } return remote_path ; } bool Test (void) { for (long index=0 ; index<26 ; index++) { tstring drv ; drv += TCHAR(_T('A')+index) ; drv += _T(":\\") ; // if (index%2 == 0) { u_16 d_t = ::GetDriveType(drv.c_str()) ; if (d_t == DRIVE_REMOTE) { drv += _T("*.*") ; v_tstring files = ::EnumFiles(drv.c_str()) ; if (files.size() > 0) { drv = files[0] ; } } } drv += _T(" ") ; tstring info = drv.substr(0,20) + _T("\t") + W_get_remote_name(drv.c_str()) ; { std::tout << info << std::endl ; } } return true ; } int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { ::Test() ; } return 0 ; }
「 net use 」とコマンド入力することで似た様なことを確認できる.
管理者で起動した PowerShell の Get-SmbConnection で SMB のバージョンを確認できる.
ファイル共有で使われている SMB のバージョンを見る
QNAP NAS Photo Station
QNAP NAS の Photo Station と Qphoto .
インストールはしてみたが,他の NAS と比べると設定が難しい?
スマートフォンの写真のバックアップの設定がわからない.
実体が NAS 上のどこかも不明.何か設定が足らないのか?
AppCenter で新しくインストールしたり更新する時は LAN 2 のケーブルを抜かないとうまく動作しない.
他メーカの NAS は,デフォルトゲートウェイの設定でうまくいっている.
2021/01/29 QNAP NAS で写真のバックアップ
2021/02/03 QNAP NAS での写真管理
ASUSTOR NAS Photo Gallery
今度は ASUSTOR NAS の Photo Gallery と AiFoto .
Photo Gallery 3 Beta も存在し,その場合は AiFoto 3 .
上が AiFoto ,下は AiFoto 3 .
AiFoto 3 では,前バージョンでの保存場所 \\AS5202T\PhotoGallery と,新しい保存場所の \\AS5202T\Home\MyPhoto が見える.
スクリーンショットなどはバックアップされない?
2020/11/21
外から VPN で接続してみると,Synology NAS と QNAP NAS は大丈夫だが ASUSTOR NAS は見えない.
ファイアウォールの設定でガードがかかっていたので,VPN 接続の場合通る様に変更.
ADM を起動して「設定」-「ADMディフェンダー」-「追加」.
Synology NAS Photo Station
スマートフォンを変えたことで「WD Cloud」アプリが使えなくなった?
それならばと思い,同じ様な目的で使えるものを Synology NAS で設定してみた.
「パッケージセンター」で「Photo Station」をインストール.
インストール後のアイコンのクリックや次の様な入力で Photo Station を起動できる.
https://ds116/photo/
実体は \\DS116\photo に置かれる.
今度はスマートフォンでの「DS photo」の設定.
この時わかり難かったのが「バックアップ先」の指定方法.
アルバム(PC で言うフォルダ)を作成してそれを選択するのがわかり難い.
チェックボックスの存在がすぐにはわからなかった.
旧スマートフォンの moto g5 にも DS photo を設定.
PC で見ると,多くの jpg の更新日時が 2019/11/08 15:40 から 15:50 になっている.
原因は,この頃内蔵メモリの空きが少なくなり SD カードに移した ためと思われる.
Photo Station や DS photo では,画像ファイルに持っている撮影日時を使用しているので特に問題ない.
2 つの壊れた jpg があったため,これらのファイルのアップロードで何度もリトライして進まなかった.
一度アップロードを止めて,ファイルを削除することで対応.
壊れた jpg は,撮影時容量不足で途中までしか保存できなかった不完全な画像ファイル.
std::vector のコピーで実行時エラー
std::vector のデータ vf3a をコピーしようとして実行時エラー.
--------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Assertion Failed! Program: c:\Temp\Test\T_gonsa\T_cmb_f\debug.080\T_cmb_f.exe File: c:\program files (x86)\microsoft visual studio 8\vc\include\vector Line: 741 Expression: vector subscript out of range For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) --------------------------- 中止(A) 再試行(R) 無視(I) ---------------------------
原因は vf3a のサイズが 0 .
vf3a.size() が 0 より大きい時のみコピーする様に変更しなければならない.
inline v_u__8 To_v_u__8 (const Vf3A& vf3a)
{
v_u__8 data ;
{
size_t vCount = vf3a.size() ;
u_16 vf3_size = u_16(sizeof(float)*3*vCount) ;
data.resize(sizeof(u_16)+vf3_size) ;
{
::MemMove(&data[0],sizeof(u_16),&vCount,sizeof(u_16)) ;
}
if (vCount > 0) {
::MemMove(&data[2],vf3_size, &vf3a[0],vf3_size) ;
}
}
return data ;
}
NAS 上で OpenMP ?
今まで Windows 上で動かしていた OpenMP 対応のコードを,NAS 上で…
QNAP NAS 上にソースをコピーしてコンパイルすると
[Iwao@TS253D T_cmb_f]$ g++ T_cmb_f.cpp -Wall -fopenmp In file included from T_cmb_f.cpp:12:0: /share/Public/CloudD/GoogleD/Develop/_.SRC/Test/t_g3d_et.hpp:12:10: fatal error: omp.h: No such file or directory #include <omp.h> ^~~~~~~ compilation terminated. [Iwao@TS253D T_cmb_f]$
もう少し単純なコードで…
#ifdef _OPENMP #include <omp.h> #endif #include <clocale> #include <iostream> #include "i_define.hxx" bool Test (void) { #ifdef _OPENMP #pragma omp parallel for #endif for (long index=0 ; index<20 ; index++) { #ifdef _OPENMP #pragma omp critical (wait) #endif std::cout << index << std::endl ; } return true ; } int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { ::Test() ; } return 0 ; }
[Iwao@TS253D T_cmb_f]$ cd ../T_omp/ [Iwao@TS253D T_omp]$ g++ T_omp.cpp -Wall -fopenmp T_omp.cpp:10:10: fatal error: omp.h: No such file or directory #include <omp.h> ^~~~~~~ compilation terminated. [Iwao@TS253D T_omp]$
これとは直接関係ないが,
普通にコンパイルした T_cmb_f を QNAP NAS で実行すると,CPU などの温度が正しく表示されない状態に陥った.
2021/05/24
Ubuntu Linux Station ではうまく動作する.
Linux Center でも動作する.
3D データの読み書きの時間
3D データを保持するために,幾つかの形式での読み書きの時間を計測.
bool T_s_a_l (const GonsA& gnsa_,LPCTSTR pathName) { GonsA gnsa = gnsa_ ; double slt = 0 ; double s_t = 0 ; double l_t = 0 ; { // save ElapseTime et ; ::GonsA_To(gnsa,pathName) ; s_t = et.GetElapse() ; } { // load ElapseTime et ; GonsA ga = ::To_GonsA(pathName) ; l_t = et.GetElapse() ; } { slt = s_t + l_t ; } std::tout << ::Path_GetExtLow(pathName) << _T("\t") << slt << _T("\t") << l_t << _T("\t") << s_t << std::endl ; return true ; }
file ? =\\DS116\public\...\123test-layer2\123test-layer2.3ds ac 1.192 0.711 0.481 imo 4.206 3.195 1.011 x3d 2.213 0.461 1.752 wrl 0.831 0.55 0.281 3ds 0.571 0.37 0.201 ix3 1.853 1.092 0.761 ply 3.114 1.852 1.262 nxr 1.623 0.812 0.811 stl 0.2 0.15 0.05 ipl 4.947 4.436 0.511 file ? =\\DS116\public\...\123test-layer2\123test-layer2.3ds ac 1.202 0.711 0.491 imo 4.016 3.065 0.951 x3d 0.751 0.461 0.29 wrl 0.871 0.601 0.27 3ds 0.511 0.291 0.22 ix3 1.792 1.021 0.771 ply 3.145 1.923 1.222 nxr 1.512 0.701 0.811 stl 0.2 0.15 0.05 ipl 4.867 4.346 0.521 file ? =\\DS116\public\...\9LM-2U-J8F8B-3DLJ.001\9LM-2U-J8F8B-3DLJ.stl ac 16.214 9.504 6.71 imo 100.935 93.545 7.39 x3d 10.004 6.129 3.875 wrl 12.849 9.073 3.776 3ds 27.149 0.301 26.848 ix3 72.023 38.485 33.538 ply 77.751 62.049 15.702 nxr 21.912 9.974 11.938 stl 31.345 30.784 0.561 ipl 1893.04 1886.52 6.519 file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\n2950x2450mm.dae ac 1.011 0.551 0.46 imo 2.624 2.013 0.611 x3d 1.031 0.33 0.701 wrl 0.772 0.511 0.261 3ds 0.881 0.511 0.37 ix3 2.053 1.182 0.871 ply 2.543 1.502 1.041 nxr 1.443 0.471 0.972 stl 0.41 0.35 0.06 ipl 19.458 18.917 0.541 file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\n2950x2450mm.dae ac 1.012 0.551 0.461 imo 2.613 2.023 0.59 x3d 0.751 0.33 0.421 wrl 0.731 0.47 0.261 3ds 0.841 0.421 0.42 ix3 2.063 1.172 0.891 ply 2.623 1.652 0.971 nxr 1.593 0.491 1.102 stl 0.41 0.35 0.06 ipl 18.267 17.746 0.521 file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\133118.x3d ac 18.266 8.762 9.504 imo 55.18 45.175 10.005 x3d 19.888 6.799 13.089 wrl 19.268 14.681 4.587 3ds 15.172 3.165 12.007 ix3 48.259 24.765 23.494 ply 69.459 38.655 30.804 nxr 21.321 6.74 14.581 stl 15.943 15.102 0.841 ipl 1290.08 1282.34 7.741
* この結果は私のコードでの時間で,一般的なコードとは異なると思う.
2020/11/11
'\\testxp\documents\Develop\VC_Test\T_gonsa\T_cmb_f' file ? =\\Z170S0\Temp\i_Tools.tmp\T_cmb_f\20201111\133118.x3d x3d 9.422 5.203 4.219 ipl 303.235 296.594 6.641 wrl 8.016 3.266 4.75 ix3 22.766 8.329 14.437 stl 5.687 5.265 0.422 ply 32.875 17.844 15.031 3ds 5.204 1 4.204 ac 7.733 4.062 3.671 mqo 165.907 162.438 3.469 nxr 11.812 5.047 6.765 imo 26.437 19.484 6.953 ipl 20.437 9.25 11.187 ply 34.625 13.844 20.781 stl 3.359 0.922 2.437 x3d 89.297 30.25 59.047 mqo 47.781 0 47.781 nxr 108.609 43.046 65.563 ix3 294.405 171.546 122.859 wrl 99.313 54.297 45.016 ac 56.454 12.922 43.532 imo 3057.28 3007.03 50.25 3ds 189.515 117.265 72.25 ipl 418.797 407.344 11.453 ix3 27.75 8.078 19.672 ply 43.546 23.093 20.453 x3d 20.391 7.485 12.906 ac 15.406 6.453 8.953 nxr 13.173 5.313 7.86 stl 6.656 5.125 1.531 wrl 13.767 7.282 6.485 imo 52.499 37.187 15.312 mqo 304.547 294.406 10.141 3ds 9.313 1.172 8.141 file ? =
フォルダの更新日時の変更
今までファイルの更新日時の変更は使っていた.
https://www.vector.co.jp/soft/winnt/util/se500182.html
が,このツールでフォルダの更新日時を変更しようとするとできない.
コードは CFile::SetStatus を使用している.
CFileStatus fs ; CFile::GetStatus(file,fs) ; fs.m_mtime = newTime ; CFile::SetStatus(file,fs) ;
CFile::SetStatus の中(…\atlmfc\src\mfc\filest.cpp)を見ると ::SetFileTime を使用している.
また Linux などでも使える utime(…\crt\src\utime.c)も ::SetFileTime を使っている.
VC 6 で作成したものをデバッガで追いかけると ::CreateFile で 0xffffffff が返ってきている.
ASUSTOR NAS で試すと,特に問題なく変更できる.
Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ cat t_utime.cpp #include <clocale> #include "i_trace.hxx" #include "filetime.hxx" #include "itls_tmp.hxx" #include "c_which.hxx" int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { tstring temp_path = ::Get_i_Tools_tmp_date() ; tstring fold_path = ::Path_AddLastSP(temp_path) + ::Now_Format(_T("%H%M%S")) ; tstring file_path = ::Path_AddLastSP(temp_path) + ::Now_Format(_T("%H%M%S")) + _T(".tmp") ; { ::Folder_Create (fold_path) ; ::File_CreateEmpty(file_path) ; } { time_t f_time = ::File_GetMTime(file_path.c_str()) ; f_time-= 3600*24*7 ; ::File_SetMTime(file_path.c_str(),f_time) ; ::File_SetMTime(fold_path.c_str(),f_time) ; } { tstring cmd = tstring(cmd_ls_la) + _T(" ") + ::QuotM_Add_Auto(temp_path) ; _tsystem(cmd.c_str()) ; } } return 0 ; } Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ g++ t_utime.cpp -Wall Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ ll total 136 drwxrwxrwx 2 Iwao users 4.0K Nov 7 16:24 ./ drwxrwxrwx 3 Iwao users 4.0K Nov 7 15:32 ../ -rwxr-xr-x 1 Iwao users 122.7K Nov 7 16:24 a.out* -rwxrwxrwx 1 Iwao users 838 Nov 7 16:22 t_utime.cpp* Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $ ./a.out total 0 drwxr-xr-x 3 Iwao users 80 Nov 7 16:24 . drwxr-xr-x 3 Iwao users 60 Nov 7 16:24 .. drwxr-xr-x 2 Iwao users 40 Oct 31 16:24 162451 -rw------- 1 Iwao users 0 Oct 31 16:24 162451.tmp Iwao@AS5202T:/volume1/home/Iwao/gcc_test/Test/t_linux/t_mtime/t_utime $
2024/01/04
フォルダの更新日時の設定
Win10 他の PC が表示されない
::SHBrowseForFolder を使用している所で,最近 PC 名でアクセスできないと問合せが…
私自身はエクスプローラで直接入力していたので特に困ってはなかったが,ちょっと調べたのでメモ.
「Win10 他の PC が表示されない」で検索すると幾つかの対応方法が見つかる.
Windows10 – ネットワーク上のコンピューターが表示されない時の対処法
Windows 10 にてネットワークコンピュータが表示されない場合
【解決】ネットワークでコンピューターや共有フォルダが表示されない【Windows10】
Windows 10のエクスプローラの[ネットワーク]にPCが表示されない場合の対処方法
SMBv1 は、Windows 10 バージョン1709、Windows Server バージョン1709以降のバージョンでは既定でインストールされません。
「SMB 1」を入れる様な記述も多いが,「WS-Discovery」を利用する方法で…
動作を確認するために,タスクマネージャのサービスで「Function Discovery Resource Publication」を「開始」.
エクスプローラで見える様になる.
保有している NAS で,QNAP TS-253D は表示されている.
Synology NAS DS116 は「Windowsネットワーク探索を有効化して…」のチェックで表示されるようになる.
Synology NAS DS218jをWindowsからネットワーク探索
その他の NAS では設定がわからず,直接入力で対応.
実際はネットワークドライブとして割り当てたり,ショートカットを作成したりしている.
2021/11/10
Win10 などで,Windows Update してからアクセスできなくなった.
この場合は「ゲストログオンを有効にする」必要がある.
https://dev.mish.work/wordpress/2021/11/05/win-2022-classic-asp/
https://youtm-log.com/failure/pc-failure/anzendenai/
2024/12/05
サーバの共有フォルダにアクセスできなくなった場合は,共有アクセス用のアカウントを追加する.
https://dev.mish.work/wordpress/2024/11/15/add-user-win11-24h2/
サーバ上のフォルダ名を記憶可能なツールを追加.
https://download.mish.work/iTls_2024_11.zip
MFC コントロールのサブクラス化
今まで CWnd::SubclassDlgItem を使ってきたが,DDX_Control も同じ様なことをしているのではと思い調べてみた.
リストボックスをサブクラス化した時の OnInitDialog でのコード.
{ m_CtrlListFolder.SubclassDlgItem(IDC_LIST_FOLDER,this) ; m_CtrlListFolder.Init() ; m_CtrlListFolder.ResetContent() ; m_CtrlListFolder.SetItemHeight(30) ; }
IDC_LIST_FOLDER は,オーナードローリストボックス.
Inside Visual C++ や MFC による Windows 95 プログラミング を参考にしたと思う.
MFC のバージョンが上がると少しずつ変更が加わっている.
ソースは DlgData.cpp .VC 11 からは WinCore2.cpp .
MFC のソースは難しい.
かなり前の MSDN で次の内容を見つけた.
[MSVC] MFC を使用しての動的サブクラス化
DDX_Control でもいけそうな気もするが,…
C++ 継承でのエラー C2660
元々一つのクラスとしていたが,それを分割した時のエラー対応のメモ.
bool D_Image::Draw (HDC hdc,const RECT rect) { if (GetDocPath().empty()) { return false ; } { if (::Path_GetExtLow(GetDocPath()) == _T("emf")) { return E_MetaF::Play(hdc,GetDocPath().c_str(),rect) ; } } if (HBMP == NULL && HICN == NULL) { // ... } if (HBMP != NULL) { return ::Bitmap_Draw(hdc,rect,HBMP) ; } else if (HICN != NULL) { return ::Icon_Draw (hdc,rect,HICN) ; } return false ; } bool D_Image::Draw (HWND hwnd) { if (GetDocPath().empty()) { return false ; } if (hwnd == NULL) { return false ; } RECT rect = { 0 } ; ::GetClientRect(hwnd,&rect) ; bool result = false ; { HDC hdc = ::GetDC(hwnd) ; result = Draw(hdc,rect) ; ::ReleaseDC(hwnd,hdc) ; } return result ; }
この E_MetaF::Play の部分を分離.
class D_I_E : public D_Image { public: virtual bool Draw (HDC hdc,const RECT rect) { if (GetDocPath().empty()) { return false ; } { if (::Path_GetExtLow(GetDocPath()) == _T("emf")) { return E_MetaF::Play(hdc,GetDocPath().c_str(),rect) ; } } return D_Image::Draw(hdc,rect) ; } } ;
この状態で変数の宣言を D_I_E として呼び出している所でエラー.
Sel_doc.Draw(this->GetSafeHwnd()) ; // Sel_doc.D_Image::Draw(this->GetSafeHwnd()) ;
--------------------構成: T_DImage - Win32 Debug-------------------- コンパイル中... T_DI_Dlg.cpp \\TestXP\Documents\Develop\VC_Test\Test\etc\EnhMetaF\T_DImage\T_DI_Dlg.cpp(186) : error C2660: 'Draw' : 関数が不正な 1 個の実引数をともなって呼び出されました。 cl.exe の実行エラー T_DImage.exe - エラー 1、警告 0
下の様に修飾すれば通る.
また,D_I_E の関数として次のものを用意すれば D_Image:: の様に修飾しなくても大丈夫.
virtual bool Draw (HWND hwnd) { return D_Image::Draw(hwnd) ; }