ホーム » Iwao の投稿 (ページ 39)

作者アーカイブ: Iwao

2025年5月
 123
45678910
11121314151617
18192021222324
25262728293031

カテゴリー

アーカイブ

ブログ統計情報

  • 114,633 アクセス


Synology NAS で CGI

今度は,CGI.
以前少しやってみたが,500 Internal Server Error となりそのままとなっていた.


cgi の先頭行の指定が怪しいと察しはついていたので検索すると,
通常は「#!/usr/bin/perl」か「#!/usr/local/bin/perl」とのこと.
それぞれのフォルダを見ると,
Iwao@DS115j:/usr/bin$
Iwao@DS115j:/usr/bin$ ls pe*
perl perror
Iwao@DS115j:/usr/bin$
Iwao@DS115j:/usr/bin$ cd /usr/local/bin/
Iwao@DS115j:/usr/local/bin$
Iwao@DS115j:/usr/local/bin$ ls pe*
perl perl5.24.0 perlbug perldoc perlivp perlthanks
Iwao@DS115j:/usr/local/bin$


さらに検索すると,改行の問題とのこと.
「#!/usr/bin/perl –」の様に後ろに “–” を付ければ良いらしい.
または,’LF’ にすれば良いみたい.
‘CR’ として試すと,”–” の有無に関係なく 502 Bad Gateway となってしまう.
また文字コードは,UTF-8 などを使用すると思うが,「BOM なし」の必要がある.


2021/01/03
SVG を出力するコード.

#!/usr/bin/perl --

print	"Content-type: text/html\n";
print	"\n";
print	"<!DOCTYPE html>\n";
print	"<html>\n";
print	"<head>\n";
print	"	<meta charset=\"utf-8\">\n";
print	"	<title>SVG</title>\n";
print	"	</head>\n";
print	"<body>\n";
print	"	<svg  viewBox=\"0 0 100 100 \"  xmlns=\"http://www.w3.org/2000/svg\" >\n";
print	"		<rect x=\"15\" y=\"10\" width=\"70\" height=\"40\" stroke=\"blue\" fill=\"white\" />\n";
print	"		</svg>\n";
print	"	</body>\n";
print	"</html>\n";

cgi draw_rect svg
/i_Tools/…/cgi/drawrect.cgi


更に cpp として書いたコード.
g++ drawrect.cpp として出来上がった a.out を rect_cpp.cgi としてコピー.
drawrect.cpp
/i_Tools/…/cgi/rect_cpp.cgi


https://jml.mish.work/index.php/various/nas/synology-nas.html

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

Synology PHP データ保存

ログを保存するコードで,
Warning: fopen(/…/Log/20170412.txt):
failed to open stream:
Permission denied in /…/log.php on line 24


どこの設定が影響しているのかが不明だが,
//itl.mydns.jp/3D_Data/ は OK .
//itl.mydns.jp/~i_Tools/ はうまく動作しない.

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

現在の時刻を文字列に

C++
 time_t tim_v = ::time(NULL) ;
 struct stm = ::localtime(&tim_v) ;
 tstring buff ;
 size_t size = 255 ;
 buff.resize(size+1,0) ;
 ::_tcsftime(&buff[0],size,_T(“%Y/%m/%d %H:%M:%S”),&stm) ;
 tstring str = buff.c_str() ;

MFC
 CString str = CTime::GetCurrentTime().Format(_T(“%Y/%m/%d %H:%M:%S”)) ;

JavaScript
 var time = new Date() ;
 var y_ = time.getFullYear() ;
 var m_ = time.getMonth() + 1 ;
 var d_ = time.getDate() ;
 var hh = time.getHours() ;
 var mm = time.getMinutes() ;
 var ss = time.getSeconds() ;
 var str= (y_+”/”+m_+”/”+d_+” “+hh+”:”+mm+”:”+ss) ;

PHP
 date_default_timezone_set(‘Asia/Tokyo’) ;
 $str = date(“Y/m/d H:i:s”) ;

timefmt.hxx

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

コンソール AP で MFC

コンソール AP で,MFC(AfxWin.h など)に依存したコードを利用


新しく書いたものは,次の様なコードで可能.

  #include	"EnhMetaF.hxx"
  #include	"i_trace.hxx"
  
  int _tmain(int argc, TCHAR* argv[])
  {
    	_tsetlocale(LC_ALL,_T("")) ;
    	{
      		EnhMetaF	emf ;
      		CMetaFileDC*	mfdc = emf.GetDC() ;
      		mfdc->Rectangle(10,10,30,20) ;
    		}
    	return 0 ;
    	}

古いコードは,うまく対応できてないので…

  #undef  	_CONSOLE
  #include	<AfxWin.h>
  #include	<AfxExt.h>
  #include	<AfxCmn.h>
  #ifdef	_WIN32
  #define  	_WINDOWS
  #endif
  #include	"MessCon.hxx"
  #include	"MessBar.hxx"
  #ifdef	MessageBar
    #undef	MessageBar
    #define	MessageBar	MessageCon
    #undef	I_SUPPORT_MESSAGE_MFC
  #endif
  #include	"MessWrap.hxx"
  // ...
  int _tmain(int argc, TCHAR* argv[])
  {
    	#ifdef	_MFC_VER
    	if (!::AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0)) {
      		return	1 ;
      		}
    	#else
    	_tsetlocale(LC_ALL,_T("")) ;
    	#endif
    //	...
    	}

undef の幾つかは,自コードの対応のために必要.

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

ubuntu 環境の再設定

mac 上の仮想マシンに入れた ubuntu
暫く使ってなかったので,LAN 環境などが当時の古いまま.
ubuntu は昨日更新して 16.04 LTS .
外にアクセスするルートは DHCP が使えるが,もう一つの LAN はDHCP サーバがない.
Win PC や mac からは特に問題なく使えてたが,ubuntu は安定しない?
IP を固定することで対応.
「接続を編集する…」-「編集」-「IPv4設定」で,169.254.xx.xx ,255.255.0.0 と指定.


WSS,WD Cloud,DS115j などにアクセス可能となった.
IIS など Web サーバは,IP でないと接続できないものもあり.

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

Xcode include

MFC や Windows に依存しないコードのテスト.
今 mac に入っているのは,Xcode Version 6.4.


Project Navigator で,対象のプロジェクトを選択.
検索の所に Search と入力して絞り込み.
Header Search Paths の /Applications/… となっている所をダブルクリック.
「+」で,/Users/Iwao/Public/Dropbox/Develop/_.SRC/__CPR_ などを追加.


VC では,「アクティブプロジェクトに設定」や「スタートアッププロジェクトの設定」にあたるもの.
ビルドや実行対象の変更は,メニューの「Product」-「Scheme」にある.
 以前と変わった?

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

EnumFilesTree で無限ループ

フォルダ以下の全てのファイルを列挙する関数

v_tstring	EnumFilesTree	(LPCTSTR path)
{
	v_tstring	foundFiles = ::EnumFiles(path) ;
	v_tstring	foundFolds = ::ExtractFolders(foundFiles) ;
	for (size_t index=0 ; index<foundFolds.size() ; index++) {
		tstring		subFold = foundFolds[index] ;
		v_tstring	chFiles = ::EnumFiles(subFold.c_str()) ;
		v_tstring	chFolds = ::ExtractFolders(chFiles) ;
		foundFolds.insert(foundFolds.end(),chFolds.begin(),chFolds.end()) ;
		foundFiles.insert(foundFiles.end(),chFiles.begin(),chFiles.end()) ;
		}
	return	foundFiles ;
	}

今まで特に問題なく動作していたが,
先週末 VC 14 i3DV のデバッグ版を実行すると無限ループに.
Release 版や,VC 12 のデバッグ版などでは OK .


昨日は,別の PC 環境だったため再現せず.


今日デバッガを使用して調査すると,
 フォルダの「作成日時」が正しくない.
 /wordpress/dev/2016/09/15/
そのため,_wstat64 が正しく帰ってこない.


v_tstring	EnumFiles	(LPCTSTR path_,const bool skipDot=true)
{
	tstring	path = ::Path_DelLastSP(path_) ;
	if (!File_IsDirectory(path.c_str()))	{
		path = ::Path_GetDir(path) ;
		}
	v_tstring	foundFiles ;
	#if		defined	__GNUC__
		foundFiles = ::EnumFiles_GNUC	(path,skipDot) ;
	#elif	defined	_MFC_VER
		foundFiles = ::EnumFiles_MFC	(path,skipDot) ;
	#elif	defined	_MSC_VER
		foundFiles = ::EnumFiles_MSC	(path,skipDot) ;
	#endif
	return	foundFiles ;
	}

ここの,File_IsDirectory(…) で,stat を利用している.


次の様に ::GetFileAttributes(…) の判断を追加.

	if (!::File_IsDirectory(path.c_str()))	{
		#if	(_MSC_VER == 1900)
		{
			if (!::FA_Is_Directory(path)) {
				path = ::Path_GetDir(path) ;
				}
			}
		#else
		{
			path = ::Path_GetDir(path) ;
			}
		#endif
		}

enumfile.hxx

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

CString , tstring

typedef std::basic_string  <TCHAR,std::char_traits<TCHAR>,std::allocator<TCHAR> >  tstring ;

CString tstring
Left (count) substr (0,count)
Mid (first) substr (first)
Mid (first,count) substr (first,count)
Right (count)
IsEmpty empty
Empty clear

CString , std::string , …
tstring.hxx

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

vector 要素の削除

MSDN vector::erase
MFC の CArray::RemoveAt(index,count=1)
 先頭要素の削除
  v1.erase( v1.begin( ) );
 [1] の削除
  v1.erase( v1.begin( )+1 );

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

VC 6 getline

先日のキー入力の動作を c++ で書き直し.
 while (_ftprintf(stderr,_T(“%s=”),_T(“入力?”)) ,
  _fgetts(buf,sizeof(buf),stdin) != NULL) { … }


最初次の様にしたが,
 while (std::terr << _T(“入力?=”) ,
  std::getline(std::tin,buf))
buf に一つずれて入ってくる.
次の方法では OK.
 while (std::terr << _T(“入力?=”) ,
  std::tin.getline(&buf[0],buf.size()))


VC 6 の問題の様で,VC 7 以降では上の方法で動作する.

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

コンマ演算子

古いデバッグ用のコードを見ていたら,こんなのがあった.
 while (_ftprintf(stderr,_T(“%s=”),_T(“入力してください”)) ,
  _fgetts(buf,sizeof(buf),stdin) != NULL) { … }


最近あまりこの様なコードを書くことがなく忘れていた.
 while の条件式の括弧の中に複数の文.コンマで区切られている.
 for ではインクリメントなどの変化式で使う.


MSDN コンマ演算子: ,
 次の様にすると,i には c が代入されるらしい.
   i = ( b , c ) ;
 括弧がないと b .
   i = b , c ;


MSDN コンマ演算子 (,) (JavaScript)
JavaScript でも同じ様な動作なら,今やっている所で使えそう.

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

threejs requestAnimationFrame

使い方が間違ってた?


  function three_start() {
    init() ;
    loop() ;
    }
  function loop() {
    controls.update();
    renderer.clear();
    renderer.render( scene, camera );
    requestAnimationFrame( loop );
    }


正しくは loader / babylon
  function init() {
    // …
    animate() ;
    // …
    }
  function animate() {
    requestAnimationFrame( animate );
    render();
    }
  function render() {
    controls.update();
    renderer.render( scene, camera );
    }
この方法でも,環境により CPU リソースが食われる.


一先ずここまで
本当は,完全にロードが終わったタイミングが取れれば良いのだが…

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

threejs OrbitControls

以前(r58)調べた時,動作が変だったが…
  var controls = new THREE.OrbitControls( Camera, Renderer.domElement );
  controls.addEventListener( ‘change’, ThreeRender );
  controls.target.set(w/2,d/2,h/4) ;
  controls.update();
r84 では意図した動作になっている.


他にも幾つか動作を見直し中


r84 で
 3MFLoader は,うまく動作しない.
 AMFLoader は,テクスチャサポートなし?

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

three.js OBJMTLLoader

以前調べた時と OBJMTLLoader の扱いが異なっているので,
 サンプルの該当部分を抽出.


r58
 var loader = new THREE.OBJMTLLoader();
 loader.addEventListener( ‘load’, function ( event ) {
  var object = event.content;
  object.position.y = – 80;
  scene.add( object );
  });
 loader.load( ‘obj/male02/male02.obj’, ‘obj/male02/male02_dds.mtl’ );


r66
 var loader = new THREE.OBJMTLLoader();
 loader.load( ‘obj/male02/male02.obj’, ‘obj/male02/male02_dds.mtl’, function ( object ) {
  object.position.y = – 80;
  scene.add( object );
  } );


r84
 var onProgress = function ( xhr ) {
  if ( xhr.lengthComputable ) {
   var percentComplete = xhr.loaded / xhr.total * 100;
   console.log( Math.round(percentComplete, 2) + ‘% downloaded’ );
   }
  };
 var onError = function ( xhr ) { };
 THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
 var mtlLoader = new THREE.MTLLoader();
 mtlLoader.setPath( ‘obj/male02/’ );
 mtlLoader.load( ‘male02_dds.mtl’, function( materials ) {
  materials.preload();
  var objLoader = new THREE.OBJLoader();
  objLoader.setMaterials( materials );
  objLoader.setPath( ‘obj/male02/’ );
  objLoader.load( ‘male02.obj’, function ( object ) {
   object.position.y = – 95;
   scene.add( object );
   }, onProgress, onError );
  });


r74 から変更されていて,OBJMTLLoader が削除されたらしい.
https://github.com/mrdoob/three.js/releases?after=r75
Improved OBJLoader and MTLLoader and made OBJMTLLoader obsolete.
それで参考にさせてもらったのがここ
http://stackoverflow.com/questions/35380403/how-to-use-objloader-and-mtlloader-in-three-js-r74-and-later


他にも,OBJLoader のデータのチェックが厳しくなったみたいで,
r84 OBJLoader.js 632 行目で
 throw new Error( "Unexpected line: '" + line + "'" );


クラスによっては前からみたいだが,position が readonly .
position のメンバに対して代入すれば OK .


2023/08
https://dev.mish.work/wordpress/category/webgl/
https://itl.mish.work/_lib/js/i_lib/threejs/r131/c_3js_10.js

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

SceneJS

Cube.imo (0,0,0)-(1000,1000,1000) のデータに対して,
 translate X:-500 , y:-500 , z:500


spinYaw で,回転.spinPitch は上下方向.
yaw , pitch で最初の位置(角度で単位は度?).
zoom が中心までの相対位置?
zoomSensitivity は拡大率.
 yaw : 30 ,
 pitch : -10 ,
 zoom : 2500,
 zoomSensitivity : 100 ,
 spinYaw : 0.3 ,
cube_imo.html


yaw : 90 で右から.180 で後ろから.
pitch : -20 としているので,
 translate の y は中心でなく高さの 30% の位置にしている.
どうも材質の指定(obj の mtl など)は,効いてないみたい.
 script 内の type:”texture” , src: … で指定する?

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

B65/R 追加

dynabook B65/R 追加.
はじめに.pdf にある通り,次の作業.
 リカバリーメディアの作成.
 PC 引越ナビ.


Win 10 のメディアは付属していたが,Win 7 が入っている状態.
セットアップで 32 / 64 ビットの選択があり,
 メモリが 4 G なので 32 を選択.
DVD-ROM ドライブのため,BRD-UT16WX を接続して作成.
DVR-R 4.7G メディアは 4 枚で,作成時間は 1 時間程度.
よく知らなかったが,
 DVD-ROM ドライブでも DVD-R のメディアは読めるみたい.


旧 PC は TXE/68HE で,USB メモリと LAN ケーブルを使う方法で.
USB メモリは空きが 50 MB 程度のものを利用.
LAN は旧 PC の制限で 100 M bps みたい.
転送されたデータは 100 G 程度で,6 時間位かかった.


その後 Web に接続して,MSSE をインストール.

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

Win7 x86 に IIS

今回は Win7 環境で 3D データをダウンロード可能とするための設定.
three_js_imo


「コントロールパネル」-「プログラムと機能」から
  「Windows の機能の有効化または無効化」.
「インターネットインフォメーションサービス」にチェック.
win7_iis_check
localhost にアクセスすると,

ローカルから http://win7-mg-/ も可能.


他の PC から接続すると,
接続がタイムアウトしました
win7-mg- のサーバーからの応答が一定時間以内に返ってきませんでした。
このサイトが一時的に利用できなくなっていたり、サーバーの負荷が高すぎて接続できなくなっている可能性があります。しばらくしてから再度試してください。
他のサイトも表示できない場合、コンピューターのネットワーク接続を確認してください。
ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox によるウェブアクセスが許可されているか確認してください。

他の PC からも可能にする場合は,ファイアウォールの設定が必要.
win7_iis_80_enable


「IIS マネージャー」の「サイト」-「右クリック」で「Web サイトの追加…」.
win7_iis_site_add
サイト名や物理パスを指定して「OK」.
win7_iis_add_site
—————————
Web サイトの追加
—————————
バインド ‘*:80:’ は別のサイトに割り当てられています。このサイトに同じバインドを割り当てると、いずれか一方のサイトしか開始できなくなります。重複するバインドを追加しますか?
—————————
はい(Y) いいえ(N)
—————————
win7_iis_add_80
「バインド ‘*:80:’ は…」と出るがそのまま「はい」.
「Default Web Site」-「右クリック」-「バインドの編集…」.
win7_iis_edit_bind
「ポート」を「80」でない,「8000」などに.
状態が停止しているので「開始」を「クリック」.
win7_iis_start_new_site


まだファイルなどが存在しないので,localhost にアクセスすると,
win7_iis_error_403_14
他の PC からは,「403 – 許可されていません: アクセスが…」
最終的には「無効」にするが,「ディレクトリの参照」を「有効」に.
win7_iis_dir_list
win7_iis_dir_enable
win7_iis_local_empty


3D データを web に展開.
win7_iis_3d_data
localhost/3D_Data/ を開くと,
win7_iis_local_3d_data
localhost/3D_Data/three_js/ThreeIMO.htm を開くと,
win7_iis_three_js_empty
動作はしているが,データが表示されない.
localhost/3D_Data/three_js/Cube.imo を開くと,
win7_iis_cube_imo_404_3
MIME マップの追加が必要で,
win7_iis_mime_
「MIME の種類」をどう指定するべきかは不明だが,
win7_iis_mime_imo
「application/IMO」として追加.


これらの幾つかの情報は TechNet にもある.
TechNet IIS での静的な Web サイトの構築

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

three.js obj

three.js の OBJMTLLoader で,imo を使用できそう.

   var loader = new THREE.OBJMTLLoader();
   loader.addEventListener('load', function (event) {
    var object = event.content;
    object.rotation.set(90 * Math.PI / 180, 0, 0);
    Scene.add(object);
   });
   loader.load('Cube.imo');

ThreeIMO.htm


imo は,OBJとMTL を拡張した個人的な形式です.
i3DV で表示可能です.

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

html style

今まで HTML の範囲としていたので次の様にしていたが,
 static Xml_E img   (c_tstring& src) {
   Xml_E img_(HTM_img) ;
     img_.AddAttribute(HTM_src,src) ;
   return img_ ;
   }

 static Xml_E img_b  (c_tstring& src) {
   Xml_E img = HtmOut::img(src) ;
     img.AddAttribute(HTM_border,_T("1")) ;
   return img ;
   }
 static Xml_E img_b_at_w (c_tstring& src,c_tstring& name,c_tstring& width) {
   Xml_E img = HtmOut::img_b(src) ;
     img.AddAttribute(HTM_alt, name) ;
     img.AddAttribute(HTM_title, name) ;
    if (!width.empty()) {
     img.AddAttribute(HTM_width, width) ;
     }
   return img ;
   }

css を利用することにより,もう少し簡単にできそう.


ここの記述で,タブサイズを指定したが,
<code style=” -o-tab-size: 4 ; -moz-tab-size: 4 ; tab-size: 4 ;”>
Blogger では,記事を書いて「保存」すると” “(半角スペース)に置換えられてしまう.


css のコメントは,C 等の様に /* */

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

index.htm が開かれない

DS115j で,WordPress でない\\DS115j\web\以下の index.htm が開かれなくなった.
http://itl.mydns.jp/3D_Data/ の様な指定.
http://itl.mydns.jp/3D_Data/index.htm と指定すれば OK .
パーソナルWebサイトの方は OK みたい.
http://itl.mydns.jp/~…/


原因は,「Web Station」の「全般設定」で「Apache…」から「Nginx」に変更したため.
index.html を置くことで様子見.
DSM > ヘルプ > Web Station

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