週記 2022/07/11~2022/07/17

2022/07/11

16時ごろに起きる。最近どんどん遅くなっていて危機感。

新しい扇風機を入手。Foo↑ 最近の扇風機は羽がたくさん付いているようで、風もなんか自然風に近いというか...。というのは多分気の持ちよう的なアレなんだろうか。

レポートを早いうちにやっつけて夏休みヒャッホ~!(だからと言ってやることは無い)になりたいので、残っていた最後のレポートを倒した。明日提出しに行こうと思う。

プリンターのインクが無くなりそうなので、新しいものに交換する。プリンター内部に直接到達できる蓋?を開けてカートリッジを交換するのだけど、なんか色々と重要そうなものが動いていてこわい。なんで電源を落としてからやらないのか…。恐る恐るやってみたものの、思ったより簡単にカートリッジの交換ができていい感じ。交換した空のカートリッジで遊んだりいろいろ(ティッシュを当ててみると色が付く)。

郵便を出すぞ出すぞ。封筒に切手を貼らないといけないけど、どうやって貼ろうか…。舐めるのは気が引けるし、蛇口の水だと勢いによっては切手ごと流されるかも…と考えていると、テーブルの上に放置していた烏龍茶のペットボトルが目に入った。見てみると結露が付いていてちょうど良さそうなので、結露で切手を貼ることにした。べんり

Brainfuckの処理系をいじる。WebAssemblyに変換しようバイナリ形式編。Wasmのバイナリ形式について詳しく載っているサイトを発見したので、これをもとに実装をちょっと書いてみる。いきなりコード生成まで実装するのはハードルが高いので、今日は定数をいい感じに表現する構造体を用意した。LEB128と普通の整数を行ったり来たりできるやつ。

ukyo.github.io

2022/07/12

14時ごろに起きる。

昨日用意した郵便物をポストに投函。集荷の時間を確認してみると、なんと平日は午前10時のみ。とうの昔に今日の集荷は終わってしまっていたようだ。別に急ぎじゃないのでいいけど…。

投函するポストを決めるためにポストの位置を検索してみると、思ったより沢山のポストが町中に散らばっている。もっと少ないのかもな〜と思っていたので、ちょっと意外というかなんというか。便利〜

BrainfuckをWebAssemblyに変換するやつを書く。昨日は定数を扱う構造体を作ったけど、後になって実装を見てみると色々と無駄が目立つ。実際に必要になった際にLEB128へエンコードしたらいいものを、構造体の作成と同時にエンコードして構造体のフィールドに持っていたり、LEB128に変換する処理はimpl Writeなものを受け入れるように抽象化されているのに、実際に使う部分でVecのみに限定して台無しにしてしまっている。

いろいろ無駄なものを省いていくと、最終的には整数を持つtuple構造体になった。Vecをフィールドに持たなくなったので、構造体のやりくりが超軽量になった。やったね

定数を実装できたので、本丸のWebAssemblyのモジュールの実装をする。モジュールはいくつかのセクションで構成されていて、今日はその中のTypeセクションを実装して終了。

ジェネリクスを使った関数で再帰(が原因?)をしてみたら、「型の解決が出来ないよ!」的なコンパイルエラーが発生してコンパイルに失敗してしまった。ドキュメントを読んだりしてみてもエラーの原因がよくわからず、明日に丸投げすることにした。

doc.rust-lang.org

色々と実装をしたら、あっという間に午前3時。寝ろ!

2022/07/13

16時ごろに起きる。

残っているレポートを提出して、やっと本格的に夏休みが開始した。始まる前は「レポートを早く提出して夏休みを長くするぞ!」と思って頑張っていたけど、実際に始まったら始まったで、かなり暇だ。暇すぎて掃除機なんかかけちゃったりして...

BrainfuckをWebAssemblyに変換するやつを書く。WebAssemblyのバイナリ形に必要な部品をどんどん実装していく。今日はいろいろなセクションを実装していく。Brainfuckを変換するだなら全てのセクションを実装しなくても良いのでちょっと楽できる。

必要なセクションを一通り実装して、残りはCodeセクションのみとなった。CodeセクションはWebAssemblyのバイトコードが格納されている、なんならここが本体と言えるような重要なセクション。Wasmのバイトコード、ややこしそ~~~

昨日の謎のコンパイルエラーは、impl Write&dynに変えてみたらコンパイルが通るようになった。謎

2022/07/12

13時頃に起きる。はやい(当社比)

早起きしたけど、やることは変わらない。とりあえず腹が減っているので、昨日の夕食の残りを温めて食べることにした。そんなに時間が経たないうちに食べ終わり、相撲を観たりしてボーッと過ごす。

ちょっと前に注文していたiPhoneが届いた。思ったより箱が小さいな…中身はiPhone本体と説明書、充電コード、Appleシールという感じ。Appleシールは何枚か持っているけど、一枚も使ったことないな…。

iPadの上にiPhoneを乗せて遊んだりしながら、初期設定をする。新しいiPadを買った時と同様、既に所持している端末を近づけたりするだけで初期設定が完了してすごい。ダークテーマとか基本的な設定もそのまま適用されているぽい。化学の力ってすげ〜!

初期設定が終わったiPhoneをいじったりして、ふとiPadに目を向けてみると、画面に知らない傷が複数付いているのを発見してしまった!!さっきiPhoneを画面の上に乗せて遊んでいたのが原因だろうか。カメラの出っ張りでキキキ…とイってしまった感じかもしれない。ググってみたら類似の事例がいくつか出てきたので、典型的なやつなのかも知れない。

iyusuke.net

もう少しググってみると、カメラの出っ張りにはモース硬度9(めっちゃ硬い)な素材が使われているらしい。そりゃ傷も付くか…。

せっかくApple端末が2台あるので、いろいろな連携機能で遊んでみる。クリップボードの中身を共有できたり(ユニバーサルクリップボード)、作業の途中で他の端末に切り替えても作業が続行できるやつ(Handoff)とか。Handoffはあまり使わなさそうだけど、ユニバーサルクリップボードはちょっと使いそう。ちょっとだけ

support.apple.com

BrainfuckをWebAssemblyに変換するやつを書く。今日は一番面倒くさそうな命令列のバイトコードを出力する処理を実装する。めんどくさそ〜という印象で実装を始めたけど、必要な部分だけで見たらそんなに実装は重たくなかった。

必要な命令を実装できたので、試しに”a”と出力する命令列を作ってみたけど、どうもうまく動かない…。正しいバイナリと見比べたりして1時間くらい格闘した結果、しょうもない型のミスだったことが判明…。符号付き整数型が入るべき部分に符号なし整数型のデータを入れていた事が原因だった。つらみ

次はWebAssemblyのブロックを実装するのだけど、なんか非常に面倒くさそう。ひえ~

2022/07/15

16時ごろに起きる。

Appleアカウントの主権を回復できたので、iPadiPhoneに色々と便利そうなAppを入れてみる。Radikoや鉄道の時刻表、人工衛星をくるくる回すやつなど。

apps.apple.com

Face IDが便利すぎて感動。便利な技術は人をダメにする

メディカルIDとやらに自分の情報を書いておくと、もし外でブチ倒れた時とかに役立つかも?というのを見たので、早速設定してみる。生年月日、服用している薬…と順調に記入していたのだけど、血液型の設定で躓いた。なんだよ+-って。

2022/07/16

14時ごろに起きる。

寝る際はエアコンを冷房にしていつも寝ているのだけど、今日はちょっと冒険して除湿に設定してみた。暑いよりはいいだろうという事で、設定は標準 - 1℃。実際に寝て起きてみると、かなり寒かった。室温計を確認してみると、23℃という恐ろしい数字が表示されていた。冬レベルの室温は求めていないので、今度は標準のままで運用してみよう。

ゆで卵を潰してマヨネーズと混ぜたものがあったので、食パンにこれを乗せて食べた。うまい

今日は腹具合が悪くて、何回もトイレにこもることになった。トイレから出てきてPCをいじり始めた途端に再度腹痛が襲ってきたして、非常に腹立たしい。例の極寒冷房が原因かしら。やね

特に覚えている事が無く、日記が薄め。

2022/07/17

16時ごろに起きる。

YouTubeを眺めたりして、17時に活動を開始した。ちょっと前に買い込んだカレーメシの賞味期限が切れてしまったので、それを食べようかな〜と思ったけど、この時間に食べると夕食に影響が出そうなのでフルグラをちょっと食べた。

AtCoder Beginner Contest 260に出る。ABCの3完。順位は8971人中3203位で、レーティングは4減って834になった。

A問題

がんばる。collections.Counterを使ってサボった。

atcoder.jp

B問題

問題文通りソート→上から取るを繰り返す。最初はちょっと難しく考えてしまったけど、簡単だった。

atcoder.jp

C問題

難しそう。とりあえず、問題文通りのことをして青宝石Lv.1の最大個数を調べる…という再帰関数を書いてみたけど、まあ時間はかかる。

問題文を睨むだけだとよく分からなかったので、宝石の操作の関係を図に書き起こしてみた。そんなに難しいことを考えずに、レベルの高い順から赤→青と操作を繰り返したらよさそう。そのまま実装して提出したらAC。

atcoder.jp