4/30と5/1の学習記録


Linux
・仕組みや考え方
・コマンドを動かしながら修得

LinuxはOSの一種で、コンピュータを動かすための基本ソフト

Linuxはどこで使われているか?
・サーバー
・組み込み
・デスクトップ

なぜLinuxをまなぶのか?
・Linuxは枯れている技術であり、何年たっても使える技能を得ることができる
・幅広い場所(サーバー用、組み込器用)で使われており、そういった場所でマシンを操作するときに必要

・Linuxの技術は長い時間をかけて多くのゆーざーに検証された結果、大きく変更する必要がなくなっている
・一度修得すれば何年立ってもの使える

Linuxディストリビューションって何?
・ディストリビューションはカーネルに色々なソフトウェアを組み合わせて使いやすくしたもの。
・カーネルはOSの中核となるソフトウェア
・ディストリビューションには1000種類以上有り、独自のコミュニティが開発している。
・今の主流はRed Hat系とDebian系

シェルって何?
・LinuxのCLIを提供するソフトウェア。ユーザーとLinuxカーネルの仲介役(カーネルのインターフェース)をしている
・CLIとは−キーボードからコマンドを入力し、文字列として結果を出力するインターフェース
ユーザー (コマンドを入力) → シェル (コマンドを解釈して伝える) → LInuxカーネル
ユーザー (コマンド結果を表示) ← シェル (コマンド実行) ← LInuxカーネル
・ターミナルとシェルは別物なので注意。
・ターミナルは入出力画面を提供するソフトウェア。
・シェルはコマンドを解釈するソフトウェア。
・ターミナルのなかでシェルが動いている。

プロンプト$%ー「コマンドにゅうりょくを待っている、からコマンド入力してね」の記号

シェルの種類
sh
・最も古いシェル
・機能が少ない
bash
・shを基本としての機能を拡張したシェル
・Linux環境でデフォルトのログインシェル
zsh
・bashの機能を取り込み、独自の拡張も追加
・機能の豊富なシェル

カーネルとシェルがわかれていたり、シェルとターミナルがわかれているように、Linuxは「1つのプログラムには1つのことをうまくやらせる」「いろいろな機能をできるだけ細かく切り分けて作る」という設計思想がある

Linux環境を用意する
コンピュータ上に仮想化マシンを構築できるVirtualBoxを利用して、学習用のLinux環境を用意する
仮想化マシンを利用するメリット
→ゲストOSのsign inやコピーが楽、学習していて誤って環境を壊してもすぐにOS再構築できること

ディレクトリごとに役割がある
主要なディレクトリの役割
/bin 
・一般ユーザー及び管理ユーザーの両方が使用するコマンドの実行ファイルを格納
・特に、Linuxの動作に最低限必要な需要度の高いコマンドの実行ファイルを格納

/dev
・デバイスファイル(ハードウェアをふぁいるとして扱えるようにしたファイル)を格納

/etc
・設定ファイルを格納
・Linuxで動作するアプリケーションの設定ファイルや、Linux自体の設定に関わるファイルが置かれている

/home
・ホームディレクトリ(Linuxのユーザーごとに割り当てられる個人用ディレクトリ)が配置される
・ユーザーはホームディレクトリ内に自由にファイルやディレクトリを作成できる

/sbin
・管理者ユーザー向けのコマンドの実行ファイルを格納

/tmp
・一時的なファイルを格納
・アプリケーションの実行中に結果を一時的にファイルとして保存する場合に使用

/usr
・各種アプリケーションと、それに付随するファイルを格納

/var
・変化するデータを格納
・アプリケーションを動作する上で作成されたログなどを格納

ルートディレクトリ 「/」ディレクトリ 一番上の階層 /で指定
ホームディレクトリ 「/home/ユーザ名」ディレクトリ  cdで指定
カレントディレクトリ 現在自分がいるディレクトリ   .
親ディレクトリ    ひとつ上のディレクトリ    ..


cd [オプション] [ディレクトリ]
change directory略

便利なパス名展開−パス名 展開を使うと複数のファイルを一度にしていできる
* 任意の文字列
? 任意の一文字


SQL

データベースとは?
大量の情報を保存し、コンピュータから効率よくアクセスできるように加工したデータの集まり

システム開発のプロセス(流れ)
1,要件定義(何を作るか?)
2,設計(どう作るか?)  講座のテーマ
3,開発(実装)
4,テスト(期待道理に動くか?)

システム開発の設計のプロセルの内訳
・データベース設計(データの保持について決める)この講座のテーマ
・アプリケーション設計(提供機能を決める)
・インターフェース設計(試用画面などを決める)
・など

データベース設計とは
・データベースに保持するデータに関する設計
・システムの拡張性やパフォーマンスに多大な影響を与える
・システム開発において極めて重要なプロセス

データベースの種類
・リレーショナルデータベース(主流/一般的) この講座で学ぶ
・オブジェクト指向データベース
・キー/バリュー型データストア
DBの種類ごとにデータベースの設計について学ぶ

3層スキーマ − データベース設計には以下の3層構造をもたせる
・外部スキーマ(ユーザーからみたDB,ビュー)
・概念スキーマ(開発者からみたDB,デーブル)
・内部スキーマ(DBMSから見たDB,データの物理的配置)

3層スキーマを採用するメリット
・変更に対する柔軟性(データ独立性)を得られる

概念スキーマがないとどうなるのか?
・外部スキーマの変更似合わせて内部スキーマも変更が必要になる
・概念スキーマは、それぞれの変更差分を吸収して、外部スキーマの変更は外部スキーマのみの変更に、内部スキーマの変更は内部スキーマのみの変更にする役割になる

リレーショナル・データベースの設計の流れ
1、論理設計(概念スキーマの設計)
 ・データを管理するためのデータモデルの設計
2、物理設計(内部スキーマの設計)
 ・DDLによる実装やストレージの構成などの設計 ーDDL(データベース言語)

論理設計のステップ −4ステップからなる
1,エンティティ抽出
 どんなデータ管理するエンティティ(テーブル)が必要化を明確にする
2、エンティティの定義
 エンティティ(テーブル)ごとにどんな属性(カラム)が必要かを明確にする
3、正規化
 テーブルを分割することでデータの冗長性(無駄・重複)を無くす
(4,ER図の作成)
エンティティ(テーブル)間の関係を視覚的に分かりやすく作図する

エンティティ抽出・定義

エンティティとは?
・システムにおいて管理する必要があるデータのこと
・エンティティは日本語で「実態」という意味だが、システムにおいて管理する必要があるデータのことをエンティティと考える
・具体的には、顧客・社員・店舗のような物理的実体を伴うもの、あれば、注文・予約というような概念としてしか存在しないものもある
・リレーショナル・データベースの場合、テーブルの名前になるものと言う理解でもよい

エンティティ(システムにおいて管理する必要があるデータの集まり)の抽出
・実現したいシステムでどんなエンティティを管理する必要があるか?を洗い出すプロセス
実現死体システムが果たす機能の一連の流れを踏まえて抽出していく、どんなシステムを作るか?にかなり依存するので要件定義と重なるプロセスである


エンティティ(システムにおいて管理する必要があるデータの集まり)の定義
・各エンティティがどのような属性(データ)を保持するか決めるプロセス
・リレーショナル・データベースではテーブルと言う形でエンティティを保持するが、各テーブルがどのような「列」を持つかを定義するプロセスとも言える

特に重要なのが、「キー(key)という列を決定すること
エンティティ→テーブル、属性(データ)→カラムとして表現されている

テーブルとはなにか
・テーブルとは「ある」共通点を持ったレコードの集まりのこと
・テーブル名はすべて複数名/複数名刺でかけること

テーブルの構成要素
1、行(レコード)と列(カラム)
2、キー
 ・テーブルになくてはならないものの一つが「キー」
キーとは、ある特定のデータを引き出すための鍵となる列
キーにはいくつは種類があるが、特に重要なものとして主キーと外部キーがある
・主キー(プライマリーキー[primary key])
その値を指定すれば必ず一行のレコードを特定できるような列(の組み合わせ)
テーブルに置いて必ず一つ存在する必要があり、かつ一つしか存在しない
主キーの定義から「テーブルに重複業は存在出来ない」というルールも導かれる
→重複した行があれば主キーによってレコードを一意に定めることが出来ない
複数列を組み合わせなければ主キーを作れないこともある

・外部キー(制約を課す
2つのテーブル間の列同士の関連性を設定するもの
メリット、存在しないデータを入れるリスクを無くしてくれること
→制約を課している(非参照整合性制約)

3,制約
非参照合成制約のように、デーブルには制約をつける事ができる
他の大法的な制約としてNOT NULL制約がある

NOT NULL制約とは?
・NULLを禁止する制約
・NULLとは、「フィールドにデータが入っていない状態のこと」
・NULLはSQL上で扱う際に様々な問題を引き起こすので、可能な限りNULLを入れる必要のないデータベース設計にする必要がある

gitはバージョン管理システム

開発の流れ
リポジトリー:変更記録を記録する場所
commit;個人リポジトリーに変更履歴を記録する
push;共有リポジトリーに変更を共有
pull;共有リポジロリーから情報取得する

GitHubとは
Gitリポジトリ(コード)のホスティングサービスのこと
ソーシャルコーディングの場
プルリクエストによるコラボレーション
非公開開発は有料

cdコマンド
ディレクトリを移動します。
lsコマンド
ディレクトリの内容を表示します。
ls -a コマンドで、隠しファイルを含めたディレクトリ全内容を表示します。
mkdirコマンド
ディレクトリを新規作成します。
rmコマンド
ファイルを削除します。
cpコマンド
ファイルをコピーします。
mvコマンド
ファイルの移動とファイル名の変更を行います。


git init ;リポジトリを新規作成する。(init-initializeの略)

基本的なワークフロー
①ファイルの変更をステージングエリアへ追加する 
git add   ステージングエリアへ追加
②ローカルリポジトリにコミットする
  git commit ローカルリポジトリに記録
③リモートリポジトリにプッシュする
  git push

わかりやすいコミットメッセ=地を書こう
他のメンバーが「何をどうして変更したのか」わかるようにメッセージをつけよう
1行目;変更内容の要約
2行目;空行
3行目;変更した理由

現在の状況を確認しよう

git stutusコマンドでGitリポジトリの状況を表示する
現在の状況ー変更の差分

変更履歴を確認しよう
git logコマンドでリポジトリにコミットされたログを確認する。
git log —oneline 一行で表示する
git log -n 数   表示するlog数を指定するコマンド

変更差分を確認
git diff ファイルの変更差分を表示する(ローカルとステージング領域の差分)
git diff HAED (ステージング領域最新のコミットの差分を表示する)

リモートリポジトリ=== Git hub
git remote add  ローカルリポジトリをリモートリポジトリに登録できる。
git push origin ブランチ名  ローカルリポジトリの内容をリモートリポジトリへ送信
origin リモートリポジトリに登録するときに使う

管理しないファイルをGitの管理から外す
.gitignoreファイルに指定することで、ファイルをGitの管理から外す事ができる
管理しないファイルの種類
・自動生成されるファイル
・パスワードが記載されているファイル
.gitignoreファイルの書きかた
#から始まる行はコメント
ファイルの指定  index.html
ルートディレクトリを指定 /root.html
ディレクトリ以下を除外  dir/

コミットしてしまったファイルを管理から外す方法
・git rm コマンドで、コミットしたファイルをGitの管理から削除できる
git rm ファイル名   ファイルも一緒にGitの管理から削除
git rm -r ディレクトリ名 ディレクトリも一緒にGitの管理から削除
git rm —cached フィル名  ファイルのは残しGitの管理から削除


この記事が気に入ったらサポートをしてみませんか?