Optionalとは メソッド

Optionalとは

値をラップすることで、直接いじることを禁止し、その値がnullかもしれないことを表現するクラス。
= nullチェクを強制させるためのクラス




getメソッド

値があることが確実な場合に使う。
値がnullだったら、NosuchElementExceptionを投げる。
そもそもOptionalは、nullがあるかもしれないことが前提になっているため、Optionalを使う時はあまり使わないメソッド。




orElseメソッド

値がnullの時に、デフォルト値を指定できるメソッド。




orElseGetメソッド

Supplierを引数に取る。
重たい処理を行うときに有効(遅延評価)。




orElseThrowメソッド

値がnullのときに、例外を指定してそれを投げれるメソッド。




ifPresentメソッド

保持している値がnullでない場合の時だけ実行するメソッド。

シンボリックリンク・ハードリンクとは

Linuxには、ファイルに対してリンクの張り方が2種類ある。
ファイルに別名を設定し、その別名で元のファイルにアクセスできるようにすることを、Linuxでは「リンクを張る」という。




シンボリックリンク

ファイル本体の位置情報を保管しているファイル。
ファイル本体とは、全く別のファイルなので、シンボリックリンクを残したままファイル本体を削除できる。

ln -s ファイル名 別名(リンク名)




ハードリンク

ファイルに複数の名前を割りあてる機能。
複数のハードリンクがある場合、ファイルに対しては、どのリンクも同じ扱いになる。
すべてのハードリンクが削除されるまでファイル本体は削除できない。

ln ファイル名 別名(rinnkumei)

DAOとは

Data Access Objectの略。

永続的なデータへのアクセスを、ビジネスロジックから抜き出すこと。
例えば、データの保存先をテキストファイルからDBに変更すると大変だが(保存先のAPIに依存している)、それを解決出来る。
データアクセスをビジネスロジックから排除し、データアクセスオブジェクト(DAO)としてカプセル化する。
そうすれば、データアクセスの手段や実装が変わっても、ビジネスロジックを変えなくてよくなる。

Dropwizard 使ってみた

Cofigurationクラス

ymlファイルから設定値を受け取るクラス。
ymlファイルの内容がこのクラスに設定される。



@NotEmpty
対象がnullでなく、空でないことを保証するためのアノテーション



@JsonProperty
わからーん




Applicationクラス

mainクラスとして実行されるクラス。



initialize
クラスが初期化した時やインスタンスが生成された時に、その直後に変数を初期化する。




Representationクラス(Hello.java

Jsonで返す値を保持するPOJO(普通のオブジェクト)を作成する。




Resourceクラス

Controllerにあたるもの。
JerseyのResourceクラスを作成する。
Applicationクラスに登録が必要。



Jersey
Javaで作るWebアプリをREST対応するために必要な作業を簡素化できる。



REST
HTTPを使ったシンプルなWebサービス
すべてのリソースは一意なアドレスで識別される。



@Timed
実行時間がログに残る。



@Produces
リソースのメソッドが生成し、クライアントに返却することができるMIMEタイプを指定する。



MIMEタイプ
WebサーバのWebブラウザ間でやりとりされるデータの中でファイル形式を表す識別子のこと。

ex)
ファイル形式  テキスト
一般的な拡張子 .txt
MIMEタイプ   text/plain



@GET
受信HTTPリクエストをJavaメソッドにマッピングして、リソースを取得する。



@QueryParam
受け取った値を、自動でURLデコード処理する。



@Encoded
URLデコード処理をして欲しくない時に使う。

ex)

public Hello say(@QueryParam("name") @Encoded String name) {

}



URLエンコード
ex) テキスト



URLデコード
ex) %83e%83X%83g





参考:Dropwizard入門 - Qiita

FreeMarkerとは

FreeMarkerとは

Javaのテンプレートエンジン。 FreeMarker Template Languageで書かれたテンプレートファイル(.ftl)と、Javaオブジェクトを合体させることで、動的にHTMLのソースコードを生成することができる。

<# hoge>タグ = 制御

テンプレート + Javaのコードからデータの挿入でHTMLファイルを作成する。


ex) <#list>
  配列などの繰り返し処理を行う。


参考:Freemarkerのリファレンスの使い方でよく使用するものを日本語でまとめ | iwb.jp




テンプレートエンジンとは

データとテンプレート(雛形)を合体させて、文字列を作る仕組みのこと。


役割

  • データモデルを受け取る

  • ソーステンプレートに書かれたコードを処理

  • 処理結果をテキストファイルなどに出力する。