Firefox 64 と Vivaldi
今日 Firefox の起動時に,バージョン 64.0 に更新された.
最初,タブを「新しいウィンドウへ移動」する方法がわからなかった.
タブを「右クリック」して表示されるメニューの「Move Tab」の下になった.
他に気になる動作としては,
target=”_blank” と記述している所が「新しいウィンドウ」で開かれる.
以前は「新しいタブ」だった?
DS116 へのアクセスログを見ていた時,Vivaldi/2…. となっているのがあった.
wiki によるとシェアは高くない.
Vivaldi日本語公式ブログによると「動作がサクサク」とあるので,インストールしてみた.
まだ少ししか使ってないが,よく使う機能での不満は「レスポンシブデザインモード」.
それとも単に使い方がわかってないだけ?
2018/12/18
target=_”blank” となっている時,新しいウィンドウを開く様になってしまっていた.
初期値が変わったのか,間違って変更してしまったのかは不明.
設定場所は,メニューの「ツール」-「オプション」-「一般」-「タブグループ」にあった.
Google アナリティクスの設定
analytics.js と gtag.js .
index.html など,エディタで書いた html .
Google アナリティクスに関して,次の 2 つの書き方が混在していた.
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-TRACKING_ID', 'auto'); ga('send', 'pageview'); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-TRACKING_ID"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-TRACING_ID'); </script>
検索すると,上の analytics.js は古い形式みたい.
Google アナリティクスの設定 最新!?Google Analyticsの「Global Site Tag」(gtag.js)
Synology NAS で zip
Synology NAS 内(SSH 接続)で,zip ファイルを扱えないかと…
検索すると,Linux 環境では zip や unzip があるらしい.
SSH で接続して確認すると,zip はあるが unzip は command not found .
さらに検索すると Synology Forum に情報があった.
Unzip?
7z コマンドが利用できるみたい.
Iwao@DS116:~$ zip Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license. Zip 3.0 (July 5th 2008). Usage: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list] The default action is to add or replace zipfile entries from list, which can include the special name - to compress standard input. If zipfile and list are omitted, zip compresses stdin to stdout. -f freshen: only changed files -u update: only changed or new files -d delete entries in zipfile -m move into zipfile (delete OS files) -r recurse into directories -j junk (don't record) directory names -0 store only -l convert LF to CR LF (-ll CR LF to LF) -1 compress faster -9 compress better -q quiet operation -v verbose operation/print version info -c add one-line comments -z add zipfile comment -@ read names from stdin -o make zipfile as old as latest entry -x exclude the following names -i include only the following names -F fix zipfile (-FF try harder) -D do not add directory entries -A adjust self-extracting exe -J junk zipfile prefix (unzipsfx) -T test zipfile integrity -X eXclude eXtra file attributes -y store symbolic links as the link instead of the referenced file -e encrypt -n don't compress these suffixes -h2 show more help -yf store files/directories that symbolic links point to in an archive -cp codepage, ex: fre,ger,ita,spn,cht,chs,jpn,krn,ptb,rus,dan,nor,sve,nld,plk,ptg,hun,trk,csy Iwao@DS116:~$ unzip -sh: unzip: command not found Iwao@DS116:~$ 7z 7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,2 CPUs) Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>] <Commands> a: Add files to archive b: Benchmark d: Delete files from archive e: Extract files from archive (without using directory names) l: List contents of archive t: Test integrity of archive u: Update files to archive x: eXtract files with full paths <Switches> -ai[r[-|0]]{@listfile|!wildcard}: Include archives -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives -bd: Disable percentage indicator -i[r[-|0]]{@listfile|!wildcard}: Include filenames -m{Parameters}: set compression Method -o{Directory}: set Output directory -p{Password}: set Password -r[-|0]: Recurse subdirectories -scs{UTF-8 | WIN | DOS}: set charset for list files -sfx[{name}]: Create SFX archive -si[{name}]: read data from stdin -slt: show technical information for l (List) command -so: write data to stdout -ssc[-]: set sensitive case mode -t{Type}: Set type of archive -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options -v{Size}[b|k|m|g]: Create volumes -w[{path}]: assign Work directory. Empty path means a temporary directory -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames -y: assume Yes on all queries Iwao@DS116:~$
Synology NAS で zip , unzip , 7z
Linux での zip コマンド
NAS で zip コマンドを使用したページ
https://itl.mydns.jp/i_Tools/up_bg_s/
http://jml.mish.work/i-tools/360-panorama.html
http://jml.mish.work/i-tools/how-to-up-bg.html
カメラ座標からワールドに
{ Prj ctow ; { // Prj の逆行列を求める Matrix pm ; Prj prj(GetEyeChg().Get()) ; prj.Get(&pm) ; pm.Inv() ; // 逆行列 ctow.Set(pm) ; } for (size_t index=0 ; index<pnts.size() ; index++) { Vd3 pnt = pnts[index] ; for (size_t index3=0 ; index3<pntsXzY.size() ; index3++) { Vd3 pt3 = pntsXzY[index3] ; pt3.y = 0 ; if (::V3_is_near(pnt,pt3)) { Vd3 pntc = pntsXzY[index3] ; Vd3 pntw = ::ToVd3(ctow.P3to3(::ToP3(pntc))) ; // 逆行列を掛けている pnts[index] = pntw ; break ; } } } }
template の複数の型の順番
先日作成した template .
template <class V3, class VT> V3 ToV3 (const VT& vt,const long type)
型の順番で,戻り値の型 V3 と,引数の型 VT .
どちらを先に指定した方が良いか悩んだが,呼び出しで省略する場合を考慮するとこれで良さそう.
Vd4 v4(1,2,3,1) ;
Vd3 v3(1,2,3) ;
Vd2 v2(1,2) ;
Vd3 v43 = ToV3<Vd3/*,Vd4*/>(v4,to_x0y) ;
Vd3 v33 = ToV3<Vd3/*,Vd3*/>(v3,to_x0y) ;
Vd3 v23 = ToV3<Vd3/*,Vd2*/>(v2,to_x0y) ;
::ToV3<Vd3,Vd2>(v2,to_x0y) で C2784
次の様な template の利用で,C2784 エラー.
Vd2 v2(1,2) ; Vd3 v3 = ::ToV3<Vd3,Vd2>(v2,to_x0y) ;
\\DevS\...\tovxx.hxx(123) : error C2784: 'struct Vector3<T> __cdecl ToX0Y(const struct Vector4<T> &)' : 'const struct Vector4<T> & 用のテンプレート引数を 'const struct Vector2<double>' から減少できませんでした。 C:\... \VF3DView.cpp(236) : コンパイルされたクラスのテンプレートのインスタンス化 'struct Vector3<double> __cdecl ToV3(const struct Vector2<double> &,const long)' の参照を確認してください
template <class V3, class VT> V3 ToV3 (const VT& vt,const long type) { V3 v3 ; { switch (type) { case to_xyz : v3 = ::ToXYZ(vt) ; break ; case to_xzy : v3 = ::ToXZY(vt) ; break ; case to_x0y : v3 = ::ToX0Y(vt) ; break ; default : v3 = ::ToXYZ(vt) ; break ; } } return v3 ; }
Vector4 のものは昨日定義していたが,Vector2 のものを追加.ついでに Vector3 も. template <class T> Vector3<T> ToXYZ (const Vector2<T>& p) { return Vector3<T> (p.x,p.y, 0 ) ; } template <class T> Vector3<T> ToXYZ (const Vector3<T>& p) { return Vector3<T> (p.x,p.y,p.z) ; } template <class T> Vector3<T> ToXZY (const Vector2<T>& p) { return Vector3<T> (p.x, 0 ,p.y) ; } template <class T> Vector3<T> ToXZY (const Vector3<T>& p) { return Vector3<T> (p.x,p.z,p.y) ; } template <class T> Vector3<T> ToX0Y (const Vector2<T>& p) { return Vector3<T> (p.x, 0 ,p.y) ; } template <class T> Vector3<T> ToX0Y (const Vector3<T>& p) { return Vector3<T> (p.x, 0 ,p.y) ; }
template で複数の型を指定
template で複数の型を指定する場合は,カンマで区切って指定すれば良い.
template <class V2, class V3> V2 ToV2 (const V3& v3,const long type) { V2 v2 ; switch (type) { case to_xy : v2 = ::ToXY(v3) ; break ; case to_yz : v2 = ::ToYZ(v3) ; break ; case to_zx : v2 = ::ToZX(v3) ; break ; case to_xz : v2 = ::ToXZ(v3) ; break ; default : v2 = ::ToXY(v3) ; break ; } return v2 ; }
呼び出しは,次の様な感じ.
Vd3 v3 = Vd3(1,2,3) ; Vd2 v2 = ::ToV2<Vd2,Vd3>(v3,to_xy) ;
WEB SQL Injection Attempt -87
ルータ RT-AC86U の AiProtection ではじかれているが,今日は Web サーバへの攻撃が多い?
2018-11-22 18:06:23 External Attacks 129.121.176.228 192.168.x.x WEB SQL Injection Attempt -87
ファイルの検索
あるフォルダ内のファイルを列挙するコード
MFC v_tstring EnumFiles_MFC (c_tstring& path,const bool skipDot=true) { v_tstring foundFiles ; { iFileFind ff ; BOOL isWorking = ff.FindFile((::Path_AddLastSP(path)+_T("*.*")).c_str()) ; while (isWorking) { isWorking = ff.FindNextFile() ; if (skipDot && ff.IsDots()) { continue ; } tstring fileName = ff.GetFileName() ; if (ff.IsDirectory()) { fileName = ::Path_AddLastSP(fileName) ; } foundFiles.push_back(::Path_AddLastSP(path)+fileName) ; } } return foundFiles ; }
MSC v_tstring EnumFiles_MSC (c_tstring& path,const bool skipDot=true) { v_tstring foundFiles ; { tstring fffPath = ::Path_AddLastSP(path)+_T("*.*") ; WIN32_FIND_DATA fd ; memset(&fd,0,sizeof(WIN32_FIND_DATA)) ; HANDLE hFind = ::FindFirstFile(fffPath.c_str(),&fd) ; if (hFind != INVALID_HANDLE_VALUE) { while (TRUE) { tstring fileName = fd.cFileName ; if (skipDot) { if (fileName == _T(".")) { fileName = _T("") ; } if (fileName == _T("..")) { fileName = _T("") ; } } if (!fileName.empty()) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { fileName = ::Path_AddLastSP(fileName) ; } foundFiles.push_back(::Path_AddLastSP(path)+fileName) ; } if (!::FindNextFile(hFind,&fd)) { break ; } } ::FindClose(hFind) ; } } return foundFiles ; }
GNUC v_tstring EnumFiles_GNUC (c_tstring& path_,const bool skipDot=true) { tstring path = path_ ; v_tstring foundFiles ; { DIR* dp = ::opendir(path.c_str()) ; struct dirent* dent = NULL ; do { dent = readdir(dp) ; if (dent != NULL) { tstring fileName = dent->d_name ; if (skipDot) { if (fileName == _T(".")) { continue ; } if (fileName == _T("..")) { continue ; } } if (dent->d_type & DT_DIR) { fileName = ::Path_AddLastSP(fileName) ; } foundFiles.push_back(::Path_AddLastSP(path)+fileName) ; } } while (dent != NULL) ; ::closedir(dp) ; } return foundFiles ; }
MFC 版で,iFileFind としているのは,VC 6 MFC MBCS 版でのバグのため.
class iFileFind : public CFileFind { public: virtual CString GetFilePath() const { ASSERT(m_hContext != NULL); ASSERT_VALID(this); CString strResult = m_strRoot; #ifdef ____VC_6_______MBCS_BUG___ { if (strResult[strResult.GetLength()-1] != '\\' && strResult[strResult.GetLength()-1] != '/') { strResult += m_chDirSeparator; } } #else { LPCTSTR pszResult; LPCTSTR pchLast; pszResult = strResult; pchLast = _tcsdec( pszResult, pszResult+strResult.GetLength() ); VERIFY(pchLast!=NULL); if ((*pchLast != _T('\\')) && (*pchLast != _T('/'))) { strResult += m_chDirSeparator; } } #endif strResult += GetFileName(); return strResult; } } ;
MFC 7 以降であれば,CFileFind として利用可能.
一時的にアクセスできません
パス Googlebot の種類 ステータス 日付 /2010/10/20/コントロールをサブクラス化した時のエラー/ PC 一時的にアクセスできません 2018/10/25 19:29 /2010/10/20/ PC 完了 インデックス登録をリクエスト済み 2018/10/25 19:28
2018/11/22 こっちは,回数制限に引っかかった時のエラー.
送信方法の選択
Google によるインデックス登録の対象として次の URL を送信します:
https ://mish.myds.me/wordpress/dev/2017/10/31/cobarray-coblist/
[送信] をクリックして数分すると、再クロールが実行されます。そのとき、あなたのページのコンテンツが Google によるインデックス登録の対象になります。
注: Google の品質に関するガイドラインに準拠し、noindex ディレクティブを使用していないページのみがインデックス登録の対象になります
この URL のみをクロールする
この URL と直接リンクをクロールする
エラーが発生しました。しばらくしてからもう一度お試しください。
Search Console ヘルプの中央辺りに,1 日あたりの取得の割り当ては 10 件です。
ActiveX.exe , ActiveX.dll の登録
何年かに 1 度ある問合せ.普段あまりやってないとすぐ忘れてしまう.
dll や ocx の登録は,RegSvr32 .
管理者として起動したコマンドプロンプトで,以下の様に入力して登録できる.
RegSvr32.exe ActiveX.dll
RegSvr32 で ocx などの登録
OCX x64
exe は,管理者として起動したコマンドプロンプトで実行.
ActiveX.exe
IIS 環境の再設定
Funmoods の削除
Chrome の「拡張機能」の所を見ていたら,見慣れない「Funmoods」というのがあった.
特に変な現象は気がつかなかったが,ウィルスに近い存在らしいので以下を参考にさせてもらって削除することに.
Funmoods Toolbar削除アンインストール方法&Funmoods Search無効化方法
2019/01/24 上のリンク先は変更されています.
Funmoods Toolbar削除アンインストール方法&Funmoods Search無効化方法
Magical Finder + WN-AC1167R
moto g5 を Android 8.1 に更新した.
ダウンロードする所の評価はかなり低いが…
Android 7 の時もそうだったが,特に問題なし.
「Web設定画面を開く」で,正しく開くことができる.
Magical Finder は,IPv4 のアドレスを調べる程度の利用.
今は ASUS Router アプリ があるので,あまり必要ではない.
STL(Stereolithography) 読込みで…
STL(Stereolithography,Standard Triangulated Language) バイナリ読込みで,VC 14 でビルドした exe でダウンする.
VC 6 でビルドしたものは通っているが,たまたまエラーにならなかっただけ.
コードは,
{ size_t hStart = 0 ; v_char head ; head.resize(STL_B_HEADER_SIZE+100,0x00) ; memmove(&head,&readBuf[hStart],sizeof(STL_B_HEADER_SIZE)) ; stl.SetName(::To_tstring(head).c_str()) ; }
::To_tstring で head を利用した時にエラーとなる.
ここをコメントにすると,ブロックを抜けた時に head の解放?でエラーになる.
memmove で &head ではなく &head[0] としなければならない.
正しくは,
{ size_t hStart = 0 ; v_char head ; head.resize(STL_B_HEADER_SIZE+100,0x00) ; memmove(&head[0],&readBuf[hStart],STL_B_HEADER_SIZE) ; stl.SetName(::To_tstring(head).c_str()) ; }
v_char は次の様に定義.
typedef std::vector<char> v_char ;
3D ファイルの表示で黒?
個人的な形式の ipl .直接読込んで OpenGL で表示する様にコードを修正中…
表示すると黒くなる.
STL などはそれなりの色で表示される.
ワイヤフレームなどでは,色で表示されている.
原因は,ipl では法線ベクトルを持っていないので 0,0,0 として表示されていた.
2021/12/27
GonsA GonsA_CalcNormal (const GonsA& gnsa_,…)