社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

2018-06-01から1ヶ月間の記事一覧

JMockito 一部のメソッドのみをモック化する(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com モック化するクラス public class PointCard { public PointCard() { } public String getMemberName() { return "hoge"; } public long getPoint() { return 1000L; } } テスト対象のクラス public cl…

JMockito 引数に応じて返す値を変化させる(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com テストコード(JUnit) @RunWith(JMockit.class) public class BirthMonthTest { // Without mock @Test public void testGetBirthStoneWithoutMock() { BirthMonth birthMonth = new BirthMonth(2); ass…

JMockito あるメソッドが任意の値を返す(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.comMockito 版の記事と同じクラスをテスト対象にしました。 テストコード(JUnit) import mockit.Expectations; import mockit.Mocked; import mockit.integration.junit4.JMockit; @RunWith(JMockit.class)…

python bash のコマンドを実行

調べてみると色んなやり方が見つかりましたが、自分にとって一番シンプルだったやり方を。 import subprocess bashCommand = "ls -alt" output = subprocess.Popen(bashCommand, stdout=subprocess.PIPE, shell=True).communicate()[0] print(output) コマン…

pyspark TypeError: namedtuple() missing 3 required keyword-only arguments

$ /usr/local/spark/bin/spark-submit --master local[1] textStream.py Traceback (most recent call last): File "/home/mh/workspace/spark/pyspark-practice/textStream.py", line 1, in <module> from pyspark import SparkContext ------- pyspark TypeError: </module>…

VirtualBox 仮想ディスクのサイズを変更

VirtualBox で使用している仮想ディスクの使用率が99パーセント近くになってしまったので、ホストOSからのディスクサイズの割り当てを増やすことを決断。 Vagrantを使用しているため、仮想ディスクは VMDK 形式になっています。 ただこの形式は、サイズ変更…

Java ソート条件を動的に指定してみたい

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>…

Java 自作クラスを Map のキーにする

Map のキーは、int 型 や String 型で済ませることが多い。 自作クラスを Map のキーにする機会はたぶん今までなかった。 今回たまたま、それをする機会があったのだけど、get する時に果たして Map に格納されているものと等しいキーとして認識してくれるの…

GCログを取得し、GCViewer で見てみる

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 の様子を見てみる

jstat コマンドで GC の様子を見てみる - 社内se × プログラマ × ビッグデータ ここで使ったプログラムをヒープサイズを変えつつ GC の様子を見てみます。 $ jstat -gcutil -h10 [pid] 1000ケース1: -Xms1024m -Xmx1024m S0 S1 E O M CCS YGC YGCT FGC FGCT …

jstat コマンドで GC の様子を見てみる

何も特別なことはしていません。最近あまり使うことがなかったので。 サンプル用プログラム 一応、何らかのJavaプロセスを起動する必要があったので、単に1000万要素のList と Map を延々と作り続けるプログラムを用意。 public class GcTest { private stat…

Python twitter 検索APIでキーワード検索

twitter が用意してくれている検索APIをたたいてみます。 この手の記事はたくさんあるので、少し検索すればすぐに方法が見つかります。 #!/usr/bin/env python # -*- coding: utf-8 -*- from requests_oauthlib import OAuth1Session import json import sec…

Mockito 一部のメソッドのみをモック化する(Java モック)

ケース 例えば、テストが不可能なメソッド(外部API接続している)のみをモック化して、その他のメソッドはそのまま動作させたい場合など。 方法 Mockito の @Spy を使うと良いらしいです。 @Mock では、全てのメソッドがモック化される。 @Spy では、一部の…

Mockito 取得したオブジェクトのメソッドの戻り値をモックする

@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))…

Mockito 引数に応じて返す値を変化させる(Java モック)

テスト(モック)対象のクラス 誕生月のクラス。 誕生石を返却するメソッドも持っているが、誕生石を保持するためのクラス変数はない。 誕生月を引数にしているが、必ず null が返却されるようになっている。 public class BirthMonth { private int month; …

Mockito あるメソッドが任意の値を返す(Java モック)

何も特別なことはありません。最近、色んなモックライブラリを混同してしまっているので、復習を込めて確認しています。 テスト(モック)対象のクラス 仮に以下のようなクラス(Member)があった場合、getPointCard() の返り値(PointCard オブジェクト)を任意…

JVM はどのようにプログラムを実行しているのか

Runtime Data Area に取り込まれたバイトコードは、Execution Engine と呼ばれるシステムで実行されているようです。 バイトコードを読み込み、少しずつ実行していきます。Execution Engine も複数の仕組みで構成されています。 Execution Engine 1. Interpr…

JVM はどのようにデータを保持しているのか

Runtime Data Area と呼ばれる場所に保持されるようになっている。 そこは保持するデータの種類によって、大きく5つに分類されている。 Runtime Data Area 1. Method Area 全ての class データが保持される。 static 変数もここに保持される。 1 つの JVM …

JVM は どうやって class ファイルをロードしているのか

JVM クラッシュの調査をしていると、そもそも JVM の動作についてあまり知らなかったことに気づく。 大まかには、コンパイルによって生成された class ファイルを JVM が取り込んで、解析して、実行する。その class ファイルを取り込むところを Class Loade…