2020年6月 (Shiika 配列リテラル)
6月の活動報告です。
Shiika
配列リテラルが動くようになった。いや、動くっていうと語弊があるな…、実はまだObjectのインスタンスしか要素に取れないのだ。今月はIntやStringなど任意のオブジェクトを入れられるようにする。その下準備として、Int/Floatを即値からllvm structに変更した。そうするとInt/Floatもポインタと同じ64bitサイズ(※64bit環境を想定)になるから、配列の要素は全部一個64bitとして扱えばよくて楽なのだ。
ちなみにサイズを64bitに揃える方法としては、llvm structにする以外に「ポインタへの埋め込み」という方法もある。GC_mallocで確保したメモリのアドレスの下2桁が00であると仮定してよいならば、最後を〜01、〜10、〜11のいずれかにすればポインタと衝突しないので、残りの62bitの部分に好きなデータを入れられるのである。
せっかくなので、Boolについてはこの方式を実装してみた。010をfalse、110をtrueとして、メモリ上ではこの値をBoolとして扱う。ただしLLVMの分岐命令などはi1を引数に取るから、適宜i64からi1に変換(box/unbox)してやる。埋め込みの実装は初めてだったけど、テストが通ってるのでちゃんと動いてるっぽい。
BiwaScheme
rollup移行の作業を少し進めた。思ったより長くかかりそうなので、ブランチを切って、細かいPRをマージしていくスタイルに切り替えた。今月中には終わらせたい(先月も同じことを言ったけど)。
その他
久しぶりにAtCoderに出た。https://atcoder.jp/users/yhara ABC172、ABCDの4完。この問題で4完、2年前なら水色パフォだったと思うんだけど、今はこれでも緑なんだねぇ。人口が増えているというのは本当のようだ。
DはRubyだと手元で14秒で、Kotlinで書き直したら通った。Kotlin、速いし、Javaほどタイプ数多くないので、競プロでRubyと併用するにはいい言語かも。
Oxygen Not Included
最近はYouTubeでONIのプレイ動画をよく見ている。GrindThisGameという人がお気に入り。英語だけど、喋り通しなタイプではないし、叫んだりしない人なので落ち着いて聞きやすい。自動生成の字幕をONにしてそれを見ながら聞いている。
スキンケア
夜、風呂に入るときに顔がかゆくて爪でがりがりしてしまう癖があり、スキンケアには無知な自分でもさすがに肌にダメージがありそうなことは分かるので、簡単なスキンケアを始めてみた。「スキンケア メンズ」で検索すると無限に情報が出てくるけど、初心者だし面倒なことはしたくないので、朝晩に洗顔と保湿をするだけの簡単コース。
洗顔はドラッグストアで適当にこういうのを買った。押すと泡が出るタイプで、チューブより手間がなくて良い。
洗顔は油を落とすためだけど、なんで油が出るかというと乾燥に対する防御らしい。顔の皮膚は自分では水分を出せないので代わりに油を出しているとのこと。これが多すぎると良くないので、洗顔のあとは保湿をして乾燥を防いでやる必要がある。化粧水(水分)→乳液(油分)という手順が良いのだけど、面倒なのでこういうオールインワンタイプのもので代用している。
さて結果だけど、なんというか「肌の調子」の定義をよく知らないのでなんとも言えない部分がある。しかしかゆいのはだいぶ治ったので主な問題は解決したといえよう。とりあえず水が冷たい冬になるまでは続けてみるつもり。