WN-AC1167R 追加
アクセスポイントとして WN-AC1167R を追加.
単に接続するだけならば,特に難しい部分はなし.
最初「APモード」としてうまく認識していなかったのか,AC アダプタを抜いて再起動.
ちょっと失敗したのが,有線 LAN が 100 M .
パッケージの「有線 Giga」は誤解を招きそうと思う(私もちゃんと見てなくて勘違い).
型番で G が付くものが有線 LAN を含む全ポート Gigabit 対応?
無線 LAN のチャンネルや帯域を設定は,AC1167R の IP アドレスが必要になる.
Magical Finder が必要で 107SH にインストール(Moto G5 は Android 7.0 のため?動作しない).
ここで表示される IP アドレスを PC のブラウザに入力して設定.
AC1167R に WD Cloud をつなげたので,次のアラートが…
イベント タイトル:10/100 でイーサネット ポート %1 に接続されています
イベント タイトル:ネットワーク リンク停止
再起動したりしているので当然だが,ある時からほぼ毎日 2:00 と 9:00 にメールが来るようになっていた.
原因はルータ BL190HW の「省エネモード設定」で,とりあえず無効に.
設置してしばらくして気付いたのが,Web サーバが外からアクセスできなくなっていた.
LAN 内からは問題ないので,Web サーバの再起動と,ルータ BL190HW を再起動.
2017/11/07
WN-AC1167R の現在時刻が正しくない.1/1 にリセットされている.
また,「インターネットに接続されてない」という表示があった?
再起動して OK .
2017/11/08
Aterm WR9500N より,届く範囲が少し狭い様に感じる.
届きにくかった部屋は解消できているので,出力も少し押さえて利用.
2017/11/16
その後,特に問題なく安定しているように見える.
2018/02/15
Magical Finder for Andriod Version 4.0.0 Build 1115 で,Moto G5 でも動作する様になっている.
2018/02/28
107SH では動作しなくなった?
CObArray <--> CObList
CObList の形式のデータを配列として処理したかったので,その相互変換(Sort_ind.hxx 内).
#ifdef _MFC_VER
//*******************************************************************************
// ObList -> ObArray
// Create : 2017/10/30
//*******************************************************************************
inline bool To_ObArray (const CObList& src,CObArray* dstAry)
{
if (dstAry == NULL) { return false ; }
dstAry->RemoveAll() ;
{
POSITION pos = src.GetHeadPosition();
while (pos != NULL) {
CObject* pObj = src.GetNext(pos);
dstAry->Add(pObj) ;
}
}
return true ;
}
//*******************************************************************************
// ObArray -> ObList
// Create : 2017/10/30
//*******************************************************************************
inline bool To_ObList (const CObArray& src,CObList* dstLst)
{
if (dstLst == NULL) { return false ; }
dstLst->RemoveAll() ;
{
for (INT_PTR index=0 ; index<src.GetSize() ; index++) {
CObject* pObj = src[index] ;
dstLst->AddTail(pObj) ;
}
}
return true ;
}
#endif // _MFC_VER
NW71 追加
airdisk NW71 を追加.
よく調べなかったからではあるが,’A+Disk’ は,Moto G5 では動作しない.
iodata のサイトのマニュアルのダウンロード先から,pdf を入手.
http://www.iodata.jp/lib/manual/pdf2/airdisk.pdf
または,アイオープラザの airdisk 紹介ページから.
https://www.ioplaza.jp/select/airdisk/pdf/airdisk-h03.pdf
pdf によると HiDisk に変更されている.
Wi-Fi 接続した状態で,192.168.222.254 にアクセスすると,
初期状態ではパスワードがかかっていないので SSID のパスワードを設定.
ブラウザからの Basic Setting からでも入れる.
T5400 そろそろ…
Windows Update を行って,再起動.もう一回再起動.
340 の末期の頃と似た現象.
Aero などのトラブルシューティングに入っていくと,
「デスクトップ ウィンドウ マネージャーが無効になっている」.
意外とこの状態の方が表示周りはサクサク動いている様に感じる.
DiXiM Digital TV plus で再生ができない.
2017/10/20 今日はネットワークが見えなくなった.PC の再起動で対応.
2017/11/01 仮想マシンのマウス入力が効かなくなった.仮想 PC の再起動で対応.
2017/11/08
今度は,USB 機器が突然認識しなくなった.
接続し直したり,再起動してもダメ.
特に困ったのは,切替機(USH2-24SSV)に接続したキーボードとマウス.
さらに再起動して,別のポートにキーボードとマウスを接続してやっと認識できた.
2017/11/09
これとの関係ははっきりしないが,仮想 PC から NAS の参照で幾つかのファイルが開けない現象が発生.
他にも,Outlook のフォルダ構成が変わってしまい意図しない所に移動している?
2017/11/16
今日になって,ネットワークが不安定.
NAS やルータ,PC を再起動して何とかつながる様になったみたい.
Aero が動作する様になった.この再起動の時,Windows Update があったのでその影響か?
BRD-UT16WX その後
今年の初めの頃に BRD-UT16WX を追加したが,BD が見れなくてあまり活用できていなかった.
今日 CD を焼きたいと思い,IOPortal に行くと WinDVD が新しくなっている.
これをダウンロードしてインストール,
実行すると前回再生できなかった BTTF が見られるようになった.
NSZT-W64 地図更新
先週位からナビ起動時に,地図データ更新期限のメッセージ…
いつもお世話になっているトヨタの人に聞くと「面倒ですよ」とのこと.
個人的に躓いたのは次の内容.
ナビ情報の登録
予想以上の更新時間
更新の失敗
ナビ情報の登録は,私の場合は「品番」と「シリアル」が必要でした.
車台番号ではダメで,その画面の一番下で入力するのですが,それがわかり難かった.
また,ナビ本体でも確認できる様です.
トヨタ純正カーナビNSZT-W64のシリアル番号の調べ方(SDカードの地図更新)
地図データの更新
「地図SDを抜かないで…」と出ているので,その間検索してみると 3 時間以上かかるとのこと.
手順なども含めこちらで詳しく書かれています.
トヨタのナビ更新サービスのマップオンデマンドが結構大変な件
更新を行っていたのが昨日の夜だったので,そのまま放置.
画面を撮るのを忘れたのですが,確か 84/3468 で止まった状態.
今思うと,PC がスリープに入ったのが原因?
検索すると,ちょっと表示は異なるのですが,
地図データ更新(失敗) 地図SDリカバリー
地図データ更新(失敗) 地図SDリカバリー 続きです
そこにある手順通りに,
ユーザー情報削除
ローカル地図データ削除
MapOnDemand を再起動して,zip のドロップから再度操作.
3 時間位かかって,やっと更新終了.
はっきりは分かりませんが,SD への書き込みが動作する前に止まっていたのではと思います.
外からの接続が不安定
朝見ると,http://itl.mydns.jp や http://iwao.synology.me などへの外からの接続ができなくなっていた.
外へのアクセスは特に問題なさそう.
先日 DS116 を追加して,いろいろいじったためと思ったが…
DS115j のログにエラーがある.
Error システム 2017/09/27 03:24:25 SYSTEM System failed to register [27.92..] to [xxx.jp] in DDNS server …
5 年以上前から 121.108…. から変更されなかったので,丁度良いと思っていたのに…
IP が変わったことにより,何かの整合性が取れてないのかもしれない.
ルータ,アクセスポイント,外からアクセスできるサーバなど,何度か再起動して落ち着いた?
DS116 追加
1 年近く DS115j を使用してきたが,想定していた以上の利用になりちょっとパワー不足に.
特に,週末実行している Antivirus Essential が動き出すと DSM などもうまく入れないこともある.
DS116 と DS115j の比較や性能を参考にして DS116 に.
データが全く同じではないので単純には比べられないが,26000 個のスキャン 6 時間が 15 分程度に.
DS115j から DS116 へのファイルのコピーでの状態.
DS115j では,CPU とメモリがボトルネックになっている様であるが,DS116 ではまだ余裕がありそう.
2017/09/29
ストレージや,DS116 では 40 ℃ 前後だが,DS115j の本体?の温度は 50 ℃ 位になっている.
CHttpFile を使用したアップロード
CHttpFile を使用したアップロードのコードを整理.
サーバ側は先日の php と同様.
https://jml.mish.work/index.php/i-tools/upload-htm-php.html
//*******************************************************************************
// send request define
// Create : 2017/08/28
//*******************************************************************************
#define C_CRLF _T("\r\n") ;
#define CT_ct_mp_fd_b_ _T("Content-Type: multipart/form-data; boundary=")
#define CT_boundary__ _T("--")
#define CD_cd_f_d_n_ _T("Content-Disposition: form-data; name=")
#define CD_cd__fn_ _T("; filename=") ;
#define CT_ct_a_o_s _T("Content-Type: application/octet-stream")
//*******************************************************************************
// make send data
// Create : 2017/08/28
//*******************************************************************************
inline 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+= T_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_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()) ;
}
#ifdef _DEBUG
{
::i_Dump(sndData,(::Path_GetName(upFile)+_T(".txt")).c_str()) ;
}
#endif
return sndData ;
}
//*******************************************************************************
// upload
// Create : 2017/08/28
//*******************************************************************************
inline bool UploadFile (LPCTSTR svrName,LPCTSTR php,LPCTSTR upFile)
{
{
if (::File_IsNothing(upFile)) { return false ; }
// if (::File_GetSize (upFile) > 2048*1024) { return false ; }
}
tstring head ;
v_char sndData ;
{
tstring ___boundary = _T("-----UpFile__2017_08_30") ;
___boundary = _T("-----") + ::Path_GetName(_T(__FILE__)) + _T("__") + ::Now_Format(_T("%H%M%S")) ;
head = CT_ct_mp_fd_b_ + ___boundary ;
sndData = Make_send_data(upFile, ___boundary.c_str()) ;
}
tstring serverN = svrName ;
tstring portStr ;
{
v_tstring strAry = ::String_Split(svrName,false,_T(":")) ;
if (strAry.size() >= 2) {
serverN = strAry[0] ;
portStr = strAry[1] ;
}
}
INTERNET_PORT nPort = 0 ;
nPort = ::ttou2(portStr) ;
tstring userAgent = _T("drop_up") ;
userAgent = ::Path_GetName(_T(__FILE__)).c_str() ;
#ifdef _WIN32
{
userAgent = ::Path_GetName(::i_GetModuleFileName()) ;
{
tstring osVer = _T("Windows NT ") + ::To_tstring_rz(::GetWinVer_exe()) ;
osVer += tstring(_T(" "))+ Bracket_Add(::GetWinVerStr_exe(),_T('(')).c_str() ;
userAgent += _T(" ") + osVer ;
userAgent += EXE_AddVerBuildStr() ;
}
}
#endif
CInternetSession session(userAgent.c_str()) ;
CHttpConnection* pServer = NULL ;
CHttpFile* pFile = NULL ;
DWORD dwStatus = 0 ;
try {
pServer = session.GetHttpConnection(serverN.c_str(),nPort) ;
if (pServer == NULL) { return false ; }
{
CString headStr = head.c_str() ;
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, php) ;
if (pFile == NULL) { return false ; }
pFile->SendRequest(headStr,(LPVOID)(&sndData[0]),DWORD(sndData.size())) ;
pFile->QueryInfoStatusCode(dwStatus) ;
}
{
delete (pFile) ;
delete (pServer) ;
}
}
catch (CInternetException* e) {
CString errMsg ;
e->GetErrorMessage(errMsg.GetBuffer(1024),1024) ;
errMsg.ReleaseBuffer() ;
std::tout << LPCTSTR(errMsg) << std::endl ;
return false ;
}
session.Close() ;
return true ;
}
//*******************************************************************************
// upload files
// Create : 2017/08/29
//*******************************************************************************
inline bool UploadFiles (c_v_tstring& upFiles)
{
v_tstring svr_php = ::UF_get_server_php() ;
tstring serverN = svr_php[0] ;
tstring phpName = svr_php[1] ;
for (size_t index=0 ; index<upFiles.size() ; index++) {
tstring upFile = upFiles[index] ;
if (::File_IsNothing(upFile)) { continue ; }
if (!::UploadFile(serverN.c_str(),phpName.c_str(),upFile.c_str())) {
return false ;
}
}
return true ;
}
これらを使用したツールは以下にあります.
https://i-tools.mish.work/2019/10/up-htm.html
2020/09
日本語を含むファイル名のアップロード
データ送信 htm , php
html で複数のファイルを指定,php でそれを move_upload_file .
up_data.htm
<form enctype="multipart/form-data" action="up_data.php" method="POST">
upload file:<br/>
<input name="file_1" type="file" /><br/>
<input name="file_2" type="file" /><br/>
<input type="submit" value="send" />
</form>
up_data.php
<?php
if (!file_exists("./data")) {
mkdir("./data") ;
}
foreach ($_FILES as $keys => $values) {
$file_e = $values ;
$tempfile = $file_e[‘tmp_name’] ;
$filename = ‘./data/’ . $file_e[‘name’] ;
if (is_uploaded_file($tempfile)) {
move_uploaded_file($tempfile,$filename) ;
}
}
$scan_f = scandir("./data") ;
foreach ($scan_f as $key => $value) {
echo $value . "<br/>\r\n" ;
}
?>
データ送信 CHttpFile
送信するデータの中身をどの様に指定するかわかってないので,CHttpFile でもう一度やり直し.
MSDN CHttpFile クラスにあるサンプルのコードで,前回と同様にデータが送れることは確認.
content.txt を用意して,あればそれを読込んで送る様に変更.
CString strData = _T(“Some very long data to be POSTed here!”);
{
CString dataFile = _T(“./content3.txt”) ;
if (::File_IsExist(dataFile)) {
strData = ::LoadText(dataFile).c_str() ;
}
}
Content-Type: multipart/form-data; boundary=—-WebKitFormBoundaryHQUnqULNgae5Y5HW
——WebKitFormBoundaryHQUnqULNgae5Y5HW
Content-Disposition: form-data; name=”file_imo”; filename=”up_Cube.imo”
Content-Type: application/octet-stream
v 0 0 -5
v 0 0 0
v 0 5 0
v 0 5 -5
v 5 0 -5
v 5 5 -5
v 5 0 0
v 5 5 0
f 1 2 3 4
f 5 1 4 6
f 7 5 6 8
f 2 7 8 3
f 3 8 6 4
f 2 1 5 7
——WebKitFormBoundaryHQUnqULNgae5Y5HW
Content-Disposition: form-data; name=”file_htm”; filename=”up_Cube.htm”
Content-Type: application/octet-stream
<!DOCTYPE html>
<html lang=”ja” >
<head >
<meta charset=”UTF-8″ />
< script src=”/_lib/js/webgl/threejs/r84/build/three.js”> </script>
< script src=”/_lib/js/webgl/threejs/r84/examples/js/Detector.js”> </script>
< script src=”/_lib/js/webgl/threejs/r84/examples/js/controls/OrbitControls.js”> </script>
< script src=”/_lib/js/webgl/threejs/r84/examples/js/loaders/MTLLoader.js”> </script>
< script src=”/_lib/js/i_lib/threejs/r84/IMOLoader.js”> </script>
< script src=”/_lib/js/i_lib/threejs/r84/c_3js_4.js”> </script>
< script src=”/_lib/js/i_lib/2017.03/filePath.js”> </script>
</head>
<body>
var imoFile=’up_Cube.imo’;
ThreeStart3 (imoFile,5,5,5) ;
</body>
</html>
——WebKitFormBoundaryHQUnqULNgae5Y5HW–
データは送られているが,PHP の $_FILES にうまく設定されていない.
$str = var_export($_FILES,true) ;
ヘッダ部分の指定が間違っていたみたいで,
CString strHead ;
{
CString dataFile = _T(“./content3.txt”) ;
if (::File_IsExist(dataFile)) {
strData = ::LoadText(dataFile).c_str() ;
{
v_tstring strAry = ::String_SplitLine(strData) ;
if (strAry.size() > 0) {
strHead = strAry[0].c_str() ;
strAry.erase(strAry.begin()) ;
strData = ::String_Join_Line(strAry).c_str() ;
}
}
}
}
送信部分も,SendRequestEx から SendRequest に変更.
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T(“/…/t_mfc_h/t_mfc_h.php”)) ;
pFile->SendRequest(strHead,(LPVOID)LPCTSTR(strData),strData.GetLength()) ;
pFile->QueryInfoStatusCode(dwStatus) ;
2017/09/04 CHttpFile を利用したアップロード
UpFile.hxx
UpFile.hxx
データの送信 socket
3D データをアップするのに,複数のファイルを指定するのが面倒
調べてみると socket でいけそう?
利用するのは Win AP なので,MFC で良いかと思い調べると
CAsyncSocket や CSocket は適切ではないとのこと.
プログラミング Visual C++.NET Vol.2 活用編
第28章 インターネット通信の基礎 313 ページ
28.3.2 MFC の Winsock クラス
参考になるコードを探したが,その範囲でわかりやすかったのがここ.
http://www.katto.comm.waseda.ac.jp/~katto/
http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html
但し,そのままのコードではコンパイルエラーなどが少しあったので修正.
また,#ifdef _MSC_VER で一つのコードに.
sock_tcp.zip
VC 6 と DS115j でビルドし動作を確認.
ここまでの範囲では,クライアントからサーバに固定の文字列を送信.
LAN 内の PC と NAS などで相互に確認済み.
tcp_s.cpp のコードを一部修正.
char buffer[BUFFER_SIZE+10]; // +10 の大きさに
受信部分で
while(1) {
memset(&buffer,0,sizeof(buffer)) ; // バッファのクリアを追加
numrcv = recv(dstSocket, buffer, BUFFER_SIZE, 0);
…
}
サーバ側の tcp_s.exe を実行.
次の様な html を用意して,ブラウザで開く.
<!DOCTYPE html>
<html lang=”ja” >
<head >
<meta charset=”UTF-8″ />
</head>
<body >
<form action=”http://localhost:9876/” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”fname”>
<input type=”submit” value=”upload”>
</form>
</body>
</html>
何も指定せずに「upload」.
C:\…\Iwao>”C:\…\tcp\tcp_s\Release\tcp_s.exe”
Waiting for connection …
Connected from 127.0.0.1
received: POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, appli
cation/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/ms
received: word, */*
Referer: http://ds115j/Test/test_up/test_up.htm
Accept-Language: ja
Content-Type: multipart/form-data; boundary=—————————7e13a71ce4098a
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows N
received: T 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Host: localhost:9876
Content-Length: 195
Connection: Keep-Alive
Cache-Control: no-cache
—————————
received: –7e13a71ce4098a
Content-Disposition: form-data; name=”fname”; filename=””
Content-Type: application/octet-stream
—————————–7e13a71ce4098a–
C:\…\Iwao>
ClassicASP や ASP.NET でのファイルのアップロード
ASP を使用して Web サーバーにファイルをアップロードする方法
IIS7 ファイルアップロード用ページを簡単に作成する方法
ASP.NET の方は動作確認済み.
http://www.geekpage.jp/
http://www.geekpage.jp/programming/winsock/
ダイアログバーに CCheckListBox
通常のダイアログに CCheckListBox を追加するには,次のような手順.
CCheckListBox の使い方
ダイアログバーでは,次の様にしてもデータが表示されない.
CCheckListBox* clb = (CCheckListBox*)m_wndDlgBar.GetDlgItem(IDC_CHECK_LB) ; clb->AddString("....") ;
以前作成した,オーナー描画のドロップダウンを思い出しコードを見ると,
CMainFrame に変数を追加して,サブクラス化している. CMainFrame::OnCreate でダイアログバーを Create した後, m_ODCB.SubclassDlgItem(IDC_COMBO,&m_wndDlgBar) ;
このコードの最初は,2004/07.
手元にある幾つかの本を見たが見つからなかった.
何を参考にしたかは今となっては不明.
LBN_SELCHANGE で選択された状態がイマイチ.
内容を更新(PostMessage)するとインデックス 0 の項目に薄い点線が付く.
SendMessage として更新後,選ばれていた項目を SetCurSel することで対応.
WSR-300HP 追加
先日,WLI-UC-AG300N を追加し「ワイヤレス ルーター」として設定したが,
ちょっと不安定なのと,そこからは外を覗かない様にしたかったのであまり使えないでいた.
どちらかと言うと,独立した AP として利用していた感じ.
「ホテルルーター」が良いかとも思ったが,発熱の問題や,長時間だと不安定になることがあるなどとあった.
いろいろ考え,やはり独立した「ルーター」が良さそうと思い量販店へ.
「安価なルーター」で「Wi-Fi や GIGA ビットはあればなお良い」と言うことで探してもらった.
それですすめてもらったのが WSR-300HP .価格的にも予定範囲内.
接続などは特に困ることもなく LAN 内は独立して意図した動作となった.
が,T5400 で「インターネット」接続が不安定なことは残っていた(前回あまり調べてなかった).
どうも「デフォルトゲートウェイ」の設定がよくなかったみたいで,追加した側の IP を固定に.
2017/07/11
固定 IP にすることだと,本来 DHCP サーバを使いたかったのでこのルーターを追加する意味が半減する.
さらに調べてみると,
Windows 7 でネットワーク接続の優先順位を変更する方法
iframe を右下に
左上を指定して下や右をフィットさせるのが意外と面倒だったので…
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title >iframe</title>
<style>
body {
margin : auto auto auto auto ;
overflow : hidden ;
}
</style>
</head>
<body>
Text<br/>
<iframe
src='/3D_Data/three_js/ThreeIMO.htm'
name='ifrm'
style='
position : absolute ;
width : 99% ;
height : 90% ;
bottom : 2pt ;
margin-left : 2pt ;
margin-right : 2pt ;
'
>
</iframe>
</body>
</html>
//itl.mish.work/~Iwao/…/test6/
2017/07/10 さらに変更したもの
itl.mish.work/…/to_wgl/
IIS+PHP-3
さらに次の様な exe の起動.
exec (change_sp(“./imotowgl”)) ;
あまり関係ないが php と同じ場所に imotowgl と IMOtoWGL.exe が存在する.
この指定では,DS115j ではうまく動作しているが IIS 環境では起動できないみたい.
次の様に exe を付けるか,大文字などファイル名を正しく指定する必要があるみたい.
exec (change_sp(“./imotowgl.exe”)) ;
exec (change_sp(“./IMOtoWGL”)) ;
change_exe 関数を追加することに.
php の動作を確認していて,何かうまく動作しない.
と思ったら,「既定のドキュメント」の設定.
change_exe は,
function change_exe ($path) {
$exe = $path ;
if (DIRECTORY_SEPARATOR == ‘/’) { $exe = strtolower($exe) ; }
else { $exe = $exe . “.exe” ; }
$exe = str_replace (“/”,DIRECTORY_SEPARATOR,$exe) ;
return $exe ;
}
さらに実行ファイルの場所も,相対位置ではなく change_cmd 内で求める様に変更.
<?php
include ($_SERVER[“DOCUMENT_ROOT”] . “/…/i_lib.php”) ;
// exec (change_sp(“./bin/DrawNow”)) ;
exec (change_cmd(“DrawNow”)) ;
readfile(“./drawnow.htm”) ;
?>
動作は,DrawNow .
実行時のエラー OpenMP
普段通っているコードなのに,ある条件(操作)で実行時にエラー.
エラーの場所はある範囲(DelFileE への登録)ではあるが,固定されてない.
CStringArray に CString の追加.
コールスタックを見ると MakeFace$omp$1 とある.
ucrtbased.dll!__VCrtDbgReportA () 不明
ucrtbased.dll!__CrtDbgReport () 不明
mfc140ud.dll!AfxAssertFailedLine(const char * lpszFileName, int nLine) 行 333 C++
mfc140ud.dll!CWnd::DestroyWindow() 行 1055 C++
mfc140ud.dll!CToolTipCtrl::DestroyToolTipCtrl() 行 73 C++
mfc140ud.dll!AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE() 行 253 C++
mfc140ud.dll!AFX_MODULE_THREAD_STATE::`scalar deleting destructor'(unsigned int) C++
mfc140ud.dll!CThreadSlotData::DeleteValues(CThreadData * pData, HINSTANCE__ * hInst) 行 354 C++
mfc140ud.dll!CThreadSlotData::DeleteValues(HINSTANCE__ * hInst, int bAll) 行 396 C++
mfc140ud.dll!AfxTermLocalData(HINSTANCE__ * hInst, int bAll) 行 494 C++
mfc140ud.dll!DllMain(HINSTANCE__ * hInstance, unsigned long dwReason, void * __formal) 行 663 C++
mfc140ud.dll!dllmain_dispatch(HINSTANCE__ * const …, void * const reserved) 行 195 C++
mfc140ud.dll!_DllMainCRTStartup(HINSTANCE__ * const …, void * const reserved) 行 248 C++
ntdll.dll!_LdrpCallInitRoutine@16 () 不明
ntdll.dll!_LdrShutdownProcess@0 () 不明
ntdll.dll!_RtlExitUserProcess@4 () 不明
kernel32.dll!_ExitProcessStub@4 () 不明
ucrtbased.dll!__crt_hmodule_traits::close(struct HINSTANCE__ *) 不明
ucrtbased.dll!__crt_hmodule_traits::close(struct HINSTANCE__ *) 不明
ucrtbased.dll!__Exit () 不明
ucrtbased.dll!_raise () 不明
ucrtbased.dll!__acrt_lock_and_call<class <lambda_fe…55> >(enum __acrt_lock_id,class <…; &&) 不明
ucrtbased.dll!___acrt_MessageWindowA () 不明
ucrtbased.dll!__VCrtDbgReportA () 不明
ucrtbased.dll!__CrtDbgReport () 不明
mfc140ud.dll!AfxAssertFailedLine(const char * lpszFileName, int nLine) 行 333 C++
mfc140ud.dll!CStringArray::SetSize(int nNewSize, int nGrowBy) 行 165 C++
mfc140ud.dll!CStringArray::SetAtGrow(int …, const ATL::CStringT<wchar_t,… > & newElement) 行 265 C++
mfc140ud.dll!CStringArray::Add(const ATL::CStringT<wchar_t, … > & newElement) 行 322 C++
BlockIn.exe!DelFileE::Add(const wchar_t * fileName) 行 51 C++
BlockIn.exe!CacheFile::GetCF_Name(const wchar_t * srcName, const unsigned int dibWidth) 行 415 C++
BlockIn.exe!PartsA_To::ToIPX(const wchar_t * ipxName) 行 257 C++
BlockIn.exe!PartsA_To::DumpDebug(const int delFE, const wchar_t * pre_) 行 297 C++
BlockIn.exe!PartsA_To::DumpDebug(const wchar_t * pre) 行 47 C++
BlockIn.exe!PartsA_Fnc_DebugDump(PartsA & partsAry, const wchar_t * pre) 行 818 C++
BlockIn.exe!MaPat__DebugDump(const Parts & parts) 行 3293 C++
BlockIn.exe!MaPat::MakePartsFace(const int makeEdge) 行 3481 C++
BlockIn.exe!BAPat::MakePartsFace(const int makeEdge) 行 1508 C++
BlockIn.exe!BAPat::GetPartsFace(const int makeEdge) 行 1935 C++
BlockIn.exe!BlockInf::MakeFace(const int makeEdge) 行 3465 C++
> BlockIn.exe!BlockLay::MakeFace$omp$1() 行 4320 C++
[外部コード]
次の様に #pragma omp critical を追加.
BOOL DelFileE::Add (LPCTSTR fileName)
{
#ifdef _OPENMP
#pragma omp critical (DelFileE_Add)
#endif
{
CString filePath = ::FolderDelLastSP(fileName) ;
DelFileName.Add(filePath) ;
}
return TRUE ;
}
IIS+PHP-2
先日 php のインクルードなどに PHP_OS を利用していたが,
$base = “/…/web” ;
if (PHP_OS == ‘WINNT’) { $base = “c:/…/web” ; }
else { $base = “/…/web” ; }
include ($base . “/_lib/…/log.php”) ;
$_SERVER[“DOCUMENT_ROOT”] を見つけたので,
include ($_SERVER[“DOCUMENT_ROOT”] . “/_lib/…/log.php”) ;
他に,実行ファイルは OS に合った指定が必要な様で,
<?php
include ($_SERVER[“DOCUMENT_ROOT”] . “/…/log.php”) ;
logging () ;
exec (change_sp(“./bin/DrawNow”)) ;
// …
?>
Synology/DrawNow/
IIS 7/DrawNow/