kiyasuの日記

ハッピーうれピーよろしく哀愁

Cmderメモ

cmderというコンソールエミュレーターがかっこいいので使っています。ただ、いまいち使いこなせてない感じなのでメモ取っておこう。

cmder.net

配置場所

Program Files以下に置くと起動時に

Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied.

と怒られました。C:\Users(ユーザー名) 以下に適当なフォルダ作ってそこに展開するのがいいみたいです。

Failed to copy ConEmu.xml.default file at launch · Issue #2092 · cmderdev/cmder · GitHub

起動ショートカット

これは別にCmderに限った話ではないが。

WIndows左下の「ここに入力して検索」で検索(コルタナ検索というらしい)して出てくるアプリと出てこないアプリがある。これはシステム環境変数にパスを追加するといいみたいです。とりあえずPathに追加したら検索に引っかかるようになりました。

エクスプローラーの任意の場所を開く

エクスプローラーのフォルダパスのところにcmdと書いたらコマンドプロンプトが開く、みたいにcmderもできないか。

これはCmder Hereという機能でサポートされてるみたいです。

Cmderをエクスプローラの右クリックメニューから開く『Cmder Here』 :: コマンドプロンプト | Refills

新規に開いたときの場所(スタートアップディレクトリ)を指定する

これは調べてみたけど、使わんかもしれんな。

cmder上部のバーで右クリックし、Settingsを選択。

Startup/Tasksを開いて、タスクを選び、下の「Startup dir...」をクリックし、ディレクトリを選択してSave SettingsすればOKです。

Ctrl + tで表示されるメニューには異なる表示が出てますが、ここは無視されて必ず上記で指定したスタートアップディレクトリでcmderが起動します。それはそれでどうなんだって感じもするが…

windows 10 - How to change default path in cmder - Super User

Office 365をインストールしたがExcelがインストールされていない

Office 365あらためMicrosoft 365を使ってるわけですが、

Office 365 と Microsoft 365 と Windows 365 の違いは?マイクロソフトの365製品の概要を解説 | システム運用ならアールワークスへ

OfficeSetup.exeを使ってインストールしたのにExcelのアプリが入ってない、ということになりました。

状況としては

  • Officeアプリは入っていて、そこからOneDrive上のエクセルファイルは開くことができる。
  • ローカルにエクセルファイルを保存すると開けない
  • エクスプローラー上では.xlsxのファイルがエクセルに関連付けられていない。「プログラムから選択」にも出てこない
  • そもそもWindowsにエクセルのアプリが入っていない(入っていてほしい)

という感じでした。

結論

自分の場合、Excelより先にOneNoteに用事があったので先にOneNoteをインストールしました。

Microsoft OneNote デジタル ノート アプリ | Microsoft 365

OneNote のダウンロード

このときにOfficeSetup.exeをダウンロードして、OneNoteと一緒にOfficeアプリがインストールされました。このOfficeSetup.exeが罠だった。ここで冒頭の状況になっていることに気づき、excelを入れる方法はないかといろいろ探し、Officeアプリ経由でそれらしいリンクを踏んだものの、落ちてくるのは同名でサイズ名も同じOfficeSetup.exe。ダウンロードフォルダにはOfficeSetup.exe(1). OfficeSetup.exe(2)と増えていく。ところがこれは中身が違うらしい。一度再インストールを試みたものの、中身が違うと思わなかったので最初のOfficeSetup.exeを使って再インストールし、解決しない!と右往左往していました。


改めて、Excelを入れる方法を紹介します。

まず、Officeアプリを起動します。

右上の自分のイニシャルをクリックして、出てきたメニューから「マイ アカウント」を選択。画面に映ってる「Officeのインストール」でも多分いいんですけど、なぜかこのボタンが出たりでなかったりするので、より確実そうなほうを紹介します。

「マイ アカウント」から飛んだ先の「Officeのインストール」をクリックしましょう。するとOfficeSetup.exeがダウンロードされます。このOfficeSetup.exeを使えば大丈夫なはずです。

Gitの環境整理(Windows版)

何か問題が起こったときに同じアプリが違うパスに入ってたりすると無駄に混乱するので整理を心がける。自分の場合gitとかpythonとかで起こりがち。

なのでパッと確認できるようにしておこう。

gitを更新

まずは今のバージョンの確認

λ git version
git version 2.29.1.windows.1

最新版を確認

Git for Windows

最新版は2.36.1のようだ。以下のコマンドで更新。

λ git update-git-for-windows

参考 : 【Git】インストール済みのGitをアップデートする【Windows環境】 | かずさプログラマーの雑記帳

PCを再起動したら2.36.1になった。

インストール済みのgit、使っているgit

インストールされているgitを確認

λ where git
C:\Program Files\Git\cmd\git.exe
C:\Program Files\Git\mingw64\bin\git.exe

gitコマンドで実際に使われているのは一番上(多分)

cmderからだとwhichコマンドでも良い。

λ which git
/cmd/git

この/cmd/gitってなんだろう、と思ったけどls -lで詳細調べるとどうやらC:\Program Files\Git\cmd\git.exe のことを指してるっぽい。

環境変数から確認

setコマンドに文字列を引数で与えると環境変数を検索してくれる。

λ set git
git_executable=C:\Program Files\Git\cmd\git.exe
GIT_EXEC_PATH=C:\Program Files\Git\mingw64\libexec\git-core
GIT_INSTALL_ROOT=C:\Program Files\Git
GIT_LFS_PATH=C:\Program Files\Git LFS
git_locale="C:\Program Files\Git\usr\bin\locale.exe"
GIT_VERSION_USER=2.36.1.windows.1
GIT_VERSION_VENDORED=2.29.1.windows.1

git_executableはgitコマンドで呼ばれるパスで、GIT_EXEC_PATHはサブコマンドで呼ばれるバイナリのパスのようだ。

しかしいっぱいパスが出てきたが、これいつ入ったんだろう…。

実はこの作業の直後に新しいパソコンに移行して、新規にgit for windows入れたけど、環境変数にgitなにがしは入ってないし、where git も C:\Program Files\Git\cmd\git.exe しか返してこなかったんだよね。なのでこの記事では、こういう風に調べられますよ、だけの話になります。

git for windows内に複数あるgit.exeについての解説

stackoverflow.com


自分の場合コンソールにcmderを使っているのでlinuxのコマンド(bashか?)が混在しているのもまたわかりにくさに拍車をかけているが…徐々にやっていこう

大きいモニターを買おう

去年出張で泊まったホテルにかなり大きなテレビがあり、そのとき「ディスプレイは大きいほど面白い」という真実に気付きました。

その後いろいろ部屋のレイアウトを変え、気づけばちょうどいい感じに大きいディスプレイを置ける部屋になったので真剣に考えてみようと思います。


とはいえ漠然と「大きい」といったものの、何インチが良いのか。

価格ドットコムでサイズの大きい順に並べると、大体43インチくらいがボリュームゾーン、それより上は当然ながら値段が高かったり、発売日が古かったり、口コミが少ないなど、食指が動かない。

肝心の43インチクラスも、どうにも決め手にかけるなあと思っていたんですが、

【デカすぎ注意】40インチ級4Kモニターのおすすめ機種ランキング | けしろぐ

  • そこそこ画質が良くて、リモコンとか付いてて、なんとなく色んな使い方ができそうなモデル

みたいな、なんかふわっとしたモデルがほとんどだ。要するにメーカー側もあまり力を入れていないのである。

40インチ超えの4Kモニターはあくまで「物理的大きさを最重要視する人向け」の商品だと思ったほうがいい。

ということみたいです。僕は今「物理的大きさを最重要視する人」なので果敢に向かっていこうと思います。


それで、以下の選択肢まで絞りました。

www.amazon.co.jp

大きな違いはリフレッシュレートになるのかな。GIGABYTEのほうは144Hz, Dellは60Hz。ゲームやってみたいけどFPSとかシビアなやつをやるつもりはないので60Hzでいいかな。

あと今の環境で古いMacと繋げたりすること考えると、今問題なく使えてるDellのほうが安心できる。というわけでDellでいこう。Dellは価格安定しないのでもう少し様子見してみます。


ちなみにGIGABYTEのほうはAmazonでこういうページもありました。

Amazon | GIGABYTE(ギガバイト) AORUS FV43U 43型 ゲーミング液晶ディスプレイ AORUS Gaming Monitor 4K UHD解像度、QUANTUM DOT技術採用 HDMI 2.1、リフレッシュレート144Hz、応答速度1ms(MPRT) | 通用 | ディスプレイ 通販

なんと8万円代。約半額です。なんでこんなに安いのか。メーカーの欄に「GIGABYTE中国」と書いてあるので、日本の代理店を通しているかどうかで値段が違うのかな?と最初は思ってました。しかし出品者情報を見ると日本人の個人名だったり、住所が中国福建省だったり、ストアフロントが

だったりしたので…怖くてやめました。

音楽視聴、映画視聴における空間オーディオ関連の用語メモ

HRTF

Head Related Transfer Function(頭部伝達関数)のことで、耳、頭、肩などの人体の形や大きさが音に与える影響を表現した関数。HRTFは周波数フィルタであり、これとは別に音の遅延を表現したHRIRというものもある。

耳、頭、肩の大きさや形はもちろん人それぞれなのでHRTFも人によって異なる。

バイノーラル音源

通常のステレオミックスとは異なる、HRTFが適用された音源。ダミーヘッドを用いて録音したり、専用のプラグインを用いるなどしてミックスがなされたもの。

頭内定位

通常のステレオミックスされた音源はスピーカーでの再生が前提であり、ヘッドフォンなどで聞くと2chが自然に混ざり合った音にならない→頭の中で鳴っているような感覚になる、ということらしい。自分はヘッドフォンで聞いて音が頭の中で鳴っているように感じたことは無いが、つまるところ

  • 従来のステレオミックスはスピーカー再生向け
    • ヘッドフォンで聞くと頭内定位が起こる(意図した音像にならない)
  • バイノーラルミックスはヘッドフォン再生向け
    • スピーカーで再生すると、前方向の定位が不明瞭になり、また高音が強調される

といったようにスピーカー向けとヘッドフォン向けのミックスはそれぞれ特性が異なる(ため、両方を満たすベストなミックスは難しい)、ということのようだ。

参考

頭部伝達関数 - Wikipedia

Sony Japan | 概要

Sony Japan | 技術解説

Docker Desktop For Windowsのコンテナbuild時にDNSサーバーを指定したい

前回までのあらすじ

どうやらビルドしたコンテナはネットワークにはつながっているようだ。単体でRUNしたときにpingは返ってきていた。やはりホスト名が解決されてないことが原因のようだ

コンテナのDNSサーバーを指定する

使うDNSサーバーは8.8.8.8(Google Public DNS)。調べ方は「設定後、nslookup www.google.comをやる」です

起動時に指定する

docker run --dns=8.8.8.8 -it [Image ID]

だめでした。

C:>nslookup www.google.com
Server: UnKnown
Address: 172.19.48.1

*** UnKnown can't find www.google.com: Server failed

起動後に指定する

netsh interface ipv4 set dnsservers "Ethernet" static 8.8.8.8 both

これならいけました。

ちなみにネットワークの名前(上のEthernet)は既に存在するネットワーク名を指定しないと"The filename, directory name, or volume label syntax is incorrect"と言われます。

C:>netsh interface ipv4 show interface

これでしらべましょう。で、設定して以下の結果を得られました。

C:>nslookup www.google.com
Server: dns.google
Address: 8.8.8.8

Non-authoritative answer:
Name: www.google.com
Addresses: 2404:6800:4004:825::2004
216.58.220.132

いけました。

しかし問題はそうではなかった

よくよく考えてみると、今やろうとしていることは「Dockerfileでイメージから新規コンテナをビルド中にIPアドレス解決ができない」ということなので、上記の「作ったコンテナの中でdnsを指定する」はちょっと違う。

docker image build時に、DNSの設定をなんとかしたい - CLOVER🍀

となると、今度はこちらが参考になりそうだ。

それで、この「ホスト側のネットワークを使う」を試そうとしたんですが

docker build --network host xxxxxxx
..... network host not found

とのこと。

どうやらホストがLinuxの場合でしかhostのnetworkは使えないようだ

The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.

なので、今度は同ブログの「Dockerデーモンのオプションに「--dns」を指定する」を試す。

これでできた!やってみー!

DockerDesktop(Windows)ことはじめ

Installation Guide · homuler/MediaPipeUnityPlugin Wiki · GitHub

これをやろうとして、どうにもひっかかったのでメモ


最初のチュートリアルはここを見ながらやるとうまくいった。 

DockerをインストールしてLinux系コンテナを構築したときの備忘録 - Qiita

問題

Dockerfileのなかの

RUN curl -L http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20210604.sfx.exe

このへんで

0curl: (6) Could not resolve host: repo.msys2.org

というエラーが出ました。

調べたこと

DockerのDNS設定

まずDocker実行時に--add-hostでホストを追加。もしくは--dnsDNSサーバー追加。nslookupでrepo.msys2.orgのIPアドレスを調べて指定する。

docke build --add-host=repo.msys2.org:178.63.98.68 -t mediapipe_unity:windows . -f docker/windows/x86_64/Dockerfile

みたいにやってみたがCould not resolveの表示は変わらず。

curl doesn't work during docker build - Stack Overflow

dockerfile - How to update /etc/hosts file in Docker image during "docker build" - Stack Overflow

Dockerのコンテナの中からホストOS上のプロセスと通信する方法 - Qiita

この辺も気になる

Dockerコンテナ内の名前解決への /etc/hosts の影響 - Qiita

firewallをオフにしてみたが変わらず。

Dockerをもうちょっと触ってみる

Dockerのイメージを起動して直接操作してみる(Dockerfileまかせではなく)。

Dockerコマンド一覧 - Qiita

「docker run -it」にするとコンテナがすぐに終了しない理由 - プログラミング初心者がアーキテクトっぽく語る

まず

docker run -it [image ID]

で入る。次に

C:>ping 178.63.98.68

Pinging 178.63.98.68 with 32 bytes of data:
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51
Reply from 178.63.98.68: bytes=32 time=254ms TTL=51

Ping statistics for 178.63.98.68:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 254ms, Maximum = 254ms, Average = 254ms

C:>ping repo.msys2.org Ping request could not find host repo.msys2.org. Please check the name and try again.

とやってみた。ネットワークは出ているがIPが解決できないようだ。 Windowで/etc/hostsにあたる場所はC:\Windows\System32\drivers\etc\hostsらしいが、これはどうやって編集すればいいんだ。

docker コンテナ内でファイルが編集できない | mebee

これか?これもコンテナ名とパスの書き方がちょっとわからないな…。

docker cp使って簡単永続化 - Qiita

ここも参考に

その前に問題のDockerfileを見るとこの後にもいろいろダウンロードするっぽいので、DNS自体の設定をした方がよさそうだ。

しかしここで詰んだ。

Dockerコンテナ内の名前解決への /etc/hosts の影響 - Qiita

これはWindowsマシン用のLinuxコンテナっぽい

Docker Desktop for Windows のネットワーク構築機能 — Docker-docs-ja 19.03 ドキュメント

ここには書いてないっぽい

コンテナの DNS を設定 — Docker-docs-ja 1.10.0b ドキュメント

これもLinuxコンテナぽい

Docker DNS not responding from inside a container - Docker Desktop for Windows - Docker Community Forums

これは試してみたが、変えるべき設定は自分の環境では問題なさそうだった

How to set DNS in Docker for windows? – QuickAdviser

情報が古そう。しょっぱなの

Just right click on docker’s icon in the tray bar and select “Settings” item. Then, on the Docker’s window, select the “Network” section and change the DNS option from “Automatic” to “Fixed” and hit “Apply”.

この項目がもう存在しないもんな。