QNAP NAS で写真のバックアップ
以前調べてわからなかった,スマートフォンの写真などの QNAP NAS へのバックアップ.
Synology NAS や ASUSTOR NAS ではそれぞれ専用のアプリで簡単に設定できる.
Synology NAS Photo Station
ASUSTOR NAS Photo Gallery
QNAP NAS Photo Station
改めて調べてみると Qfile を使用するみたい.
次の所を参考にさせてもらった.
「Qfile」で画像データの自動転送 ~ スマートフォンの写真をNASで管理する方法
メニューから「自動アップロード」を選択.
アップロードするデータとアップロード先などの指定.
「完了」でアップロードが開始される.
VC 12 LNK1104 , VC 14.2 LNK2019
VC 6 のプロジェクトを順に更新して,…
------ ビルド開始: プロジェクト:BChgN, 構成:Debug Win32 ------ BChgN.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。 LINK : fatal error LNK1104: ファイル 'mfc120d.lib' を開くことができません。 ------ ビルド開始: プロジェクト:G3_CLS, 構成:Release Win32 ------ LINK : fatal error LNK1104: ファイル 'mfc120.lib' を開くことができません。 ------ ビルド開始: プロジェクト:G3_CLS, 構成:Debug Win32 ------ G3_CLS.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。 LINK : fatal error LNK1104: ファイル 'mfc120d.lib' を開くことができません。 ------ ビルド開始: プロジェクト:G3_toM, 構成:Debug Win32 ------ ComPrj01.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。 LINK : fatal error LNK1104: ファイル 'mfc120d.lib' を開くことができません。 ------ ビルド開始: プロジェクト:ig3_toM, 構成:Release Win32 ------ LINK : fatal error LNK1104: ファイル 'mfc120.lib' を開くことができません。 ------ ビルド開始: プロジェクト:ig3_toM, 構成:Debug Win32 ------ ComPrj01.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。 LINK : fatal error LNK1104: ファイル 'mfc120d.lib' を開くことができません。 ========== ビルド: 0 正常終了、6 失敗、4 更新不要、0 スキップ ==========
ビルドを開始しました... ------ ビルド開始: プロジェクト: BChgN, 構成: Debug Win32 ------ BChgN.obj : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます。 msvcrtd.lib(exe_wwinmain.obj) : error LNK2019: 未解決の外部シンボル _wWinMain@16 が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました c:\Temp\TestMBL\BChgN\Debug.142\BChgN.exe : fatal error LNK1120: 1 件の未解決の外部参照 プロジェクト "BChg142.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、9 更新不要、0 スキップ ==========
BChgN は SDI.exe .それ以外は MFC を使用したコンソール AP .
うまくビルドできる vcxproj と比べると,ソースのプリプロセッサの定義が異なる.
それならと思い,VC の「ソリューション エクスプローラ」で,ソースを一度プロジェクトから外して,再度追加.
うまくビルドできる様になった.
vcxproj をエディタで開き直すと,<PreprocessorDefinitions Condition> がない.
<ItemGroup> <ClCompile Include="ComPrj01.cpp" /> <ClCompile Include="ig3_toM.cpp" /> </ItemGroup>
StdAfx.cpp 以外はファイル名のみで良さそう.
他のプロジェクトは,エディタで削除して対応.
2020/01/25
今度は,MFC を使用していないコンソール AP .
VC の設定で「それぞれのソースのプロパティページ」-「構成プロパティ」-「C/C++」-「プリプロセッサ」-「プリプロセッサの定義」をブランクにしてみたが…
コンパイルすると _UNICODE などが定義されない.
「<親またはプロジェクトの既定値から継承>」にすることで,意図した設定になった.
2024/07/04
以前は VC 7 などを通していたが,最近は VC 8 以降のみにしている.
VC6 プロジェクトの移行
VC6 から VC2019 への移行
こうすることで,プリプロセッサの定義がうまくない現象はなくなった様に思う..
DS116 が遅い?
昨日の夕方,次の様なメールが…
サイトがダウンしています Jetpack による2021年1月21日 (木) 6:09 午後の最後のチェック時に i_Tools (mish.myds.me/wordpress/i-tools) が読み込めませんでした。 サイトのアクティビティログを確認すると、この問題の原因になっている可能性のある最近の変更に関する詳細がわかります。サイトに変更を加えていない場合はホスティングサービスに連絡し、追加のサポートを受けてください。 サイトが再びオンラインになったことをJetpackが検出したときに、こちらから別のメールを送信します。 サポートが必要ですか ? ご心配はいりません。 このメールは、サイトでダウンタイムモニタリングが有効にされているため、送信されました。サポートにご連絡いただく場合は、リファレンス番号 [136721734/intermittent] をお知らせください。 これらのアラートはセキュリティ設定でカスタマイズできます。 Automattic, Inc. 60 29th St. #343, San Francisco, CA 94110, USA WordPress.com のメール設定を管理します。 JetpackPlan
いつもなら数分で復旧したとメールが来るが,今回は違った.
自分で作成した接続ログのページを見ようとすると遅くて使えない.
DS115j で運用していた頃の Antivirus Essential が動作した時の様な感じ.
https://dev.mish.work/wordpress/2017/01/29/ds115j-9/
DSM に入ってリソースモニタで見ると CPU に負荷がかかっている.
「プロセス」を見ると,CPU を 数% 使用するプロセスが 30 個位あったと思う.
「php72」だったと思うがハードコピーなどがないので定かではない.
DSM から NAS を再起動して通常の状態になった.
DSM のログを見たが,特にこれはというものはわからない.
//mish.myds.me/ に対して変なアクセスがあったので,その影響か?
NAS の Wake-on-LAN 設定
FBX SDK 2020.2
FBX SDK 2020.2 があった.
VC 2015 , 2017 , 2019 の対応となったみたい.
また,ダウンロードページを見ると pdb の exe もある.
以前には気づかなかったが 2020.1.1 のページにも pdb はあった.
今日は,ダウンロードとインストールまで.
2021/03/11
SDK 2020.2 対応に修正.特に問題なし.
設定などは次の所.
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
VC でのプロファイル
VC 6 の頃はよく使っていたが…
VC 12 では何故かうまく動かなかった.
VC 14 で簡単に動作を確認すると,前より使い易くなっている.
メニューの「分析」-「パフォーマンス プロファイラー」.
「CPU 使用率」にチェックを付けて「開始」.
プロファイル用にビルドされて exe が起動する.
テストする操作を行い exe を終了させる.
暫くすると結果が表示される(この情報の見方はよくわからず).
CPU のグラフの下の「詳細なレポートを作成します…」を「クリック」.
上の方のドロップダウンから「関数」を選択.
表示された関数名のリストから関数をダブルクリック(ここでは CF_GetOuterLine ).
ちょっと意外だったが,Vd3A の代入に時間がかかっている.
2020/12/23
Vd3A の代入ではなく参照にコードを変更.
テストする exe も,もう少し機能を単純化したものを使用.
データにもよるが,該当部分の時間が半分位になった.
更にループ内の Vd3 も参照にしてみたが,こちらは効果なし.
typedef Vector3<double> Vd3 ; // 3D 座標 ( double の x , y , z ) typedef std::vector<Vd3> Vd3A ; // 3D 座標の配列
Vd3A は可変長で,メモリの確保と解放が伴うためと思われる.
* デバッグ版のため実際のコード(計測した Release 版)とは異なると思う.
SetConsoleCtrlHandler
コンソール AP で,キー入力による中断ができないかと…
やりたいことは,時間がかかるコンソール AP で,その途中までの計算結果を保存すること.
「コンソールアプリ 中断」で検索すると ::SetConsoleCtrlHandler を使えば良さそう.
MSDN を「PHANDLER_ROUTINE」で検索.次のサンプルが見つかった.
そのタイトル「Registering a Control Handler Function」で検索.
コントロール ハンドラー関数の登録
https://www.installsetupconfig.com/win32programming/
https://www.installsetupconfig.com/win32programming/winconsolecharapplication8index.html
#pragma message ( … (value) )
FBX SDK を使用したプロジェクトで,コンパイル時 FBX SDK のバージョンを表示したくなった.
FBX 2013.3 SDK 位からは FBXSDK_VERSION_STRING が使える.
#ifdef FBXSDK_VERSION_STRING #pragma message ("FBXSDK_VERSION " FBXSDK_VERSION_STRING) #endif
それより古い場合に,コンパイルオプションで FS_VER=201100 などと指定する様にした.
考え方や動作は意図した通りになったが,この FS_VER を表示できないものかと…
検索すると VC では _CRT_STRINGIZE が使えるとあった.
コンパイル時に#defineの値を表示するにはどうすればよいですか?
#ifdef FS_VER #pragma message ("FS_VER " _CRT_STRINGIZE(FS_VER)) #endif
_CRT_STRINGIZE は …\VC\include\crtdefs.h や …\VC\include\vcruntime.h に定義されている.
古い VC などでも使える様に…
#ifndef __CRT_STRINGIZE #define __CRT_STRINGIZE(Value) #Value #endif #ifndef _CRT_STRINGIZE #define _CRT_STRINGIZE(Value) __CRT_STRINGIZE(Value) #endif
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 での写真管理