2021年3月
03月31日(水)
もう2020年度終わるの?早くない?
講談社に住所変更のメール書いた。JAFの住所変更もした。
git add
は、「Untrackedなファイルを追加する」「修正のあるファイルをインデックスに送る」の二つの意味があって、理解が難しい気がするな。
Gitハンズオン、ブランチと衝突の解決まで書いたぞ。
03月30日(火)
二年生ガイダンス。
6Fの部屋に机と椅子が入った。あとはPCとか移動するだけか。
Macのlsでファイル名に@がつくやつ、毎回忘れる。これは拡張属性(Extended
Attributes,
EA)というもので、内容はls -l@
で調べることができる。
$ ls -l@ *.png
-rw-r--r--@ 1 watanabe staff 134075 3 30 14:21 powershell.png
com.apple.macl 72
-rw-r--r--@ 1 watanabe staff 43084 3 30 14:26 winver.png
com.apple.macl 72
com.apple.macl
というのがついているらしい。一つ一つ外しても良いが、全部いっきに剥ぎ取る場合はxattr -c
で良いらしい。xattr -cr
だとディレクトリを再帰的に潜って消してくれるっぽい。
$ xattr -c *.png
$ ls -l@ *.png
-rw-r--r-- 1 watanabe staff 134075 3 30 14:21 powershell.png
-rw-r--r-- 1 watanabe staff 43084 3 30 14:26 winver.png
無事に消えた。
WSLのインストールや設定、LammpsのWSL上での実行について書き終わった。
03月29日(月)
pushし忘れかと思ってた変更、そもそもコミットもしてなかった。うーむ。
Macでlatexが通らない。gsがおかしいらしい。単に実行すると
$ gs GPL Ghostscript 9.50: Can't find initialization file gs_init.ps.
と言われる。
$ which gs
/usr/local/bin/gs
brew link --overwrite ghostscript
で治った。感謝。
03月28日(日)
いまいち体調が良くない。履修案内を読み込む。いろいろ知らなかった。
Ubuntu 18.04のGitのバージョンが古く、デフォルトブランチをmainにできないため、Ubuntuのバージョンを上げることに。
WSL2 のUbuntuを18.04から20.04に。ここを参考に。
sudo apt update
sudo apt upgrade
sudo apt install update-manager
sudo apt dist-upgrade
sudo do-release-upgrade -d
$ git --version
git version 2.25.1
うーん、gitのバージョンが2.28に届かなかった。当面はいいことにするか。
今週のGitハンズオンの準備はした。だが、ブランチの説明やマージはしていないな。マージやるなら、コンフリクトの解消までやりたいよな。どこまでやるかなぁ・・・
あれ?書いたと思った日記がローカルにない。またpushし忘れたか。うーん。
03月27日(土)
おお、ちゃんと日記の日付表示スニペットを毎日使ってるぞ。
03月26日(金)
物理情報専修の修了式。対面でできて良かった。
いろいろ予定がごちゃごちゃしてて整理できていない。
重い腰をあげて「ゼロから学ぶPython」のIssueを全て片づけた。初めてしまえば一時間仕事なんだけど、なかなか取り掛かることができなかった。関連して「ゼロから学ぶPythonプログラミング」の正誤表も更新。
03月26日(木)
午前はgnuplotハンズオン。午後に物理情報工学特別講義の録画。そのあと研究室ミーティング。さらに輪講。
輪講の余談は微分形式。余談を記事にまとめようと思っていたのだが、とてもそんな余裕がない。
WSLでXがつながらなかった原因、Windows Defenderのファイアウォールのせいだった。VcXsrvのパブリックにもチェックが必要だった。
Authorization required, but no authorization protocol specified
と言われたら「VcXsrv」の「Disable access control」にチェックを入れれば良い。
gnuplotハンズオンした。
情報コンセントの設定を変更したら学生部屋がつながらなくなってた。対応をお願いしたらするなおった。感謝。
情報公開と批判との話。
誰かがネットになにか技術記事を上げたとする。それに対して批判が寄せられたとする。その批判は正当な場合も、理不尽な場合もあるだろう。しかし、その批判の口調(文体)が強かった場合、技術記事の執筆者は心にダメージを負う。特に、最初に書いた記事が「プロ」に袋叩きにされた場合、その人は二度と技術記事を書かないであろう。
誰かが本を書いたとする。作家と異なり、技術系の本はほとんど儲からない。教科書の執筆も、かける時間を考えればとてもペイしない。でも、それによって世の中が良くなると信じて書く。そんな思いで書いた本にAmazonレビューで星一つとともに辛辣なコメントが寄せられる。その人が次の本を書く意欲は減るだろう。もしかしたら二度と書かないかもしれない。
「そういうのは良くない」というと、必ず「情報を不特定多数に公開するというのはそういうことだし、それが嫌なら公開しなければ良い」という意見が寄せられる。もしくは「そういう人は必ずいるので、気にしなければ良い」という人もいる。どちらの意見も正しいが、僕個人としては、「個人の生産意欲を削ぐような言動は社会全体の不利益であり、やめたほうが良い」ということを発信していきたいな、と思っている。
心無い批判のような、いわゆる「チクチク言葉」は、アレルギーのようなものだと思っている。「批判が嫌なら公開するな」というのは、スギ花粉のアレルギー持ちの人に向かって、「花粉が嫌なら外出するな」という言葉に対応する。「そういう人は必ずいるので、気にしなければ良い」という言葉は、「この季節は花粉が飛ぶのは仕方ないから我慢しろ」と言っているに等しい。どちらも論理的には間違ってはいないとは思うが、その方針が幸せな世界を作るのか?と言われると疑問である。
バリアフリーという言葉がある。例えば駅前の階段にスロープをつける。利用者は車椅子にのっている人で、車椅子を使っていない利用者の人数に比べて圧倒的に少ない。でも、みんな費用対効果がどうとは言わない。車椅子に乗っている人が、車椅子にのっているという理由で行動が制限される世界は不幸であり、なるべくそのような制限(バリア)がない世界(バリアフリー)の方が幸せだという共通認識があるからだ。
「打たれ弱い」人に「なら技術記事を公開するな」というのは、アレルギー持ちの人に対して、「アレルゲンに近づくな」という助言に対応し、これには正しい一面もある。また、スギ花粉を全滅させるのは困難を極めるので、「アレルゲンを無くす/減らす」というのは理想論であろうことも知っている。でも、昔は「我慢が当たり前」だった概念が、いまは「我慢しないのが当たり前」になっている例は多数あるし、やっぱり声を上げていかないといけないんじゃないかと思う。
03月24日(水)
VS CodeのMarkdown Preview、いつのまにか画像が更新された時にプレビューが自動で更新されるようになってる。便利。
gnuplotハンズオンの準備できた。
論文修正しようとしたら、家での修正をpushし忘れてた orz
大幅な修正だったのでマージせずに作業するのは不可能。うーむ。
VSCodeのrubocopが死んでいる。ターミナルで実行してみたら
$ rubocop
/usr/local/Cellar/ruby/3.0.0_1/lib/ruby/3.0.0/rubygems.rb:281:in `find_spec_for_exe': can't find gem rubocop (>= 0.a) with executable rubocop (Gem::GemNotFoundException)
from /usr/local/Cellar/ruby/3.0.0_1/lib/ruby/3.0.0/rubygems.rb:300:in `activate_bin_path' from /usr/local/bin/rubocop:22:in `<main>'
とのこと。gemで入れ直したら治った。
gem install rubocop
論文のデータ整理。いろいろ悩ましい。
arXiv死んでる?それとも大学からのアクセスが拒否られている?
復活した。なんだったんだろう。
03月23日(火)
家のマシンにBLASやLAPACKが入っておらず、原田さんのBSAが動かなかったので入れる。
sudo apt install libblas-dev
sudo apt -y install libatlas3-base libatlas-base-dev
これでBSA/CC2がビルドできた。
03月22日(月)
MacのターミナルでVS Codeを開こうとしたら文句を言われる。
$ code .
/Users/watanabe/.pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/1.2.21/libexec/pyenv: No such file or directory
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory
これは~/.pyenv/shims/python
の中身が古いせいらしい。
pyenv rehash
で治った。
駐車場利用申請出した。車検証のコピー(スキャン)と、継続の場合は駐車券上部の番号が必要(2敗)。
車検証のコピー、最初は事務室のスキャナ使おうかと思ったけれど、Office Lensでいいやと思ってそれでやった。地味に便利。
いやしかし、Microsoft、Office LensとかVS Codeとか、良いアプリを作るようになった。以前はかなりプロプライエタリ路線だったと思うんだけど、ここ最近(5〜10年くらい?)OSS路線になったきがする。個人的には歓迎だけど、どこでマネタイズしてるんだろう。
前職でお世話になった秘書の方が退職されるとのことでメッセージを送った。子供がとてもお世話になりました。
メール処理とかたくさんした。
リアル中野さんと会った。夏の学校はだいぶ前だと思ってたけど、まだ5年前とかそんなものか。
03月21日(日)
しばらく前に「Let’s Encrypt Expiry Bot」というのからLet’s encriptの期限が切れるよ、という連絡が来ていたので調べる。
$ sudo certbot renew
(snip)
ongratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/domainname/fullchain.pem (success)
あ、期限を確認しようとして更新しちゃった。
確認方法はこちら。
sudo openssl x509 -in /etc/letsencrypt/live/domainname/fullchain.pem -noout -dates
notBefore=Mar 21 04:43:17 2021 GMT
notAfter=Jun 19 04:43:17 2021 GMT
notAfterの日付が証明書の有効期限。今日更新したから、90日後になっているように見える。
しかし、cronで毎月更新しているはずなのに、なんでうまくいかなかったんだろう?単に実行だけしていたのを、ログも残すようにしよう。
00 04 * * * certbot renew >> /home/username/log/certbot.log
毎月にしていたのを毎日にして、ログを残すようにした。
03月22日(土)
共著論文ひとつ見た。
03月19日(金)
Why does Windows still use NTFS? Why not ext4, the file system for Linux, since it actively prevents disk fragmentation?。回答が面白い。翻訳版もある。この「安定している」NTFSの開発にはとても苦労したことが「闘うプログラマー」からわかる。
メール処理。今週は体調がいまいちで仕事がなかなか捗らなかった。
03月18日(木)
Dockerハンズオン。無事に終わった。
研究室ミーティング。僕の発表。SIMDアルゴリズムの論文紹介。 「A flexible algorithm for calculating pair interactions on SIMD architectures」 Szilárd Páll, Berk Hess, Comput. Phys. Comm. Vol. 184 2641-2650 (2013).
もう一つ僕の発表。「不偏推定量とJackknife」
本読み輪講。
03月17日(水)
研究室サーバでDockerを使おうとしたら
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
と言われて死んでいる。どうしよう?
etc/resolv.conf
に
nameserver 8.8.8.8
を追加したら通った。デフォルトのnameserverがおかしい?
明日のDockerハンズオンの準備完了。
明日のもう一つのスライド作った。SIMDのクラスターアルゴリズムについて。
03月16日(火)
体調があまりよろしくない。
木曜日のスライド作り終わった。いろいろギリギリだな。
03月17日(月)
木曜日の発表の準備。スケーリング次元とか完全に忘れてた。
03月14日(日)
NOP
Yahooトップページの広告に「ねじのおはなし」という広告があり、おそらく生まれて初めて自分の意思で広告をクリックした。飛んだ先は鍋屋バイテック株式会社のねじのおはなし。内容が面白い。この前の攪拌の奴もそうだけど、分かりやすく書こうと努力しつつ結局内容がガチになるところが良い。こういうのが増えていくと素敵だな、と思う。
03月13日(土)
Rubyのヒアドキュメント中に引用符を書きたい場合がある。こんなの。
= [1, 2, 3]
t puts <<"TEST"
#{t.join(",")}
TEST
ここでt.join(",")
の引用符を、Rubocopはデフォルトでシングルクォーツにしろと怒ってくる。
test.rb:3:10: C: Style/StringLiteralsInInterpolation: Prefer single-quoted strings inside interpolations.
#{t.join(",")} ^^^
でも、rufoはここをデフォルトでダブルクォーツに直してくる。VimのALEがチェックにrubocopを、フォーマッタにrufoを使うので、保存時にrufoが直してはrubocopが怒る、というループになる。
結局、.rubocop.yml
に
Style/StringLiteralsInInterpolation:
EnforcedStyle: double_quotes
と書いて、rubocopをrufoに歩み寄らせた。
03月12日(金)
論文の図の修正。共著者さんの結果を自分の結果に入れ替え。ものすごく時間かかったぞ。
追加計算用コードを書いてスパコンに投げた。cos(4π/3)の符号を間違えていたせいでしばらく混乱していた。ひどいもんだ。
WSL2でtmuxを使うと激重になるの、Windowsのパスが通っているせいだったらしい。ここの記述にしたがって/etc/wsl.conf
に
[interop] appendWindowsPath = false
と書いてログインしなおせばかなり早くなる。ただし、当然のことながらWindowsから引き継いだパスに由来するコードが使えなくなるので、自分で設定するかシンボリックリンクが必要。特にcode
が使えなくなるのが面倒。他にも副作用がありそうなので、とりあえず元に戻した。tmuxはしばらくあきらめよう。
tmuxとの関連は不明だが、なんかシェルが死んで、WSLを再起動したら
zsh: corrupt history file /home/myusername/.zsh_history
とか言われてzshが動かなくなった。ここの記述の通り、
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
で解決。
03月11日(木)
Vimハンズオン。
研究室ミーティング。
本読み輪講。余談として、ルジャンドル変換と幾何学的な双対について。
03月10日(水)
論文の図を直してた。
03月09日(火)
免許の住所変更した。
マイナンバーカード4人分申請した。
論文を書こうとしたのだが、なんかWSL2でビルドできない。あと、texindentを入れようとしたら、tlmgrが古いとか言われる。
$ tlmgr update --self
(running on Debian, switching to user mode!)
tlmgr: Remote repository is newer than local (2017 < 2020)
Cross release updates are only supported with
update-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.
sudo apt update
sudo apt upgrade
でも、upgradableを見る限りTeXLiveは入っていない気がする?フルインストールしちゃえ。
sudo apt install texlive-full
Windowsだと死ぬほど時間かかるけど、WSL2だとどうだろう?
入った。これでlatexindentが入るかな?
$ latexindent --version
3.4.1, 2018-01-18
入ったみたい。
ダメだ。WindowsのWSL:UbuntuでVS CodeからLaTeX Buildしようとしてもどうしてもうまくいかない。実行マークが永遠にくるくる回るだけ。VS Codeのターミナルから開いて実行したらうまくいくのだが。
やむを得ず、VS Code保存時のビルドを切った。
{
"latex-workshop.latex.autoBuild.run": "never",
}
03月08日(月)
予算締めた。
卒論郵送した。一言コメント付き。
学科のビデオカメラをコンバータ経由でWebexで配信、録画してみた。問題なくできた。これで物情特別講義OK。
スパコンが一つメンテ中で、もう一つはジョブの実行待ち。なんかエアポケットのようになってしまった。講義の準備とかいろいろあるのだが、なんかうまく切り替えられなかった。
03月07日(日)
NOP
03月06日(土)
NOP
03月05日(金)
最近はそれなりに睡眠時間がとれているせいか、頭がよく回る気がする。
必要なプログラムをすべてJackknife化して、物性研に投げた。
もう一つのスパコンのデバッグをしようと思ったんだけど、ファイルシステムが重くてなんにもできない。なにこれ?
03月04日(木)
ハンズオン。論文の読み方。自宅から大学が契約する論文を読むための手続きなど。
研究室ミーティング。
輪講。
TAの募集出した。
ん?なんか3日前のActionがQueuedのままになってるぞ。なんでだ?
03月03日(水)
在宅勤務。明日の輪講の準備。あとハンズオン。
03月02日(火)
Macのg++-10がいつのまにか使えなくなっていたのに対応。
現象。
$ g++-10 test.cpp
In file included from /usr/local/Cellar/gcc/10.1.0/include/c++/10.1.0/bits/stl_algo.h:59,
from /usr/local/Cellar/gcc/10.1.0/include/c++/10.1.0/algorithm:62,
from ../sdouble.hpp:29,
from test.cpp:1:
/usr/local/Cellar/gcc/10.1.0/include/c++/10.1.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
75 | #include_next <stdlib.h>
| ^~~~~~~~~~
compilation terminated.
などと言われ、ヘッダファイルのパスが見つからない。アンインストールしようとしたら、
$ brew uninstall gcc
Error: Refusing to uninstall /usr/local/Cellar/gcc/10.1.0
because it is required by boost-mpi, fftw, kim-api, lammps, open-mpi, openblas and r, which are currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies gcc
などと怒られたので、再インストールしてみる。
brew reinstall gcc
g++-10 test.cpp
コンパイルして、ヘッダが見つからないと言われないことを確認。なおってよかった。
なんかデフォルトブランチがmainとmasterが混在していて鬱陶しいので少しずつmainに修正。
stat::sdouble
ライブラリを修正。やっぱり<<
で値を追加する必要はないと判断。普通にstd::vector<double>
を使うことにして、ライブラリでは誤差伝搬だけを考えることにする。
03月01日(月)
え?もう三月なの?マジで?
一応「日記」も足掛け5ヶ月目になるのか(11/18スタートだからまだ4ヶ月分書いてないけど)。これなら三日坊主にはなってないかな。
学振PD受け入れ書類提出。ちょっと遅れてしまった。申し訳ない。
「スパコンで食えるか(仮)」みたいなタイトルで話すことに。ほんとにこのタイトルで行くかは謎。
新年度の準備。輪講とハンズオンの連絡とか。論文紹介用の論文もリストアップしておかないとな。
みずほのATMに障害。関連してSuicaシステムは優れているという話を聞いてちょっと調べた。Suicaシステムの概要(pdf)。普通にシステムを組むなら不正利用を防ぐためにカードにはIDだけ入れておいて、サーバに情報をすべて置いて置きたくなるが、それだとサーバが死んだら完全に交通が麻痺してしまうため、カード内、各駅のサーバ、そしてセンターサーバそれぞれに情報を貯める自立分散システムを構築。センターサーバと駅サーバの回線が切れたり、センターサーバが死んでも一部の業務を除いて運用継続が可能。また、ラッシュアワーなど、通信負荷がかかる場合でも、駅サーバが「キャッシュ」の役割を果たし、後でサーバと同期を取ることでセンターサーバの負担を軽減する。なるほど。
Suicaに比べて不正操作の影響が大きい銀行ATMと直接比べることはできないが、たしかによくできたシステム。
プリンタ、キャプチャデバイスの見積もり依頼。キャプチャデバイスはZoomとハンディカムの接続用。届いたらテストしなくては。
忘れてた。いつの間にかMacでgit submoduleが使えなくなっていたんだ。忙しくて放置していた。
$ git submodule update --init --recursive
pyenv: git-submodule: command not found
とにかく困るので対処。
$ which git
/usr/local/bin/git
$ git --version
git version 2.30.0
$ brew uninstall git
Uninstalling /usr/local/Cellar/git/2.30.0... (1,486 files, 40.5MB)
Warning: The following may be git configuration files and have not been removed!
If desired, remove them manually with `rm -rf`:
/usr/local/etc/gitconfig
$ rm -rf /usr/local/etc/gitconfig
$ which git
/usr/bin/git
$ git --version
git version 2.24.3 (Apple Git-128)
あるやん。brewで入れたgitが/usr/local/bin/git
に入っており、そいつが問題をおこしていた?
Gitのバージョンは下がったが、submoduleは使えるようになった。
Jackknifeによるバイアス補正、物性研にジョブ投げたぞ。これでうまく行ってそうなら本番コードを全部修正してデータを再取得しておしまいだ。