読者です 読者をやめる 読者になる 読者になる

Status Code 303 - See Other

Java, C, C++, C#, Objective-C, Swift, bash, perl, ruby, PHP, Python, Scala, Groovy, Go, DevOps, Raspberry Pi など。情報の誤りや指摘・意見などは自由にどうぞ。

Java

オブジェクト返却メソッドの異常系実装

概要 今回は、メソッド仕様の話。 オブジェクト値を返却するメソッドにおいて、入力値・プログラム状態によって異常な結果になったときにそれを示したい。 その方法として、以下の3通りが考えられる。 null 返却 例外発生 NULL オブジェクト返却 (参考:サル…

if-else 文と条件演算子(?:)の使い分け

概要 プログラミングを行ううえで、複数の選択があり基本的にどちらでも実装できる処理は数多くある。 これらは常にどっちを使うではなく、これらはプログラムが対象とする処理の内容に応じて使い分けるべきである。今回は、その中でも分岐を表す方法として …

Seasar2 (導入編)

概要 今回は、DI コンテナという少し特殊な技術を用いる。 この技術を使うと、プログラムをコンパイルせずに、プログラム外部にあるリソースファイルを使いプログラムの挙動を制御できる。 また、デザインパターンで言う Factory や Singleton パターンを容…

Dropbox API を使ってみる

概要 普段何気なく使っているツールに、Dropbox がある。このツールは、様々なデバイス間のファイル変更を自動でマージしてくれる他、 リビジョンも保存するため、間違って上書きした場合などに、前回のファイルを復帰することができる。 また、Dropbox は記…

Zabbix API との通信を暗号化する

概要 前回記事 Javaアプリから Zabbix API を使う - Status Code 303 - See Otherjava アプリケ−ションから通信はできたが、HTTP 通信のため平文で通信している。 外部にこれらを公開することを考慮して、今回は通信を暗号化する。また、Zabbix サーバとの S…

例外仕様設計

概要 プログラムが正しく実行できない状態に陥ったときに、それを処理側に通知するための機構として例外がある。 これによって、もしユーザからの入力が想定外のものだったりしても、安全にプログラムを終了させることができる。しかし、仕様を考慮もせず適…

Javaアプリから Zabbix API を使う

概要 前回 curl で疎通確認を行ったが、今回はこれらを Java で実装する。 前回記事:Zabbix API を使ってみる - Status Code 303 - See OtherZabbix API は、JSON 形式で API と通信するため、JSON 形式で通信できるようセットアップする必要がある。 また…

SSHJ による暗号化通信

概要 様々な処理をサーバに任せ、その処理結果だけをサーバから取得したい場合がある。このような通信を行う際、FTP や TELNET を用いて行うと 通信が暗号化されないため、その内容を第三者に盗聴されるリスクを生んでしまう。ここでは、SSH による暗号化通…

各ケースのデータ選択には分岐より規約に基づいた処理を適用する

概要 分岐処理は、手軽に記述できるため、多くの場面で利用される。しかし、あるデータの値によって、途中のデータを選択する処理を分岐を用いて 実装してしまうと、全てのケースをカバーしなければならないため、 新たなケースの追加や既存のケースの修正に…

テンプレートによるロジックとデザイン切り分け

概要 デザインとロジックを切り分ける内容。 本来これらは全く別個に管理すべきなものであるため、分離させたい場合が多くある。 今回は、Java でこの方法を実現する手順を記述。 デザインとロジックの混在する悪い例 public class Main { public static voi…

Lombok ライブラリ - フィールド関連

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、フィールドに定義可能なアノテーションを記述。 (記事執筆時のバージョン :v1.16.6)(更新中) アクセッサ自動生成 指定されたフィールドのアクセッサを提供する。 @Getter どのような…

Lombok ライブラリ - その他

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、クラスとフィールド以外に関連するアノテーションを記述。 (記事執筆時のバージョン :v1.16.6)(更新中) データ同期 @Synchronized このアノテーションをメソッドに設定すると、メソッ…

Lombok ライブラリ - クラス関連

主記事 Lombok ライブラリ - Status Code 303 - See Otherこの記事では、クラスに定義可能なアノテーションを記述。 (記事執筆時のバージョン :v1.16.6) クラス性質 ある性質を有するクラス構造を提供する。 @Data 全てのフィールドに対するゲッタ、全ての …

Lombok ライブラリ

概要 Javaでは、クラスにフィールドを追加することによって、 既存のロジックに影響が出たり、新しく追加する必要があるメソッドが存在する。 各フィールドのアクセッサ(ゲッタ/セッタ) 全フィールドを初期化するコンストラクタ hashCode/equalsメソッド toS…

Java でのマイナンバーのチェックデジット作成メソッド

概要 http://www.soumu.go.jp/main_content/000327387.pdf 上記第五条に定義があり、そこでは、個人番号を構成する11桁の番号 およびその検査用数字(チェックデジット)で構成されるらしい。 そこで、11桁の番号からチェックデジットを計算するメソッドを作成…

Java の switch 構文落とし穴

概要 switch 構文は、ある変数がある値のときに処理を分岐させる命令であり、 数多くの言語でサポートされているが、言語により微妙に仕様が異なっている。言語共通の話題も数多く含まれているが、 今回は、Java を前提に switch 構文について記述する。 詳…

プロパティファイルの使用方法

概要 プログラミングでは、処理内容とデータをファイル的に分断したい場合がある。 例えば、プログラム中にデータを書き込んでいた場合。 データの修正漏れや記述ミスにより、特定箇所のみ動かなくなるバグの原因となり得る。 ステージング環境と本番環境を…

static メソッドによるインスタンス生成

概要 static メソッドとは、オブジェクト指向言語において、インスタンスを生成せずとも 処理を実行できるクラスに関連づけられたメソッドである。使用例としては、便利な機能を提供する Util クラスを作成する場合に用いられ、 Java ライブラリでは、java.l…