ホーム » メモ (ページ 5)
「メモ」カテゴリーアーカイブ
Joomla! の URL
Joomla! のページで,今まで URL に Joomla! が管理している ID が付加されていた.
特に困ってはなかったが,他の NAS に移行すると ID が変わってしまうみたいなので調べてみた.
検索してもなかなかいい情報がヒットしない.
それで見つけたのが次の所.
Joomlaの新しいSEF URL(パーマリンク)
「記事:オプション」の「ルーティング」の所を「モダン」を選択して「URLからIDを削除する」を「はい」に.
Joomla! は,インデックスされるまで 404 となってしまう.
そのため一部のページは次の様なファイルを置くことで対応.
https://mish.work/joomla/index.php/cpp/ref-vcredist-xxx-exe.html
<!DOCTYPE html> <html lang="ja" > <head > <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <title >vcredist</title> <meta http-equiv="refresh" content="0;url=/joomla/index.php/cpp/ref-vcredist-xxx-exe.html"> </head> <body > </body> </html>
robocopy でエラー 50 (0x00000032)
次の様なコマンドでファイルをバックアップしていると,
robocopy "\\DevX\Public\Documents\Develop" "\\AS5202T\Public\Document\Develop" /e /xo /xf *.bak ... 6 \\DevX\Public\Documents\Develop\VC_Test\T_mem\T_PhysF\ 8 \\DevX\Public\Documents\Develop\VC_Test\T_STL\ 2020/09/11 10:03:08 エラー 50 (0x00000032) コピー先ディレクトリにアクセスしています \\AS5202T\Public\Document\Develop\VC_Test\T_STL\ この要求はサポートされていません。 30 秒間待機しています... 再試行しています...
何かの拍子に開いたままの状態になってしまったみたいで ASUSTOR NAS で「切断」することで対応.
* 使用しているユーザを切断しない様に注意.
日本語名ファイルのアップロード
次の所から日本語名のファイルをアップロードはできていたが,コードでの対応はうまくできていなかった.
https://itl.mish.work/…/upload.htm
そのため,アップロード時に 7 ビットのファイル名に変換することで対応していた.
これらのコードを書いたのは 3 年位前なので,その当時はまだよくわかっていなかった.
https://dev.mish.work/wordpress/2017/09/04/chttpfile-http-post/
またテクスチャファイル名などが日本語の場合はうまくいかないことも多かった.
最初,日本語名でそのままアップロードすると,いろいろ困った現象に…
PC から NAS 上のアップロード先のファイルが見えなくなってしまった.
一度スマートフォンの NAS 用のファイルマネージャから参照すると PC でも見えるようにはなった.
動作を見ると,サーバ側のコードは動作しているが,格納しているファイル名がうまく渡せていない.
ログなどを確認すると,デバッグ用 MBCS.exe でファイル名が「シフト JIS」のままになっていた.
送られるデータとしては次の所にあたる部分.
$_FILES[‘userfile’][‘name’]
これを UTF-8 にして渡す必要がある.
コードとしては次の所.
v_char Make_send_data (LPCTSTR upFile,LPCTSTR ___boundary) { v_char up_Data = v_c_Load(upFile) ; v_char sndData ; { tstring ct_boundary = ___boundary ; tstring file_img = ::QuotM_Add(_T("file_img")) ; tstring fileName = ::QuotM_Add(::Path_GetName(upFile)) ; tstring dataPre ; tstring dataPst ; dataPre+= CT_boundary__ + ct_boundary + C_CRLF ; dataPre+= CD_cd_f_d_n_ + file_img + CD_cd__fn_ ; dataPre+= fileName + C_CRLF ; dataPre+= CT_ct_a_o_s C_CRLF ; dataPre+= C_CRLF ; dataPst+= C_CRLF ; dataPst+= CT_boundary__ + ct_boundary + CT_boundary__ C_CRLF ; // v_char vc_pref = ::To_v_char(::To__string(dataPre.c_str())) ; v_char vc_pref = ::To_v_char(::To_UTF8 (dataPre.c_str())) ; v_char vc_post = ::To_v_char(::To__string(dataPst.c_str())) ; sndData.insert(sndData.end(),vc_pref.begin(),vc_pref.end()) ; sndData.insert(sndData.end(),up_Data.begin(),up_Data.end()) ; sndData.insert(sndData.end(),vc_post.begin(),vc_post.end()) ; } return sndData ; }
To__string でそのまま char の配列としていたものを UTF-8 にしてから char の配列に.
UpFile.hxx
quotm.hxx
2020/09/08
今度はサーバ側のコード.
本当はクライアントの CInternetSession のコンストラクタで与える User Agent .
UTF-8 でセットすれば良いのはわかるが,引数が LPCTSTR なのでどうすれば良いかわからず.
そのためサーバ側のログを出力する部分でうまく機能しないことがある.
Synology NAS では,一部文字化けするが特に問題なさそう.
ASUSTOR NAS や QNAP NAS では,20200908.txt の読み込み時に止まっている様子.
次の様に //IGNORE を付加して変換.
iconv API は iconv_open(_T("UTF-8//IGNORE")) iconv -f CP932 -t UTF-8//IGNORE 20200908.txt > 20200908.uf8 uconv -f CP932 -t UTF-8 -i 20200908.txt -o 20200908.uf8
TS-253D 温度
昨日から,システムの温度とファンの回転数が正しく表示されなくなった.
ディスクの温度は 40 度位なので正常と思われる.
ファンの音も変化するので,表示だけの問題ではないかと思う.
NAS の再起動で一時的に正しく表示するが,しばらくするとダメ.
スマートフォンの Qmanager も同様.
先日 QTS(ファームウェア)をアップデートした関係か?
2020/08/25
今日は CPU 使用率の表示がされない.
これも NAS の再起動で解消.
2020/08/26
Q’center が更新された.何か不具合があったのかも…
TS-253D セットアップ – 5
WordPress の設定.
そのまま進めてしまうとエラー.
検索すると pnpMyAdmin を入れるみたい .
https://www.qnap.com/ja-jp/how-to/knowledge-base/article/how-to-install-wordpress-on-qts-4-4/
phpMyAdmin を起動して root / admin と入力しても入れない.
「コントロールパネル」-「アプリケーション」-「SQLサーバー」で有効にする必要がある.
またこの時 root のパスワードを指定する.
Joomla! の設定.ASUSTOR NAS の時と同様.
TS-253D セットアップ – 4
Virtualization Station 3 のエクスポート.
先日作成した Win10 を VirtualBox などで開くためにエクスポート.
仮想マシンの下にある「エクスポート」ボタンを押して,*.ovf で「スタート」.
18 GB の img で 40 分位かかった.出力された vmdk は 9 GB .
AS5202T の VirtualBox で「ファイル」-「仮想アプライアンスのインポート」.
変換に 5 分位.
そのまま実行すると 0xc0000225 .
チップセットを「ICH9」,「I/O APIC を有効化」にチェック.
安定して動作はするが,どこかで間違えたみたいでネットワークがうまく機能しない.
PC の VirtualBox で読み込んでみたが,やはりネットワークがうまく動作していない.
今度は VirtualBox のエクスポート.
PC の VirtualBox で「仮想アプライアンスのエクスポート」,AS5202T 上の DevX をエクスポート.50 分位.
QNAP NAS Virtualization Station 3 で「VM のインポート」.20 分位.
最初うまく起動しなかった(実際は表示がうまくされていなかっただけ?).
「設定」-「ビデオ」-「タイプ」を「Cirrus」になっていたものを「VGA」に.
これでうまくいった.VNC 接続も問題なし.
TS-253D セットアップ – 3
他の NAS と同じ様に Google Drive から NAS へのコピー.
HBS 3 Hybrid Backup Sync を利用するみたいだが,いろいろな機能がくっついているので慣れるまでわかり難い.
「同期」-「今すぐ同期」で 3 種類の方法が選べる.
Google Drive 上のファイルを NAS へコピーなので「一方向同期ジョブ」と思ったが,これは NAS のデータを Cloud にバックアップするためのものみたい.
「双方向同期ジョブ」を選択.
「アクティブ同期ジョブ」の設定を見ると Google Drive から NAS への矢印になっている.
やりたかったのはこっちの方.
また「アクション」は「ミラー」の方が目的に合っている.
TS-253D セットアップ – 2
今回の NAS で一番気になっている Virtualization Station 3 .
ASUSTOR NAS にも同様の目的の VirtualBox がある が,再起動時の安定度があまり良くない .
2020/09/21 ASUSTOR NAS VirtualBox は 6.1.12 になり安定している.
「Virtualization Station 3」-「VM の作成」.
「OK」で「自動インストール」のメッセージが表示される.
ここは「キャンセル」(「自動インストール」ではうまくいかなかった).
あまり速くない?
ブラウザで操作していたため動きが悪かったのかもしれない.VNC 接続だとそれほど気にならない.
「Guest Tools」のインストールでは「Ultra VNC」もインストール可能になっている.
TS-253D セットアップ
QNAP NAS TS-253D のセットアップ.
先ず,メモリの取り付け.
マニュアル通り進めれば可能.
https://us1.qnap.com/Storage/TechnicalDocument/Storage/SMB%20NAS/TS-x53D/TS-x53D-UG-01-ja-JP.pdf
但し,指の太い人はかなり厳しい.ケースカバーを外した方が作業はしやすいと思う.
メモリの表裏が,斜めから見るためわかり難い.
純正の 4G であれば,もともと付いているものと同じ向き(チップが付いている側が下).
HDD は WD Blue 3TB をベイ 2 に入れた.
以降は 付属のマニュアル を見ながらの作業.
ケーブルなどの接続を行い,PC に Qfinder をインストール.
画面の指示に従って進めていった.
取り付けたメモリもちゃんと認識している.
QTS に入っていろいろと操作はできるが,なんかおかしい.
Web サーバを有効にできるのに「File Station」で見ると Web フォルダがない.
ユーザは追加できるが,標準で見えるはずの共有フォルダがない.
SSH 接続すると Home ディレクトリがない様なメッセージ.
ここまでの操作と付属のマニュアルを比べると,ディスクの設定がなかった.
付属のマニュアルは古いのかもしれない.
「QNAP セットアップ」で検索すると次の所があった.
https://unistar.jp/column/2899/
これを見ると RAID の設定などは QTS から行うようになった?
ちょっとわからなかったのが,ボリューム容量の設定.
デフォルトでは 3.63 TB に対して 715.66 GB となった.
「最大に設定」で良いと思うが,今回は仮のセットアップのためデフォルトのままとした.
パスワードの制限は「コントロールパネル」-「システム」-「セキュリティ」-「パスワードポリシー」にある.
https://jml.mish.work/various/nas/qnap-nas.html
2021/05/17 マニュアル類が更新されている.
https://www.qnap.com/ja-jp/download?model=ts-253d&category=documents
ASUSTOR NAS に SSH 接続できない
AS5202T に SSH 接続 しようとすると,次のメッセージが表示されて接続できなくなった.
ssh_exchange_identification: read: Connection reset
Microsoft Windows [Version 10.0.18362.959] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>ssh -l Iwao 192.168.1.75 ssh_exchange_identification: read: Connection reset C:\Users\Iwao>ssh -l Iwao as5202t Password: Iwao@AS5202T:/volume1/home/Iwao $ exit Connection to as5202t closed. C:\Users\Iwao>ssh -l Iwao 192.168.1.75 Password: Iwao@AS5202T:/volume1/home/Iwao $ exit Connection to 192.168.1.75 closed. C:\Users\Iwao>ssh -l Iwao 192.168.1.75 Password: Password: Password: Iwao@192.168.1.75's password: Connection closed by 192.168.1.75 port 22 C:\Users\Iwao>ssh -l Iwao 192.168.1.75 ssh_exchange_identification: read: Connection reset C:\Users\Iwao>
対応方法:
ADM に入って「設定」-「ADMディフェンダー」の「自動ブラックリスト」で「削除」する.
スマートフォンの「AiMaster」では「オンラインユーザー」-「ブラックリスト」から.
WinFile.exe v10.1.4.0
Win10 環境で 2019/05 から使っている WinFile .
最近よく操作する「ファイル」-「リネーム」がかなりの確率でダウンする(エラーなどは表示されず抜ける).
ダウンロード先を見てみると新しいものがあった.
https://github.com/Microsoft/winfile/releases
「リネーム」でダウンするのは相変わらず.
CHttpFile アップロードの https 対応
以前作成した MFC によるアップロード の https 対応.
前回コードを書いた頃は https の環境が用意できなかったのでそのままと(http に)なっていた.
次の関数を呼び出して接続しているが,それぞれ引数が異なるものが用意されている.
CInternetSession::GetHttpConnection
CHttpConnection::OpenRequest
それらの引数に dwFlags があり,INTERNET_FLAG_SECURE が指定できる.
最初,両方の呼び出しに指定してみたが,CInternetSession::GetHttpConnection は指定しなくても通った.
CInternetSession session(userAgent.c_str()) ; CHttpConnection* pServer = NULL ; CHttpFile* pFile = NULL ; { // if (is_ssl) { // pServer = session.GetHttpConnection(serverN.c_str(),INTERNET_FLAG_SECURE,nPort) ; // } // else { pServer = session.GetHttpConnection(serverN.c_str(),nPort) ; // } if (pServer == NULL) { return false ; } } { if (is_ssl) { pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,php,NULL,1,NULL,_T("HTTP/1.1"),INTERNET_FLAG_SECURE) ; } else { pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,php) ; } if (pFile == NULL) { return false ; } // ... }
参考にさせてもらったのは次の所.
How to send HTTPS request using WinInet?
WinInet(MFC)を使ったhttpとhttps(自己証明書)
WinInet (MFC) の SSL通信 で 開発中に自己署名証明書を利用する場合のコード
アップロードがうまく機能しない?
個人的なメモです.
php と form でアップロードしていた所に,汎用のアップロードツール で行うとうまく機能しない.
http://ds116/Test/mics/mba_wgl/
原因は,php の post を受け取って $_FILES を処理している所.
$tempfile = $_FILES[‘fname’][‘tmp_name’] ;
<input type="file" name="fname" accept=".dat">
https://dev.mish.work/wordpress/2018/04/19/php-_files/
これとアップロードツールの C のコード ::Make_send_data で設定している名称が合っていない.
Python 負のインデックス
次の所を読ませてもらっていて感じたことを…
けいしゅけのブログ薬局 情報館
https://keisyuke-blogyakkyoku.xyz/python-list-index
今私が習得するのにタイミングや更新サイクルが丁度良いので助かっている.
ASUSTOR NAS AS5202T に SSH 接続して Python を操作.
C:\Program Files\Microsoft Office\Office14>cd C:\Users\Iwao\AppData\Local\Temp C:\Users\Iwao\AppData\Local\Temp>ssh -l Iwao -p 22 192.168.1.75 Password: Iwao@AS5202T:/volume1/home/Iwao $ python Python 2.7.10 (default, Aug 19 2015, 09:18:54) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a=[0,1,2,3,4] >>> print(a[0]) 0 >>> print(a[4]) 4 >>> print(a[5]) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range >>> print(a[-1]) 4 >>> print(a[-4]) 1 >>> print(a[-5]) 0 >>> print(a[-6]) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range >>>
似たようなことを C++ でやろうとすると次の様な感じ.
std::cout << a[a.size()-1] ;
この様な記述ができるからか,今まで負のインデックスの必要性は感じたことがなかった.
また配列の検索で該当するものがないと -1 を返す様なコードもよく書く.
インデックスを変数で持つ時は?
いろいろ考えると個人的にはあまり使わないのではないかと思う.
Python などをやればもっと有効な使い方が出てくるのか?
弦と矢と半径 – 11
JavaScript 版で Canvas を使用する様にしてみた.
https://mish.myds.me/Test/blog/r_cs/b/
AS5202T に mono インストール
Synology NAS にもあるので気になっていた mono .
以前 MonoDevelop をインストールして少しは試したことがある.
それで,どこまでのものとして入るかをやってみた.
Iwao@AS5202T:/volume1/home/Iwao/test/mono $ ls /usr/local/AppCentral/mono/bin/ al* gacutil2* mono-api-info* nunit-console2* al2* genxs* mono-boehm* nunit-console4* asp-state* httpcfg* mono-cil-strip* pdb2mdb* asp-state2* ikdasm* mono-configuration-crypto* pedump* asp-state4* ilasm* mono-find-provides* permview* caspol* illinkanalyzer* mono-find-requires* peverify* cccheck* installvst* mono-gdb.py resgen* ccrewrite* lc* mono-heapviz* resgen2* cert-sync* macpack* mono-package-runtime* secutil* cert2spc* makecert* mono-service* setreg* certmgr* mconfig* mono-service2* sgen* chktrust* mcs* mono-sgen* sgen-grep-binprot* crlupdate* mdassembler* mono-sgen-gdb.py signcode* csc* mdbrebase* mono-shlib-cop* sn* csc-dim* mdoc* mono-symbolicate* soapsuds* csharp* mdoc-assemble* mono-test-install* sqlmetal* csi* mdoc-export-html* mono-xmltool* sqlsharp* dbsessmgr* mdoc-export-msxdoc* monodis* svcutil* dbsessmgr2* mdoc-update* monodocer* vbc* dbsessmgr4* mdoc-validate* monodocs2html* wsdl* disco* mdvalidater* monodocs2slashdoc* wsdl2* dmcs* mkbundle* monograph* xbuild* dtd2rng* mod* monolinker* xsd* dtd2xsd* mod-mono-server* monop* xsp* fastcgi-mono-server* mod-mono-server2* monop2* xsp2* fastcgi-mono-server2* mod-mono-server4* mozroots* xsp4* fastcgi-mono-server4* mono@ mprof-report* gacutil* mono-api-html* nunit-console* Iwao@AS5202T:/volume1/home/Iwao/test/mono $
「mono 使い方」で検索.
mcs test.cs でコンパイル,mono test.exe で実行できるみたい.
2020/06/24
phpinfo() を見てみると mod_mono が読み込まれている.
弦と矢と半径 – 10
JavaScript 数値入力で更新.
<body> <pre> c : <input type='number' id='in__c' value='8' style='width:100px;' step='any' /> <span id='out_c'> </span> <br /> s : <input type='number' id='in__s' value='2' style='width:100px;' step='any' /> <span id='out_s'> </span> <br /> r : <input type='number' id='in__r' value='5' style='width:100px;' step='any' /> <span id='out_r'> </span> <br /> </pre> <img src='r_cs.png' width='300px'> <script> function r_cs (c , s) { return ( ( c*c ) / ( 8*s ) + s/2 ) ; } function s_rc (r , c) { return ( r-Math.sqrt(r*r - (c/2)*(c/2) ) ) ; } function c_rs (r , s) { return ( Math.sqrt(r*r - (r-s)*(r-s) )*2 ) ; } function f_c_rs () { var oc = document.querySelector("#out_c") ; var os = document.querySelector("#out_s") ; var or = document.querySelector("#out_r") ; var ic = document.querySelector("#in__c") ; var is = document.querySelector("#in__s") ; var ir = document.querySelector("#in__r") ; var fc = parseFloat(ic.value) ; var fs = parseFloat(is.value) ; var fr = parseFloat(ir.value) ; oc.textContent = "" ; os.textContent = "" ; or.textContent = "" ; os.textContent = s_rc(fr,fc) ; or.textContent = r_cs(fc,fs) ; } // ... { var ec = document.getElementById("in__c") ; var es = document.getElementById("in__s") ; var er = document.getElementById("in__r") ; ec.addEventListener("keyup",f_c_rs, false) ; es.addEventListener("keyup",f_s_rc, false) ; er.addEventListener("keyup",f_r_cs, false) ; } </script> </body>
弦と矢と半径 – 9
JavaScript で.
<body> c : <input type='number' id='in__c' value='80.0' size='10' step='any' /><input type='submit' value='c_rs' id='c_rs' /> <span id='out_c'> </span> <br /> s : <input type='number' id='in__s' value='20.0' size='10' step='any' /><input type='submit' value='s_rc' id='s_rc' /> <span id='out_s'> </span> <br /> r : <input type='number' id='in__r' value='50.0' size='10' step='any' /><input type='submit' value='r_cs' id='r_cs' /> <span id='out_r'> </span> <br /> <img src='r_cs.png' width='300px'> <script> function r_cs (c , s) { return ( ( c*c ) / ( 8*s ) + s/2 ) ; } function s_rc (r , c) { return ( r-Math.sqrt(r*r - (c/2)*(c/2) ) ) ; } function c_rs (r , s) { return ( Math.sqrt(r*r - (r-s)*(r-s) )*2 ) ; } function f_c_rs () { var oc = document.querySelector("#out_c") ; var os = document.querySelector("#out_s") ; var or = document.querySelector("#out_r") ; var ic = document.querySelector("#in__c") ; var is = document.querySelector("#in__s") ; var ir = document.querySelector("#in__r") ; var fc = parseFloat(ic.value) ; var fs = parseFloat(is.value) ; var fr = parseFloat(ir.value) ; oc.textContent = "" ; os.textContent = "" ; or.textContent = "" ; oc.textContent = c_rs(fr,fs) ; } // ... { var ec = document.getElementById("c_rs") ; var es = document.getElementById("s_rc") ; var er = document.getElementById("r_cs") ; ec.addEventListener("click",f_c_rs, false) ; es.addEventListener("click",f_s_rc, false) ; er.addEventListener("click",f_r_cs, false) ; } </script> </body>
AS5202T VirtualBox – 2
AS5202T の CPU 温度を見るといつもより高い.
「プロセス」情報を見ると VirtualBox が消費している.
VNC で接続すると TiWorker.exe が CPU を食っている.
丁度 Windows Update のタイミングみたい.
VNC 接続の仮想マシンは遅くて操作できないが,接続しているクライアントからソースなどは見える.
前回 の様なネットワークが途切れる状態にはまだなっていない.
「リモートデスクトップ」であれば仮想マシンも操作できた.
落ち着くまでそのままにしておくしかなさそう.
その後「再起動」待ちになっていたので仮想マシンを再起動.
また止まったような表示.
CPU は食っているのでこのまま様子見.
2020/06/11
そのまま変わらないので,仮想マシンの「電源オフ」.
PC の VirtualBox で再起動.
Windows Update での再起動がうまく動作しないのか?
AS5202T VirtualBox の仮想マシンとして起動した時,いつもより時間がかかることがある.
また,ネットワークがうまく接続されていないこともあり.
安定するまで何度か再起動の必要があるのかもしれない.
起動時止まった様に見えても 30 分程度はそのままにして様子を見た方が良さそう.
仮想マシンの CPU や HDD などのリソースへのアクセス状況が見えると良いのに…