P18 2.3.1 レイテンシ

 ほかの指標をレイテンシか時間に変換できれば、それらは比較可能になる。
 100回のネットワークI/Oか50回のディスクI/Oを選ばなければならない場合、パフォーマンスがどちらが高いかはケースによって異なる。しかし、ネットワークI/Oが100m秒か、ディスクI/Oが50m秒かという比較ができれば、違いは明確に分かる。

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

Excelのリンク先が消せない

[事象]
Excelでリンク先を消そうとしても、OKボタンは押せるが実際にはリンク先が消せていない。

[原因]
他でリンク先を参照している部分が存在しているため。
名前の定義に残っているのが一番多い。

[対応方法]
名前の定義など参照している部分を先に削除を行い、その後リンク先を削除する。

CloudBerry Explorerにアクセスすると407エラーが発生する

[事象]
CloudBerry Explorerをインストール後アクセスすると、407 Authenticate requiredというエラーが発生し起動が行えない。
プロキシ環境のため、以下のフォルダ内の設定ファイルにプロキシの設定を入れたがそれでも動かなかった。

C:\Users\username\AppData\Local\CloudBerryLab\CloudBerry Explorer for Amazon S3\settings.list

[原因]
インストール直後は認証のためか一度Cloud Berryのサイトにアクセスを行うみたいで、その際にsettings.listの内容は参照していなさそうであった。また、IEのプロキシ設定を認識してくれない模様で、そのままサイトCloud Berryにアクセスするみたいで、結果エラーになってしまった。

[解決方法]
一度ブラウザなどでどこかにアクセスして、その際にFiddlerなどでProxy-Authorizationの値を取得しておく。
その後、CloudBerry Explorerを立ち上げる際にFiddlerでアクセスを止めておき、起動した際に止めたアクセスにCloudBerry Explorerの値を付加してアクセスする事で起動する様になった。

2020.04.09 追記
Cloud Berryを更新(5.9.2.111)したところ、同事象に出くわした。
しかし、上記方法(リクエストの値にプロキシ情報を付加する)で試したところうまくいかなかった。
自身の利用環境は、認証プロキシ配下とややこしかったが、 HttpProxyAuth というソフトを用いて迂回する事ができた。
HTTPプロキシ認証中継ツール(HttpProxyAuth)の詳細情報 : Vector ソフトを探す!

当ソフトを用いると、
 自端末 → Cloud Berryのサイト
となっている通信を
 自端末 → HttpProxyAuth → 自社認証プロキシ → Cloud Berry
に書き換えを行ってくれるようになる。
(なお、当ソフトを用いると、CloudBerry Explorerだけではなく、プロキシ認証させたいhttp通信だけどその様な設定が無いツールとかにも利用できる。)
本当は、netshコマンドやレジストリを自分で書き換えるPowerShellとかを書けばいいのであろうが、これで事足りているので当ソフトを利用することで解決した。

但し、当ソフトを利用するに当たり、三つ欠点がある。
(とはいえ、常時使う必要はないので、特に欠点というレベルでもないですが・・・)
・通常プロキシを設定しているソフトが全滅する
 プロキシ設定を行っている部分はこれが書き換わっている事実を知らないので、不整合が起きて通信エラーが起きる。
IEの設定が汚れる
 そのため、当方は当ソフトを利用開始/終了をコマンド化している。
 但し、当コマンドで運用した場合多少書き込み遅延や不整合がある時があるが、たいがいIEのプロキシ設定の画面を開いたり、同じコマンドを何度か実行していたらうまくいく。

[proxyon.cmd]

reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v "AutoConfigURL" /f
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable/t reg_dword /d 1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d localhost:9999
"C:Program Files\HttpProxyAuth\HttpProxyAuth.exe "username:password@proxy.hostname.dayo:1234" 9999 1

[proxyoff.cmd]

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v "AutoConfigURL" /t REG_SZ /d "http://proxy.forpac.dayo/pac/man.pac" /f
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
pause

・気持ち重たい
 当ソフトの起動のさせ方の問題かもしれないが、ログが見えるのでなんとなく重たい気がする。

【その他】
FiddlerやBurpとかでうまく設定できたらいいのだが、認証プロキシが絡むとどうもうまくいかない。。。

【参考リンク】
Internet Explorer 11 の「プロキシ サーバー」を有効/無効にするレジストリの設定値【共通編】 | Windows 自動化技術大全
Internet Explorer のプロキシの設定をコマンドで実行する方法 - Windows - Project Group

実践 Fiddler

実践 Fiddler

Windowsネットワーク上級リファレンス Windows 10/8.1/7完全対応

Windowsネットワーク上級リファレンス Windows 10/8.1/7完全対応

  • 作者:橋本 和則
  • 発売日: 2016/09/17
  • メディア: 単行本(ソフトカバー)

Vim8系でMarkdownを確認しながら編集を行う設定(Windows編)

 長い間Vim7.4-Kaoriyaを利用していたのですが、Software Desingでvimの細道読んでいるとそろそろ乗り換えた方がよさそうだったので乗り換えました。
 一からインストールし直したので、vimrcをぶっ飛ばしてしまったので(汗)、quickrunとかも一から設定し直す事にしました。Vim8からはデフォルトでパッケージ管理マネージャーが含まれているとのことだったので、そちらを利用する様に設定し直しました。あくまでも私の環境では以下で動いたのですが、もっといい方法はあるかもしれません。

[前提条件]
vim8-Kaoriyaがインストールされている事以外特にありません。

[作業内容]
1.以下のソースをGitHubからダウンロードしてくる。
GitHub - thinca/vim-quickrun: Run commands quickly.
GitHub - plasticboy/vim-markdown: Markdown Vim Mode
GitHub - kannokanno/previm: Realtime preview by Vim. (Markdown, reStructuredText, textile)
GitHub - tyru/open-browser.vim: Open URI with your favorite browser from your most favorite editor

2.vim内に1.で取得したソース群をそれぞれ配置する。
 C:\Program Files\vim80-kaoriya-win64にインストールしている場合、C:\Program Files\vim80-kaoriya-win64\vim80\packまでまずは移動する。
 その後、上記のパッケージのディレクトリ名をそれぞれ作成し、その中にstartというフォルダを作成する。最後に1.でダウンロードしたzipファイルを展開したものを配置する。多分start以外はディレクトリ名は任意っぽいですが、私は以下の様に作成しました。

pack
|-vim-quickrun
| |-start
|   |-vim-quickrun
|     |-autoload
|     |-doc
|     |-plugin
|
|-vim-markdown
| |-start
|   |-vim-markdown
|     |-after
|     |-doc
|     (以下略)
|
|-previm
| |-start
|   |-previm
|     (以下略)
|
(以下略)

3.vimrcに記述を追加する。
 quickrunが実行された時にmarkdownであることを解釈させ、HTML生成をさせてブラウザに表示させる様にする。なお、例はchrome絶対パスで指定した場合である(もっと簡単な記述もありますが、一旦こっちで書いておきます)。なお、私はvimrcではなく、gvim側を使っているのでgvimrcに記載しています。

(中略)
" quickrunでPrevimOpenを起動させる様に関連づけ
let g:quickrun_config = {
      \ 'markdown': {
      \   'runner': 'shell',
      \   'outputter': 'null',
      \   'command': ':PrevimOpen',
      \   'exec': '%c',
      \ },
      \ }

" マークダウン関連のファイルの関連付け
autocmd BufNewFile,BufRead *.{md,mdwn,mkd,mkdn,mark*} set filetype=markdown

" プレビューする際のブラウザ指定
let g:previm_open_cmd = 'C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe'

 上記で作業は終了です。
 その後、\rと入力すれば、Chromeが立ち上がり多少時間が経った後にMarkdownの結果が表示されるようになります。

[参考URL]
u10e10.hatenablog.com

連動ファイル設計不備

過去の失敗をevernoteに書き留めていたので、少しずつこちらに移植。

[内容]
ファイル連動に関して、以下の考慮が出来ていなかった。
・項目にカンマを含む場合の考慮
・項目に改行コードを含む場合の考慮
・受取先が数値項目なのに、送信されてくるデータがダブルクオーテーションで囲まれていた場合の考慮
 ETLのツールによっては、型定義していないと、同じ項目なのにあるレコードでは数値、あるレコードでは文字列と自動変換してしまう。結果、後続処理でエラーになる場合がある。
・項目に半角スペースパディングやゼロパディングが行われている場合の考慮
 逆に半角スペースサプレスやゼロサプレスが行われている場合の考慮
・DBでnull、空文字で管理している項目の取扱い
 (nullも空文字も同じ扱いなのかどうか、XMLJSONの項目の存在有無に関わるのかどうか)
・コード値が直値で設定されている項目や、変換後のデータが送信されてくる場合の考慮
・ヘッダーが含まれて送信されてくるかどうかの考慮
・ファイルによって文字データが異なったり、外字などが入ってくる可能性の考慮
・日付のフォーマットが項目によってばらばら(2017/02/01、2017/2/3、2017.1.2)
・同様にタイムスタンプも項目によってばらばら(2017.01.02 12:34:56, 2017/01/02 12:34:56.789, 2014-10-10T13:50:40+09:00)
・上記の不安定なデータが連動される可能性を考慮せず、またバリデートする事を怠っていた事

[原因]
・今まで安定しすぎたデータしか取り扱ったことがなかった為
・ユーザーが直接作成するデータを想定できていなかった為
・ファイル連動のバリデート処理や、項目定義が甘かった為

[対応方法]
・ETLなどで決め打ちなどせずに、柔軟なプログラムなど用いてバリデート処理や前処理などを行う。
 またはETLでどこまでうまく裁けるかのスペック把握を行っておく。
・連動ファイルを取り扱う際に考慮しておかないといけない事を纏めたファイルフォーマットやチェックリストを手持ちしておく
・項目のフォーマットに関しては厳密に決めておく
・事前に生データをもらっておく
・どちらが変換に責任を持つのか決めておく
 相手先との力関係、連動元がホストやNotesなどレガシー系で修正できないなどでも決まるので、その場合開発PGMの価格転嫁できるかの調整
・例外ケースの調整を行っておく

P247 img要素のサイズは固定化する

img要素は、あらかじめ大きさを指定することで余計なLayoutを避けることができる。
img要素の大きさを指定しない場合には、画像が読み込まれていない段階では、仮の大きさで一度Layoutが行われる。画像が読み込まれ次第要素の大きさが変わることになるので、Layoutやそれに続くレンダリング処理が再度行われる。

Webフロントエンド ハイパフォーマンス チューニング

Webフロントエンド ハイパフォーマンス チューニング

カレントスキーマ上のテーブルやカラムにコメントを付与

DDLを色んな環境にばらまく必要があり、スキーマ名は利用環境によりばらばらであった為、調べる事となった。

[方針]
●コメント付与はsys.sp_addextendedpropertyを用いる。
●SCHEMA_NAME関数にて名称を取得して、それを一度変数に代入しておき、それを代入する。
(MySQLみたいにcreate文内にコメントを追加することができない。)

[方法]

DECLARE @sName = SCHEMA_NAME()

--テーブル
EXEC sys.sp_addextendedproperty 
@name=N'Description', @value=N'テーブル名です',
@level0type=N'SCHEMA', @level0name=N@sName,
@level1type=N'TABLE', @level1name=N'table_hoge' 

--カラム
EXEC sys.sp_addextendedproperty 
@name=N'Description', @value=N'カラム名です',
@level0type=N'SCHEMA', @level0name=N@sName,
@level1type=N'TABLE', @level1name=N'table_hoge',
@level2type=N'COLUMN', @level2name=N'column_hoge'

[参考URL・文献等]
セキュリティ関数 (Transact-SQL)
SQLServerのテーブルやカラムにコメントをつける方法 - ソフトウェア開発日記

SQLServer2014データベース構築・管理ガイドEnterprise対応

SQLServer2014データベース構築・管理ガイドEnterprise対応


SQL Server 2014の日本語で読める参考書は、2016年4月現在もこれくらいしかない。
もうそろそろ2016がリリースされるので、(あまり売れる本でもないので)各出版社ともそこを狙っているのか。
詳しく書かれており、現場で困る様な内容についても色々触れてくれている。
(3カ月ほど関わった案件で初めてSQL Server使う事になったので読んで理解したと思ってたら、
見事にすべての記載内容が頭から飛んでしまっていた。。。)