週記 2022/07/25~2022/07/31

2022/07/25

17時ごろに起きる。

布団の中でYouTubeを眺めたりして、18時ごろに活動を開始。

昨日電話回線を入手したので、各所の電話番号を登録して周る。iPhoneと同じネットワークに居たら(?)iPadからも電話を掛けたり受けたりできるそうで、これが面白い。自分はWindowsを使っているけど、もしMacの民だったらMacだけで電話の受け答えができるのね。つよい

先週分の日記を作る。随時書いていたものを見直してみると、いろいろと書き直したくなる部分が見つかる~。他人に読みやすい日記を書く気は無いので(日記とはそういうものだろう)、そんなに気にはしない事にしているけど流石に気になる部分もある。

2022/07/27

13時ごろに起きる。

外出マン。いつもは遅刻ギリギリだけど、今日は余裕をもって到着する事ができた。目的地へ向かっている間に友人氏からのメッセージを受け取る事ができた。当たり前の事ではあるけど、なかなか新鮮ね。猫画像も見れるし。

帰り際にいちごオレを購入。温泉とかにこの類の飲み物が入った自販機があるけど、外にあるのは珍しい気がする。電車を降りて外を歩いていると、パンツ一丁で川遊びをしている男児の集団を発見。パンツ一丁で川の法面を飛び降りたり、靴で魚を掬ったりしている。日本の将来は明るいな

BrainfuckをWebAssemblyに変換するやつをいじる。WebAssemblyに変換するやつがWebAssemblyで動いていたら面白いので、Rustで書かれたそれをWasmにコンパイルして動かしてみる。適当に$ cargo build --target wasm32-wasiをして、そのまま実行してみると、「入力のファイルが無いよ!」的なエラーが出てしまった。

最初はよくわからなかったけど、コマンドのヘルプを読んでみるとすぐに理由が判明。実行する時、wasmer --dir . a.wasmのようにディレクトリを指定する必要があるらしい。Wasmはサンドボックス環境だから云々的なあれかもな

ディレクトリの問題を解決して、ビルドされたWasmファイルを実行してみると、当然っちゃ当然だがネイティブと同様に動いてすごい(すごい)。このWasmファイルを配るだけでほとんどの環境で動くのだからすごいわね。

使いようによっては、このプログラムをブラウザ上で動かせるかもしれないわね。JavaScript周りは魔境だと方々で聞くけど、今度やってみようかしら。

2022/07/27

17時ごろに起きる。

昼頃に雷で目が覚めちゃったけど、再度眠った。そのまま起きていればいいものを...

相変わらず変な時間に起きてしまったので、食事は軽めに済ませようと思ったけど、今日は開き直ってそれなりの量食べた。夕食を若干減らしてバランスを取る感じ。

この生活を長期間続けていると生活習慣病になりそう。規則的な生活と運動!まあぼちぼち進めよう(3年目)。

BrainfuckをWebAssemblyに変換するやつをいじる。Brainfuckを最適化する手法の中に、ポインターを操作をまとめて行うというのがある。例えば、+>+>>+のようなコードはC言語風に書くと

*ptr += 1;
*(ptr + 1) += 1;
*(ptr + 3) += 1;
ptr += 3 // 最後にポインターを操作して帳尻を合わせる

のようになる。こうするとポインターを格納している変数の操作が減って、早くなるという感じ。

WebAssemblyのメモリ操作命令はオフセットを指定することができるので、これと同様の最適化ができると思っている。Brainfuckをいじり始めるきっかけになったサイトでは、BrainfuckをWebAssemblyに変換して実行する工程を全てブラウザ上で行っている。しかも早い

自分の処理系が出力したWasmと、このサイトとで速度を比べてみたらそれなりの差がついていた。折角だし同等かそれより早いWasmを出力できるようになりたいので、メモリ操作でオフセットを持つようにしてみようという気持ち。EmScriptenで同等のC言語のコードをWasmにコンパイルしてみると、オフセット付きのメモリ操作命令を出力していたので、不可能ではないはず。

yukikurage.github.io

zenn.dev

zenn.dev

実装の方針を考えてみているけど、なかなか面倒くさい感じになるような気がする…。

2022/07/27

7時頃に起きる。正直寝ていたのか寝ていないのかよくわからない感じ。記憶もないし...

適当に食事して、部屋の掃除を始める。冬に使っていた布団を放置していたので、これを洗濯と天日干しに回した。ついでにベッドのシーツを張り替えようとと思ったけど、新しいものを付けるのが面倒くさくて外した状態で放置。

GitHub Educationの申請をする。学校名と生徒証の写真をアップロードするだけで申請が完了するの便利~~と思っていたけど、生徒証の写真を全く受け入れてくれない。学校名が記載されていないぞ!という旨が返ってきたのだけど、生徒証なので当然学校名は載っている訳で...。ただ、学校名の上に公印が被っているのが気になる。返答の速度的にAIが生徒証の画像を調べていて、公証が被っている部分を読めていないのかも?

生徒証以外に在学を証明する書類は持っていないので、生徒性が使えないとなるとかなり厳しいぞ。どうしたものか...

2022/0730

16時ごろに起きる。YouTubeを観たりして18時ごろに活動を開始。

寝る直前にもう一度送っていたGitHub Educationの申請が通っていた。これまで送っていた申請と内容はそんなに変わらないのだけど、なんか通った...。やったね

BrainfuckをWebAssemblyに変換するやつをいじる。最適化処理をちょいちょい書き直した。最適化の度に新しくメモリを確保していたので、元のメモリを使いまわすようにした。若干処理もシンプルになってうれしい。実装を進めていく中で、いろいろと書き直したくなる処理が出てくる...

2022/07/30

15時ごろに起きる

いつもより若干早い時間に起きた感じ。これで早い時間というのも変な話だけど、遅いよりはいいや(夏休みだし)。

家の収納力を上げたくて悩み中。現在色々な物が置き場所が設定されていないまま散乱していて、これじゃいかんなという気持ち。置き場所が不明だから物が必要になった際も探すのに時間がかかるし、地震が来たら確実にヤバいなど色々と問題を抱えている。

とりあえず箱を買うかね。書類とかケーブルを適当にぶち込める箱が欲しい。その箱が雑多に散らばって元とほぼ同じ状態になる未来が見える見える…

BrainfuckをWebAssemblyに変換するやつをいじる。概ね満足できるような感じになってきたので、今度は拡張性を強化したいわね。現在はWASI環境でしか動かないバイナリを出力しているけど、ブラウザ内の環境でも動くバイナリも出力できるようにしたい(うまくやればWASIもまま動くのかも知れんが)。

WasmerがWASIのJavaScript実装を提供しているように見えるので、これを使ったら楽なのかも知れないな。まずはJS(Web)入門からか?I/Oとかストリーム辺りが必要になりそうだけど…

命令にオフセット値を持たせる最適化を実装する際に、実装方針を決めるために手法と利点・欠点をまとめたようなメモを書いてみたのだけど、これが結構良い感じに作用したので今後もやろうかね。

2022/07/31

15時ごろに起きる

BrainfuckをWebAssemblyに変換するやつをいじる。まずはこれをブラウザ上で動かすためにwasm-packを使用してWasmにコンパイルして…生成されたNodeモジュールをnpmに公開して…そしてフロントエンドのNodeプロジェクトをwebpackでバンドルして…複雑だな!

とりあえずエラーが出ない状態にして今日は終わり。魔境

ABC

すき家のうな牛を入手。うなぎと牛丼という謎の組み合わせだけど、それぞれが邪魔していなくて良いのよな。うなぎおいしいおいしい