Kanisaruの365日

学習より創造である。 創造こそ生の本質なのだ。

ひとりで使うgit

きっかけ

  • gitが難しい理由がはっきりしたから。

  • メンテナーの濱野氏による解説を読みたかった。

ゴール

  • git add,git commit,git diff,git status,git showコマンドを理解する。

目次

リポジトリの初期化

gitを始める。

$ git init

最初のコミット

すべてのファイルをステージに上げる

$ git add . 
$ git commit -m "first commit"

変更の記録する

👉 最初の変更をしたあとの場合を考える。

変更箇所の確認をする。

$ git diff 

コミット直前に最終確認をする。

$ git diff HEAD #まとめてこれまでの差分の表示をする
  • HEAD : 現時点で最新のコミットのこと

どのファイルがつぎのコミットに含まれているのか確認する

$ git status

👉 このとき不要なバックアップファイルが見つかれば.gitignoreファイルに記述する。

一括コミットする場合(いろいろな流派あり)

$ git commit -a "Func 1 を仕上げました"   

unified形式とは

  • --- で始まる行は元のファイル
  • +++ で始まる行は比較するファイルの名前とタイムスタンプ1が出力される
  • @@ で始まる行は内容が異なる行を含むテキストブロックの範囲 ブロックは行頭の文字によって差分がわかる
行頭の文字 説明 patchコマンドの動作
+ 元ファイルにこの内容を追加したものが比較ファイルとなる 追加
- 元ファイルからこの内容を削除したものが比較ファイルとなる 削除
半角スペース 修正箇所の周辺の内容 変更なし

インデックスの概念を理解するといいらしい

  • インデックス : リクエストされた状態をgitが記録する仕組みのこと
  • gitは次の3つの状態をやり取りするプログラムである
    • HEADの状態
    • インデックスに記録した状態
    • ワークツリーの状態

変更履歴を見る

コレまでを振り返る。

$ git log

部分変更を記録する

これまでのハンクを次のコミットに含めるか否か迷った場合

$ git add -p

その結果、HEADとインデックスを比べたい場合

$ git diff --cashed

その結果からコミットの決定をする場合

$ git commit -v

残りの変更をコミットする場合

$ git commit -a -m "hoge message"

ゴミファイルをコミットから外す場合

$ git reset fuga_fail

参考文献

www.amazon.co.jp

www.youtube.com

gitのメールアドレス設定について

きっかけ

個人開発とはいえ、公開したくないメールアドレスを使いたくありませんでした。

知れ渡る可能性があるのは、コミットに設定しているメールアドレスですが、とはいえ知らずにアカウントのメールと同じにしている方は多いのではないでしょうか?

新しいアドレスを取得せずにこの問題を回避できるので、紹介したいと思います。

git logで確認する

git log
しっかり、GitのコミットのAuthor情報として埋め込まれます。 クローラーでメールアドレスを収集するなんてことが容易にできてしまいますね。

noreply のメールアドレスで回避する

回避のために GitHub が提供している noreply のメールアドレスを使用します。

Web上で、アカウント設定 → mail → Keep my email address private のチェックをいれます。

keep my email address

noreplyメールアドレスの確認方法

【ID】+【ユーザー名】部分は画面右上のアイコンメニュー → Settings → サイドメニューのEmails、から確認できます。

【ID】+【ユーザー名】@users.noreply.github.com

次に、Gitクライアントで、コミットのメールアドレスにnoreplyのメールアドレスを設定します。

$ git config --global --add user.email メールアドレス

これで、次回から安心してコミットできるようになりました❗

参考文献

kamatimaru.hatenablog.com

ryoichi0102.hatenablog.com

Rustでプログラミングコンテストに挑む

はじめに

Rustが素晴らしいので、腕試しにAtCoderに参加する方も多いのではないでしょうか?

いくつかのお作法をまとめてみました。


開発環境
macOS 12.5 Monterey
Apple M1 Pro
メモリ 16GB


Rustでの参加方法

こちらの、公式ホームページで仕様を確認しましょう。 特に、使用できるクレートを確認しておきましょう。 事前コンパイルも大事です。

Rustバージョン指定

Rust本体のバージョン指定はCargo.tomlと同じフォルダで次のようにします。

$ cd プロジェクトのフォルダ
$ echo "1.42.0" > rust-toolchain
$ rustc -V
rustc 1.42.0 (b8cedc004 2020-03-09)

input!マクロで入力の手間を省く

Rustの入力処理は面倒ですが、これには2020年に外部クレートとして追加されたinput!マクロを使います。

input!{
       n: i32,
       m: i32,
      a: [i32; n],
}

cargo-atcoder ツールで直接提出

cargo-atcoderは@tanakh さんによるRust での AtCoder ライフを豊かにするためのツールです。

このツールによりローカルで書いたコードをコマンドラインから直接提出できます。 また、testサブコマンドで提出コードをチェックをすることもできます。

$ cargo atcoder new abc123
$ cargo atcoder test a

提出方法は次のようにします。

$cargo at coder submit a
$cargo atcoder status

その他 参考等

Rustで競技プログラミングの入力をスッキリ記述するマクロ - Qiita

cargo-atcoder を使って Rust での AtCoder ライフを超快適にする - Qiita

zenn.devの使い方まとめ

きっかけ

  • 自分用のアウトプットをしたい
  • そろそろ得られた知識をマネタイズしたいなぁ
  • GitHubdeで管理が楽な上に宣伝効果もあるよね〜
  • でもどうやってZennで公開するの?

等などのブログ的発信はもはや必須なので、ライトユーザー向けに注意点を簡単にまとめてみました。 細かい仕様は公式のリンクをたどってください。

最初に知っておくべきこと

① ローカルのエディタで投稿できる

記事作成の手段は次の2パターンがあります。

ここは、好きなエディタを使いたいのでCLIのインストールの一択でしょう。

CLIのインストールにnpmが必須

Zennのコンテンツを管理したいディレクトリで、以下のコマンドを実行します。

$ npm init --yes # プロジェクトをデフォルト設定で初期化
$ npm install zenn-cli # zenn-cliを導入

これでディレクトリにCLIがインストールされます。

次に、Zenn用のセットアップを、以下のnpxコマンドで実行します。

$ npx zenn init

README.mdや.gitignoreのほか、articlesとbooksという名前のディレクトリが作成されます。この中にmarkdownファイル(◯◯.md)を入れていくことになります。

GitHubリポジトリと連携して公開される

専用のリポジトリを用意してください。好きな名前でOKです。公開設定はPublicでもPrivateでも大丈夫ですが収益化を考えているならPrivateのほうがいいでしょう。(それもあってから2つ登録できるようです。)

作成後は、次のようにZenn側のデプロイ管理を開いて「Only select repositories」にチェックを入れて、連携するリポジトリを選ぶこと

リポジトリを選択する画面(Zenn.devより)

公開までに知っておくべきこと

① ファイルの形式

1記事1ファイルの原則のもとコマンドでファイルを作成します。

このとき、下記のようにslugオプションをつけてファイル名を指定します。

$ npx zenn new:article --slug what-is-slug
# => articles/what-is-slug.md`が作成される

このslugには注意が必要です。なぜならZenn側の理由から次のような性質があるからです。

  • スラッグはファイル名になる
  • スラッグはユニークでなければならない
  • スラッグは /[-a-z0-9]{12,50}/ のパターンの範囲内でなければならない(半角英数字とハイフンで12〜50字)

従って,スラッグは次のように日付つきにしたほうがよさそうです.

$ npx zenn new:article --slug 2020-09-18-what-is-slug

(参考) Zennの記事をほんの少しだけ楽に作成できるVimコマンド

ファイルの中身ですが、次のYAML設定が入ったMDファイルが作られます。

---
title: "" # 記事のタイトル
emoji: "😸" # アイキャッチとして使われる絵文字(1文字だけ)
type: "tech" # tech: 技術記事 / idea: アイデア記事
topics: [] # タグ。["markdown", "rust", "aws"]のように指定する
published: true # 公開設定(falseにすると下書き)
---
ここから本文を書く

② 独自のmarkdwon記法(抜粋)

ZennのMarkdown記法一覧

  • diff形式とKaTexの数式表示が使える。

  • :::message:::message alertの独自形式がある。

  • :::details タイトルで文章をトグルすることができる。

  • GitHub上のソースコードファイルを埋め込める等

独自形式はエディター附属のプレビューでは確認できません。

次のコマンドで記事をプレビューしながら編集します👍

$ npx zenn preview

③ 記事の公開方法

ファイル内のキーをpublished:tureにすることで、連携中のGitHubリポジトリにpushすると自動的に公開されます。

最後に

以上で公開できるようになるはずです。 他にも様々な工夫を皆さんされていて参考になるページがたくさんあります。 ではよきZennライフを😀

実行をカスタマイズする

きっかけ

VSCodeでは、ターミナルで実行する場合がもどかしいです。次のようでは python を効率的に学習できません🥲

  • 右上の再生ボタン

  • ファイルを右クリック

  • F5でデバッグモード

どれも間違いではありませんが、ホームポジションを崩さずに実行する方法を紹介したいと思います。

拡張機能(Code Runner 編)

拡張機能アイコンをクリックして「Code Runner」をインストールしましょう。

Code Runner

Code Runnerの設定

インストールが終われば、検索結果の左下のアイコンをクリックして「拡張機能を設定を構成する」を選択します。

拡張機能の設定を選ぶ

変更箇所は一箇所だけです。画面に表示された「Run In Terminal」のチェックボックスをONにしましょう。

Run In Terminal

この段階でマウスを使う必要がすでになくなりました。Ctrl + Option + Nを押して確かめてみましょう。

実行結果

再生ボタンを押したときのように、ターミナルに表示されました。

「Code Runner」には、他にもCtrl + Option + Mでコードを停止させたりと便利なショートカットがいくつか用意されています。

キーボードショートカットを設定する

ショートカットを押しやすいキーにしてさらに便利にします。

⌘K + ⌘S でショートカットの変更ダイアログを表示させます(もしくはメニュー → 基本設定 → キーボードショートカット)。

設定項目が多いので検索窓に「実行」と入れて検索させましょう。

キーボードショートカット

「ターミナルでファイルを実行する」が見つかれば左の鉛筆マークをクリックします。

自分はCtrl + rを2回押し にしました。最後にEnterを押せば登録されます。

ではよりよいVscode ライフを〜