11月15日の学び(コメントの書き方)

コメントの書き方 ソースコードはロジックのみが記載されている。 「実装の内容」に関して記載するよりは(それは読めばわかる)、「なぜその処理を実装しているのか」という理由を書くこと 「実装の内容」を書く場合は個別のメソッドではなく、メソッド全体…

11月14日の学び③(VPC)

AWS

VPC概要 VPCはAWS上のユーザ毎のプライベートなネットワーク環境 VPCはリージョン単位で作成されるため、VPC作成時は最初にリージョンを選択する − VPCは同一リージョン内の複数AZをまたぐことが可能 VPCとインターネットの接続 VPCとインターネットを接続す…

11月14日の学び(リージョンとAZ)②

AWS

リージョン→AZ(アベイラビリティゾーン) リージョン 2016年時点で全世界に13箇所のリージョンが存在 AZ 1つのリージョンには複数のAZが存在 同一リージョン内のAZをまたぐ場合はprivateIPアドレスを利用可能 AWSのサービス 各サービス毎に適用される範囲が…

11月14日の学び①(ELB)

AWS

ELB作成 ELB作成時にロードバランサインスタンスに対して固有のDNS名が割り当てられる(例:myLB-1234567890.us-east-1.elb.amazonaws.com) ロードバランサは一意のDNS名を1つもつ 独自のドメイン名でユーザにアクセスさせたい場合は、DNSにCNAMEを登録でき…

11月13日の学び

AWS

AWSのIPアドレスに関して。Route53は明日。 AWSのプライベートIPアドレス VPCのサブネット内に起動するEC2インスタンスは少なくとも1つのプライベートIPアドレスが割り当てられる EC2インスタンス内部からはプライベートIPアドレスしか確認できない AWSのグ…

11月12日の学び

DB

DBの用語のシーケンス・インデックス・ビューに関して。こういうDB用語の理解が進むとだんだん自信がついてきて大変よろしい!! シーケンス シーケンスは連番となる一意な整数を生成するデータベースのオブジェクト 一般的にシーケンスは、ユーザIDや登録番…

11月11&12日の学び

プロセスの出力先 各プロセスの出力先はプロセス毎に個別に存在する 「/proc/PID/fd/数字」がファイルディスクリプタ 各プロセスの入出力は「/proc/PID/fd/数字」から確認ができる これを利用してバックグラウンドで実行しているプロセスの出力も確認可能 フ…

11月10日の学び

まだまだ経験不足。UMLだけで全てが完結するわけではない。他にどんなツールがあるのだろうか。。。 UML クラス全体の関係性が明瞭になるため、特定のクラスのみが肥大化するのを避けられる 一方個別のメソッドの内部処理が不明のため、特定のメソッドの内部…

11月9日の学び

DB

論理削除と物理削除 論理削除はフラグを設定するだけで削除は行わない。削除後の復元可能。 物理削除は削除を行う。削除後の復元はできない。 2層コミット 複数DBの分散トランザクション処理を実現する方式 複数DB間のトランザクションを1つのトランザクショ…

11月7日の学び

プリミティブ型と参照型 プリミティブ型はObjectを継承していないが、参照型(オブジェクト型)はObjectを継承している プリミティブ型はすべて小文字で始まるが、参照型(オブジェクト型)はすべて大文字で始まる。 プリミティブ型は値しかもたないが、参照…

11月5&6日の学び

UMLで用いる用語の整理 最近ようやくクラス図の偉大さがわかってきた きちんと設計するって大切 関連・汎化・集約の大きく3パターンあることをまずは抑える 関連 線でつなぐ 矢印の場合は方向性あり(ヘッダファイルのインクルードなど一方方向) 汎化 よう…

11月4日の学び②

長いので終わらなかった。続きはまた今度。 プロセステーブル(プロセス制御ブロック) Kernelがプロセスの状態を管理するデータ構造 プロセスの生成 あるプロセス上で別のプロセスを実行すると必ず親子関係が生じる CLIコマンドを実行すると端末(bash)が…

11月4日の学び

デザインパターンでは継承においてメソッドのIFが共通化されているのが大きい 逆にいうとメソッドのIFを共通化できない場合だと単に処理の共通化可能くらいしかメリットがない Compositeパターン フォルダ&ディレクトリのような再帰的構造に利用される 継承…

11月3日の学び②

移譲 サブクラスが機能拡張する際に、サブクラス内でのオーバロードや新規メソッドの追加ではなく、引数として渡されたクラスを用いること。 早い話が丸投げ。 自分では手を動かさずに外からきた人にやってもらう。 メソッドとしては持っているが自分ではや…

11月3日の学び

ファイルシステムの役割 当然だが新しい物理的な記憶装置が出現するとそれに対応したファイルシステムを利用する必要がある。 端的にいうと物理的な記憶装置を抽象化したレイヤーを提供する ファイルへのインタフェースを提供(ファイルの命名・フォルダ/デ…

11月2日の学び

Stacktrace 例外のthrow箇所で文字列を引数に与えることで、スタックトレース時に例外の発生状況を確認できる。 if (Objects.isNull(nextState)) { throw new NextStateException("Current State is " + name + ". " + "Next Character is " + currentString…

11月1日の学び(その③)

すっごい基本だけどthrowとthrowsの違いがわからなかった。。。 Javaの例外 try/catch:自身の中で例外を処理する throw:例外を明示的に発生させる throws:発生した例外を呼び出し元に通知する サンプル 以下のようにcatch内で例外を発生させる場合もある…

11月1日の学び(その②)

例外処理は真剣に考えると凄く難しい(そして面白い)。 例外処理の目的 例外の回復 例外の通知 例外の回復 例えばDBのにアクセスできない場合にリトライするなど。 そもそも回復できるという保証はない。 その場合は呼び出し元に通知する。 例外の通知 呼び…

11月1日の学び(その①)

ちょっと一日早いけど明日は書けるか不明なので。 単に言葉だけ知ってもしかたなくてベストプラクティスを学ぶのが必要。 例外そもそも論 例外が実装されていない言語(C言語)ではいちいち戻り値をif文で分岐する必要があり面倒。 そういう意味ではJavaの例…

10月31日の学び②

エラーと例外は違う。 エラーや例外の実体はインスタンス。 「エラーが発生してプログラムが強制終了」「例外が発生してプログラムが強制終了」「例外が発生したがプログラムは強制終了しない」の3通りがあることを意識。 Javaの例外概要(大切) 土台とし…

10月31日の学び

昨日ちょっと書いたことの続き Javaの例外の概要 Javaでは例外が発生しうる処理を呼び出した時try/catch構文を用いて「例外を回復」するか、thorws句にてその例外を上位レイヤーに「通知」するかのどちらか どこで誰が「通知」「回復」するかは設計時に考慮…

10月30日の学び

UPSERT UPDATE + INSERTのこと データがない場合は新規追加を行い、データがある場合はその既存データを更新する ロックの種類 行ロック:レコードに対してロック 表ロック:表全体に対してロック Javaの例外 単に文法をしっているだけでなく、こういうアン…

10月29日の学び

スレッド処理の注意点 スレッド処理中にsleep処理を実装するのはあまり望ましくない DBアクセス中にsleepに入るとデッドロックの温床になりうる Visitorパターン 余り使う機会はなさそう thisを使うことで呼び出し元クラスに呼び出し先クラスそのものを受け…

10月28日の学び

↓のサイトは神レベルなので時間があるときに読み込んでおくこと qiita.com 「仕様の明確でないメソッドを作るのは迷惑行為です!」 「自分にしか理解できないコードを書くことは迷惑行為です!」 「API の仕様を説明できないのであれば、正しいユニットテス…

10月27日の学び

配列とList 配列は宣言時にサイズを決める必要がありサイズは固定のため変更ができない Listはサイズが可変のため必要に応じて変更できる List ListはCollectionsクラスを継承したインタフェース public interface List<E> extends Collection<E> { (略) } List</e></e>…

10月25日の学び

Springの構成 こういうのがあると本当に助かる。 qiita.com Java Beans 以下の要件を満たすクラス 引数のないコンストラクタが定義されていること アクセサメソッドが定義されていること(メンバ変数はすべてprivate) シリアライズ可能であること

10月24日の学び

Javaは1ファイル内に複数クラスを書くことができるが、1ファイル1クラスが原則。基本的に大規模開発向けの言語なので。 MavenもGradleもビルドツール。開発環境の準備〜コンパイル〜warファイルの作成〜デプロイまで一気通貫にしてくる。 WARファイル WARフ…

10月23日の学び

Tomcatは起動手順とかファイル構成とかがとにかく複雑。。。 Javaのプロパティファイル Propertyファイルとはキーと値が対になったデータを保存しているファイル プログラムのconfig値などを保存 コンパイルなしでプログラムの設定の変更が可能(ハードコー…

10月22日の学び

量子コンピュータの勉強会の発表無事に終わった。レベルが高くてびっくり。。。 Flyweightパターン 生成したインスタンスをプールに保存・共有するすることでリソースを節約する 別にオブジェクト指向とは関係ないような気が... Mementoパターン インスタン…

10月21日の学び

昨日は勉強会の資料作成のためブログ更新はできず。。。 Proxyパターン 呼び元と処理を実行するクラスの間に中間のクラスを生成する 処理の実行時に初めて処理を実施するクラスをインスタンス化する サンプルコードを見てインタフェースは要はAPIを実装する…