ホーム » メモ (ページ 3)

メモ」カテゴリーアーカイブ

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 102,173 アクセス


Win.ini [Mail] MAPI=1

Win.ini がなくて MAPI が動作しなかった(Disable だった)と報告を受けた.


4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する.
それらのコードは MFC のコード docmapi.cpp を参考にしたもの.
VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている.
docmapi.cpp  ::GetProfileInt(_T("MAIL"), _T("MAPI"), 0)
最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない.


何もインストールしていない環境で Win.ini は存在する?
Win10 Pro 21H2 では次のものが存在している.
Win10 Pro 21H2  win.ini
何かをアンインストールすると削除されることがあるのか?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

S.M.A.R.T. 障害が検出されました

2022/05/06 に不良セクタが発生したドライブ.この時,プチフリーズの様な現象で気づいた.
E ドライブ 不良セクタ
すぐにデータなどは他のデバイス( \\DS220\Public\ )にコピーしたので,特に失われたものはないと思う.


その後テンポラリ( VC の Fallback や SymbolCache )として使って様子を見ていた.
時々,少し遅くなることはあったが,エラーになるようなことはなかったと思う.
前回,この PC の別のドライブが壊れた時のものは次の所.
https://mish.hatenablog.jp/entry/2021/03/04/PC_D_drive_WD_Red_


今日 CrystalDiskInfo を見ると「異常」に.
E ドライブ 「異常」
イベントビューアにも「重大」として記録されている.
E ドライブ 「異常」
もうダメみたい.どうしたものか?


* 不良セクタなどが発生した場合,バックアップがない場合のみコピーして,アクセスしない様にして下さい.
  「デュプリケーター」でコピーすることにより,失うものを最小限にすることができるかもしれません.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

意図しない Web サーバへのアクセス

1 週間ほど前から,Web サーバにアクセスしたログが残る様になってしまった.
LAN 内のアクセスの場合,必要以上には記録しない様にしている.


スマートフォンからのアクセスでは問題ない.
PC も限られた環境?
アクセス先の Web サーバがどれかはあまり関係ない.


今日,今まで大丈夫だった PC のログが残る様になったことに気づいた.
昨日変更したことを思い出して…
そういえば「VT4Browsers」を追加したことを思い出した.


最近バージョンが上がって,それによる影響みたい.
「VT4Browsers」を「オフ」にすることで対応.
「VT4Browsers」を「オフ」に


2022/03/28
この記事を書いた時より,アクセスの記録が減った?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

QNAP NAS 上の WordPress の場所

QNAP NAS 上の App Center で,WordPress の更新版 5.8.2 があった.
特に意識しないで更新すると…
今まで \\(NAS)\Web\WordPress\(WordPress のファイル) となっていたものが,なくなってしまった?
以前 Synology NAS を更新 した時も場所が変わってしまったことがあった.


今回はなかなか場所がわからない.
QuLog Center の「イベントログ」で,やっと見つけた.
/share/…/.qpkg/WordPress にあった.
QNAP NAS WordPress の新しい場所


ダッシュボードの動作が遅くなった気がする.
また,先頭のページは表示されるが,それぞれの記事は 404 になってしまう?
記事の編集は問題なくできそうなので,どこかの設定がまだうまくないみたい.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

QNAP NAS 上のサイトが…

QNAP NAS 上の幾つかのページがうまく動作しなくなった.
静的なページや,WordPressJoomla! のページは問題ない.
いろいろと動きを見ると,C++ で書いたコードを呼出しているページがうまく動作していない様子.
SSH 接続して幾つかのコマンドを実行すると command not found となってしまう.
which gcc などで探すと,gcc が見つからない.
以前 gcc などは入れている ので,/opt/bin/gcc として存在するはず.
/opt/bin/ を見ると,perl 関係のものしか入ってない.
QNAP /opt/bin  perl
App Center で入れた Perl 5.26.1.0.1 がいけなかったみたい.


Entware-std 1.03 を入れ直すことでうまく動作する様になった.
AppCenter にある Perl のパッケージとは共存できない?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VNC 接続が安定しない?

最近は使う頻度が減ってきたが…
QNAP NAS の Virtualization Station の Win10 x86 への VNC 接続が安定しない.
他にも幾つか登録しているが,うまく開けないものが多い.
また Android からは,いつからかわからないが開けなくなってしまっている.
Android からの VNC 接続
Virtualization Station へはブラウザからも接続できて操作はできるが,ちょっと反応が悪い.


VNC のクライアントは VNC Viewer ,サーバは UltraVNC を使用している.
ハッキリわからないが,Win10 などのバージョンが上がった関係か?


先ず VNC Viewer を Windows 版 6.21.1109 に更新.Android 版は最新版になっていた.
予想通りだが,特に変わらず.


サーバ側の UltraVNC は 1.2.24 や 1.2.40 が入っていた.これを 1.3.60 に更新.
インストール後,再起動が要求されるが,試しに Android から接続するとうまくいった.
どうも UltraVNC が古いことがまずかったと思われる.
Windows Server 2022 に VNC 接続

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Edge で WebGL が表示できない?

Edge で three.js を利用したデータが表示できなかった.
WebGL Cube
WebGL で表示可能な形式に変換
https://itl.mish.work/i_Tools/to_wgl/


デバッガで追いかけると,WebGL を利用できない様なエラー.


Edge を再起動すると,うまく表示できるようになった.
何だったのだろう?



2023/01/17
Win8.1 環境の Edge で「使用可能な場合はハードウェア …」を OFF にする必要があった.
Edge  「使用可能な場合はハードウェア アクセラレータを使用する」を OFF に


2024/07/18
仮想マシンの Win11 Edge で表示できなくなっていたので,その設定.
Edge の「設定」-「システムとパフォーマンス」で
Edge の「設定」-「システムとパフォーマンス」で「使用可能な場合はグラフィック アクセラレータを使用する」を「OFF」に
「使用可能な場合はグラフィック アクセラレータを使用する」を「OFF」にして「再起動」.


2024/07/24
環境や 3D データなどによると思いますが,
「…グラフィック アクセラレータを…」を「OFF」にすると表示が遅くなったり,表示されなくなることもあります.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

::CreateMutex の名称

以前作成した W_mutex を利用.
同じドキュメントを開かない様なガードに使えると思い,単体テスト用のコードを書いた.

#include	"messbar.hxx"
#include	"itls_tmp.hxx"
#include	"cmd_line.hxx"
#include	"S_Exec.hxx"
#include	"W_mutex.hxx"

tstring	make_mutex_name	(const tstring& doc_name)
{
	tstring		mutex_name ;
	v_tstring	argv = ::get_arg() ;
	if (argv.size() > 0) {
		mutex_name += argv[0] ;
		mutex_name += _T(" ") ;
		}
	mutex_name += doc_name ;
///////////////////////////////////////////////////////////////
//	mutex_name = ::Path_Normalize(mutex_name,_T('/')) ;
///////////////////////////////////////////////////////////////
	std::terr << mutex_name << std::endl ;
	return	mutex_name ;
	}

bool	t_wait	(const tstring& doc_name)
{
	tstring		mutex_n = ::make_mutex_name(doc_name) ;
	size_t		bar_max = 1000 ;
	MessageBar	bar(_T("wait"),bar_max) ;
	for (size_t index=0 ; index<bar_max ; index++) {
		::Sleep(100) ;
		W_mutex	mutex(mutex_n.c_str()) ;
		bar.SetBarInc() ;
		if (mutex.Is_exist()) {
			}
		else {
			break ;
			}
		}
	return	true ;
	}

bool	t_loop	(const tstring& doc_name)
{
	tstring		mutex_n = ::make_mutex_name(doc_name) ;
	W_mutex		mutex(mutex_n.c_str()) ;
	size_t		bar_max = 100 ;
	MessageBar	bar(_T("loop"),bar_max) ;
	for (size_t index=0 ; index<bar_max ; index++) {
		bar.SetBarInc() ;
		::Sleep(30) ;
		}
	::Sleep(2000) ;
	return	true ;
	}

bool	test	(const tstring& doc_name)
{
	::t_wait(doc_name) ;
	::t_loop(doc_name) ;
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	::reg_argv(argc,argv) ;
	if (argc > 1) {
		test(argv[1]) ;
		}
	else {
		time_t	now = ::time(NULL) ;
		size_t	count = 5 ;
		tstring	test_cmd ;
		S_Exec	se ;
		{
			tstring	exe_name ;
			tstring	tmp_name ;
			{
				exe_name = argv[0] ;
				}
			{
				tstring	temp_dir = ::Get_i_Tools_tmp() ;
				tstring	time_str = ::Now_Format(_T("%H%M%S")) ;
					tmp_name = ::Path_AddLastSP(temp_dir) + time_str + _T(".tmp") ;
				}
			{
				test_cmd = exe_name + _T(" ") + tmp_name ;
				}
			{
				se.SetFile      (exe_name.c_str()) ;
				se.SetParamaters(tmp_name.c_str()) ;
				}
			{
				for (size_t index=0 ; index<count ; index++) {
					std::terr << test_cmd << std::endl ;
					se.Execute() ;
					::Sleep(2000) ;
					}
				}
			{
				::Sleep(1000) ;
				tstring		mutex_n = ::make_mutex_name(tmp_name.c_str()) ;
				size_t		bar_max = 1000 ;
				MessageBar	bar(_T("test wait "),bar_max) ;
				for (size_t index=0 ; index<bar_max ; index++) {
					W_mutex	mutex(mutex_n.c_str()) ;
					if (mutex.Is_exist()) {
						bar.SetBarInc() ;
						::Sleep(100) ;
						}
					else {
						break ;
						}
					}
				}
			}
		}
	return	0 ;
	}

#include	"messbar.cxx"

Mutex の名称としては,exe 名とドキュメント名を連結したものとした.


最初,実行させるとうまく動作しない(Mutex オブジェクトが存在するはずなのに抜ける).
::CreateMutex に与えている名称がうまくなかった.’\’ が使えない.
パスの区切りを ‘/’ に変更してうまくいった.
CreateMutex の名称で '\' は使えない


次の様なコードをアプリケーションクラスの InitInstance に追加.

	{
		if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen) {
			tstring	doc_name = cmdInfo.m_strFileName ;
			tstring	exe_name = ::Get_module_name() ;
			tstring	mtx_name = exe_name + _T(" ") + doc_name ;
				mtx_name = ::Path_Normalize(mtx_name,_T('/')) ;
			static	W_mutex	mutex(mtx_name.c_str()) ;
			if (mutex.Is_exist()) {
				return	FALSE ;
				}
			}
		}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Jetpack Boost の影響?

このページもそうだが,
WordPress のページにつけている「QR コード」が意図した位置に表示されていないことに気づいた.


先日,表示が速くなるかなと思い「Jetpack Boost」の設定を変更した.
どうもこれが影響していたみたい.
Jetpack Boost 「必須ではない JavaScript を後回しに」
「必須ではない JavaScript を後回しに」の機能を「OFF」に.


* QRコードは株式会社デンソーウェーブの登録商標です.
https://www.qrcode.com/faq.html#patentH2Title


Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

コンソール AP での色

以前に NAS に SSH 接続した環境で,文字色などの変更 をやった.
確か DOS 時代に少し使った記憶があるが,コンソール AP で使ってみたいと思い調べてのメモ.


先ず,コマンドプロンプトでの動作から.
echo ^G
echo Ctrl+G   BEL
‘^G’ の入力は,「Ctrl」+「G」.
「Enter」すると,ブザー(BEL)が鳴る.
今度は,次の様なバイナリデータのファイルを用意しての表示.
ESC シーケンス バイナリデータ
それを type で表示する(Linux 環境などでは cat ).
type esc.txt
type esc.txt の結果
echo を使っての ‘ESC [‘ 入力がわからなかったが,いろいろ試すと「Ctrl」+「[」で入った.
echo ^[[103m
echo ^[[30m
echo ^[[103m    echo ^[[30m
最初わからなかったが,Linux 環境などでは
echo -e “\x1b[103m”
BEL の所に書いてあった.


以前試した時もそうだったと思うが,コマンドプロンプトでそのまま実行してもうまく機能しない.
またその頃はまだメインの開発機は Win7 だったこともありそれ以上は試していなかった.
以前の T_esc 2018 05 exe
一度ファイルにリダイレクトして type すると意図した動作になる.
Windows ESC CSI」で検索すると次の所が見つかる.
コンソールの仮想ターミナル シーケンス
ここを見ると ::SetConsoleModeENABLE_VIRTUAL_TERMINAL_PROCESSING を指定するとある.
それで次の様なコードで試すとうまくいった.

#ifdef		_WIN32
	#ifdef	ENABLE_PROCESSED_OUTPUT
		#ifndef	ENABLE_VIRTUAL_TERMINAL_PROCESSING
		#define	ENABLE_VIRTUAL_TERMINAL_PROCESSING	0x0004
		#endif
	#endif
#endif
//	...
{
//	...
	can_CSI = true ;
	#ifdef		_WIN32
		BOOL	can_ESC = FALSE ;
		#ifdef	ENABLE_PROCESSED_OUTPUT
			HANDLE	hout =	::GetStdHandle(STD_OUTPUT_HANDLE) ;
			DWORD	mode = 0 ;
					::GetConsoleMode(hout,&mode) ;
				mode|= ENABLE_VIRTUAL_TERMINAL_PROCESSING ;
			can_ESC =	::SetConsoleMode(hout, mode) ;
		#endif
		can_CSI = (can_ESC == TRUE) ;
	#endif
	if (change_bg) {
		if (can_CSI) {
			std::terr << _T("\x1b[107m") ;
			std::terr << _T("\x1b[30m") ;
			std::terr << _T("\x1b[0J") ;
		//	std::terr << _T("\x1b[;H") ;
			}
		}
//	...
	}

CSI.hxx
CSI クラスを使用したもの
ちょっとうまくない部分もある?が,何とか.


python だと

from ctypes import windll , wintypes , byref
kernel = windll.kernel32
hout = kernel.GetStdHandle(-11)
mode = wintypes.DWORD()
kernel.GetConsoleMode(hout,byref(mode))
mode.value |= 4
kernel.SetConsoleMode(hout,mode)
print ('\033[96m')

参考にさせてもらったところ.
第3章5 エスケープシーケンスで文字の色、背景の色を変更


2023/03/24
次の様に利用できる.

#include	<iostream>

#include	"CSI.hxx"
#include	"tstring.hxx"

int	_tmain	(int argc,TCHAR* argv[])
{

	CSI	csi ;

	{
		tstring	buf ;
		buf.resize(1000) ;
		std::terr << _T("wait...") ;
		std::tin.getline(&buf[0],std::streamsize(buf.size())) ;
		}
	return	0 ;
	}

CSI クラスの利用

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

JavaScript module Three.js

前回 Three.jsバージョンを更新 した時に気づいていたがそのままになっていたので少し調べてみた.
きっかけは,今まで r109 だったものを r131 にしようかと …
three.module.js は r83 ぐらい? example が module 対応になったのは r105 の頃か?
r105 と r106 の ./example/js/loaders/OBJLoader.js の内容は同じ.
./webgl_loader_obj_mtl.html は import 部分と THREE が異なる.JavaScript のコードとしては同じ?


次の所を参考に,いろいろと…
JavaScript モジュール
そこにある basic-modules を,import でない方法で書き直し.
main.js を html 内の body に取り込み.
最初,間違って head 内に書いたら create でエラー(document.body が null).
また,canvas.js 内に export が存在するとうまくいかず,js をコピーして,その行をコメントに.
script src=".../canvas_.js"
それを import を使用した方法に.
main.js を直接 body 内に記述したもの.
script type="module"


*.js をどちらの場合も同じものとしたいが,方法は?


2021/06/06
Three.js で,同じ OBJLoader.js を使っているのかと思ったが,違った.
example/js/OBJLoader.js と example/jsm/OBJLoader.js が存在している.


ある程度 module を使うための変更内容がわかったので,既存のデータを変更してみた.
データはいつもの.http://mish.work/i_Tools/Doc/blog/3D_Data/Cube_2021_07.htm
r109 を利用している.それを r131 に変更.
r131 に変更したもの
c_3js_10.js の先頭に次のもの追加.

import	* as THREE        	from '/_lib/js/webgl/threejs/r131/build/three.module.js';
import	{ OrbitControls } 	from '/_lib/js/webgl/threejs/r131/examples/jsm/controls/OrbitControls.js';
import	{ MTLLoader }     	from '/_lib/js/webgl/threejs/r131/examples/jsm/loaders/MTLLoader.js';
import	{ OBJLoader }     	from '/_lib/js/webgl/threejs/r131/examples/jsm/loaders/OBJLoader.js';

最後に以下を追加.

export	{	ThreeStart10	} ;
export	{	ThreeStartF 	} ;

html を type="module" と import …/c_3js_10.js に.

<script	type="module">
	import	{	ThreeStart10	}	from	"./c_3js_10.js" ;

type module , import
実行すると幾つかのエラー.

Uncaught TypeError: THREE.OrbitControls is not a constructor
    Set_orbit http://mish.work/i_Tools/Doc/blog/3D_Data/c_3js_10.js:137
    ThreeStart10 http://mish.work/i_Tools/Doc/blog/3D_Data/c_3js_10.js:47
    <anonymous> http://mish.work/i_Tools/Doc/blog/3D_Data/Cube_2021_08.htm:42

Uncaught TypeError: THREE.OrbitControls is not a constructor
OrbitControls などクラスの利用部分が違う.THREE. の部分を削除.
THREE. 部分を削除
module を使用した方法に変更
表示されている QR コードは,以前 WebGL が動作しない環境の時の区別のためのもの.
これはうまく使えないみたいなので,その部分は削除.他に “use strict”; なども削除.
module を使用


html の script の部分で type="module" が指定されていないと,

Uncaught SyntaxError: import declarations may only appear at top level of a module Cube_2021_08_E2.htm:19:3

type="module" が指定されていない時のエラー

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

QR コード生成 – 3

今まで幾つかの所でサイトのアドレスの表示に使用してきた.
QRcode Perl CGI & PHP scripts ver. 0.50
これを他で使えないかと調べていると…

  1. 引数がうまく渡せない.2 つ目以降が無視されているような感じ.
  2. 100 文字位を超えると正しく表示できない.

どうも php の呼び出し方が悪かったみたいで,…/qr_img.php に与える引数を変更.

{
	p_data	=	p_data.substr(0,106) ;
	var	last_p	=	p_data.lastIndexOf('&') ;
	if (last_p > 0) {
		p_data	=	p_data.substr(0,last_p) ;
		}
	s_data	=	p_data ;
	p_data	=	escape		(p_data) ;
	p_data	=	"?d="	+	 p_data	;
//	p_data	=	p_data	+	"&e=M"	 ;
	}

使い方は以前と同様で .js のパスを変更.
<script src ="//itl.mydns.jp/_lib/js/i_lib/2022.01/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>

<script src ="//itl.mydns.jp/_lib/js/i_lib/2022.01/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC プロファイラが…

先日使った VC のプロファイラがうまく動作しなくなった?
動作としては開始するが,結果が取れない.
VC プロファイラがうまく動作しない
「CPU 使用率」で,実行中のグラフは表示されている.
実行終了後,下の部分の関数名などが表示される所のデータがうまく生成されない?
次の様にやってもうまくいかない.
MSDN クイック スタート: Visual Studio の CPU 使用率データの分析 (C++)
「手順 2: CPU 使用率データの分析」のデータが取れない.


設定なども確認したが,特に影響しそうな所はわからない.
PC を再起動してもダメ.
何で?


ここに入っている VS 2008 は Team System なので,プロファイラが何とか動くみたい.
VC 2008 プロファイラ
結果が表示されるまで時間がかかるのと,ボトルネックを見つけるのに使い勝手があまり良くなさそう.
もう少しあたりを付けて,単体テスト用のコードを書いて調べた方が効率が良さそう.


VC 2008 でやってみた.
VC 2008 プロファイラ
VC 2015 などと比べると,生成までの時間がかかる.その後の操作も面倒.
更に出来上がっていた vsp が,193 GB .


先ず簡単に変更できるコード.

template	<class	V3>	long	V3_Search	(const std::vector<V3>& pnts,const V3& pos)
{
	for (size_t index=0 ; index<pnts.size() ; index++) {
		V3	pnt = pnts[index] ;
		if (pnt == pos)	{
			return	long(index) ;
			}
		}
	return	-1 ;
	}

pnt の変数を使わず,直接比較するコードに.VC 6 でビルドして実行.
VC 6 V3_Search
最近のコンパイラはうまく最適化してくれるので,VC 8 などでは効果がなかった(最初から速い).


ここでの検索で一致するデータは,比較的後ろの方に存在することが多いので,後ろから検索する様に変更.

//	for (size_t index=0 ; index<pnts.size() ; index++)
	for (long index=long(pnts.size())-1 ; index>=0 ; index--)

登録されているデータにもよるが 1/3 位の時間になった.
V3_Search  後ろから検索


2021/04/12
更にコードを変更.
この関数は,呼び元との多重ループとなることがあるのと,検索して見つからないことも多いので,検索最大数を指定可能に.

template	<class	V3>	long	V3_Search_	(const std::vector<V3>& pnts,const V3& pos,const size_t max=-1)
{
	size_t	count = 0 ;
	for (long index=long(pnts.size())-1 ; index>=0 && count<max ; index-- , count++)
	{
		if (pnts[index] == pos)
		{
			return	long(index) ;
			}
		}
	return	-1 ;
	}

最大数を 1000 として,処理速度の許容範囲にはなった.
V3_Search  検索最大数を 1000 に
出来上がったデータとして問題ないかの検証はこれから.


検索して一致するデータは,最後と最初に存在することが多いので,その判断部分を変更.

template	<class	V3>	long	V3_Search_	(const std::vector<V3>& pnts,const V3& pos,const size_t max=-1)
{
	for (size_t index=0 ; index<pnts.size() /*&& index<max*/ ; index++)
	{
		if (pnts[index] == pos) {
			return	long(index) ;
			}
		size_t	index_l = pnts.size()-index-1 ;
		if (index>=index_l) {	break ;		}
		if (pnts[index_l] == pos) {
			return	long(index_l) ;
			}
		}
	return	-1 ;
	}

20% 程度の効果.但し VC 8 でビルドしたものは遅くなってしまった.


2021/04/14
やはり,頂点などの検索のループで最大数を指定すると,得られる結果が異なる.
そのため,最大数を指定するのは限定的とする.今回は STL 読込み で 10000 に.


2022/01/18
全ての VC で確認したわけではないが,プロファイラが使える様になっている.
VC 2019 プロファイラ

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

HVL-LS4 入手

録画用 USB HDD の空きが少なくなってきたので HVL-LS4 を追加.


電源を接続すると ON の状態になるので注意.
マニュアルなどでは DR Controler をインストールして設定する様になっているが,PC から HVL-xxx を探してブラウザなどで開くことも可能.
HVL-LS4 ディスク管理


当然のことだが HVTR-BCTX3 からのコピーは,特に問題なくできた.
少し面倒なのが,コピーカウントがそのまま引き継がれるわけではないので,コピー回数分がカウントされる.
HVL-LS4 コンテンツの管理
HVL-AHW からの移動も,同じコンテンツは HVTR-BCTX3 からコピーしたものに追加でカウントされているみたい.
HDL-AH2W からの「ネットワーク転送」


2021/05/01
暫く使って感じたこと.
特に問題なく使えている.HVTR-BCTX3 に USB 接続 HDD からの移動で 50 GB 程度空いた.
PC TV Plus での 視聴も問題ない
録画したコンテンツの操作のフォルダわけなどの時,ツリー表示がないので 操作 が少し面倒.
Windows で例えると,エクスプローラで左のツリーがない様な状態での操作になる.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

仮想マシンの XP が遅くなった?

今はもう誰も必要ないと思う情報.


先日 WinXP の VHD が入っている HDD が壊れて交換.
その時,ついでに PC のメモリも増設している.
壊れかけた HDD には不良セクタがあった様だが,対象の VHD は大丈夫だった.
デュプリケーターでコピーして,それなりに動作していると思う.


その後,仮想マシンの WinXP の動作が遅くなった?
全体的に遅いのではなく,メッセージボックスが出る時に数秒止まる様な感じ.
WinXP が遅くなった?


何が原因かしばらくわからなかった.
ホストのメモリに余裕がでたので,仮想マシンのメモリの割り当てを増やした.
この仮想マシンは 1.5G だったのを 3G に.
これがいけなかったみたいで,2G にすることで前の状態に戻ったと思われる
これは関係なかった.再起動による一時的な解消.
「仮想マシンの状態を保存」をすると解消される?


2021/03/14
遅くなるのは,音が出る時.使っているうちに音が再生されるまでのタイムラグが大きくなる.
使い勝手は良くないが,
VirtualBox の「仮想マシンの状態を保存」で解消できることを確認.
仮想マシンの状態を保存
「一時停止」では効果はない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

「お名前.com」の設定

先日申し込んだ「お名前.com」の設定のメモ.

やはり全体的にわかり辛い.
ログインした時のホップアップも邪魔.
欲しい情報の検索をかけても help.onamae.com が上位に表示されてしまう.
またその内容(特に画像)が古いものが多い気がする.


メールが多すぎるので「お知らせメールの受信」を「配信なし」に設定.
画面右上の「お名前ID:?????」の所をクリックして「会員情報の確認/変更」に入り,その画面の下の方で設定.
whois 情報は申込時のデフォルト(WHOIS情報公開代行)のまま.


DNS の設定へ入る方法がわかり辛かった.
お名前.com 「DSN設定」
間違って「お申込み」のリンクの方を選んでしまうとカード情報の入力になる.
やりたかったのは「次へ」を押すとその画面が切り替わり表示される.
その中の「DNSレコード設定を利用する」の「設定する」をクリック.
お名前.com DNSレコードの設定
Aレコード」の方はうまくいったが,「AAAAレコード」の方はどこかの設定が悪いみたいでうまくいかない.


2021/02/22
Search Console の「DNS レコードでのドメイン所有権の確認」.
「以下の … DNS 設定にコピーします」を「コピー」.
お名前.com 「DNS レコードによる所有権の確認」の設定
「Value」の所に「貼り付け」.
「確認画面へ進む」,「設定する」で設定.
「Search Console」に戻り,「DNS レコードでのドメイン所有権の確認」の「確認」.
10 分程度で反映された.


2021/02/23
IPv6 関係で「DNSレコード設定」はそれ(AAAAレコード)で良かったみたい.
LAN 内では 3 つの NAS それぞれにアクセスできるようになった.
外からは,ルータの設定などがまだ足りないみたいでうまくアクセスできていない.


2021/03/09
Search Console 登録による Google からのアクセス.
mish.work を Search Console に登録

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

ドキュメント付きの起動で抜ける?

個人的なコートでのメモです.


普通に exe を起動してドキュメントを開くのは問題ない.
ドキュメント付きで起動すると,ウィンドウが表示されて,ドキュメントを読込み後終了してしまっている.
コマンドライン引数の設定
デバッガで追いかけると,ProcessShellCommand の呼び出しで FALSE となっている.
ProcessShellCommand の結果が FALSE
原因は,ドキュメントの読込み後にアプリケーションクラスにアクセスしている所で初期化が済んでないため.
初期化のコード(RcntFM)を CCommandLineInfo の前にして対応.

	// メイン MDI フレーム ウィンドウを作成
	CMainFrame* pMainFrame = new CMainFrame;
	if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
		return FALSE;
	m_pMainWnd = pMainFrame;
	// ドラッグ/ドロップ オープンを許可します
	m_pMainWnd->DragAcceptFiles();
	{
		RcntFM.Read() ;
		RcntFM.SetStartID(ID_RECENT_FILE_00) ;
		}
	// DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
	CCommandLineInfo cmdInfo;
	ParseCommandLine(cmdInfo);
	if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew) {
		cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing ;
		}
	// コマンドラインでディスパッチ コマンドを指定します。
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

これをやっていて困ったのが,ソースのタイル表示.
VC 2019 タイル表示
VS 2019 ではうまく動作するが,2017 など他のものではエラーになってしまう.
VC 2015 タイル表示でアプリケーションエラー

---------------------------
GLSm140: devenv.exe - アプリケーション エラー
---------------------------
0x000000006359C044 の命令が 0x0000000000000000 のメモリを参照しました。メモリが read になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
プログラムをデバッグするには [キャンセル] をクリックしてください
---------------------------
OK   キャンセル   
---------------------------
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

#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

https://python5.com/q/uxqhkyvx
#pragma message (_CRT_STRINGIZE(FS_VER))

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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 を使う様にすることで回避できる.
コモンコントロール Ver.6 の指定
VC 6 exe などの場合は (VC6_app).exe.manifest ファイルを用意する.
視覚スタイルを有効にする

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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 .
std::vector のサイズが 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 ;
	}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.