ホーム » メモ (ページ 11)
「メモ」カテゴリーアーカイブ
マネタイズの…,日経Linux2019.1
Google AdSense マネタイズの教科書[完全版]と日経Linux 2019年1月号を購入.
Google AdSense マネタイズの教科書[完全版]
まだ半分くらいしか読めていないが,内容は濃いと思う.
ただ,自分でそこまでできるかとなるとかなり疑問が…
一先ず,「元を取ることを目標に」と思う.
日経Linux 2019年1月号
何年か前から,gcc が使える環境を探している.
以前は mac 上でやったり,仮想環境に Linux を入れたりしていた.
最近は Synology NAS 上が増えてきたが,あまり使い勝手がよくない.
いろいろと調べていると Raspberry Pi が使えそう.
今狙っているのは「ジブン専用パソコンキット2」.
AMP for WordPress に AdSense
AMP for WordPress が更新されていた.
暫く気付かず…
html_start.php
<head> <!-- ... --> <script async custom-element="amp-auto-ads" src="https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js" > </script> <script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"> </script> <script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js" > </script> </head> <body class="<?php echo esc_attr( $this->get( 'body_class' ) ); ?>"> <amp-auto-ads type="adsense" data-ad-client="ca-pub-????????????????"> </amp-auto-ads> <amp-analytics type="googleanalytics"> <script type="application/json"> { "vars": { "account": "UA-????????-?" }, "triggers": { "trackPageview": { "on": "visible", "request": "pageview" } } } </script> </amp-analytics>
html_end.php
<div style="text-align: center;"> <amp-iframe src='//itl.mydns.jp/f_index.html' sandbox="allow-scripts" width='250px' height='250px'> </amp-iframe> </div> </body> </html>
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) ;
ファイルの検索
あるフォルダ内のファイルを列挙するコード
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 として利用可能.
ActiveX.exe , ActiveX.dll の登録
何年かに 1 度ある問合せ.普段あまりやってないとすぐ忘れてしまう.
dll や ocx の登録は,RegSvr32 .
管理者として起動したコマンドプロンプトで,以下の様に入力して登録できる.
RegSvr32.exe ActiveX.dll
RegSvr32 で ocx などの登録
OCX x64
exe は,管理者として起動したコマンドプロンプトで実行.
ActiveX.exe
IIS 環境の再設定
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_,…)
wordpress で更新できない
次の所を編集しようとして,「更新」を押しても反映されない.
https://mish.myds.me/wordpress/i-tools/about/
元に戻ってしまう.
一度ログアウトして,再度入ろうとすると入れない.
Synology NAS DS116 を再起動することで対応.
C1076 ヒープの領域を…
——————–構成: MkCmf – Win32 Debug——————–
コンパイル中…
ComPrj03.cpp
c:\program files\microsoft visual studio\vc98\include\comip.h(46) : fatal error C1076: コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。
cl.exe の実行エラー
ComPrj03.obj – エラー 1、警告 0
VC 7 では,
c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\ostream(632) : fatal error C1076: コンパイラの制限 : 内部ヒープの上限に達しました。上限を変更するには /Zm オプションを使用してください。
MSDN /Zm
コンパイルのオプションに /Zm150 を追加.
template でのキャスト
次の様なベクトルの template .
template <typename T> struct Vector3 { // ... void Normalize (void) { if (Length() > 0) { double s = 1.0f / Length() ; x *= s; y *= s; z *= s; } } // ... T x ; T y ; T z ; } ;
double の時は問題ないが,float だとワーニング.
T(value) として対応.
double s = 1.0f / Length() ; x = T(x*s) ; y = T(y*s) ; z = T(z*s) ;