弦と矢と半径 – 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>
弦と矢と半径 – 8
Python を使用しないで PHP のみで.
<?php function r_cs ($c , $s) { return ( ( $c*$c ) / ( 8 *$s ) + $s/2 ) ; } function s_rc ($r , $c) { return ( $r-sqrt($r*$r - ($c/2)*($c/2) ) ) ; } function c_rs ($r , $s) { return ( sqrt($r*$r - ($r-$s)*($r-$s) )*2 ) ; } ?>
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 などのリソースへのアクセス状況が見えると良いのに…
FBX SDK 2020.1
「FBX SDK の脆弱性」の記事を先日読んでいた.
それで SDK を ダウンロード する所を見ると,対応版と思われる 2020.1 があった.
「追加のインクルードディレクトリ」と「追加のライブラリディレクトリ」を 2020.1 に.
ビルドすると大量の warning .
LibXml2-MD.lib(buf.obj) : warning LNK4099: PDB 'libxml2-md.pdb' が 'LibXml2-MD.lib(buf.obj)' で、または 'c:\Temp\...\Debug.141\Win32\libxml2-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。 Zlib-MD.lib(adler32.obj) : warning LNK4099: PDB 'zlib-md.pdb' が 'Zlib-MD.lib(adler32.obj)' で、または 'c:\Temp\...\Debug.141\Win32\zlib-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。 LibFbxSDK-MD.lib(OArchive.cpp.obj) : warning LNK4099: PDB 'alembic-md.pdb' が 'LibFbxSDK-MD.lib(OArchive.cpp.obj)' で、または 'c:\Temp\...\Debug.141\Win32\alembic-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
2021/04/29
LNK4099 のエラーは,pdb がないため.
FBX SDK 2020.1.1 以降であれば用意されているので,それぞれにあったものをインストールする.
Win10 インストール 用 USB 作成
Win10 インストール用の USB を作成しようと思い調べていたら
Windows 用のインストール メディアを作成する
その先の「Windows 10 のダウンロード」に入り「ツールを今すぐダウンロード」.
ダウンロードしたファイル MediaCreationTool2004.exe を起動.
ライセンス条項に「同意」して,実行する操作を選択.
Windows の種類を選択.
メディアを選択.
ドライブを選択.
Windows 10 をダウンロード.
USB メモリに書き込み.メディアの作成時間は 15 分位.
作成される Windows のバージョンにはご注意ください.
弦と矢と半径 – 7
input タグで number を使用している部分.
step=’0.001′ などとすれば小数値を入力できるが,欲しい動作ではない.
例えば 1.23456789 など任意の値を入力可能にしたかった.
step=’any’ と指定することで小数部を入力できるようになる.
<input type=’number’ name=’c’ value=’1.234567890′ size=’15’ step=’any’ />
https://mish.myds.me/…/r_cs/7/
PHP escapeshellarg
以前から気にはなっていた PHP の escapeshellarg を調べてみた.
次の様なコードがうまくない.
<?php $param = ($_REQUEST['input']) ; $cmd_to = "cal " . $param ; system ( $cmd_to ) ; ?>
次の様な入力を意図しているが,
…/cal/?input=2020
後ろに次のコマンドを付加されるとうまくない.
…/cal/?input=2020;ls -l
cal 2020 が表示された後 ls -l が動作している.
「コマンドインジェクション」と呼ぶらしく,検索するといろいろと出てくる.
コマンドの引数にあたる部分に escapeshellarg を使用するか,$param をチェックするする必要がある.
$cmd_to = "cal " . escapeshellarg ( $param ) ;
弦と矢と半径 – 6
Python のコードを修正して「結果のみ」を出力する様に変更.
import sys import math def r_cs (c , s) : return ( ( c*c ) / ( 8 *s ) + s/2 ) def s_rc (r , c) : return ( r-math.sqrt(r*r - (c/2)*(c/2) ) ) def c_rs (r , s) : return ( math.sqrt(r*r - (r-s)*(r-s) )*2 ) cmd = sys.argv[1] p1 = float(sys.argv[2]) p2 = float(sys.argv[3]) #print (cmd + " " + str(p1) + " " + str(p2)) if cmd == "r_cs" : print (r_cs(p1,p2)) elif cmd == "s_rc" : print (s_rc(p1,p2)) elif cmd == "c_rs" : print (c_rs(p1,p2)) #else : print ("error") #print ("")
PHP .
あまり綺麗なコードでないので,ここには張り付けていません.リンク先を見てください.
https://mish.myds.me/…/r_cs/6/
弦と矢と半径 – 5
PHP から Python の呼び出しで,Python のコマンドライン引数を使用する.
<?php echo ("call python\n") ; echo ("\n") ; system ("python r_cs.py r_cs 6 1") ; system ("python r_cs.py s_rc 5 6") ; system ("python r_cs.py c_rs 5 1") ; echo ("\n") ; system ("python r_cs.py r_cs 8 2") ; system ("python r_cs.py s_rc 5 8") ; system ("python r_cs.py c_rs 5 2") ; ?>
Python のコードは,
import sys import math def r_cs (c , s) : return ( ( c*c ) / ( 8 *s ) + s/2 ) def s_rc (r , c) : return ( r-math.sqrt(r*r - (c/2)*(c/2) ) ) def c_rs (r , s) : return ( math.sqrt(r*r - (r-s)*(r-s) )*2 ) cmd = sys.argv[1] p1 = float(sys.argv[2]) p2 = float(sys.argv[3]) print (cmd + " " + str(p1) + " " + str(p2)) if cmd == "r_cs" : print (r_cs(p1,p2)) elif cmd == "s_rc" : print (s_rc(p1,p2)) elif cmd == "c_rs" : print (c_rs(p1,p2)) else : print ("error") print ("")
Python がよくわかっていないので,いろいろなエラーが…
https://mish.myds.me/…/r_cs/5/
弦と矢と半径 – 4
先日の Python コードのバグ(整数で計算されてしまうため結果が異なる).
原因はすぐわかるが,対応は悩む所.
コードを分解して動作を確認してみた.
def r_cs_o (c , s) : return ( ( c*c ) / ( 8 *s ) + s/2 ) def r_cs_n (c , s) : return ( ( c*c ) / ( 8.*s ) + s/2. ) print (6*6) print (8*1) print (36/8) print (36/8.) print (1/2) print (1/2.) print ("") print (36/8 +1/2 ) print (36/8.+1/2.) print ("") print (r_cs_o(6,1)) print (r_cs_n(6,1))
https://docs.python.org/ja/3/howto/pyporting.html?highlight=除算
Synology NAS DSM では Python 2.7 が標準で入っているみたい.
「パッケージ センター」で Python3 を追加できる.
C:\Program Files\Microsoft Office\Office14>cd C:\Users\Iwao\AppData\Local\Temp C:\Users\Iwao\AppData\Local\Temp>ssh -l Iwao -p 2200 192.168.1.116 Iwao@192.168.1.116's password: Iwao@DS116:~$ python3 Python 3.5.1 (default, Jan 29 2018, 14:16:30) [GCC 4.9.3 20150311 (prerelease)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> Iwao@DS116:~$ python2 Python 2.7.12 (default, May 12 2020, 04:48:57) [GCC 4.9.3 20150311 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Iwao@DS116:~$ python Python 2.7.12 (default, May 12 2020, 04:48:57) [GCC 4.9.3 20150311 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Iwao@DS116:~$
ASUSTOR NAS ADM では入ってない.「App Central」でインストール可能.
2020/11/20
QNAP NAS での Python3 は,他の NAS と異なるみたい.
opkg install python3 でインストールしなければならなかった.
https://mish.myds.me/wordpress/dev/2020/08/29/ts253d-setup-3-opkg/
https://mish.myds.me/wordpress/dev/2020/08/17/ts-253d-setup-7-python3/
弦と矢と半径 – 3
JavaScript は html に埋め込んだ.
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title >JavaScript</title> </head> <body> <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 ) ; } document.write ("6 1 5") ; document.write ("<br/>\r\n") ; document.write (r_cs(6,1)) ; document.write ("<br/>\r\n") ; document.write (s_rc(5,6)) ; document.write ("<br/>\r\n") ; document.write (c_rs(5,1)) ; document.write ("<br/>\r\n") ; document.write ("") ; document.write ("<br/>\r\n") ; document.write ("8 2 5") ; document.write ("<br/>\r\n") ; document.write (r_cs(8,2)) ; document.write ("<br/>\r\n") ; document.write (s_rc(5,8)) ; document.write ("<br/>\r\n") ; document.write (c_rs(5,2)) ; document.write ("<br/>\r\n") ; document.write ("") ; document.write ("<br/>\r\n") ; </script> </body> </html>
弦と矢と半径 – 2
今度は PHP からの呼び出し.
<?php echo ("call c++\n") ; system ("./a.out") ; echo ("call python\n") ; system ("python r_cs.py") ; ?>
実際の動作を試すには,gcc と python が必要です.
cpp のコンパイルは
g++ -Wall r_cs.cpp
これで ./a.out が作成されます.
python の呼び出しは
python r_cs.py
次の所で,同じ様な結果を表示します.
https://mish.myds.me/…/r_cs/2/
弦と矢と半径
次の様な計算を何かに使えないかと…
/* https://ja.wikipedia.org/wiki/矢_(幾何学) https://en.wikipedia.org/wiki/Circle#Sagitta 弦 c と 矢 s から 半径 r を求める r = (c*c) / (8*s) + s/2 半径 r と 弦 c から 矢 s を求める s = r - sqrt( r*r - (c/2)*(c/2) ) 半径 r と 矢 s から 弦 c を求める c = sqrt( r*r - (r-s)*(r-s) ) * 2 i_func.hxx https://drive.google.com/file/d/1kHadFbhUi9QfGRovMXKYr2xHgcFJAqdZ/view */ double r_cs (const double c , const double s) { return ( ( c*c ) / ( 8*s ) + s/2 ) ; } double s_rc (const double r , const double c) { return ( r-sqrt(r*r - (c/2)*(c/2) ) ) ; } double c_rs (const double r , const double s) { return ( sqrt(r*r - (r-s)*(r-s) )*2 ) ; }
動作を確認するために 3,4,5 や 5,12,13 は知っていたが次のキーワードで検索.
三平方の定理 整数 組み合わせ
https://ja.wikipedia.org/wiki/ピタゴラスの定理
先ず C++ で書いたもの.
#include <cmath> double r_cs (const double c , const double s) { return ( ( c*c ) / ( 8*s ) + s/2 ) ; } double s_rc (const double r , const double c) { return ( r-sqrt(r*r - (c/2)*(c/2) ) ) ; } double c_rs (const double r , const double s) { return ( sqrt(r*r - (r-s)*(r-s) )*2 ) ; } #include <iostream> int main(void){ std::cout << "6 1 5" << std::endl ; std::cout << r_cs(6,1) << std::endl ; std::cout << s_rc(5,6) << std::endl ; std::cout << c_rs(5,1) << std::endl ; std::cout << std::endl ; std::cout << "8 2 5" << std::endl ; std::cout << r_cs(8,2) << std::endl ; std::cout << s_rc(5,8) << std::endl ; std::cout << c_rs(5,2) << std::endl ; std::cout << std::endl ; return 0 ; }
次の所に貼り付けて動作確認できます.
https://paiza.io/ja/
https://wandbox.org/
https://ideone.com/
次は JavaScript .
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 ) ; } console.log ("6 1 5") ; console.log (r_cs(6,1)) ; console.log (s_rc(5,6)) ; console.log (c_rs(5,1)) ; console.log ("") ; console.log ("8 2 5") ; console.log (r_cs(8,2)) ; console.log (s_rc(5,8)) ; console.log (c_rs(5,2)) ; console.log ("") ;
Python .
import math def r_cs (c , s) : return ( ( c*c ) / ( 8.*s ) + s/2. ) def s_rc (r , c) : return ( r-math.sqrt(r*r - (c/2)*(c/2) ) ) def c_rs (r , s) : return ( math.sqrt(r*r - (r-s)*(r-s) )*2 ) print ("6 1 5") print (r_cs(6,1)) print (s_rc(5,6)) print (c_rs(5,1)) print ("") print ("8 2 5") print (r_cs(8,2)) print (s_rc(5,8)) print (c_rs(5,2)) print ("")
2020/05/30
r_cs.py の r_cs で「浮動小数点数」として扱われていなかったので修正.
def r_cs (c , s) : return ( ( c*c ) / ( 8.*s ) + s/2. )
AS5202T 温度
最近気温が少し高くなってきたので,ちょっと気になる ASUSTOR NAS の温度.
HDD の温度が Synology NAS と比べると高い.
Synology NAS では 40℃前後.AS5202T は 50℃前後になっている.
CPU温度は ASUSTOR NAS の場合は問題ないらしい.
UNISTAR のサポート情報 CPU温度が70度というのは正常ですか?
ここを読むと,ファン速度を「自動」にしている限りは HDD の温度の許容範囲ということか?
ファン速度は 770 RPM なので「低速」の状態.
手動で「中速」や「高速」にすると,それぞれ 2590 RPM と 4280 RPM .
今も使用している WD Cloud も 50℃前後.
以前 WD Cloud に大量のデータをコピーしていたら 55℃を超えた位からコピー速度が遅くなった.
この動作は WD Cloud によるのか WD Red によるものなのかは不明.
WD Red は PC でも使用しているが,こちらは十分冷却されているので遅くなったと感じたことはない.
VirtualBox 6.1.8 に
前から VirtualBox の 6.1 があるのは知っていたが…
6.0.20 から上げてみた.
PC へのインストール手順はいつもと同じだが,前バージョンのアンインストールに時間がかかっていた.
6.1.8 に更新後「保存」状態だった仮想マシンを起動すると,
仮想マシン”Test10″のセッションを開けませんでした。
pci#0: Device vga/0 failed to respond to region #0 size/type changing from 0x0000000002000000/0x8 to 0x0000000002000000/0x0: VERR_SSM_LOAD_CONFIG_MISMATCH [ver=4 pass=final] (VERR_SSM_LOAD_CONFIG_MISMATCH).
終了コード : E_FAIL (0x80004005)
コンポーネント: ConsoleWrap
インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}
Win7 も同様.Linux の仮想マシンは問題なかった.
Windows の仮想マシンは「破棄」して「起動」させれば OK .
Win10 2004 インストール
Win10 Ver.2004 があったので VirtualBox 仮想マシンにインストールしてみた.
使用したのは ja_windows_10_business_editions_version_2004_x64_dvd_ee7b2698.iso .
最初,何も考えずにインストールしたら「Microsoft アカウント」と結びついたものになってしまった.
インストール途中で「ローカル アカウント」にする方法は気がつかなかった.
そのため,もう一度やり直し.ネットワークを切断した状態でインストール.
今度はうまくいった.
2020/08/31
ローカルアカウントでインストールするための選択画面
左下の「オフライン アカウント」を選択する.