覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

2016-09-01から1ヶ月間の記事一覧

com.google.common.base.Stopwatch

Guavaのcom.google.common.base.Stopwatchの利用サンプルです。 このクラスは名前の通りストップウォッチのように処理時間の計測などに用います。 ■Stopwatchを使わない計測 Stopwatchを利用しない場合、以下のようなコードで処理時間を計測することが多いか…

Lombok - @ToString

Lombokの@ToString(lombok.ToString)アノテーションの利用サンプルです。 @ToStringアノテーションを付与することで、toStringメソッドを適切にオーバーライドしてくれます。 アノテーションにパラメータを与えることでtoStringメソッドでの文字列化処理や…

Lombok - @Data

Lombokの@Data(lombok.Data)アノテーションの利用サンプルです。 クラスに@Dataアノテーションを付与すると、対象クラス内のインスタンス変数に対してgetter/setterでアクセスすることが可能となります。 対象のインスタンス変数をfinalで宣言している場合…

Lombokを用いた開発 (2)

Lombokの利用サンプルです。 Lombokを用いてIDEで開発する場合は基本的にIDEにLombokをインストールしている必要があります。 IDEへのインストールについては以下を参考にしてください lombok.Builder Immutableなクラスでfinalのフィールドが増えると引数付…

Lombokを用いた開発 (1)

Lombokを利用する主な目的にJavaのお決まりのコード(ボイラープレートコード)を削減することがあげられます。 その目的のために頻繁に使用するアノテーションがいくつか存在しています。 本記事では利用頻度の高いアノテーションのいくつかをピックアップ…

続・stubby4j

HTTPのモックサーバを立てる際に使用する stubby4j の利用サンプルです。 本記事は「はじめてのstubby4j」の続きです 以下に示す各種サンプルは、サンプルの構成に定義された状況で実行しています YAMLファイルにレスポンスのJSONを直接記述 YAMLファイルに…

com.google.common.base.Splitter

Guavaのcom.google.common.base.Splitterの利用サンプルです。 指定の文字列を分割する際に利用するクラスです。 String#splitがString[]を返却するのに対してSplitter#splitはIterable<String>を返却します。 以下のAPIなどを利用して分割処理を行います Splitter#s</string>…

com.google.common.primitives.Ints

Guavaのcom.google.common.primitives.Intsの利用サンプルです。 Intsクラスはint型の値に対するユーティリティメソッドなどを提供しています。 サンプルコードで試したのは以下の通りです。 int配列 ⇒ List<Integer> の変換 ■API Ints#asList ■サンプル System.out.p</integer>…

com.google.common.collect.Lists

Guavaのcom.google.common.collect.Listsの利用サンプルです。 ListsクラスはListの生成含めたユーティリティメソッドを提供してくれます。 サンプルコードで試したのは以下の通りです。 ArrayListを生成(ファクトリメソッド) ■API Lists#newArrayList ■サ…

com.google.common.base.Joiner

Guavaのcom.google.common.base.Joinerの利用サンプルです。 Joinerは区切り文字で文字列連結する機能を提供してくれます。 基本的に以下のAPIなどを利用して連結処理を行います Joiner#on - 区切り文字の指定 Joiner#skipNulls - 連結対象のオブジェクトの…

Oracle Certified Java Programmer, Gold SE8

今年(2016年)、1Z0-813(Upgrade to Java SE 8 OCP (Java SE 6 and all prior versions))の試験を受けてJava6の資格をJava 8 のGoldにアップグレードしてみました。 同様の試験を受けようと考えている人も少なくないかなと思いますので、実際の試験がどんな…

com.google.common.base.Strings

Guavaのcom.google.common.base.Stringsの利用サンプルです。 Stringsクラスは文字列に関するユーティリティメソッドを提供してくれます。 サンプルコードで試したのは以下の通りです。 指定回数繰り返した文字列を取得 ■API Strings#repeat ■サンプル Syste…

オブジェクト指向のこころ

「デザインパターンとともに学ぶオブジェクト指向のこころ」についての気になった部分の抜粋 オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章出版社/メーカー: 丸善出版発売日: 2014/03/1…

java.time.LocalDateTime

java.time.LocalDateTimeの利用サンプルです。 サンプルコードで試したのは以下の通りです。 現在日時の取得 ■API LocalDateTime#now ■サンプル // 現在日付 LocalDateTime date1 = LocalDateTime.now(); System.out.println("date1 : " + date1); ■実行結果…

Gson vs Genson vs Fastjson

JavaのJSONライブラリ(GsonとGenson)のベンチマークをとってみたばかりですが、 その時は対象になかったFastjsonというライブラリも含めて比較してみました。 (なぜか、またJacksonを含めていないです笑) pom.xmlに追加した内容は以下の通り <dependency> <groupId>com.owlike</groupId> <artifactId>g</artifactid></dependency>…

java.time.LocalTime

java.time.LocalTimeの利用サンプルです。 サンプルコードで試したのは以下の通りです。 現在時刻の取得 ■API LocalTime#now ■サンプル LocalTime time1 = LocalTime.now(); System.out.println("time1 : " + time1); ■実行結果 time1 : 10:30:13.779 特定の…

java.time.LocalDate

java.time.LocalDateの利用サンプルです。 サンプルコードで試したのは以下の通りです。 現在日付の取得 ■API LocalDate#now ■サンプル // 現在日付 LocalDate date1 = LocalDate.now(); // 現在日付がyyyy-MM-dd 形式で出力される System.out.println("date…

いろんな現在日時取得のベンチマーク

Javaで現在日時(現在日)を取得するAPIがいくつかありますが、それらのベンチマークを取得してみました。 比較したAPI(クラス)は以下の通りです new java.util.Date java.util.Calendar#getInstance java.time.LocalDate#now java.time.LocalDateTime#now…

「UNIXという考え方」

「UNIXという考え方―その設計思想と哲学」の気になったところの抜粋。 UNIXという考え方―その設計思想と哲学作者:Mike Gancarz発売日: 2001/02/01メディア: 単行本 0. イントロダクション UNIXの設計者たちは「何をしているか分からないのなら、ここにいるべ…

「ビヨンド ソフトウェア アーキテクチャ」 - ソフトウェアアーキテクチャ

「ビヨンド ソフトウェア アーキテクチャ」 の 第1章 ソフトウェアアーキテクチャ で気になった部分の抜粋 ビヨンド ソフトウェア アーキテクチャ (Object Oriented Selection Classics)作者: ルーク・ホフマン,岡澤裕二,和智右桂出版社/メーカー: 翔泳社発…

Lombokを開発環境にインストールする(Eclipse)

Lombokは、Javaの冗長さを代表するgetter/setterをBeanクラスに全く記述していないのに、getter/setterで各メンバへアクセス可能とするような、かなり強力な機能を提供してくれます。(不正確かもしれないですが、C#の自動実装プロパティのようなイメージで…

Gson vs Genson (1)

Java用のJSONライブラリはいくつかありますが、今回GsonとGensonの性能を比較してみました。 とりあえず単純なBeanからシリアライズ、Beanへのデシリアライズを実行しました。 基本GsonとGensonの比較なんですが、ついでにJSONICも比較してみました (なんで…

JMH - java.util.Date と java.util.Calendar を比較

測定するまでもない気がしますが、現在日時を意味する java.util.Date のインスタンスを生成するのに以下のいずれが早いのかを確認してみます。 new java.util.Date() java.util.Calendar.getInstance().getTime() JMHでの測定用のコードは以下です import j…

Linuxプログラミングの概念

「Linuxシステムプログラミング」からの抜粋 Linuxシステムプログラミング作者:Robert Love,ロバート ラブ発売日: 2008/04/16メディア: 大型本 ファイルとファイルシステム ファイルはLinuxの中でも、もっとも基本的かつ重要な概念。 Linuxには、すべてもの…

はじめてのstubby4j

テストをしている際などに、自分の好きなようにレスポンスを返してくれるHTTPサーバがほしくなる場合があります。 そういう時は、stubby4jを利用すると任意のHTTPレスポンスを返すためのモックサーバを簡単に立てられます。 返すレスポンスの内容はYAMLファ…

JMH - Javaでのベンチマークを試してみる

OpenJDK のサイトで公開されているマイクロベンチマーク用のライブラリ。Java Microbenchmark Harness の略。 JMHの存在理由 Javaでパフォーマンス測定(ベンチマーク取得)するのは以下のような理由により簡単ではありません 計測用のコードを書くのが実は…

割れ窓理論

長期間修理されることのない割れた窓が1枚でもあると、ビルの住人に「投げやりな(ビルの状態など気にもかけないようになる)感覚」が植えつけられていきます。すると、次の窓が割れます。 さらに、ゴミが撒き散らかるようになります。落書きもされるように…

「リーダブルコード」

「リーダブルコード」で気になった部分の抜粋 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者:Dustin Boswell,Trevor Foucher発売日: 2012/06/23メディア: 単行本(ソフトカバー) 1. 理解しやすいコ…

ソースコードを汚くするには?

汚いプログラム(ものによってはバグを引き起こすプログラム)にするためにはどうすればいいのかを書きました 基本的にJavaをターゲットにしています(ものによってはJava以外でも当てはまります) 私が今まで、読みにくい、修正しにくい、プログラムの挙動…

API提供時に気を付けること

アプリケーションが第三者向けにインターフェース(API)を提供する場合に、考慮すべきだが抜け落ちてしまう可能性があるものを記載しました 提供すべきAPI自体がどうあるべきか? と API利用者にドキュメントや補足説明で何を伝えるべきか? を記載していま…