java
Q1. Java でプログラムされたライブラリで kuromoji とは何か?Q2. kuromoji で文章をトークンに分解するクラスは?Q3. kuromoji でトークンの品詞を返却する Token クラスのメソッドは?Q4. kuromoji でトークンに分解された単語を返却する Token クラスのメソ…
Docker コンテナで Java をインストールしたが、jps コマンドが使用できなかった。 Dockerfile においてインストールするパッケージに (-devel) を指定すればよい。 ※Docker自体はこの問題に関係ない(変更前: jps つかえない) RUN yum install -y java-1.8.0…
atcoder.jp使用言語は”Java (OpenJDK 11.0.6)”です。 この問題では以下の2つの条件を満たさないといけないですが、両方の条件を満たすものを探していると、パフォーマンス要件で合格が難しいようです。condition1つ目の条件を満たす数は、Rの数 × Gの数 × B…
atcoder.jp競技プログラミングはあまり得意ではないですが、たまに挑戦しています。 上の課題については、最初に書いたのが、すべての数字を一つずつチェックする方法です。 以下のようにすぐに書けた(Java)のは良かったですが、for を3重で回しており、処理…
例えば、文字列を引数に取るメソッドをテストするにあたり、色んな文字列でテストしたい場合。 テストする文字列ごとにテストケースを作成するのは大変。 DataPoint を使うことで、それらのパラメータを配列で管理することができ、文字列一つずつを一つのテ…
既に存在しているテストクラスに新しいテストケースを追加するとき、どの位置に入れようか迷うときがあります。 出来れば、後で見たときに分かりやすい位置に入れたいですが、そもそも整理されていなければそれも難しいです。そこで Enclosedを使うことで、…
例外(Exception)のテストの書き方でよく知られているもので、Ruleアノテーションを用いた ExpectedException を使う方法があります。 例外のメッセージまで評価してくれるのがいいですね。 public class RuleTest { @Rule public ExpectedException expected…
stream については、package java.util.stream; の JavaDoc には以下のように書かれています。 * A sequence of elements supporting sequential and parallel aggregate * operations. 並んでいる要素に対して、直列または並列処理をサポートするみたいなイ…
JGiven ではいくつかのレポート機能が用意されているようです。 テキストのレポートを無効にする デフォルトでは、コンソール上にテキストのレポートが表示されます。 Something should happen Given サーバーが止まっている時に When プログラムを実行する…
JGiven とは 公式サイト から引用するとJGiven は、開発者にフレンドリーで実用的な Java の BDD ツールです。 ドメインエキスパートにとって読みやすいレポートを生成してくれます。 JGiven を使おうとしたきっかけ Java のプロジェクトに関しては、普段 JU…
Javaでプログラムの基本は、クラスのインスタンスを生成し、そのインスタンスから目的のメソッドを呼ぶところにあると思いますが、結果的に一度しかインスタンス化されないクラス(オブジェクト)があったり、ある特定のクラスからしか必要とされないインス…
もうすぐ、JDK8(java8)の商用サポート期限が2019年1月で終了するという中、未だに Java8 日時API に混乱させられています。。 ※この手の情報は色んなところに既にまとめられていますし、自分は5年くらい遅れている気がしますが、自分の備忘録のために覚えた…
ブロードキャスト変数は、リードオンリーの変数を効率的に各 Executor に送信する仕組みです。Apache Spark2 にて、ブロードキャスト変数のパフォーマンスをローカル環境で確認してみました。 スレッド数は 3 を指定しています。 ※ sparkConf.setMaster("loc…
Spark2 で Accumulator を使おうと思ったら、deprecated になっていました。 代わりに AccumulatorV2 を使うようにとのこと。 https://spark.apache.org/docs/2.3.0/api/java/旧 Accumulator と同じように使えるのかと思っていたら、AccumulatorV2 を継承し…
前回の記事で、インターフェースのメリットが解った?ところで、実装をしてみます。 blueskyarea.hatenablog.com今回は、データベースからデータを取り出すところに、Dao インターフェースを実装します。 インターフェースの定義 Dao をインターフェースを定…
もう何度も実装したことがあるにも関わらず、そのメリットがいまいちピンときていなかったりします。 ネットで検索すると、メリットについて語っている色々な情報が出てきます。 その時は何となく理解できた気になるのですが、しばらくするとまたアレなんだ…
singleton design pattern 実装する機会は今までに何度もあったものの、改めて順序だてて考えてみます。 ”そのクラスのインスタンスは常に1つしか存在しないことを保証する”こと。 実装にあたって、気をつけたい点 1. どのようにして、インスタンス化を行う…
これの JMockito 版です。 blueskyarea.hatenablog.com モック化するクラス public class PointCard { public PointCard() { } public String getMemberName() { return "hoge"; } public long getPoint() { return 1000L; } } テスト対象のクラス public cl…
これの JMockito 版です。 blueskyarea.hatenablog.com テストコード(JUnit) @RunWith(JMockit.class) public class BirthMonthTest { // Without mock @Test public void testGetBirthStoneWithoutMock() { BirthMonth birthMonth = new BirthMonth(2); ass…
これの JMockito 版です。 blueskyarea.hatenablog.comMockito 版の記事と同じクラスをテスト対象にしました。 テストコード(JUnit) import mockit.Expectations; import mockit.Mocked; import mockit.integration.junit4.JMockit; @RunWith(JMockit.class)…
Java8 で書いてます。 静的に指定 // Item("name", "price", "reviewAve", "reviewNum") Item itemA = new Item("itemA", 1000, 3.3f, 100); Item itemB = new Item("itemB", 2000, 4.5f, 20); Item itemC = new Item("itemC", 3000, 4.5f, 10); List<Item> items </item>…
Map のキーは、int 型 や String 型で済ませることが多い。 自作クラスを Map のキーにする機会はたぶん今までなかった。 今回たまたま、それをする機会があったのだけど、get する時に果たして Map に格納されているものと等しいキーとして認識してくれるの…
0. GCViewer のインストール // git clone でダウンロード $ git clone https://github.com/chewiebug/GCViewer.git// git clone した pom.xml と同じディレクトリで $ mvn clean install// target ディレクトリ内にある jar を実行 $ java -jar gcviewer-1.…
jstat コマンドで GC の様子を見てみる - 社内se × プログラマ × ビッグデータ ここで使ったプログラムをヒープサイズを変えつつ GC の様子を見てみます。 $ jstat -gcutil -h10 [pid] 1000ケース1: -Xms1024m -Xmx1024m S0 S1 E O M CCS YGC YGCT FGC FGCT …
何も特別なことはしていません。最近あまり使うことがなかったので。 サンプル用プログラム 一応、何らかのJavaプロセスを起動する必要があったので、単に1000万要素のList と Map を延々と作り続けるプログラムを用意。 public class GcTest { private stat…
ケース 例えば、テストが不可能なメソッド(外部API接続している)のみをモック化して、その他のメソッドはそのまま動作させたい場合など。 方法 Mockito の @Spy を使うと良いらしいです。 @Mock では、全てのメソッドがモック化される。 @Spy では、一部の…
@Test public void testGetMemberInfoWithNestedObjectMock() { Member member = mock(Member.class, RETURNS_DEEP_STUBS); // 1 when(member.getPointCard().getPoint()).thenReturn(3000L); // 2 assertThat(member.getPointCard().getPoint(), is(3000L))…
テスト(モック)対象のクラス 誕生月のクラス。 誕生石を返却するメソッドも持っているが、誕生石を保持するためのクラス変数はない。 誕生月を引数にしているが、必ず null が返却されるようになっている。 public class BirthMonth { private int month; …
何も特別なことはありません。最近、色んなモックライブラリを混同してしまっているので、復習を込めて確認しています。 テスト(モック)対象のクラス 仮に以下のようなクラス(Member)があった場合、getPointCard() の返り値(PointCard オブジェクト)を任意…
Runtime Data Area に取り込まれたバイトコードは、Execution Engine と呼ばれるシステムで実行されているようです。 バイトコードを読み込み、少しずつ実行していきます。Execution Engine も複数の仕組みで構成されています。 Execution Engine 1. Interpr…