開発環境(Git, GitHub)をUSBに入れて持ち運ぶ

概要 USBで開発環境を一式移動させることができれば便利だなと思い、まずはGit、GitHubをUSBで持ち運べるようにしました。環境はWindowsを想定しています。 この記事では、以下の項目を達成します。 USBにインストールしたブラウザからGitHubのサイトのログイン状態を維持 GitからGitHubへプッシュやプルする時に必要な認証情報をUSBに保持 GitHub CLI(ghコマンド)を使用可能 Portable Gitのインストール まずはポータブル版のGitをダウンロードインストールします。 公式ホームページからPortable版をダウンロードする USBの直下にインストールする 正しくインストールされたか確認する。USB直下にある、git-bash.exeをダブルクリックし、そのシェルにgit --versionと入力し、バージョンが表示されればよい。 Gitの設定 次にGitの初期設定を行います。 /home/<username>ディレクトリを作成する。/home/<username/の部分は適宜読み替えてもらって大丈夫です 下のように、/etc/profileの末尾にHOME=/home/<username>を追記する。こうすることで~/.config/ディレクトリに設定ファイルを保存するソフトであっても、設定ファルごとUSBに入れて持ち運ぶことができます。 ~~~ 省略 ~~~ unset MAYBE_FIRST_START HOME=/home/<username>/ gitの初期設定を行う git config --global user.name "<name>":ユーザ名を設定する git config --global user.email "<email>":Eメールを設定する git config --global safe.directory '*':信頼するディレクトリを指定。USB内のディレクトリはデフォルトでは信頼されていないディレクトリとして扱われる。*とするとすべてのディレクトリを信用するとこになるので、適宜ディレクトリを指定するほうがよいかと思う 初期設定が適切に行われているか、確認する。~/.gitconfigファイルの中に先程設定した3項目が存在することを確認する。 $ cat .gitconfig [user] name = KashiuchiSotaro email = XXXXX@gmail.com [safe] directory = * Browserのインストール ブラウザをダウンロード、インストールします。ブラウザは主にGitHubのサイトを閲覧するために使用することを想定しています。そのため、GitHubへ毎回ログインしなくて良いように、USB内にcookieや認証情報が残っていてほしい。それらにデフォルトで対応しているブラウザはFireFoxしか確認できませんでした。(GoogleChrome, Operaも調べてみたのですが、デフォルトではセッション状態をパソコンをまたいで保持できませんでした。)そのため今回はFireFoxのポータブル版をインストールします。 PortableAppsからダウンロードする USB配下の好きなところにインストールする インストールしたFireFoxのブラウザを使用し、GitHubのアカウントにログインする GitHub CLIのインストール&コピー GitHub CLIの公式ホームページに行き、Windowsのコマンドプロンプトでwinget install --id GitHub.cliを実行する C:/ProgramFile/Github CLI/gh.exeをUSBの/usr/bin/ディレクトリ配下にコピーする GitHub CLIの設定 GitHub CLIの設定ファイルを作成する ...

2023/11/4 · 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

英検準2級への挑戦

経緯 英語の必要性は高専1年生の夏休み頃から感じました。多くの情報は英語で得ることができます。英語で検索できるのとできないのでは、天と地の差があるといってもいいのではないでしょうか?しかし、私は英語に非常に苦手意識があります。中学3年生の時にギリギリ英検3級を受かったレベルです。 そこで高専2年生になったらTOEICを受けようと考えていました。高専1年生の3月、いざTOEICの過去問を解いてみると、ほとんどわかりませんでした。そこでまずは単語力をつけようと、「TOEIC L&R TEST 出る単特急 銀のフレーズ」をはじめました。高専2年の5月、数百問覚えたところで、もう一度TOEICの過去問を解いてみましたが、ほとんど成長がありませんでした。更にリスニングはほぼ全く聞き取ることができませんでした。自分にはTOEICのレベルは高すぎると自覚しました。 そこで高専2年の6月、英検準2級を受験するという方針に変更しました。というのが英検準2級を受験するまでの経緯です。英検準2級なんて低い級を受けるのかと言われるかもしれませんが、今の自分にちょうどよい級だと考えています。英語が苦手だからといって何もせずに終わるのではなく、諦めるにしても、挑戦してから諦めたい!! 2023/06/XX:勉強開始 まずは語彙力を強化するために、単語帳を進めました。Ankiというアプリを使用して単語を覚えました。その後、過去問をときました。リスニング力がたりなさすぎるため、音読等をがんばりました。 2023/10/08:一次試験当日 雨男の力により、一次試験当日、安定の雨でした。試験終了後の感想として、ライティングがいつもよりできませんでした。ライティングのお題が難しすぎて、日本語でも説明が思いつきませんでした。ライティングの失敗を引きずり、リスニングの初めの10問は集中できませんでした。手応えなしです。。。 一次試験が終わったので、どれぐらい勉強を頑張ったか振り返っておきます。下の写真は、一次試験当日までの単語アプリの使用状況です。期末テスト、セキュリティ・キャンプがある期間は全然勉強していませんが、それ以外は結構継続できているようです。よく頑張った! 単語は比較的継続できていましたが、英検全体の勉強は思うように進みませんでした。下の写真は、英検の過去問の点数をグラフ化したものです。ライティングはChatGPTに採点してもらいました。グラフを見てわかるとおり、8月17日から9月17日までの一ヶ月間でほぼ点数が上がっていません。9月17日以降の半月で頑張って合格点を超えるぐらいまで持ってきています。つまり実質的に英検の勉強(単語以外の音読、速読等の勉強)は最後の半月で追い込んだことになります。もう少し余裕を持ってコツコツしたいと感じました。 2023/10/23:一次試験合格発表 いよいよ合格発表の日です。恐る恐る結果を見ると、「合格」の文字があるではありませんか!!嬉しい!! 合格基準が1322点の問題で、1345点で合格していました。いやギリギリすぎる(笑)。もう少しいい点で合格したかったです。予想通り、ライティング問題の点数が普段よりは低かったです。下の写真は試験の結果も含めた点数の推移のグラフです。 二次試験合格に向けて頑張りたいです。 2023/11/12:二次試験当日 一次試験の合格発表から3週間ほどが経ち、ついに二次試験の日がやってきました。 会場には一番に到着し、面接も一番はじめに行いました。問1,2,3はそこそこできたと思います。しかし問4と問5の自分の意見を述べる問題でだいぶテンパりました。なんとか設問を聞き取ることができたのですが、答える内容が日本語でも思いつきませんでした。挙句の果、文法がメチャクチャな状態で回答してしまいました… やらかしてしまいました… 二次試験が終わったので、勉強してきた内容を振り返ってみます。自分で面接の練習を10回分行い、英語の先生にも協力してもらい3回分、計13回分練習しました。英語の聞き取りでは何回か聞き直すことで、聞き取れるレベルでした。自分の意見を述べる部分では、語彙力の少なさと、知ってる語彙でも使えない語彙(瞬時に出てこない英語)が多いことに気が付きました。ひたすら使える語句を増やすトレーニングをしました。後半はなかなか上達せず、モチベーションを維持するのが大変でした。 2023/11/21:二次試験合格発表 待ちに待った、合格発表の時がやってきました。 結果は「合格」でした。600点中424点とギリギリでしたが、なんとか合格することができました!! 英検準2級合格で止まるのではなく、もっともっと勉強していきたいです!

2023/10/23 · 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

Gitで過去の日時にコミットを作成する

実施したいことと、結論 実施したいことは、記事のタイトルにあるように、Gitで過去の日時にコミットを作成することです。結論を言うと以下のように、日時を変更し、コミットを行うことで、簡単にコミット日時を変更することができます。 sudo date -s "YYYY/MM/DD HH/MM/SS" && git commit -m "messege" 使用例 gitにバージョン管理を移行 gitを使う前まではバージョンを管理するために、ディレクトリをまるまるコピーしディレクトリ名を日付にしたりしていた人は多いと思います。具体的には以下のディレクトリ構成などをさしています。 ./workspace/... ./backup/2023-10-09/... ./backup/2023-10-10/... ./backup/2023-10-11_ver1/... ./backup/2023-10-11_ver2/... このようなバージョンの管理から、gitを使用したバージョン管理に移行する方法を紹介します。完全に我流で、もっと正しいやり方があるかも知れませんが、ご了承ください。 結論を述べると以下のような手順でできます。 作業用ディレクトリを作成し、git initを実行 作業用ディレクトリに、バージョン管理に追加したいディレクトリやファイルをコピーする。バージョン管理したいディレクトリやファイルは日付が若い順から行う。 git addで先程コピーしてきたディレクトリやファイルをgitのインデックスに追加する sudo date -s "YYYY/MM/DD HH/MM/SS" && git commit -m "messege"で任意の日時を指定し、コミットを行う 2の作業に戻り、次に管理したいディレクトリやファイルを作業用ディレクトリにコピーする その他の用途 コミットを行うのを忘れており、何日も立ってしまった時 過去のコミットからブランチを作成し、そのブランチで、過去の日時にコミットしたい時 などなどまだまだたくさん応用ができると思います。 注意点 コミット間の前後が時系列順になっていないようなものも簡単に作れてしまうので、注意です。 操作を謝ると、以下の写真のように、OctoberからSeptemberに戻り、またOctoberに戻るようなコミットログになってしまいます。

2023/10/11 · 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年度夏休み 活動まとめ

夏休みを振り返り 夏休みが終わり一週間が経ちました。ここで今年の夏休みを振り返ってみようと思います。夏休み前に立てた目標と、その目標に対する達成度合いをズラッと書き記して行きたいと思います。 以下の目標と目標に対する達成度合いを見てみると、結構未達成のものが多く感じられます。特に、Cコンパイラのセルフホストが達成できていないのは残念です。しかし、細かな技術面は向上したと思います。今後も目標を持って頑張りたいです! 目標と目標達成度合い イベント関連 セキュリティ・キャンプ全国大会 セキュリティ・キャンプ全国大会参加 達成日:2023/10/06 ~ 2023/10/12 非常に良い経験だった。講師・チュータ・受講生など様々な方と関われて良かった。 自作Cコンパイラのセルフホスト 達成度:70% 10月15日に達成を目指し、継続的に挑戦中! セキュリティキャンプの課題公開 達成度:90% 課題を公開するだけなので、準備はほとんど整っているが、セルフホストを達成してから公開したいという思いがあるため、保留中 セキュリティキャンプの参加記作 達成度:60% セルフホストを達成してから公開したいという思いがあるため、保留中 エル会実施・参加 達成日:2023/08/18 勉強会のリハーサルの実施 達成日:2023/09/16 インターンシップ参加 達成日:2023/09/04 ~ 2023/09/14 単位互換制度 in 石川高専 受講 達成日:2023/08/29 ~ 2023/09/01 K-SECサイバーセキュリティ演習参加 達成日:2023/08/30, 31 英語関連 英検準2級合格 達成度:70% 10/08に英検を受験しました。結果待ちです。合格している可能性は非常に低いと思います… プログラムのコメントを英語にする 達成度:0% 全然していない。まずはOSSのリポジトリなどをみて、どのような場面でどのような英語を使っているか学ぶ必要性があると思った。 技術関連 OSをUbuntuに乗り換え トラブルがほとんどなく、乗り換えることに成功 開発環境を整える手間が省けるはずっ Virtual BoxにWindowsをインストール Ubuntuに乗り換える前に使用していたWindowsのライセンスをそのまま移行できた EditorをNeoVimに変更 Vimに乗り換えるのは、実は3度目の挑戦.. ついに成功した! LSPを使用できるようにし、C言語の複数ファイルの補完等にも対応さた Git, GitHubの勉強 ブランチ、プルリクエスト等の概念が理解できた 実際の開発にも取り入れられるレベルまで達成 GitPageでブログ作成 現在のこのブログのこと Golangの勉強 達成度:40% 基本的な文法等は理解できた 実践的なプログラムを書く技術はまだまだ足りていない 今後何か1つアプリを作成したい OSSのリポジトリへ参加 達成度:0% 今後に期待したい! その他 WROのプロジェクトを公開 今後行いたいこと C#の勉強 Golangの勉強 jekyllの勉強 自作キーボードの作成 電子工作(ハードウェア面) Terminal Mulitの練習ソフト作成 木構造を表示するプログラム AsmCodeFormatter作成 LSPサーバの作成 新しい部活の作成 英会話

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