週報 2024.04.29 - 2024.05.05
2024-05-05
今週はなんか虚無感をとても感じた。 実際クネクネしていた時間が多いように感じる、生活リズムが崩れまくったのもあるのかもしれない。 精神を安定させるためにもちゃんと生活を整えたい。
この週報であるが、こっそり始めたつもりでいたが何人かにバレていて (しかも読まれていて) びっくりした。 あるキーワードを入力したら週報の内容が読めるみたいな機能を付けようかなとちょっと考えたりした。
芸術の春
先週の週報で、絵を描くぞ!という目標を立てたので絵を描いたり、YouTube で絵の書き方だったりの動画を見てみたりした。 かなり難しい。バランスを取るというか描いてみるとなんか違うなぁとどうしても感じてしまう。 それはそれとして絵を描くという行為はとても楽しい。時間が溶ける。 もっと上手に描けるようになったらもっと楽しくなるのかなぁと思った。 人に見せられるくらいには上手くなってみたいのでもうちょっと頑張ってみたい。
自炊
先週、外食をしすぎた印象があったのでできるだけ自炊を心がけた。 欲に負けてラーメン屋に行ってしまったりしたが自炊の楽しさを再確認することができた。
やはりチャーハンが楽で美味しく作れるのでとてもよい。 普段はラードを使って作っているが、鶏皮を買ってそれを焼いて鶏油を取り出して代わりにそれを使って作ってみたがこれが意外と良かった。
x86 エミュレータ自作
書きはじめた。現状はまじで簡単な命令だけを実行できるだけであるが、x86-emu というリポジトリで細々と作っている。 大学の図書館から借りた「自作エミュレータで学ぶ x86 アーキテクチャ」という本をやりながら進めているがかなりいい感じ。
なんとこれまた Zig で書いているのだがやはり辛い部分がちょっとある。
実装においては Zig の面白い部分も活用していて、例えば以下に示すコードとかがそれである。
C とかでこういったものを実装する際には enum の最後にその大きさを表す FOOBAR_NUM
みたいなのを入れると思うが、
Zig は enum の中に定数を入れれるのと std.meta.fields
というやつがあるので、よりわかりやすい感じになることに気づいた。
pub const Register = enum {
EAX,
ECX,
EDX,
EBX,
ESP,
EBP,
ESI,
EDI,
pub const len = @import("std").meta.fields(@This()).len;
pub const name = @import("std").meta.fieldNames(@This());
};
面白い。
その他
AC 部屋に行くとなぜか木工作業がされていた。 どうやらサーバの静音化のための作業だそうで、時間があったので軽く手伝った。 木工作業は久しぶりであったが楽しかった。
kawaii ロゴが巷で流行っていたので jsys のロゴを作ってみた。 まともなソフトウェアを持っていなかったのでパワポでポチポチして作った。 これまた楽しい。
友人に勧められて購入した Fog of World というアプリが面白くて、霧を晴らすために散歩している。 健康が増進されてとてもよいのだが、これって手段と目的というか何かが逆転していないか…?と感じてしまっている。
ac-library-zig を空き時間にちまちま実装したりして segtree をついに実装した。(#3)
テストを書くのを頑張った。ところで本家にはあるアサートを入れていないことに気づいた。
いろいろ調べてみると、std.debug.assert()
というものがあり、内部実装を読んでみると以下のようなコメントが付いていた
/// This function invokes undefined behavior when `ok` is `false`.
/// In Debug and ReleaseSafe modes, calls to this function are always
/// generated, and the `unreachable` statement triggers a panic.
/// In ReleaseFast and ReleaseSmall modes, calls to this function are
/// optimized away, and in fact the optimizer is able to use the assertion
/// in its heuristics.
/// Inside a test block, it is best to use the `std.testing` module rather
/// than this function, because this function may not detect a test failure
/// in ReleaseFast and ReleaseSmall mode. Outside of a test block, this assert
/// function is the correct function to use.
らしいので割とまじでこれを使うべきだな~となった。
目標の振り返り
- 部屋を少しでいいので片付ける
- まじでほんのちょっとだけ片付けた。ただ本当にちょっとだけなのでもっと腰を上げて片付けを行ったほうがよいのかもしれない。
- x86 アーキテクチャについて学んでエミュレータを書く
- 前述の通り書きはじめた。
- 自作ゲームのためのコントローラのプロトタイプの作成
- やってない
- そぽたん展に出すための作品作りに手を出す
- 手を出そうとして以前購入したフェルトを取り出したが、人形作るの難しすぎて挫折した。来年こそは…
- 絵を毎日 1 時間程度描いてみる
- 毎日、というのは達成することはできなかったが、ある程度の日数は描いていた
- というのも描いていると楽しくて普通に 3 時間くらい溶ける、続けてみるとかなり良さそうに思っている
- プログラムをたくさん書く (累計 24 時間以上はいきたい)
- WakaTime で記録されていたのは 11 時間 33 分とかだった、カスすぎる
- オフラインであったり仕事でのコーディング時間は含まれていないが、それにしても少ない、クネクネしすぎていた…
来週の目標
- 部屋を少しでいいので片付ける (継続)
- x86 アーキテクチャについて学んでエミュレータを書く (継続)
- 自作ゲームのためのコントローラのプロトタイプの作成 (継続)
- プログラムをたくさん書く (継続)
- 自炊を頑張る
- キーボードの不具合をなんとかする
- 絵をある程度描く
- 折角 DAW を買ったので作曲に手を出す
- 電工の実技試験の勉強をいい加減始める