Windows+docker+selenium環境構築
Python 3.10.6
selenium 4.8.2
Docker Desktop 4.17.0
# コマンドプロンプトでpythonのバージョンを確認 python --version
# コマンドプロンプトでseleniumをバージョン指定してインストール pip install selenium==4.8.2 # バージョン確認 python -c "import selenium; print(selenium.__version__)"
Docker Desktop を以下からダウンロード
4.17.1は Windows defender に引っかかって入れられなったので
アーカイブから 4.17.0をダウンロードした
docs.docker.com
公式のGitHub を参考に以下コマンドをコマンドプロンプトにペーストして実行する
docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-chrome:4.8.2-20230325
Desktopとかにtest.py
みたいなpythonファイル を作成して以下をペースト
from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--headless') driver = webdriver.Remote( command_executor='http://localhost:4444/wd/hub', options=options, ) driver.get('https://qiita.com') print(driver.current_url) driver.quit()
▼参考 qiita.com
コマンドプロンプトで以下を実行
python C:\Users\ユーザ名\Desktop\test.py
【Unity】動的バッチングの恩恵を受けようの会
SetPass call
SetPass callはメッシュの描画に
使用する設定(render state)をGPUに渡す命令呼び出しのこと。
これから描画するメッシュの設定が、
前に描画したメッシュの設定と異なる場合にのみ呼び出される。
Draw call
DirectXやOpenGL等のグラフィックスAPIを用いて
CPUからGPUへオブジェクトの描画命令を出すこと。
最新のSetPass callによる設定を使用して描画を行う。
CPUは、GPUのAPI呼び出しに必要な
meshやtexture、shaderなどの情報を用意する必要があり、負荷が高い。
ドローコールはCPU側の負荷のため、回数が多いとフレームレートが下がる可能性がある。
動的バッチング(Dynamic Batching)
CPUが条件に合うMeshをまとめてから
ドローコールを行いドローコールの回数を減らすための機能。
動的バッチングもCPU負荷なので、
ドローコールの負荷 < 動的バッチングの負荷だと逆効果になってしまう。
動的バッチングの機能を有効にするには
Player Settings の Dynamic Batching にチェック を入れる
動的バッチングの恩恵を受けるための条件
同じMaterialを共有している(同じShaderではない)
テクスチャだけが異なる二つのMaterialであれば、
テクスチャをアトラス化し、同じMaterialを使用するようにすれば条件をクリアできる
スクリプトでMaterialにアクセスする場合、
Renderer.material
を使用すると複製された別インスタンスのMaterialが返されてしまい
バッチングが効かなくなるのでRenderer.sharedMaterial
を使用する。
頂点属性が900以下で頂点数が300以下である必要がある
頂点属性とは各頂点が持てる以下のようなデータのこと。
・法線(normal) ・接線(tangent) ・最大8つのテクスチャ座標(UV) ・頂点カラー(color) ・ボーンウェイトとブレンドインデックス
Shaderが座標、法線、UV0 の計3つの頂点属性を使用する場合は、
頂点数 300 までであればバッチ処理が有効になる。
また、座標、法線、UV0、UV1、接線 の計5つの使用する場合は、
5*180で頂点属性が900になるので 頂点数 180 までになる。
Transformにミラーを含まない
二つのGameObject間で同じMaterialを共有していも
片方のGameObjectのScaleが(x=1, Y=-1, z=1)のように
負数が設定されているとバッチングされない
ちなみに、(x=1, Y=-1, z=-1)のように具数個の負数だと、
反転の反転で元に戻るためバッチングが効く
マルチパスシェーダではない
マルチパスシェーダはShaderファイル内に Pass セクションが複数記述されているShaderのこと。
バッチ処理対応のRenderer
MeshRenderer, TrailRenderer, LineRenderer, ParticleSystem, SpriteRendererのみがバッチング可能。
SkinnedMeshRenderer や ClothRenderer やその他Rendererはバッチングに対応していない。
参考
docs.unity3d.com docs.unity3d.com learn.unity.com →A brief introduction to rendering の辺り esprog.hatenablog.com
音程
音程について調べた際のメモ
楽曲の音域を表すときの、「1オクターブ+短2度」「1オクターブ+長2度」「1オクターブ+増5度」のこと。
音程を表す用語
・音程:「音程」は音と音の距離のことをいう。音の高さのことではない。
・半音:「ド・ド♯」のように隣あった二つの音の距離を「半音」という。
・全音:「ド・レ」のように半音二つ分の距離を「全音」という。
度
音程には「度」という単位を使用する。
度数は幹音(鍵盤でいう白鍵の音)単位で数え、譜面上で音符同士がいくつ離れているかを表す。
「ド・ド」のように同音の場合は1度と数える(同度)ため、0度という数え方は存在しない。
♯や♭は譜面上では同じ線上に書かれるので、度数=半音の数ではないことに注意。
音程は幹音単位で数えるため、同じ2度でも以下の2種類がある
・「ド・レ」のように間に単音「ド♯」を1つ挟む
・「ミ・ファ」のように間に単音を挟まない
音と音の距離が長い方を長n度と呼び、短い方を短n度と呼ぶ。
「2度、3度、6度、7度」のときに長短系の呼び方を使用する。
長短系の音程
「2度、3度、6度、7度」のときには長短系の呼び方を使用するが、
同じ度数でも長と短の2種類に分類される。
2度
・長2度:
全音(半音二つ分)の距離で構成される2度の音程。
2度の組み合わせの中で、「ミ・ファ」「シ・ド」以外は長2度に分類される。
例えば「ド・レ」は音階的には間にド♯があるので、音の距離は全音となっている。
・短2度:
半音一つ分の距離で構成される2度の音程。「ミ・ファ」「シ・ド」 のみ。
3度
・長3度:「ド・ミ」半音4つ分の距離
・短3度:「レ・ファ」半音3つ分の距離
「レ・ファ」や「ラ・ド」のように3度の音程に、「ミ・ファ」または「シ・ド」を含む場合、短3度となる。
6度
・長6度:半音9つ分の距離
・短6度:半音8つ分の距離
「ミ・ド」や「ラ・ファ」のように「ミ・ファ」と「シ・ド」の両方が含まれると短6度となる。
7度
・長7度:半音11つ分の距離
・短7度:半音10つ分の距離
「ミ・レ」や「ラ・ソ」のように「ミ・ファ」と「シ・ド」の両方が含まれると短7度となる。
完全系の音程
協和性が高い音程に対して完全系の呼び方を使用する。
1度
・同音の場合、完全1度と呼ぶ
(「ド・ド#」の場合はなんてよぶんだろう...)
8度
・8度は1オクターブ差となり、完全8度と呼ぶ
4度
・完全4度: 半音5つ分の距離の4度の音程を完全4度と呼ぶ。「ファ・シ」以外が該当する。
・増4度:半音6つ分の距離の4度の音程を増4度と呼ぶ。「ファ・シ」のみが該当する。
5度
・完全5度:半音7つ分の距離の5度の音程を完全5度と呼ぶ。「シ・ファ」以外が該当する。
・減5度:半音6つ分の距離の5度の音程を減5度と呼ぶ。「シ・ファ」のみが該当する。