GitとGitHubの基本的な使い方
前提
- Gitはインストール済であること
Gitインストール後の最初だけやっておくこと
- Git Bashでユーザー名を登録する
git config --global user.name ユーザー名
- Git Bashでメールアドレスを登録する
git config --global user.email メールアドレス
新規リポジトリを作成するときだけやっておくこと
Git Bashでローカルリポジトリのディレクトリに移動して、以下を実行する
git init
git remote add リモート名 リモートURL
リモート名は、よく使うのは"origin"
リモートURLは、https://github.com/ユーザー名/リポジトリ名.git
コミット
追加、変更を記録する
コミットするファイルをステージに乗せるため、Git Bashで以下を実行する
git add ファイル名
上記のファイル名のところは、ディレクトリ名でも、. (ドット)でもいい。
. (ドット)は、カレントディレクトリ以下の追加、もしくは変更したファイルをステージに乗せることになる。
Visual Studioではコミットする必要のない中間ファイルが多く存在する。それらのファイルをコミット対象外にするには、".gitignore"ファイルを作成しておくといい。 Visual Studioのコマンドプロンプトで、ローカルリポジトリのディレクトリに移動して、以下を実行すると適切な".gitignore"ファイルが作成されるので便利。
dotnet new gitignore
ステージに乗せたファイルを以下を実行してコミットする
git commit -m "コミットコメント"
プッシュ
リモートリポジトリに変更を反映させるため、Git Bashで以下を実行する
git push リモート名 ブランチ名
リモート名は、git remote addで指定した名前。よく使うのは"origin"
ブランチ名は、特にブランチを作っていなければ、"master"。
C#のビルドで単一実行可能ファイルを生成する方法
C#でプログラムを書きビルドしてみると、どんなに単純なプログラムでも、実行可能ファイル(*.exe)単体で実行できる実行可能ファイルを生成することはできない。
しかし調べてみると.NET Core 3.0以降を使用しているなら、単体で実行可能な実行可能ファイルを生成できることがわかった。
方法(Microsoft Visual Studio Community 2019を使用している場合)
- メニューのビルドの"〇〇の発行"をクリック
- ターゲットをフォルダーにして"次へ"をクリック
- 特定のターゲットをフォルダーにして"次へ"をクリック
- フォルダーの場所を指定して、"完了"をクリック
- 対象プロジェクトの Properties/PublishProfilesフォルダ内にFolderProfile.pubxmlがあるので、それをダブルクリックで開く
- PropertyGroupブロック内に、次の2行を挿入する
<PublishSingleFile>true</PublishSingleFile> <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
- メニューのビルドの"〇〇の発行"をクリックして、公開で"発行"をクリック
JavaのBigDecimalの使い方の注意点
BigDecimalは誤差が出ないように計算ができるクラス。
ただオブジェクトの生成には注意が必要。
文字列から生成する場合
BigDecimal value = new BigDecimal("1234.567");
数値から生成する場合
BigDecimal value = BigDecimal.valueOf(1234.567); // 良い例 BigDecimal value = new BigDecimal(1234.567); // 悪い例
BigDecimal#valueOfは、オブジェクトの再利用をしてくれる。
new BigDecimalは、2進数で正確に表現できない数値を指定すると、誤差が含まれたオブジェクトを生成してしまう。
Javaの参照型
Javaには、いわゆる参照渡しは存在しない。
参照型は、C++の参照とは異なる。
Javaの参照型は、参照値の値渡しをしている。JLS - 4.3.1
どちらかというと、C++のポインタに近いと言える。 つまり、値が入っている場所を渡している。 C++の参照は、ある変数の別名であるので、まったくの別物である。
ここでC++の復習
C++の参照は初期化時に、どの変数の参照かが固定される。
int a = 100; int &b = a; // 変数bは変数aの参照で固定
後でこの参照関係(変数bは変数aの参照である)を変えることができない。
後で変えたと思ったものは、初期化時に指定した変数の値を変えることを意味する。
int a = 100; int &b = a; cout << "a := " << a << endl; // a := 100 cout << "b := " << b << endl; // b := 100 b += 5; cout << "a := " << a << endl; // a := 105 cout << "b := " << b << endl; // b := 105 int c = 10; a = c; cout << "a := " << a << endl; // a := 10 cout << "b := " << b << endl; // b := 10
ポインタや参照を使うときは、constを積極的に使うべき。 変更されてもいいものだけconstを外すようにする。
const int* a;
は、ポインタが指す中身が固定。
int* const a;
は、ポインタそのものが固定。
const int &b = a;
は、参照が指す中身が固定。
Markdown記法
手軽に文章構造を明記できる書き方
代表的なものは、以下の通り
- 段落は、1行空ける。
- 強調は、**で囲む。
- 箇条書きは、行頭に- を付ける。
- 番号付きの箇条書きは、行頭に1. を付ける
- リンクは、[]で囲って、リンク先を()内に書く
- 見出しは、行頭に# を付ける。#の数が増えるごとに小見出しになる
- インラインのコードは、` で囲む
- 独立したコードは、``` で囲む。最初の```の直後に言語名を書く
コードの例
System.out.println("Hello World!");
std::cout << "Hello World!" << endl;