JAVA関連のことを調べてみた2020年04月27日

JAVA関連のことを調べてみた2020年04月27日

JUnitで外部ライブラリを使用せずテストダブルを実装する

# テストダブルとは
演者の代役や影武者を意味する英単語 “double” から派生した言葉。
一般的にはモック、スタブと呼ばれる。

## なぜテストダブルを使用するのか

システムの単体テストにおいて、テスト対象が
他のクラスや外部要素に依存していないケースはほとんどない。
依存関係のあるテストは、対象だけでなく、その依存対象についてもテストしたことになる。

メリットとしては、よりシステム稼動時と同じ状態でテストが行われるため、
テスト結果が保証する内容の価値が上がるという側面がある。
一方のデメリットとしては、テスト失敗時に原因分析の範囲が広くなる、
依存対象の処理結果が予想できない場合は検証の精度が落ちるといった側面がある。

上記のデメリットに対する対策として、テストに対して影響を与える要素の代わりに
テストしやすい代役を立てて、テストの独立性を高めるという方法がある。
これらを実現するのが、スタブやモック(テストダブル)の使用である。

## スタブとモックの違い

両者とも、テスト対象が依存するクラスやモジュールの代用として使用する
クラスやモジュールという点では違いが

元記事を表示

Ruby と Perl と Java で解く AtCoder ABC 111 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 111 C – /\/\/\/](https://atcoder.jp/contests/abc111/tasks/arc103_a)*
Difficulty: 822

今回のテーマ、ハッシュのソート
# Ruby
重複した要素、とくればハッシュですよね。
解法は前回の、*[Ruby と Perl と Java で解く AtCoder ABC 113 C](https://qiita.com/superrino130/items/21111248bb21a4dac0b2)* に似た問題です。

“`ruby.rb
n = gets.to_i
v = gets.split.map(&:

元記事を表示

Java配列を宣言・初期化する

#配列を宣言する
#####●データ型を定義する
#####●変数名を定義する
“`java
//データ型=String、変数名=array
String[] array;
“`

#配列を初期化する
#####●要素数を定義する
“`java
//要素数=3
String[] array = new String[3];
“`

#配列を要素にデータを詰めて初期化する
#####●要素数の定義は不要
#####●データ型に一致する要素を定義する
“`java
//要素0=”a”、要素1=”b”、要素2=”c”
String[] array = {“a”,”b”,”c”};
“`

元記事を表示

如何先开始写出一个程序

#谈谈写出一个方案。
如果你最近一直在做程序,而你认为
我在初中时接触的第一个节目,是我在初中时接触的第一个节目
是N80-BASIC。
我还记得,但下面这句话完全在我的脑海里。

“`N88-BASIC
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
宽80,25
“`

当然,那时,我只是打出了这样的代码。
解释器只显示了一个无机游标。
我找不到任何帮助。

可以这么说,写出一个程序是
今天还是这个样子,他真的是个无精打采的家伙。

那么,这就是今天的话题。
这要从一种新的编程语言、开发环境说起。
所以,节目先生,好像是在问候。
问候是很重要的。

不仅仅是在编程世界,在现实世界中也是如此。
如果一个问候语被理解了,对方就会以某种方式和你交谈。

哪怕你只是在不了解情况的情况下走到他们面前,也是如此。
那你会得到的,是一脸疑惑的表情,或者是一种
最坏的情况下,他们只是送你回去走人。

#过去的故事D,扯远了一点
我第一次去大学毕业旅行的时候,在美国的机场转机。
我把车票放在了我的行李

元記事を表示

How do I start writing out my program?

#Talk about writing out a program.

Talk about writing out my first program.
When I was a junior high school student, the first program I touched was N80-BASIC.
I won’t forget the starting cord, I still remember it, the following sentence was completely in my head.

“`Z80
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
“`

Of course, in the old days of computer screens, there was nothing but a useless, inorganic cursor.

Writing out programs is still the same, and comp

元記事を表示

新人がAndroidのビューってものをまとめてみる(初心者Androidアプリ開発)

## はじめに

「[Androidアプリ開発の教科書](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%EF%BC%86%E5%BF%9C%E7%94%A8%E5%8A%9B%E3%82%92%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%82%B2%E6%88%90%EF%BC%81-Android%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%81%AA%E3%82%93%E3%81%A1%E3%82%83%E3%81%A3%E3%81%A6%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3-WINGS%E3%8

元記事を表示

AWS X-RayをJavaで色々動かして試してみる

# 前提条件
X-Ray初心者向け。なんとなくは知ってるけど、具体的に何がどこまでできて、どうやって実装するかを色々試してみながら確認した記事。

環境としては、Spring Boot+MavenでWebアプリを実装している。依存関係の解決方法以外はGradleも同じはず。

# X-RayのDockerコンテナイメージを作る。
まずは、適当なEC2とかでコンテナイメージを作る。
今回は、AWSのサンプルをベースに作ってみよう。

“`
$ git clone https://github.com/aws-samples/aws-xray-fargate
“`

buildspec.yml に書いてあるコマンドを、実行していってみる。

“`
$ aws ecr get-login –no-include-email –region ap-northeast-1
“`

でログイン情報を取得後、実行。“`ap-northeast-1“`は利用しているリージョンを指定する。

“`
$ docker build -t xray:latest .
“`

作ったコンテ

元記事を表示

Java memo

##Bean
Beanクラスの最低限の定義
・publicで引数なしのコンストラクタが必要
・メソッドの命名規則に従わなくてはならない(getter/setterメソッドが必要など)
・シリアライズ可能でなくてはならない
 Serializableインターフェースが必要
 private static final long serialVersionUID = 1L;

## -Xms, -Xmxx
`JAVA_OPTIONS=${JAVA_OPTIONS}” -Xms512m -Xmx4096m”`

-Xmx:ヒープ全体の最大値。1MB より大きい 1024 の倍数に設定する
-Xms:ヒープ全体の最小値、一般的にXmxと同じにする。1MB より大きい 1024 の倍数に設定する。

512mのmはMB (メガバイト) を意味する。

##Mockito
Mockito.when(クラス名.メソッド名(引数)).thenReturn(戻り値);
Mockito.doReturn(戻り値).when(クラス名).メソッド名(引数);

元記事を表示

Spring memo

###@Transactional

■ readOnly=true
正確にトランザクションを管理したい場合(trueの場合は更新させないようにしたい場合)は
enforceReadOnlyの設定が必要。(新しいSpringから必要になったそう。)
ただ、enforceReadOnlyの設定をしない場合でも
・FLUSHがNAVERになる
・entityのトラッキングをしなくなる
という効果はあるので、読取り系につける意味はある。

元記事を表示

二番煎じ:JavaでIf式をしてみる

「[JavaでIf式をしてみる](https://qiita.com/ishibashi-futoshi/items/85aa192d2ec0a97e0342)」の二番煎じ。

## 実現できること

例えば FizzBuzz を次のように書ける。

“`Java
public static void main(String… args) {
for (int i = 1; i <= 100; ++i) { int count = i; String fizzBuzzed = If.test(() -> count % 15 == 0).then(() -> “FizzBuzz”)
.elif(() -> count % 3 == 0).then(() -> “Fizz”)
.elif(() -> count % 5 == 0).then(() -> “Buzz”)

元記事を表示

コンストラクタの勉強をした(java)

コンストラクタの勉強をしたかったので、ググって(ググる:”Google で検索する” の意。Google で無くとも使う)コードを引っ張ってきた。

“`java:ctest7.java
class ctest7{
public static void main(String args[]){
Television tv1 = new Television();

tv1.dispChannel();
}
}

class Television{
private int channelNo;
private String housouKyoku;

public void setChannel(int newChannelNo){
channelNo = newChannelNo;
if (channelNo == 1){
housouKyoku = “FujiTV”;
}else if (channelNo == 3){
housouKyoku = “NHK”;
}
}

publi

元記事を表示

DNAの記号をランダムに表示

public class Main {
public static void main(String[] args) {
int [] seq = new int [10];
//配列をランダムに生成
for (int i = 0; i < seq.length; i++) { seq[i] = new java.util.Random().nextInt(4); } //記号を表示 for (int i = 0; i < seq.length; i++) { switch (seq[i]) { case 0: System.out.print("A"); break; case 1: System.out.print("T"); break; ca

元記事を表示

コンストラクタ(java) の使い方の勉強

コンストラクタの使い方がわからん。勉強だ。

[知ってること]
・名前はクラス名と同じ
・何かを初期化する役割(何をかはぼんやりとしかわかってない)
・super は親クラスのコンストラクタを呼び出す
・this は自身のクラスのコンストラクタを呼びだす
・引数と同じ名前の変数を使うときに“`this.str = str“` (左のstr はいま定義したもの、右側のstr はメソッドの引数)

[わからないこと]
・コンストラクタの使いみち
・記述方法


[調べてわかったこと]
・コンストラクタは、クラスの
・戻り値は設定できない
・引数は設定できる
・メンバ変数(クラス内でメソッド外の変数のこと)の初期化をする

“`java:sample.java
public class sample{
int num; // ←これ
String name; // ←これも
public sample_method(){
~~~~
~~~~
}
}
“`

こんな感じかなあ。次はコードを書いて、具体的に実装の

元記事を表示

インターフェイスの使用例

# はじめに

[抽象クラスの使用例](https://qiita.com/ats_y/items/6088aada15b22c2fef75)のインターフェイス版です。
インターフェイスの意味・定義の仕方は知っているけど、どんなときに使うのか・どんな良いことがあるのか。
その例を紹介します。

# いきなり結論。改造に強くなります。

抽象クラス・汎化・継承と同じで、改造に強くなります。
[抽象クラスの使用例](https://qiita.com/ats_y/items/6088aada15b22c2fef75)で紹介したプログラムにさらに改造要求が発生したことを例として紹介します。

### 改造対象のプログラム

まずは、[抽象クラスの使用例](https://qiita.com/ats_y/items/6088aada15b22c2fef75)で紹介したプログラムのおさらいです。

プリンターを管理するプログラムで、最初はインクジェットプリンターとレーザープリンターを管理してプリンター情報を一覧表示していました。
そこに、管理できるプリンターとしてドットインパクトプリンターを追加

元記事を表示

抽象クラスの使用例

# はじめに

抽象クラスの意味・定義の仕方は知っているけど、どんなときに使うのか・どんな良いことがあるのか。
同じ要件を抽象クラスを使って実装したプログラムと使わずに実装したプログラムを比較して確認してみます。

# JAVAプログラム

プリンターの種類としてはインクジェットとレーザーがあるとします。それらを複数管理し、管理しているプリンターの情報を一覧表示するプログラムを作ります。

### 抽象クラスを使わないプログラム
https://paiza.io/projects/Iwnh9NgDAaxPSZC36uZqsw

クラス構成:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342629/2ca0378f-25f0-72d7-1473-bd5be64c779c.png)

InkjetPrinterクラスとLaserPrinterクラスがあるだけです。
それぞれモデル名(mModelName)と用紙残数(mPaper)をメンバ変数として持っています。また、プリンター情報を返し

元記事を表示

合計点、平均点の求め方

public class Main {
public static void main(String[] args) {
int [] scores = {20, 30, 40, 50, 80};
int sum = 0; //集計結果
for (int i = 0; i < scores.length; i++) { sum += scores[i]; //変数sumに合算 } int avg = sum / scores.length; System.out.println("合計点:" + sum); System.out.println("平均点:" + avg); } }

元記事を表示

PlantUML使い方メモ

長くなるので、図の書き方はクラス図とシーケンス図だけで。

# PlantUML とは
– テキストで UML 図を記述できる DSL の一種(たぶん)
– 本体は Java で書かれていて、単一の jar ファイルを落としてきてコマンドラインから実行できる
– [plantuml/plantuml: Generate UML diagram from textual description](https://github.com/plantuml/plantuml)
– ただし、実際に使うときは Visual Studio Code とかのプラグインを入れて実行することが多いと思う
– ライセンスは GPL v3
– [plantuml/license.txt at master · plantuml/plantuml](https://github.com/plantuml/plantuml/blob/master/license.txt)

# 環境構築
OS は Windows10。

## Java
“`
> java –version
openjdk 1

元記事を表示

Tomcatを使ってSquareに顧客登録する方法

# 目次
– EclipseでMavenプロジェクト作成
– MavenプロジェクトにTomcat(Java Servlet API)とSquareを登録
– 登録ページ作成(JSP作成)
– 内部処理を作成-1-(JSPとの通信)
– 内部処理を作成-2-(Squareとの通信)

# EclipseでMavenプロジェクト作成
参考サイト[[Eclipse/Tomcat] MavenのwebappプロジェクトでServlet+JSP](https://qiita.com/zaki-lknr/items/8137ac40ebd8f5bdb3c5)

### 1. Eclipseの**パッケージエクスプローラー**内で右クリック
スクリーンショット 2020-04-26 4.39.07.png

### 2. **

元記事を表示

【わかりやすく解説‼】Javaにおける参照型の型変換

## 1.事前知識
– [【最新】UbuntuでJavaの環境を構築する方法](https://qiita.com/ryome/items/37c53e9638a9c6ea146a)

– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)

– [【わかりやすく解説‼】Javaのインスタンスの使い方](https://qiita.com/ryome/items/62ba0d8395af6698053a)

– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)

事前知識として、上記リンクの内容が必要です。

## 2.参照型の型変換とは

– `参照型の型変換` には、 `アップキャスト` と `ダウンキャスト` がある。
– `アップキャスト` は、サブクラスのインスタンスを `スー

元記事を表示

java

参考にした記事
https://manga.crocro.com/?cat=java&pg=make_cui_app
javaの環境構築まで終わり。
アプリケーションまで作業したがやったばかりで全然わからない。

名前変更
実行ボタンで右クリック
[![Image from Gyazo](https://i.gyazo.com/b1cc03292639b2bbf6e3604341e40614.png)](https://gyazo.com/b1cc03292639b2bbf6e3604341e40614)

元記事を表示

OTHERカテゴリの最新記事