--- tags: ICD,ルーキーズ --- # 若手向け技術基礎 ## 計算機基礎 - ノイマン型コンピュータの基礎構造 - 中央処理装置(CPU) - 記憶装置(メモリ) - 外部入出力装置(I/O) - レジスタ - コンピュータの基本動作 http://schweigi.github.io/assembler-simulator/ - メモリにはアドレス(番地)が割り振られる - レジスタはメモリの値を読み書きできる - レジスタは値を格納できる.メモリアドレスも格納できる - スタックポインタはメモリを保持する - レジスタには限りがあるので、一時的に保存しておき、仕事が終わったらもとに戻す(PUSH/POP) - 2進数/16進数/10進数 - コンピュータは基本2進数 - 1Byte=8Bit - 1Byteは0x00~0xFFの範囲を表現できる - 2進数と16進数は親和性が高いが、人間は10進数が好き - 文字コード - ASCIIコード - JIS/EBCDIC/EUC/ShiftJISコード - UTF-8とUnicode - 文字を表現するコードと特別な意味のコードがある - 改行コード - 制御コード - 改行コード - Windows(DOS)はCRLF(0x0D 0x0A) - UNIXはLF(0x0A) - MacはCR(0x0D) - 改行コードに歴史あり(元はタイプライター) - コンパイラとインタプリタ - 最初は16進数でプログラムを書いていた - アセンブラ - コンパイラ - インタプリタ - コンパイラとインタプリタのメリデメ - 構造化プログラミング - ソフトウエア危機 - 大勢でプログラムを書くとカオスになる - グローバル変数地獄/GOTO地獄 - モジュールの誕生(内部は密結合/外部は疎結合) - OSとライブラリ - OSの生まれた理由 - 面倒くさいことは一か所にまとめる - 抽象化してわかりやすくする - ライブラリ - なんでもかんでもOSに寄せるわけにも行かない - 考え方はOSと同じだが、担う範囲が異なる - 言語ごとにライブラリあり - オブジェクト指向 - 最初はプログラムが主導的だった - データを勝手に触らせない - 隠ぺい/カプセル化 - 継承/多態性/インターフェース/オーバーライド - やりすぎ注意 - 公開範囲(public/private) - クラスメソッドとインスタンスメソッド - 例外処理(オブジェクト指向関係ないけどね) - インターネットワーキング - OSI7階層モデル - 上位層にはIFを開示/下位層の実装は気にしない、という考え方 - 物理とデータリンクはあんまり気にしなくてよい - IP層 - IPアドレス(SourceとDestination) - サブネット/ネットワークアドレス - デフォルトゲートウェイ - ルーティング - アドレス解決(ローカル定義/DNS/NetBIOS) - TCP層 - ポート(SourceとDestination) - ソケット - コネクションの状態(LISTENとESTABLISHED) - Well Known PortとEphemeralPort - よく使われる上位層プロトコル - HTTP - TLS - POPS3/SMTP/IMAP - SSH - プログラム間の通信例 - ブラウザとWebサーバ - Linux基礎 - アカウント(ユーザ/グループ) - ファイルシステム - オーナーとパーミッション - Shellの位置づけ - プロセスと子プロセス - フォアグラウンドとバックグランド - 環境変数 - なぜGUIではなくCUI(CLI)なのか - 再利用性 - 自動化 - エビデンス - 主なコマンド - ログイン/ログアウト - ディレクトリ移動/操作 - ファイル閲覧/操作/検索 - ファイル編集 - 文字列処理 - 文字の出力 - 検索/置換/分割 - ネットワーク状態確認 - プロセス状態確認 - ヘルプ表示 - UNIXプロセス基本構造とShellでの操作方法 - 標準入力/標準出力/標準エラー - リダイレクトによる出力 - リダイレクトによる入力 - パイプによる標準入出力の連結 - 環境変数とShell変数 - ShellScripting - 基本構文 - 外部コマンドの呼び出し - 変数の代入と参照 - 変数のスコープ - 外部コマンドの変数代入 - 判定と分岐 - ループ - 起動引数の取得 - クォートの使い分け - 外部コマンドの実行結果の取得 - デバッグ - 正規表現 - 正規表現の用途 - 基本的な正規表現パターン - 検索で活用してみる - grep/sed - SakuraEditor - 置換で活用してみる - 普通の置換 - 後方参照の威力 - ダイアグラム基礎 - シーケンス図 - 状態遷移図 - マトリックス - RDB基礎 - データベースとスキーマ - テーブルとカラム - カラムの属性 - PKとFK - 基本的なクエリ - select - insert - update - delete - 論理削除の考え方 - 制約 - マスタと明細 - JOINあれこれ - CROSS JOIN - OUTER JOIN - INNTER JOIN - where句条件あれこれ - 一致/不一致 - IN(使い方要注意) - 正規化/非正規化 - トランザクション制御と排他 - テーブル設計アンチパターン - カラム名が不適切 - NOT NULL制約が適当 - 横持ち地獄 - 属性が不適切(数値と文字列) - 数値がオーバーフロー - 一意性制約やりすぎ - PK/FKを使いすぎると環境間ポーティングが大変 - 業務キーが複数テーブルに散在 - テスト基礎 - テストの考え方 - テスト工程と各工程での観点 - Unitテスト - 単独動作テスト - 内部結合テスト - 外部結合テスト - システムテスト - 業務/運用テスト - 機能と非機能の違いを知る - テスト対象に関連する登場人物を把握する - テスタは開発者以上に仕様を把握している必要あり - 手動テストと自動テスト - テストの着目点 - 境界値にバグは生まれる - 組み合わせると生まれる不具合がある - 後半のテストほど要件や仕様レベルの不具合に起因する - 前半のテストに漏れがあると、後半で死ぬ - エビデンスの重要性 - シミュレータ/ドライバ - カバレッジが取れるなら取るべし
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up