dynamicsoar's log

主に研究関係のメモ

Windows で VS Code の integrated terminal を cygwin64 の bash にする

概要

デフォルトでは Powershell になっている integrated terminal(エディタ下部にあるターミナル)を cygwinbash に変えたい。ググると少し古い情報が色々ヒットするが、2018-09-01現在は既に公式に記載がある:

code.visualstudio.com

概ねここにある通りにやればいい。ただし install path が微妙に違うこともあるだろうから、そこに注意。具体的には、64 bit の場合は C:\Cygwin ではなく C:\cygwin64 がデフォルトの install path のはず。

手順

  1. Cygwin Installation の setup-x86_46.exe で chere を検索し、追加でインストールする。これを忘れてエディタ側の設定だけやってもターミナルの起動に失敗する。
  2. VS Code を起動。Ctrl + , で settings.json を開き、右側のユーザ設定の記述場所に以下を追加(パスは自分に合わせること)*1

    "terminal.integrated.shell.windows": "C:\\cygwin64\\bin\\bash.exe", "terminal.integrated.shellArgs.windows": ["/bin/xhere", "/bin/bash"]

  3. VS Code を再起動する。

トラブルシュート

もし、64 bit なのに "C:\\cygwin64\\bin\\bash.exe" でなく "C:\\cygwin\\bin\\bash.exe" と書いてしまった場合、VS Code で Terminal を起動しようとすると次のような感じのエラーが表示されて、起動に失敗する:

The terminal process command 'C:\Cygwin\bin\bash.exe /bin/xhere /bin/bash' failed to launch (exit code: 2)

そうなったら、落ち着いてパスを Cygwin64 に変更すればよい。

*1:あるいは、new settings editor で Features > Terminal を開き、ずっと下に降りていって Integrated.Shell: Windows と Integrated.Shell Args: Windows を設定しても良い。しかし、2018-09-01現在、後者は結局 settings.json に飛ばされる。

Windows で VS Code が要求する Git を入れようとして詰まった → 一度 Back すればいけた

VS CodeGithub Desktop を無視する *1

VS Code only supports the official Git distribution for its Git integration. https://code.visualstudio.com/docs/editor/versioncontrol#_i-have-github-desktop-installed-on-my-computer-but-vs-code-ignores-it

ので、Git を入れようとした。しかしインストールの途中で、"use visual studio code as git's default editor" を選ぶと "Next" ボタンがグレイアウトして次に進めないというひどいバグに遭遇した。世界中で皆が困ってるはずだが…どうなってんだ?ググると…

github.com

まさかの、「一回 Back して、再度戻ると、Next が押せるようになる」とかいう謎挙動…やめてくれよ…。まじでこれに気づかなくて、ここ数日毎回 VS Code を立ち上げるたびに「Git入ってないけど??」って言われて軽くイラッとしていた。

*1:あれ? MS が買収したんじゃ…? そのうちサポートされるんだろうか

シェルスクリプトで「カレントディレクトリ以下全てを検索してマッチするファイルを圧縮」「圧縮形式をgzipからxz(など)に変更」

まえがき

数値計算結果など、大量のファイルを自動的に逐次圧縮したい、ということが自分はよくある。しかもそれらが複数のディレクトリにまたがっていて、「エクスプローラから右クリック」なんていちいちやっていられない、自動化したい、ということもよくある。そういう場合にはシェルスクリプトが便利。

bash(たぶん sh ならなんでも)を使うので LinuxMac, Win の場合は Cygwin などの利用を想定している。

ファイルを検索して圧縮

「カレントディレクトリ以下を全て検索し、拡張子が xyz のファイルを見つけて、それらに対して逐次 gzip -9 -q を実行」は、

$ find . -type f -name "*.func" -exec gzip -9 -q {} \; &

で行ける。xargs を使った方が速いんだとかそういう議論はあるようだが、よくわからない(検証もしてない)。

圧縮形式の変更

「すでにある .gz ファイルを .xz に圧縮し直す」になるともっと複雑。一度ディスクに書き出すのはまだわかるが、パイプを使って直接(つまりメモリのみ経由して?)xz にするのは全然わからない…が、エキスパートが提供してくれている:

pipe - How to convert all files from gzip to xz on the fly (and recursively)? - Unix & Linux Stack Exchange

念の為引用しておくと、Stéphane Chazelas さんによる最初の回答:

find . -name '*.gz' -type f -exec bash -o pipefail -Cc '
  for file do
    gunzip < "$file" | xz > "${file%.gz}.xz" && rm -f "$file"
  done' bash {} +

これで行けた。具体的には、一行目に #!/bin/bash をつけて gz2xz.sh などの名前で保存し、chmod で x 可能にすることで実行し、うまく作動することを確認した。Windows でうまくいかない場合、改行の形式がおかしい可能性がある。Notepad++ の Edit > EOL Conversion で UNIX に変えるなどして、CR+LF を LF にするとうまくいくかもしれない。

圧縮に関するコメント

圧縮形式については、gzip/bzip2/xz/zstd あたりのどれを使うか、というところは、どうやらファイルの種類によって最適なものが変わるようなので、たまに自分でテストしてみることをおすすめする。

ベンチマークでよく言われているのは、「bzip2 は圧縮率は gzip と xz の間くらいだが、解凍(展開)が遅い」ということで、確かにそういうケースもあったが、逆にあるファイル形式では「bzip2 が gzip よりも高圧縮で速度は同程度・xz と圧縮率がほぼ変わらず圧倒的に速い、かつ解凍も別に遅くない」ということがあった。オプションは、基本的にはデフォルトから変えても圧縮率は10%も変わらないかな、という印象(流石に-0とか-9みたいに極端に振ると結構変わることはあるが)。それよりも速度が結構変わることがあるので、そちらに注意したい。zstd はデフォルトの -3 だと異常に高速で圧縮率は gzip 並(かそれ以下かも)、というかなり速度重視感がある。急いでいるときは良いと思うけどまだ本格利用はしたことがない。

なお 2018-08現在、Cygwin をデフォルトでインストールすると xz と zstd は(bzip2もだったかも?)確か入ってこないので、追加する必要がある。軽いのでインストール自体はすぐ終わる。おそらく MacLinux でも xz はあっても zstd はないことが多そうなので、必要なら自分で入れる必要がある。

Opening ports in Windows Firewall solved the ANSYS licensing problem

Key words

ANSYS, FlexNET Licensing error

Environment

  • Windows 7/10, Pro/Enterprise, 64 bit
  • ANSYS 19.0/19.1
  • Floating license

Problem

We have a PC which is set up as a server for ANSYS (19.0) and it wa confirmed that the ANSYS Workbench and everything (e.g. Fluent, Mechanical) are working fine in the server PC.

Then, I installed a client software (19.1) on a different PC. During the installation, I typed in the correct port numbers (both 2 of them) and the host name as the server PC *1.

However, I got an error dialogue saying something like:

License server machine is down or not responding. (-96,491)

Solution

I edited (with Run as admin Notepad++) the file at C:\Program Files\ANSYS Inc\Shared Files\Licensing\ansyslmd.ini where I changed the hostname to the actual IP address. No success. I ping-ed to the server PC and there was actually no problem (even hostname is resolved nicely).

Then, after some googling, I added the ANSYSLMD_LICENSE_FILE and ANSYSLI_SERVERS to the environmental variables (as PORTNUMBER@HOSTNAME ) but this did not help at all.

Then I googled a lot and came to think the port may be the problem. In fact, when I opened the Windows Firewall settings, it says "Inbound connections that do not match a rule are blocked." This is understandable since it's the university PC, and I guess we cannot (at least easily) change this policy. Therefore, I created a rule in the server PC that allows the inbound connection to the ports from the private network, and this worked like a charm.

Procedure

  1. Open the Control Panel (In Win10, Windows-X is easy).
  2. System security > Windows Firewall > Advanced settings (left column): new window should open
  3. If you see "Inbound connections that do not match a rule are blocked." in the Private Profile, this may be the cause.
    1. In the left column, left-click "Inbound Rules"
    2. Then right-click the "Inbound Rules" and choose "New rule..."
    3. Select "Port". Press "Next >"
    4. Type the ports of your choice in the "Specific local ports" (you can use comma for multiple ports) and press "Next >"
    5. Choose either "Allow the connection" or "Allow the connection if it is secure" (in my case, the second one didn't work, though if it works preferable, I think). Press "Next >"
    6. Untick the "Public" at least. Untick one of the others if you can (might require trial & error). Press "Next >"
    7. Type in the name (e.g. "Open ports for ANSYS") and press "Finish".

*1:By the way, if you have not, you can set them up using "Client ANSLIC_ADMIN Utility 19.1" or simply editing the text file at C:\Program Files\ANSYS Inc\Shared Files\Licensing\ansyslmd.ini

amazon で買った adobe cc 36ヶ月版のコード(1年分コード3つ)は1つずつ連続で引換えれば期間は3年間になる

買うと「3年分のコード」ではなく「1年分のコード」が3つ送られてきた。どうすればいいかの手順。自分は教職員版だったけど通常版でも同じだと思う。

  • Adobe ID でのログイン後のコードの引き換えでは、入力欄は1つしかない。ここに「1年目」のコードを入力する。
  • クレジットカードで自動更新にする?とか言われる。とりあえず「自動更新しない」を選択。
  • Adobe ID のホーム画面というのか、「プランおよび製品」タブへ行く*1
  • お支払の詳細 > コードを引き換える でダイアログを開き、ここに「2年目」のコードを入力する。この記述が(5秒位ググっただけだと)どこにも見当たらず、どうなるかは博打だったが、問題なく期間が2年間に延長された。
  • 同様に、「3年目」のコードも入力。無事、3年間に延長された。

振り返ってみると、「任意の時点で、引き換えコードを入力すると、現状の契約終了時点から1年間延長される」ってことだろう。「コードを入力した時点から1年間」ではない。実際、いま3月なのに契約切れるのは前回初めて引換えた(んだろう)5月になっている。つまり、いつでもいいからとにかく最安のときに買って即引き換え、でいいってことか…

*1:教職員版でなく通常版なら、そもそも最初からここで入力しているのかも?

動物飛行の安定性や制御に関係する研究をいくつか紹介してみる(後編=文献紹介)

Books(本)

動物飛行かつ制御に特化した本はなさそう。制御の本としては、航空系のものが参照されている事が多いので、省略。

動物の飛行(主に力学)

動物飛行の入門書としては、David E. Alexander によるものが3冊出ていて、僕は最初の1冊目 Nature's Flyers は熟読し *1、2冊目 On the Wing は買ったけど積読、3冊目 Nature's Machines は出たことしか知らない。おそらく今なら、3冊目を読むのが良さそうかな?この人は論文の数はそんなに多くないけど本は良質なのでオススメ。

昆虫については、やや古いけれど、Robert Dudley の Biomechanics of Insect Flight は外せない。昆虫の研究室のどこに行っても大体これはある、という印象。僕も昔は結構読み込んだけど、anatomy のところはツマンネと思って飛ばしたりしていたので、再読に次ぐ再読が必要だなと思っている。

飛行と遊泳の流体力学(空気力学・水力学)

まず飛行に限らず、遊泳を含む、「流れの中の生物」という文脈では、古典的ながら名著とされるのが最近お亡くなりになった Steven Vogel による Life in Moving Fluids, 2nd ed. だ。これはもう、世界中の飛行・遊泳の研究室に置いてあるんじゃないだろうか。トピックが多いぶんだけど個別の内容の掘り下げは浅く、かつ、今となっては古いことにも十分注意する必要がある。それでも読みやすいし、最初に読むならむしろ「広く・浅く」というところがポジティブにはたらくかもしれない。

似た方向性の本で、僕がわりと最近知ったものとして Mark W. Denny の Air and Water (ISBN 978-0691025186 ) 、改定込みの和訳 『生物学のための水と空気の物理』(ISBN 978-4860434502 ) というのがある。原著は1993とそんなに新しくないが、翻訳している下澤先生 *2 がかなり手を入れている模様なので、読むなら和書の方がいいのかもしれない。ただ、あまりにも高い。僕はひとまず図書館で借りてみて、たしかに知らない内容も含んでおり面白いが、1万円以上という価格は個人での購入を考えてはいないのかなと思った。これなら原著買うわ。あと疑問点もいくつかあった気がする(当時ツイートしたと思う。後で貼り付けるか)。

他に、日本語で比較的新しく、入門的なものはこれかな: エアロアクアバイオメカニクス 生きものに学ぶ 泳ぎと飛行のしくみ | 森北出版株式会社 。もっと詳しいのは東昭による著作群だけれど、流石に古いので、参考程度(ただし同じ著者の Biokinetics of flying and swimming, 2nd ed, AIAA はちゃんと読み込んでいないので、LEV などについてもフォローされているなら良いかも。いや英語だけど)。

空気力学について、もっと詳しく知りたいなら、Shyy et al., An Introduction to Flapping Wing Aerodynamics, Cambridge University Press (ISBN: 978-1107037267 ) へ進もう。ただしこのくらいになるとレビュー論文を読むのとどっちがいいのという話になってくるのでお好みではある。というより、こういう本ってだいたい、単体の論文やレビュー論文をさらにまとめただけ、って感じのものが多いよね…。

バイオロギング

和書がたくさん出てるのでググって、どうぞ(なげやり)。 図書館にもたくさん入ってそうなので、まずは借りてみるといいのではないでしょうか。

Review articles(総説)

同じく、動物飛行かつ制御に特化したレビューってあるのかというと…。昆虫なら調べたらありそうかな?ちょっとすぐには思いつかない。飛行全般や、空気力学については幾つかわかるので、思いつくものを並べてみます。

鳥→Altshuler とか、Bret とか。

コウモリ→ Anders とか

昆虫→Saneと…あれ、意外と思いつかんな。

こないだのProcBとInterface Focusの特集号をチェックし直そう→自分

遊泳にまで手を広げるとちょっと終わらないので飛行に限定しよう。

Research articles(論文)

個別の論文は当然数が多すぎるので、現時点で僕の論文管理ソフト *3 に入っているものにひとまず限定しよう。

WIP

昆虫

WIP

ていうか鳥と昆虫にわけるのは微妙かなー。コウモリも外せないがよく知らないし…。むしろ安定性と制御でわける?そもそも流体と明確にわけれるのかっていう話ではある。

*1:この本が、僕が生物飛行の力学という世界に入るきっかけの一つだった。あまりに楽しめたので著者にメールしたことを覚えている。ちゃんと激励っぽい返事が返ってきた。

*2:北大名誉教授でコオロギのセンサとかやってたぽい、かなりガチのバイメカ屋さん。僕はお会いしたことはない。

*3:Papers 3.