その身にシステム

大阪在住・新人エンジニアのメモランダム 【俺のGitHub】https://github.com/taka-gh

Gitを触ってみる

最近「Git触ったことないの、スキルとしてヤバない?」と感じた。

Gitリポジトリのサービスは色々あるが、
Webベースで有名なGitHubを触ってみる。

GitHubには "Hello World チュートリアル" というものがある。
下記、日本語でまとめられている。最高。
tmnj.hatenablog.com

一通り実施した。

それでWebベースで操作できるのは分かった。
実際にはローカル作業との紐づけも必要なので、そちらも見る。
employment.en-japan.com

詳細は先人のページを見れば十分なので、
思考の整理メモを記載する。

clone
$ git clone 【リポジトリのURL】

リモートリポジトリ(GitHubなど)をローカルにコピー

branch
$ git branch 【作業用の分岐先】

ローカル作業用に自分用の領域(?)を作る。
「マスタ」ブランチは最終的な統合先なので、ここで直接作業すると危険。

add
$ git add 【新規ファイル】

リポジトリに無かったファイルは「アド」して、「リポジトリに含めますよ~」と認識させる。

commit
$ git commit

変更内容を「ローカル上」で反映。
オプションでコミット対象を変えたりできる。
ひとまず「 -a 」で全部反映。

push
$ git push 【リモートサーバ名】 【ブランチ名】

リモートサーバのブランチに反映させる。(ここでようやくローカル上からネットワーク上へ!!)
リモートサーバ名は「origin」(短縮名)がよく使われるらしい。

「originてなんやねん!!」となったので参考にした。
dqn.sakusakutto.jp

pull request

マスタブランチへの反映依頼。
GitHub上で操作。

fgetsを用いた数値入力受付

C における入力受付について、fgets を用いたアルゴリズムを考える。
目的は、scanf との違いを確認すること。

以下に数値入力受付の関数(getInputNum)のソースを記載する。
インクルードファイルは省略。
最大桁数は3桁とする。(配列の要素数で調整できる。)

int getInputNum() {
	int i = 0;
	int isNum = 0;
	char recv[4] = { 0 };  // 3文字+null文字を格納
	char tmp[4] = { 0 };  // バッファオーバー処理用

        // 数値以外の入力があればやり直し
	do {
		fgets(recv, sizeof(recv), stdin);

        // 改行文字がなければストリーム上に残っているはずなので、処理
		if (strchr(recv, '\n') == NULL) {
			while (strchr(fgets(tmp, sizeof(tmp), stdin), '\n') == NULL) {
			}
		}

        // 数値かどうかの判定
		for (i = 0; i < strlen(recv) - 1; i++) {
			isNum = isdigit(recv[i]);
			if (isNum == FALSE) {
				break;
			}
		}
	} while (isNum == FALSE);
	
    // char を int に変換
	return atoi(recv);
}

観察してみると、0~9の数字をそれぞれ1文字ずつ char 型文字として扱っている。
scanf でいきなり int 型変数に格納するよりは、かなり安全だな。オーバーフロー対策になる。
ただし fgets は改行文字も1文字とみなして格納するから、そのあたりの調整は苦労する。

ベーシックな電卓

数式パーサーをある程度理解したので、
それを用いて電卓を作った。

GIFも貼れるのかな?
f:id:taka_system:20170905233009g:plain

機能としては
 ・四則演算
 ・テキスト入力も対応
といった感じ。
今回はパーサーの感覚を知りたかったのでひとまず完成ということで。
時間があれば複雑な計算式も可能なものを作りたい。

今後は資格の勉強も兼ねてしばらくC言語をやる。予定。

数式を解析したい

仕事で構文解析の勉強が必要になった。
今作っている電卓でついでに学んでしまおう。

下記サイトが参考になりそうなので、貼っておく。
qiita.com

木構造は図で表すと簡単だが、コードになると難しいと思った。

電卓で練習

プログラム勉強するなら何かソフト作るのが良い。
というわけで電卓を作る。

今日は外形だけ。
f:id:taka_system:20170829231402p:plain
WPFアプリケーションでも良いのだが、
仕事でWindowsフォームを使うのでそちらで。

C#を触った

仕事でC#の知識が必要になったので、簡単な予習も兼ねて家でも触ってみた。
ひとまずHelloWorld的なものが欲しいので、
クリックしたらメッセージが出るという簡単なプログラムを作った。

f:id:taka_system:20170823233116p:plain

WPFアプリケーションとして作ったので、XAMLを使った。
これはHTMLに雰囲気が似ているから、親しみやすい。

シンタックスハイライトという機能

記事の一つとして、コーディング練習に使ったコードを載せていきたい。
記載環境確認として、シンタックスハイライトを試す。
使用言語はCとしよう。

#include <stdio.h>

int main() {
    printf("Hello,World!!\n");
    
    return 0;
}

これは便利だ。