2023/11/05 日記

自作Cコンパイラ 自作Cコンパイラでは、2kmccをコンパイルしてみて、エラーが出た箇所を修正していくという方針で進めました。プロトタイプ宣言を実装しました。と言っても戻り値の型しか見ていません。関数を呼び出す時、戻り値の型がわかっていないと戻り値のためにどれぐらいのメモリ領域が必要か決定できません。逆に呼び出す引数のデータ型はわかっていなくても、実引数から必要なメモリ領域がわかります(実引数が正しいという条件のもと)。そのため、とりあえずプロトタイプ宣言では戻り値のみ使用することにしました。 細かな修正として、2kmccの1000行を超えるプログラムをコンパイルしたことがなかったため、グローバル変数で確保した領域が枯渇し、セグフォで落ちました。グローバル変数が足りなくなったらエラーを表示するように変更しました。 また、文字列リテラルをchar型のポインタではなく、char型の配列として処理するように変更しました。こうすることで、return &"rdi\0rsi\0rdx\0rcx\0r8 \0r9"[4 * n];といった文を適切に評価することができます。 関数の引数で関数が呼び出されても正常に動作するように変更しました。 これらの修正を加えるとエラーなく2kmccをコンパイルすることができるようになりました。コンパイルした2kmccでは、まだint main(void){return 5;}などの単純な文しか正常に動かず、関数の呼び出しなどではセグフォなどで落ちてしまします。これらの問題点を改良していきたいです。 卓球部 11月3日に卓球部の練習試合がありました。結果は全敗、1セットだけ取りました。 試合に参加して思ったことは、上手い人ほど足が動いているのが実感できました。上手な人はサーブを打った後はすぐに安定した場所に移動しています。安定した場所とは、どこに打ち返されても手が届く場所ということです。私の場合、サーブを打ったらほぼそのままその場所を動いていませんでした。また上手な人は決め球を決して逃さないとうことです。相手がミスった珠に対しては丁寧に決めていました。私の課題は足が動いていない、サーブが長い、ドライブでボールを弾いてしまっているなどです。 課題が多く見つかり、全敗したわけですが、めちゃくちゃ楽しかったです。初めての相手と当たると、どのような種類のサーブが有り、どのボールが好きで、どのコースが苦手なのか分析しながら卓球をすることができます。分析するのは本当に楽しい!!しかしその分析結果を基に、技などを実現する技術はありません…. GitHub Page更新 このサイトのtagを一覧で表示するページを変更しました。今まではtag名のみ表示していましたが、tagの説明も加えて表示されるようにしました。JekyllではLiquidというテンプレート言語を使用しているそうです。その言語と、Variablesという変数を組み合わせ、tagの説明をいい感じに取得し、表示させました。JekyllではsiteがWebサイトを全てを指し、postがsiteの中にあるブログのような投稿記事、pageがsiteの中にある固定ページであるという考えがあるようです。(多分です) その他 Git, GitHubをUSBに入れて持ち運ぶという記事を作成しました( »> 記事はこちら)。もともとはTeamsをUSBに入れて持ち運べるようにしたかったのですが。結局USBの転送速度がボトルネックになり実現できませんでした。 git rebaseでGitのコミット履歴を変更する手法を学びました。ブランチを切り替える前にコミットを複数個してしまいましたが、git rebaseで切り替え先のブランチに切り替え前のブランチにあるコミットを移動させ、git rebase -iで切り替え前のブランチのコミットを削除することで、正しくブランチを切り替えた状態でコミットしている状態にすることができました。 主メモリが足りなくなったら使用するためのswapファイルがあります。VMを複数個立てると主メモリが足りなくなり、さらにswapメモリも足りなくなり何度か落ちました。そこで、swapメモリの容量を増やしました( »> 参考サイト)。成功。 Avalonia UIという技術に触れたい

2023/11/5 · KashiuchiSotaro

2023/10/29 日記

自作Cコンパイラ 自作Cコンパイラでは、構造体を引数、または戻り値に取る関数をコンパイルできるようにしました。まずは構造体を引数として渡す場合です。AMD64のABI規則では、構造体のメンバの状態に応じてメンバごとにレジスタを介して渡したり、スタック(メモリ)を介して渡したりしていました。複雑すぎたため、独自のABI規則を作成することにしました。具体的には1byteを超える引数の場合すべてスタック(メモリ)経由で渡すというものです。下の図は、関数を呼び出し、呼び出された関数がrbpレジスタを退避させ、ローカル変数を格納するために必要なメモリの領域を確保するため、rspレジスタから即値を引いた後のメモリの状態を表したものです。rbpレジスタが指すアドレスから2byte下位のアドレスに1byteより大きな関数の実引数が格納されています。これをスタックに複製し、複製した値を仮引数の変数のメモリにコピーするようにしました。一度スタックを経由して仮引数に代入するようにすることで、比較的にプログラムの修正箇所が少なくてすみました。(最適化の観点からは見るとめちゃくちゃ無駄なのでしょうが…) /* 1byteより大きな引数がある場合 * | | * +----------+ <-rsp * | | * | | * +----------+ <-rbp * | rbp | * +----------+ * | ret addr | * +----------+ * | memory | * | argument | * +----------+ * | memory | * | argument | * | | * +----------+ * | return | * | value | * | | * +----------+ * | | */ 次に構造体を戻り値とする関数の実装方法について説明します。AMD64のABIでは、レジスタで渡すことのできない戻り値の場合、関数の呼び出し側が戻り値の値を格納するためのメモリ領域を確保し、確保したメモリ領域の先頭アドレスをrdiレジスタを介して、関数を呼び出すようです(間違っていたらすみません。英語読むの苦手なので…)。しかしrdiレジスタは関数の第一引数を渡すのに使用しています。そのため、戻り値がメモリを介す必要がある場合、引数を渡すためのレジスタとしてrdiレジスタを使用してはいけません。しかしそんな場合分けするのは複雑なので、関数の引数同様、独自のABI規則を定義してあげることにしました。具体的には8byteよりも大きな戻り値の場合、本来はrdiレジスタで渡すアドレスの情報を、r12レジスタで渡すと決めました。8byte以下の値の場合は従来どおり、raxレジスタを介して値を渡すようにしました。下の図は呼び出された関数のreturn文が実行されている最中のメモリの状態を表しています。関数が呼ばれると、rbpレジスタをプッシュするタイミングで、r12レジスタもスタックに積むようにしました。return文が実行される直前のときはスタックトップにr12レジスタをプッシュした値が積まれています。return文が実行されると、return expression;のexpressionの結果の値(結果の値の大きさをsizeとする)がスタックトップに積まれています。そのためrsp+sizeでr12に格納されていた戻り値を格納するためのアドレスの値にアクセスすることが可能です。そのアドレスにスタックトップの値を複製することで、戻り値を呼び出し元関数に渡すことができます。 ...

2023/10/29 · KashiuchiSotaro

2023/10/22 日記

10/22 自作Cコンパイラは構造体の実装が完了しました。ローカルな構造体変数、グローバルなローカル変数、ネストされた構造体などの仕様に対応しています。面白いことに、ローカルな構造体変数と、グローバルな構造体変数はほとんど実装方法が変わらないということです。「構造体変数名.メンバ名」という字句があるとすると、構造体変数名の部分でグローバル変数とローカル変数のアドレスの指定方法が異なります。しかし後半のメンバ名は先程生成したアドレスからのオフセットでよいので、グローバル変数と、ローカル変数で共通の処理で実装することができます。そのことに気づかず、だいぶ悩みました。 またローカル変数のメモリの割り当て方法に問題がありました。本来は、rbpレジスタからのオフセットを識別子ごとに持たせ、メモリに配置します。しかし私のプログラムでは、関数の識別子をパースする際に、rbpレジスタからのオフセットが格納されている変数を0にしてしまっていました。そのため、関数を呼び出すたびにrbpレジスタからのオフセットがリセットされてしまい、それ以降、宣言したローカル変数は、別のローカル変数とオフセットがかぶってしまいます。structを実装している時に、たまたまこのバグに気づいたのですが、structがバグの原因だと思い込んでいたため、解決に相当な時間を費やしてしまいました。バグの解決に大きく貢献したのは、gdbデバッガです。GDBを使用したデバッグ手法(応用編)というサイトを参考にさせていただきました。バグとして現れた症状は、知らない間にローカル変数の値が変わっているというものでした。そこでgdbデバッガのwatch機能を使用しその変数が変更されたときをbreak pointとしました。このサイトでは変数名を指定していますが、アセンブリコードのデバッグでは変数名は存在しません。しかしgdbデバッガはメモリのアドレスに対してもwatchすることができます。例を挙げるとwatch *0x7fffffffdd70のような感じです。これでローカル変数が勝手に書き換えられているアセンブリコードの位置を特定し、そのコードを周辺をよく調べると、オフセットがかぶっている箇所がありました。それらを修正することで、正常に動作するようになりました。他にもgdbデバッガの便利な使い方があると思うので、調べてみたいです。 土日には寮祭がありました。私は寮生会の執行補佐という役職についているので、寮祭の企画、準備等に微量ながら関わらせていただきました。土曜日、日曜日の午前はバレーボールの試合を行い、日曜日の午後からミニゲームを行いました。 バレーボールの審判をしていたのですが、トーナメントで最後まで残ってくるチームはとても技術力が高く、三段攻撃を簡単にこなしており、スパイクやブロックなどが炸裂し、迫力がありました。審判という立場上、どちらかのチームを応援することもできず、感情を表に出せないため、ウズウズしていましたが、観戦している寮生は非常に盛り上がっていました。よかった! 日曜日の午後からはミニゲームを行いました。スリッパ飛ばし大会と、じゃんけん大会、マルバツクイズを行いました。スリッパ飛ばしは私も参加し、グループの中で2位でした。午前中の練習の成果が出せました(笑) 参加者も想像していたよりも多く盛り上がっていました。 総括すると大成功だったと思います。これだけ頑張ったので、来年も寮に残れることを期待しています! さて来週したいことをメモしておきます、サークルの部活化のメリットをまとめた資料を作成(10/24までに)、自作Cコンパイラで2kmccをセルフホスト、物理のテスト勉強 今後触ってみたい技術や、したいこと。docker, gdbデバッガの応用, gitの応用, nvimでgitの変更点へジャンプするプラグイン、nvimで特定の位置に印をつけるプラグイン, nvimのバッファの概念

2023/10/22 · KashiuchiSotaro

2023/10/15 日記

10/09 &&演算子と||演算子を実現させるため、CコンパイラのBNF記法をもう一度読み直しました。私が読んだC言語のBNFはK&Rで定義されているものだったため、それをC99に対応させる必要があるなと思いました。しかし、&&演算子と||演算子を実装するだけでは、そこまで問題ないのでとりあえずはおいておき、今はK&RのBNFを私のプログラムに対応させて行きました。 BNFはプログラムで実装しやすいように手を少し加えたり、EBNF記法で書いたりと変更しました。例えば以下のコードの内、上を下のように変換したりしました。 <conditional-expression> ::= <logical-or-expression> | <logical-or-expression> ? <expression> : <conditional-expression> <conditional-expression> = <logical-or-expression> ( "?" <expression> ":" <conditional-expression> )? equality_expr = relational_expr | equality_expr ("==" | "!=") relational_expr equality_expr = relational_expr (("==" | "!=") relational_expr)* C言語のBNFを読むコツはstatement系, expression系, その他共通部分をまとめる系の3つに分類することです。これを意識することで、だいぶ理解が進みました。 また、&&と||を実装するにあたり、短絡評価というものを意識する必要性を知りました。&&であれば、左の式が偽なら、右は評価しない。||であれば、左の式が真なら、右は評価しないなどのことです。無事実装できました。 今日初めてオンライン英会話をしました。こんなに難しいのかと思いました。 10/15 高専間単位互換制度での石川高専の授業の試験が10月10日に終わり、気づけば15日で学校が始まってから2週間が過ぎました。早い… 自作CコンパイラはC99のBNFを解読し、プログラムに反映させようと奮闘しました。struct部分のBNFが非常に難しいです。難しくしている要因が、構造体の宣言と定義、参照とあるのですが、宣言と定義が同じBNFで処理されていたりとするからです。そのため、各パース用の関数の引数と戻り値が、node、type、identifierのどれが最適なのか考える必要がありました。また今までは配列や、ポインタなどの派生型もありますが、最終的に変数はint, charなどの基本型に収束していました。しかし構造体を実装するにあたり基本型だけでは終わらないことに築きました。構造体のメンバは基本型で構成されていますが、構造体変数のデータ型はユーザ定義のためです(用語の使い方があっているか怪しいですが..)。基本的なネストされていない構造体は実装することができました。アロー演算子も実装できました。より理解を深めるために、構造体のパース時の抽象構文木を図に書いてみたりしてみようと思います。 今日(2023/10/15)にセルフホストまでさせることを目標にしていましたが、目標達成できませんでした。めちゃくちゃ甘い計画だった… 今後はまず、2kmccというCコンパイラのコンパイルを目指して作成し、その後自分のプログラムをセルフホストさせてみたいと考えてます。 実は今週、一週間に一度しかスマホを充電してはいけないという縛りを設け生活しました。この縛りを設けた理由は、最近スマホに依存しすぎてはないかと。もう少し有意義に過ごせるのではないかと考えたからです。最終日の今日、スマホの電池残量は2%となんとか目標を達成しました。意識変革の第一歩となったと思います。今後も続けていきたいです。 Google Analytics と Google Serch Consoleにサイトの登録が完了しました。正常にインデックスにも登録できているみたいです。 現在会員のサーかるを部活化するかどうか、真剣に考えています。部活を作れば知名度が上がることはもちろん、予算ももらえます。人数を10人集めなければ行けないのですが、現在4人と… 頑張れば部活化することはできると思っているのですが、その部活が、継続するのかという疑問があります。継続するためにはどうするべきか等考えていきたいです。 最近思うことは、他人と比較せずに生きていくことができれば、随分と楽なのだろうということです。幸せを他人と比較して得るのではなく、自分が評価して得ることができるからです。 この比較せずに生きていきたいということはよく聞くことです。では具体的にどのようにすれば良いのでしょうか? 一つは自分が比較しないこと。もう一つは比較してくる人を近くに寄せないことではないかと思います。比較してくる人が近くにいると、せっかく決意したのに、心が揺れてしまいます。

2023/10/15 · KashiuchiSotaro

デジタル人材リテラシー

高専では高専間単位互換制度というものがあります。この制度は他の高専の授業を受け、単位を取ることができる制度です。私は石川高専の「デジタル人材リテラシー」という授業を受講しました。この科目では、様々なデジタル技術を学び、各専門分野でそれらの技術を活かそうと言うものです。今の時代、情報系でなくとしても、デジタル技術を扱えたほうが、より多くの可能性を見出すことができます。デジタル技術を浅く、広く学ぶことで、自分が研究している分野などに応用できるという可能性を作り、視野を広げようというのが大まかな趣旨です。詳細はシラバスに書かれています。 授業の形式としてはオンライン配信で、各コマで一人の専門家を呼び、講義を受けるという形でした。以下の評価が各コマの授業の内容です。 コマ 授業内容 1 ガイダンス 2 DX入門 3 デジタル社会を支える技術 4 企業におけるDX 5 金融とデジタル技術 6 サイバーセキュリティ入門 7 サイバーセキュリティ入門 8 ドローン入門 9 航空宇宙産業とデジタル技術 10 デジタル社会を支える技術 11 デジタル社会を支える技術 12 アントレプレナーシップ入門 13 AI数理データサイエンス入門 14 デジタル技術と専門技術の融合 15 復習 特に面白かったのは、データセンターをGoogle ストリートビューのような感じで、オンラインでデータセンターを見学したことです。データセンターを見学したことはなく、とてもメカメカしていてかっこよかったです。見学だけではなく、データセンターに適した土地や、条件などの説明や、空調設備などが見どころでした。 この科目を通して、全体的に視野が広がったと思います。またその分野のプロフェッショナルな人の講義を聞くことで、人生の生き方などを学ぶことができました。むしろこっちのほうが多くの学びがあったと思います。 次回別の高専間単位互換性の授業を受けれるなら、実際にハンズオンなどがある技術系の授業も受けてみたいと思っています。

2023/10/10 · KashiuchiSotaro

2023/10/08 日記

10/03 昨日から学校が始まりました。 電気回路という授業では直流から交流への分野へと内容が前期と一変するようです。一回目の授業はオリエンテーションだったため、なんとも言えませんが、回路図の設計とかできるようになるのかと、少し期待しています。 情報工学実験ではLEGOのEV3をC言語で制御する授業を行いました。私は中学2年生の時に既にしていたので、今の所問題なく進められています。授業では既にEV3RTの開発環境が整っており、プログラムを変更し、makeでコンパイルするだけでした。個人的には、開発環境を用意するところから授業をすればより理解が深まるのではないかと思いました。 情報処理ではC#を勉強し始めました。.NET Framewrokを用いて、Windowsアプリを制作するようです。C#はほとんど触ったことがないのでこれから勉強してみようかなと思ったり、思わなかったり。組み込み系のC、Web系のGo、デスクトップアプリ系のC#という感じで体系的に学ぶために勉強しようかな…? 自作Cコンパイラの方は、インクリメントとデクリメントを実装しました。i++をどのように実装するのかなと思っていましたが、((i += 1) -1)と評価すればよいということに驚きました。 10/05 エニアグラム診断を現代国語の授業として行いました。エニアグラム診断とは心理学的な見地から人間を9タイプに分類し、特徴を細かく分析するもの。自分のタイプ(性格)を理解し、今後の人生に役立てようとういうものです。私の診断結果はなかなか当たっていることが多かったです。診断前に自分なりに自分とはどのような性格かと考えており、その考えと、診断結果がほぼ一致したため、謎の満足感がありました。 現代の世界という授業では第一次世界大戦の始まりを勉強しました。同盟を結んでいることで、次々と世界大戦に参加する国が増えていくことを見て、同盟は一見すると良いように思えるが、同調圧力を発生させる材料となり得るのだと思いました。 このサイトをGoogle Analyticsに登録しました。このGitHub Pageでは_config.ymlにGoogle Analyticsの測定IDを記入することで、全てのサイトに必要なjava scriptが挿入されるようです。しかし、このjava scriptの内容が第四世代と古く、現在の最新は第五世代のため、うまく動きませんでした。参考サイトGoogle Analyticsのバージョン そこで、_includes/google-analytics.htmlというファイルを第五世代向けのjava scriptに変更し、これを引用している_includes/header.htmlファイルにも変更を加えました。その結果、無事にGoogle Analyticsに登録することができました。 Google Search Consoleにもこのサイトを登録しました。こうすることで、Googleの検索のインデックスに登録されるようです。インデックスに登録されることで、検索に引っかかるようになるようです。Google Search Consoleにこのサイトのサイトマップも登録しました。サイトマップは_config.yamlファイルに以下のように記述すると自動的に生成されます。 plugins: - jekyll-sitemap 10/08 英検準2級を受験しました。夏休み中に勉強し、挑んだのですが、手応えがありません… 次に向けてがんばります。 夏休みの活動をまとめました。リンクはこちら ここで今後の目標と予定を整理しておきます。 明日からオンライン英会話をはじめて見る 10月10日にある石川高専のデジタル人材リテラシーという授業の試験を合格する! 10月15日までにCコンパイラのセルフホストを実現させる! 新しい部活作成のために必要な情報を収集し、計画を立てる

2023/10/8 · KashiuchiSotaro

2023/10/01 日記

9/25 昨日の午後から急激に喉・首周りが痛くなりました。唾を飲むのも、首を縦に振るのも、横に振るのも痛すぎ、寝るということでさえ、しんどかったです。熱は37.8度と高めでした。今朝は36度台まで落ち着きましたが、依然といして喉・首は痛かったです。簡易キットでのコロナ検査では、陰性でした。早く回復したいそれだけです。 9/30 明日がついに、開寮日です。まだまだ休みは足りないという気持ち…。 しかし、クラスのLINEで頻繁に会話され始め、本当に明日が開寮日何だと実感が湧いてきてしまいます… 開寮に向け、昨日は荷物の整理、布団の洗濯等を行い、今日車に荷物を詰め込みました。午後からは弟とサッカーをし、自転車で滝を見に行きました。あっという間に時間が過ぎてしまいました。そしてもう夜です。。。。。 話は変わって、人間が興味を持って、これがしたい(例えば、そろばんを習いたい、ピアノを習いたい、マラソンをしたいなど)という感情を持つ理由に、そこまで深い理由はないのだろうと感じました。そしてそこまで深くない理由のため、時間が経てばすぐに興味関心が薄れてしまいます。そこで、これがしたいと思った瞬間に行動していくことが大切だと思いました。逆にいえば、これがしたいと言われた時に、すぐに何かサポートするべきなのだと思いました。先延ばしにせずに。(偉そうにサポートする側の立場を述べていますが、将来の自分に向けてです(笑)) 10/01 今日は開寮日でした。部屋替えによって私の新しい部屋は、比較的きれいで満足しています。不満点としては、部屋が高さ4mぐらいと高く、声が反響して気持ち悪くなるところです。細かい点では、本棚のサイズ、引き出しがない点、コンセントの数が少なすぎるのと、位置が悪すぎる点、蛇口が自動から手動に変わった点、ベットの高さが高すぎる点です。しかしながら、一年生の時に比べると断然きれいで良かったです。 寮につくと友達が荷物を運ぶのを手伝ってくれました。そういう人間になりたい。 他の寮生の部屋に行くと、キーボードを夏休み中に購入している人が多くいました。私も丁度キーボードがほしかったところなので、試しに入力させてもらいました。ノートパソコンのキーボードよりも、メカニカルキーボードのほうがタイピングゲームのスコアが高かったので真剣に購入を検討中… 私は分割キーボードを自作したいとも思っているが、お金がね。 自作Cコンパイラの方は奇妙なバグが発生しそれの修正を行っていました。 奇妙な現象とは複合代入演算子の「/=」を実装時に、4回中3回失敗し1回ぐらい成功するというものです。gdbデバッガーでデバッグすると、4byteで参照する必要がある部分を、8byteでアクセスしてたため、上位4byteに不定義の値が含まれていることが原因でした。問題のコードは割り算の割られる数の変数部分であったため、プログラムの実行毎に不定の割られる数が代入されているため、成功したり、失敗したりと、挙動が変わっていたことがわかりました。 git stash popで少しつまずきました。stashした時のインデックスの状態が同じでないとコンフリクトを発生させる可能性がある?またstash後commitしてstash popすることはできない?などの疑問がわきました。今後よく調べていきたい!

2023/10/1 · KashiuchiSotaro

2023/09/24 日記

9/21 今日、GitHub PageというGitHubで静的なWebサイトを構築するための機能を学びました。GitHub Pageを学ぶにあたり、GitHub skillsのgithub-pagesというチュートリアルのようなサイトを見つけたので、これを取り組みました。恥ずかしながら、初めて英語のチュートリアルを読み切りました。チュートリアルを読み切ったと行ってもStepがたったの5しかなく、GitHub Pageの初心者向けの資料でした。しかしながら、今までvimのチュートリアルにせよ、Golangのチュートリアルにせよ、英語のチュートリアルは何度も挫折してきたので、少し前進した気がします。 また、Jekyllを利用した簡易的なWebサイトを構築しました。Webサイトのタグの整理、プロフィールの作成等を進めました。つまずいた点としては、timezoneがUTCに設定されており、日本時刻で記事を投稿すると、まだその時刻になっておらず、予約投稿となり、Webサイト上に表示されないという仕様があるとういことです。長い間、なぜ投稿したはずの記事が表示されないのか考えてしまいました。 有用なサイト Webサイトの背景画像 9/22 6月初めから進めていた、C言語でCコンパイラを自作するプロジェクトでは、Compiler Bookというサイトを基に開発を進めていました。今日ようやく、Compiler Bookの全てのステップを終えました!(リポジトリ->GitHub)ここまでセキュリティ・キャンプの講師やチュータに支えられながら、進んできました。確実に技術力が上がったことを実感しています!本当に感謝しかありません!ここで止まらず、セルフホストまで目指して頑張りたいと思っています。セルフホストまで終えることができたら、だいぶ遅いですが、セキュリティ・キャンプの参加記と課題を公開しようと思います(現在は公開できる状態ではない)。 話は変わり、最近は未来のことを考えすぎて、今やるべきことがあやふやになりつつあると感じています。そこでここで1つ直近の目標を記します 10月8日に受験する英検準2級の一次試験を合格すること! 10月10日にある石川高専のデジタル人材リテラシーという授業の試験を合格する! 10月15日までにCコンパイラのセルフホストを実現させる! 9/23 3日前に、川で見知らぬおじさんから弟がモクズガニをもらってきました。下処理のため、水を変えながら土抜きをしました。そして今日、茹でて食べました。私達が普段食べる動物性の食べ物は既に処理されています。(殺され、食べれる部分だけパック詰めされている) そのため、実際に他の生命の命を奪って、人間が食べているという実感を得る機会が少ないと思います。今回、生きているモクズガニを氷につけ、仮死状態にし、歯ブラシで洗い、茹でました。さっきまで生きていた生物が、体の中に摂取された時、人間は他の生命を犠牲の基成り立っているのだなあと改めて思いました。味はとても濃く、美味しかったです!

2023/09/24 · KashiuchiSotaro

2023/09/17 日記

9/16、勉強会のリハーサルを実施しました。同じ学校の2人の学生に協力してもらい実施しました。勉強会の内容は簡単にまとめると、共同開発を行えるような環境を構築することを目的としています。イメージとしては、何かのコンテストにチームで参加することになり、長期休みを利用して開発を進めることになった。そのため自分でローカルの開発環境を構築し、ソースコードなどを共有する方法などが必要になる。それらを学ぶことができる講座という感じです。詳細はリポジトリへ。 やはりGit, GitHubを説明するのが難しかったです。2人の学生は多くのフィードバックをくれ、とても参考になりました。改善していきたいです。

2023/09/17 · KashiuchiSotaro