Sunday 29 November 2020

Rustc 読み会最終日

なんか立命館の学生も参加してくれたみたい。今日はastとcodegenで、かろうじて code 生成まで行き着いた感じです。

code 生成は Thread pool に投げてて、素直にトレースできない。で、しばらく迷走したんですが、

#0 <rustc_codegen_llvm::builder::Builder as rustc_target::abi::LayoutOf>::layout_of
() at compiler/rustc_codegen_llvm/src/builder.rs:92
#1 rustc_codegen_ssa::mir::operand::OperandRef<V>::from_const ()
at /rust/rust/compiler/rustc_codegen_ssa/src/mir/operand.rs:74
#2 0x00007fffefab11c0 in rustc_codegen_ssa::mir::constant::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::eval_mir_constant_to_operand ()
at /rust/rust/compiler/rustc_codegen_ssa/src/mir/constant.rs:20
#3 rustc_codegen_ssa::mir::operand::<impl rustc_codegen_ssa::mir::FunctionCx<Bx>>::codegen_operand () at /rust/rust/compiler/rustc_codegen_ssa/src/mir/operand.rs:442

みたいに捕まえられました。ast -> hir -> mir -> llvm-ir みたいに生成するらしい。

40万ですが、今まで見たコンパイラのソースの方では良い感じ。特に smart pointer とかexceptionとかの処理が Rust はスムーズ。

ただ、Thread pool は微妙な感じね。Pthead だし。この辺は golang の方ができが良いかな。iterator が並列化されるみたいな方が自然で良いかも。

Saturday 28 November 2020

Rust 読み会続き

どうも、lldb だめらしく、gdb の方がまし。しかし、

  break point が掛からない
  p で表示できない

というつらさが... dynamic link されてるってのもあるが...

debugger は compiler が Dwarf という binary な debug 情報(関数名、コードと行番号の対応、構造体の名前と型)を使うのだが、

  まぁ、それがでたらめ

っことね。おそらく、今の形の debugger はもうだめで、もっとコンパイラに関連した debugger を用意しないとだめだと思われる。

構造体の表示の仕方や関数のアドレスを知ってるのはコンパイラだけだから。

ただ、C++ な LLVM よりはだいぶ読みやすい。エラーが Option (エラーかどうかのフラグを含む構造体)なのは少し鬱陶しいけど。

徐々にいろいろなものがRustに移っていくかも知れないです。

結局、parse_fn_body くらいまでしかいかなかったが。

Friday 27 November 2020

Rust compiler の trace 方法

まぁ、Haskell みたいにトレース不可能な感じではないんですが... 環境は二つ。明日、明後日で、読んでいきます。

環境は二つで

  サーバの Singulariy 上の debug build した rustc
  macOS上の rustc

下の方は LLVM なので gdb/lldb で。

Singulariy上の build いつもの python3 に引っかかって...

  update-alternatives --install /usr/bin/python python /usr/bin/python3 10`

とかやらないと python が python3 にならないらしい。

Singulariyの作り方も 「--sandbox` と `--writable` を使って段階的にビルドするのがいいらしい」ことらしく...

最後にビルドした結果をsifに変換するとできるらしい。微妙。

  singularity build --fakeroot debugging-rust-compiler.sif rust-debug

これに

  singularity shell /ie-ryukyu/singularity/rust-debug/debugging-rust-compiler.sif

として入って、中で trace します。sif は 5GB。VM並の大きさじゃん... 中に入ってみると 16GB。ふーん。

で、いけるかと思ったが.... break point がかからない。

  l rustc_parse::expr::parse_expr

くらいでいけるべきなのだが。結局、

  Singularity> nm /rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/librustc_driver-ce53599820ba664c.so | grep parse_expr

で mangling されたものに main で停めた後に

  b _ZN11rustc_parse6parser4expr45_$LT$impl$u20$rustc_parse..parser..Parser$GT$27parse_expr_catch_underscore17h43010b29c3bbcd9bE

とすると捕まって、その後は 

  l parse_expr

できるように。しかし、この方法は macOS ではだめでした。

source code debugger は C++ でもかなりだめでな〜 誰も debugger とか使ってないのかも知れん。

朝、10時からやるはずです。参加したい人は Facebook の DM くれれば Zoom の Link を送ります。

Thursday 26 November 2020

群論の続き

いや、プロシンのネタにしようと思って... ってことは、これから書くんですか? 8月くらいからやってるんですが...

こういうのって、やってると広がって、あれもこれもやりたいになるのだが...

  Agda なので時間がかかる

かかる割に、システム更新とか授業とか他のもろもろとか... 事務は可能な限りさぼってるのに。

要は順列を数え上げて「全部数え上げたことを確認すれば良い」だけなんですが、割と迷走中。

でも、ある程度は形にはなったかな。Agdaの証明つまり型の整合を見るのに4分かかるのが10秒になるみたいな話らしいです。

え、そこ速度見るの?

Wednesday 25 November 2020

余計なこと

授業前にうっかり「updateでreboot」をやってしまって、30minitesくらいましたが、少し遅れるくらいですみました。

Omnigaffle の update したら、

  入力が必ず日本語に戻ってしまう

OmniGraffle どんどんくそになるな。もう学生9用ライセンスはやめてしまったんですけどね。ただ、Draw.io だって長続きするかどうか。

rust を compile するのに brew upgrade / update をかけてたら、うちでいれてる llvm のコンパイルに...

おかげでload avarageが大変なことに。年代物のMBPなのに。

Singurality でも Rust を入れてみたんですが、TZが設定されてないとかプロンプトを出されてしまうと、そこで終了。まっさからやりなおし。

buildを step by step でやる機能ぐらい欲しいけど。

Tuesday 24 November 2020

量子力学の本


だいたい、こんな感じ。マンドルは学部時代に永嶋さんから借りっ放しです。すみません。

最初に吉田研の勉強会で読んだ奴が入ってないな。Poling のQuantum Chemistryも写ってないな。

面白かったのは、やっぱり Dirac かなぁ。でも、一番計算したのは Poling かも。

大学院の試験でも摂動法解いたし。フォンノイマンは微妙に相性が悪かった。一応、勉強会もしたんですけどね。

ファインマン先生のは延々スリットの問題をやるのがうっとうしかった。でも、また読み直す時が来るかも。

やっぱり計算しないとね。この辺も Agda で定式化する気になるかも。

Monday 23 November 2020

大きな三角 ingress


元気な新人さんのせいで、割と刺激を受けたのか、古参たちが珍しく。

なかなか足がないと大きなのは難しいが、ガソリン代がかさむらしい。

そういえば、長距離リンクとかも引いてみたい気はするな。

Sunday 22 November 2020

光るグラス

だいぶ時間かかったが Lv8 に。大学で適当に CF 作って上げました。いや、木曜日にあと3時間がんばれば良かっただけなんだが。

L8使えないのは不便だった... Jarvis でお代わりが定番だとは思うんだけど、Hack数が足りなくて出ないんだよな。

こういうの好きなの人がいるらしく。これは大山のお店だな。



Saturday 21 November 2020

agda version manager

pyenv とかのたぐいですね。異なる版の共存は嫌いなんだけど、

  agdaのbug reportには開発最新が必要で
  授業用には brew の最新が必要

ってことなので切り替えが必要。

Haskell で書かれた agda そのものにはあんまり差はないのだが、standard-library がどんどん変わる。気持ちは分かるよ。

  良くしようと思うと、directoryいじったり振動したりする

んだろ。取りあえず、整合性はとれたんですが、切り替え方は良くわからないです。


  $ export AGDA_DIR=$HOME/.agda
  Other way is to create a directory .agda in your directory and run agda-pkg from that directory. agda-pkg will prioritize the .agda directory in the current directory.

とか書いてあるが、ちゃんと動くのか?

directory毎に singulrarity / podman で固定された環境が動くとかが欲しいところ。hg/git clone で、その環境が自動的に設定されるとか。

https://pypi.org/project/agda-pkg/

Friday 20 November 2020

シス管打ち上げ

まぁ、まだ、いろいろ残ってはいるが

  新システムの構築終了

ということで打ち上げ。

でも、お披露目聞いてくれた人は14人? 半分シス管か?

しょうがないなぁ。授業の課題で出さないと使わないか。そんなものだよな。

いや、でも、まだ自分でも使い方良くわかってない。GCC/LLVM 使う時は Singularity 経由にするの?

https://ie.u-ryukyu.ac.jp/syskan/opening-introduction/

Thursday 19 November 2020

Recursion 2 回目


最近、緑が良く来てたからな、Lv16。まぁ、どこでも良かったんですが、泊でいいかという感じで

  松山公園から泊まで焼いて、そこでRecurs and APEXで埋めながら戻る

ってのにしたんですが、

  Lv5 以上は白ポ埋めでは足りなくて、CF作らないとあかん

ってのにいまさら気がついて。結局、地元の嘉数高台で多重作って Lv7 まで上げました。

明日からAP 2倍なので、そこでLv8にはなるでしょう。地元ではRecursion 4回の猛者も。

なんか最近の呼び込みって、こんなの持ってるのか。いや、入りませんでしたよ。

Wednesday 18 November 2020

Rust コンパイラ読み会

例年のあれですが、今年は

  Rust compiler

を読みます。Rust ってくらいなので、実は

  極めて、C

な言語なんだよな。むしろ、C++ でないっていうところが重要か。

水曜日、と金曜日に環境そろえて、土日で読みます。Zoom 配信な予定。10:00-12:00 14:00-15:00 16:00-18:00 かな。

https://github.com/rust-lang/rust

Tuesday 17 November 2020

Rust / InetliJ / Gitlab

というお題でした。Rust ほとんど触らないので、まったく忘れてる。

  Reuslt を文末の ? で投げられる

というのを見つけました。assertOK ってないの?

InteliJ は Java には良いんだが、Rust はまだまだな感じ。VSCode で良いじゃん説もある。

で、(本当はhgを使いたいが) git 経由で gitlab に投げて CI するという仕組み。

gitlab 側に設定がないなと思ったら、自分でProject の下に .gitlab-ci.yml を書くだけか。

簡単でいいね。Jenkins いいけど、gitlab と二重よりは良いかな。

エラーでぼろぼろなまま、授業は終わりましたが、あとは学生が自分でやってくれるだろう。

  # Setup a cache to cache job parts between jobs to ensure faster builds
  cache:
    key: "$CI_JOB_NAME"
    untracked: true
    paths:
    - $HOME/.cargo/
    - target/

  # Define a yaml template for running a build and then running your tests
  .cargo_test_template: &cargo_test
   script:
   - rustc --version && cargo --version
   - cargo build
   - cargo test --verbose

  test:stable:
   image: "rustdocker/rust:stable"
   <<: *cargo_test

Monday 16 November 2020

久しぶりに automaton

授業でやってるので。最初の年は List でやって「あんまり綺麗じゃない」、去年は Bool でやって「いろいろできたけど複雑」。

今年は、List Σ → Set で全部やるってのが降ってきて、確かに、わりと綺麗に。ただし、

  簡単になったとは云いがたい

集合論の時にも Ordinal → Set でやるってのが降ってきて、いろいろ解決したわけですけどね。この

  Set ってなんだよ

ってことだな。Agda 的には基本的な型でレベルがあるってくらいなんだが、何かの命題が入るという意味でもある。

言語、つまり、任意の入力文字のListの部分集合を List Σ → Set と書くわけですけど、その心は

  Listの部分集合を識別する何かの述語がある

くらいだな。

  is-a : List Σ → Set
  is-a x = x ≡ (a ∷ [])

  is-nil : List Σ → Set
  is-nil x = x ≡ []

とやるわけですけどね。でも、Set は命題なので、それは証明しないと正しいとわからない。あるいは

  is-nil? : (x : List Σ) → Dec ( x ≡ [] )

という x ≡ [] の証明があるかどうかを調べる述語を自分で実装するわけ。この場合なら

  is-nil? [] = yes refl
  is-nil? (_ ∷ _) = no (λ ())

とか。

だいぶ慣れたけど、いまでも、この Set 絡みは

  まったくわかりません

となることがあります。

Sunday 15 November 2020

停電からの復帰

結局、Secondary の設定はしたんですが、上位の登録のと IP Address がずれているとのがあったらしく、

  DNSが停まるとどうなるかという演習に

そもそも、年に数回計画停電があるってあたりが演習だけどな。復帰は順調なようですが、いくつかは立ち上がらないというもいつものこと。

この辺、全部クラウドにすれば、あんまり考えなくてすむわけだけど。

GMail も停まってたけど、復帰するとメールは遅れて届く感じ。

MatterMost は gitlab の認証で引っかかったらしく、つながりませんでした。

Slack は関係なく動くが、誰も使ってない。つまり Google アカウントはDNSに関係ない。

学科のWebも Sakura のは動いているけど、DNS がだめなので見れないわけね。

Saturday 14 November 2020

DNS

なんか、明日、計画停電らしく。いや、

  停めないでできるでしょ

と思うんだけど。おそらく、定期点検的な役得なんだろうなぁ。

で学生がシステムの切り替え(いまだに手動)をやってるんですが、なんか嫌な予感が...

  ちょっと DNS のセカンダリの設定見せてくれる?

と聞いたら

  ありません

げ。Sakura の切り替えの時に、ドタバタして消えてたのは知ってたんだけど。まだ、立ち上げてなかったのか。

どうもキャッシュでなんとかなるとか Expire 延ばせばとか考えてたみたい。いまどきは、

  Google 関係のサービスはDNSで接続している

ので、GMail が停まる可能性があるんだよな。

学科内は DB と連携させてたりで複雑なんですが、外向きは単純なので、まぁ、すぐに立ち上げられるとは思うんですが...

DNS はクラウドが良いとは聞きますけどね。

Friday 13 November 2020

レモン麺


らぶメンがんばってるな。コロナでも閉めなかったお店の一つ。助かってます。

レモン麺、これほどはまるとは思ってなかったんだが。酸辣湯麺と似ていて酸味とラーメンって合うんだよな。

近所のわた琉も割と良い。

Thursday 12 November 2020

Marley



昔、そんな Ingres Agent がいてな〜 今頑張ってる新人みたいな。Punix とつるんで脅威でしたが...

普天間宮近くに移動してきたベトナム料理屋さん。ここは、実は

  Ingress のポータルの要衝

といっても「自分の」だけどね。ここには花蓮もあるけど、こっち側に緩いランチができるのは素晴らしい。

なんか、隣にも怪しいオープンカフェみたいなのが。

普通に頼むとパクチー抜きになるらしいので「パクチー入れて」と頼むと良いらしいです。

Tuesday 10 November 2020

緑の新人さん


なんか、けっこう頑張ってる ingress agent が... 何回かお代わりされてしまいました。

まぁ、こういう人がいないと、自分のところを染めた後、いろいろ出張にいくようなことになるので。

ただ、東海岸側はバスの便がな。那覇からいくか、護佐丸バスかになるので、なかなか厳しい。

昔の marley を思い出す感じ。

Monday 9 November 2020

原神

一番高いところまではいきました。iPhone 7+ だとぎりぎりなので、原神のためだけに買い換え様かという気にもなるが...

このゲーム、初期の頃は墜落して良く死んでたんですが、グライディングと言って飛べる。で、

  飛びすぎて、墜落して死ぬパターンが...

高いところまで登って、そこから飛ぶ。それが楽しいですね。テレポートあるけど、そういうの探すフェーズだからな。

遠景がかなり広く見える。そういう実装難しいんだが、もはや、それが標準技術か。しかもロード時間とかなくて。もっとも、

  起動に時間がかかる

のは、そのまま。12とかにしてもあまり変わらないかもな。

もしかすると、一通りマップを開けて飽きて終わりかも。そういう人も多いみたい。

Sunday 8 November 2020

新町炎上


真栄原の怪しいところだったところですね。たまに写真展とかやってたらしいんですが、そこが燃えたらしく。

それでこんな看板らしいです。もっとも、わざわざ焼け跡見に行くほどでもなく。

この辺は普天間基地の緩衝帯であるべきところなので

  立ち退きで公園にしちゃえ

って話があるらしい。花ぐるまとかサンエーがなくなると困るが、まぁ、それもいつになることやら。

Saturday 7 November 2020

JPHacks 2020

いろいろさぼっててすみません。

土曜日の午後で1分半の発表を20件くらいみたかな。この手のProject base な授業は前期でも見てて、後期もいろいろ。

なので、重複感がある。重要なのは

  学生のグループがちゃんとサポート受けられること

なんですが、コロナの遠隔授業の影響で学生の負荷はむしろ上がっているらしく。Effort 30%とか無理的な。

テーマも心の健康とかオンライン授業対策とか「旬のものをもってきてる」感じがありました。

そこそこ頑張ってもってきてるけど、割とマンネリ化する宿命ではあるな。

人の心をいじるようなサービスは、少し、カウンセリングの経験が必要かも。そういうものをカリキュラムに入れる時代かも。

ファイナンシャルとかメンタルヘルス、あるいは労働法とか、そういう社会で生きていくためのカリキュラムかな。

Friday 6 November 2020

まーさんパスポート浦添


なんか微妙な景品。結構、知らないお店もあるな。パルコシティできたし。しかし、今の時代にスタンプで投函ですかぁ?

  ハリーズが入ってる

でも、判子もらうのは忘れました。

ラーメンフェスタも最初の一回は燃えたものだが...

こんなのよりも「また10万円」でしょう。

Thursday 5 November 2020

Twitter の mute と list

6400人フォローしてるんですが、油断してると

  TLが肌色に...

エロ系を大量RTする人たちがいるんだよな。RTをいちいち停めるという手もあるんですが、

  mute して list に入れる

すると、TLに出ないのは当然なんですが、list では見える。しかも

  list では「RTは表示されない」

なので極めて健全な人に見えます。

ただ、この方法では

  直接、エロ投稿している人には無力

なので、さらに別listへ。

いや、どんどん投稿してもらって構わないです。こっちで選択して読むからさ。

Wednesday 4 November 2020

地図


いや、この職業、まだ生き残ってたとは。いや、ママさん、そこお金だすからでしょ。まぁ、助け合い的なところもあるんだろうな。

安いとも思いましたが、この地図が役に立つことはないよな。

昔の Google Earth は Google Map 以上にマイナーなお店が出て、かなり驚いたものだが... 今は、

  どうでも良い店しか出てこない

検索エンジンで何かを発見する時代は終わってしまった感じ。深層学習とかで最適化された結果ってのは

  90%の人には役に立つかも知れないが、0.1%を探している人には何のやくにもたたない

ってことね。

Tuesday 3 November 2020

file を持ってくるスクリプト

こんな感じなんですけどね。rsync は --files-from=FILE ってのがあるので、もっと綺麗に書けるはずですが、
まぁ、動いているから良いか。バックスラッシュの数が笑える。.svn とかCVSとかが時代だな。

Dropbox は嫌いなので使ってません。source doe は hg/gitなので、こういうのは使わない。

このscriptは、もっぱら家と学校とノートPCでファイルを移動する時に使う。事務系のファイルが多いな。

事務は MS Team を使う羽目になってるはずだが、紙で抵抗しているようなのがいるという噂。

もっとも、MS Teamなんか使われると、こっちが迷惑説もあるかな。

量が少ないなら Home directory を rsync ですますんだが、まぁ、そうもいかず。

file event とって自動的に同期とかも面白そうではあるが...

#!/bin/zsh
host=insigna
test=
flag="-zavE"
for file in $*; do
  case $file in
  /*)
    dest="$file:h"
    file=`echo $file| sed -e 's/ /\\\\\\\\\\\\ /'`
    dest=`echo $dest| sed -e 's/ /\\\\\\\\ /'`
    ( cd / ; $test rsync $flag --progress "$host":"$file" "$dest" --exclude .svn --exclude CVS --exclude .cvs ) ;;
  *)
    here=`pwd`
    dest="$here"/"$file"
    dest="$dest:h"
    file=`echo $file| sed -e 's/ /\\\\\\\\\\\\ /'`
    dest=`echo $dest| sed -e 's/ /\\\\\\\\ /'`
    $test rsync $flag --progress "$host":"$file" "$dest" --exclude .svn --exclude CVS --exclude .cvs ;;
  esac
done

Monday 2 November 2020

無限列車

乗ってきました。まぁ、

  ジャンプだからさ

という感じ。この系列、アストロ球団からの流れか? いや、聖闘士星矢か。

でも、終わったら「お父さん、もう一度みたい」って小さい女の子の声が。

面白かったかと言われると、テレビアニメの方が良かったかな。映画自体のできは微妙。とかいうと

  あやまれ、煉獄さんにあやまれ!

と某女史に言われそう。

Sunday 1 November 2020

知ってることとできることの差

量子力学学んだのは、やっぱり吉田研での勉強会からだったけど、三日くらいで片付けていたはず。

でも、それは読んだだけ。その後、量子化学の授業で摂動法をやって、さらに院試の勉強で問題を解く。

それでやっと計算できるようになった。単に知っているだけではだめで

  手を動かさないと

そのためにいろいろ課題を出すわけだけど、学生はいろいろ手を抜くわけだな。手を抜いても

  結局は、大学院で必要なものをやり直す羽目になる

つまり

  そこそこの厚みの(だいたい英語の)教科書の問題を全部やることになる

それにいつ気づくのかは人によって違うけど、学部で卒業してしまうと気がつかないままってのある。

先輩とか先生とかと一緒にやっても良いのだが、それは助走みたいなものだな。