Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

メモ

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/2021.07/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>

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

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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 に.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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 で例えると,エクスプローラで左のツリーがない様な状態での操作になる.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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

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


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


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


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


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

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


「お名前.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 に登録

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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

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


普通に 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   キャンセル   
---------------------------
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


#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))

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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 の指定

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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 より大きい時のみコピーする様に変更しなければならない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


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

* この結果は私のコードでの時間で,一般的なコードとは異なると思う.
3D データの読み書きの時間


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 ? =

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。