2022年7月の振り返り
こんにちは、tomoriです。
あっという間に7月も終わり、早くも8月に突入しましたね。(←毎回言ってる)
夏が本気を出してきたらしく、外に出た時の暑さがやばいです。
(気温よりも湿度がキツイ)
湿度高いだけでなんであんなに不快感を覚えるんですかね。
前置きはこの辺にして、さっそく先月の振り返りをおこなっていきます。
42Tokyo課題(Philosophers)
42Tokyoの課題である「Philosophers」に取り組んでいました。
実装コードはこちらです。
Philosophersは、「食事する哲学者の問題」を少しアレンジしたような内容の課題です。
主なテーマは並列・並行処理であり、下記の項目について学ぶいい機会でした。
概要を軽く説明します。
哲学者が何人かで丸い食卓を囲んでおり、人数分のフォークが各哲学者の間にあるという状況を考える。 食卓中心にはスパゲティがあり、哲学者はフォークを2本使ってそれを食べることができる。 ここで、哲学者は自分から見て左右隣にあるフォークしか使用できない。 このような状況下で、各哲学者は、「食事する」、「睡眠する」、「考える」の3つの状態を順番に繰り返す。 食事と睡眠には一定の時間を必要とし、直前の食事から次の食事まで一定の時間が空いてしまうとその哲学者は餓死してしまう。 以上の条件のもとで、できる限り哲学者が餓死しないようにサイクルを回す。 1人でも餓死した場合はそこで全哲学者のサイクルを終了する。
こちらの課題では、各哲学者がスレッドやプロセスに対応し、フォークが並列・並行処理における共有資源に対応します。
フォークの状態に不整合が生じないように、そしてデッドロックが生じないように、ミューテックスやセマフォを用いて排他制御を行う必要があるというわけです。
課題全体を通して、マルチプロセスやマルチスレッドの特徴や状態管理の行い方、排他制御の実装方法などを学ぶことができ、大変有意義な課題でした。
排他制御に関して、ミューテックスはプログラム内の一時的な資源として管理されているため、同一プロセス内でしか機能しないのに対し、セマフォはOSにより管理されているため、異なるプロセスでも同一のセマフォを参照できるという点は面白い相違点だと思いました。
これでランク3の課題は残すところ minishell だけとなったので、引き続き実装を頑張っていきます(絶賛実装中)。
Keychronキーボード購入
外付けキーボードとして「Keychron K2」を購入しました。
こちらは別途記事にしているので、興味のある方は覗いてみてください。
Magic Trackpad購入
Macbookをクラムシェルモードで使用するにあたり、トラックパッドも欲しいと思うことが増えてきたため、Magic Trackpadを購入しました。
自分が購入したものは、いわゆる第一世代と呼ばれるもので、感圧タッチ機能が搭載されていないモデルです。
メルカリで3,000円ちょっとの中古品を購入しました。
最新モデルの新品が約17,000円ほどすると考えると、機能自体はそこまで大きく変わらないので割といい買い物だと思っています。
というか最新モデル高すぎますよね。
現在、トラックパッドは左手デバイスとして配置しており、マウスと競合しないように役割を分けています。
基本的にカーソル移動などはマウスで行なっており、各種スワイプや拡大縮小などのジェスチャー機能のみトラックパッドで行うという感じですね。
ISUCON12予選参加
42Tokyoのメンバー3人で、ISUCON12の予選に参加してきました。
結論から言うと、ほとんどボトルネックの改善はできずに終わってしまったのですが、色々と学べることも多かったです。
自分の場合、本編というよりは、ISUCONのための準備やインプットが結構勉強になったという感じですね。
まず、チューニング以前の測定ツールなどを準備するにあたり、パフォーマンスを改善する上で事前に確認すべき項目や、その測定方法、実際に測定するために使用するツールの使い方など、今まで触れてこなかった領域の知識を得ることができました。
ただ、本番では事前に準備していたことがうまくいかず、測定段階からまずい感じでしたね。
まず、マシンのCPUやメモリの使用率などといったマシン情報を収集するためのツール(Prometheus)がうまく動かず、結局ベンチマーク実行中に htop
などを実行してリソースの使用率を確認していました。
今思えば、AWS側でセキュリティグループが設定されていたためアクセスできなかっただけだと思いますが、当時はどうすればいいのかわからず諦めていました。
またスロークエリの測定に関しても、MySQLでの設定しか準備しておらず、SQLite側のデータを測定することができませんでした。
こういったことがあり、準備にまあまあ時間がかかりました。
測定後、データベースの負荷がかなり重いということはわかったものの、SQLiteの扱いがわからず、なかなかクエリを修正することもできなかったです。
結局インデックスを貼ったり、独立したテーブルごとにデータベースを分割して負荷を分散させる、といったことしかできませんでした(本当のボトルネックが改善できなかったので、あまりスコアは上がりませんでしたが)。
結果こそアレでしたが、決まった時間だけ集中してやり切る、ということ自体が楽しかったので参加してよかったと思っています。
来年はパワーアップしてまた参加したいですね。
電子ピアノ購入
プライムセール中にこちらの電子ピアノを購入しました。
https://www.amazon.co.jp/dp/B08LGQ8CGZ/ref=cm_sw_r_api_i_ZBQ8FSGGWC3PGMBXMP8E_1?psc=1www.amazon.co.jp
あと一年もしないうちにこの部屋から引っ越すのに荷物増やすのもなぁ、とも考えましたが、欲しいときに買った方が後悔しないだろうというノリと勢いで購入を決断しました。
この生き方はおそらく学生の特権でしょうね(?)
もともと大学1年生の頃に安めの電子キーボードを購入し、趣味として嗜んでいたのですが、ハンマーアクションに憧れていたので、今のところ買ってよかったと思っています。
独学で暇なときにちまちま練習しているレベルなので大して弾けるわけではないのですが、好きな曲を耳コピして弾けるぐらいになりたいなぁ、という漠然としたモチベーションがあるので、やめることはないと思います。
個人的に、楽器は人生で一生続けられるであろう趣味の1つだと思っているので、今後も趣味の範疇で続けていきたいですね。
おわりに
7月は学んだことや経験したことがたくさんあり、とても濃厚なひと月でした。
一方で、やるべきこと・やりたいことがまだまだ残っているのにも関わらず、やりたいことが増えてしまい、どうしたものかと考えていたりもします。
最近だと、CTFに興味があるので、合間を練ってちょっとやってみたいですね。
話題は変わりますが、TL上でアニメ「リコリス・リコイル」が絶賛されているのをよく見かけていたので、気になって僕も試聴してみたのですが、キャラデザ、作画、音楽、ストーリーとどれをとってもめちゃくちゃ好みでどハマりしています。
久々にここまでワクワクする作品に出会えたので、毎週とても楽しみです。
アマプラだと放送日の3、4日後に公開されるのですが、ABEMAだと地上波同時で放映されているらしい(プレミアム限定かはわからない)ので、次回からリアタイで追いたいですね。
ということで、この辺で振り返りは締めさせていただきます。
ではでは〜👋👋👋