JAVA関連のことを調べてみた2021年03月30日

JAVA関連のことを調べてみた2021年03月30日

テスト駆動開発

# テスト駆動開発
[本書](https://www.amazon.co.jp/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA-Kent-Beck/dp/4274217884)は、テスト駆動開発(Test-Driven Development)について書かれている。
第一部では、TDDで書かれた典型的なモデルのコードを例示している。実際のコードを見ることで、TDDのイメージが付く。それにより、テストコードを先に書き、設計を有機的に成長させる方法を学ぶ。
第二部では、より複雑なロジック(リフレクションや例外のテスト等)のテスト方法を、自動テストのフレームワークを実際に開発しながら学ぶ。
第三部では、どのようなテストを書くのかの判断に関するパターン、xUnitを使用したテストの書き方のパターン、リファクタリング方法などを学ぶ。

# テストとは
動詞では「評価する」、名詞では「合格か不合格かを判定する手順」という意味合いである。
テストを頻繁に走らせることで、ミスをしでかす確率を減らし結果的にストレスが減ってい

元記事を表示

リーダブルコードの概要をまとめてみた【前編】

#はじめに
本記事ではプログラミングの本として有名な「リーダブルコード」を読んだので、簡単に概要を紹介する。
前編では1章〜7章までを紹介。

#1章 理解しやすいコード
###鍵となる考え
コードは理解しやすくなければならない。
コードは他の人が最短時間で理解できるように書かなければならない。

– 優れたコードとは他人が最短時間で理解できるコードである。理解できるとは変更を加えたり、バグを見つけたりできるという意味だ。
– コードは短い方が良い。だが理解するまでの時間を短くする方が大切だ。
– 理解しやすいコードは設計やテストのしやすさにつながることが多い。

#2章 名前に情報を埋め込む
###鍵となる考え
名前に情報を詰め込む。
気取った言い回しよりも明確で正確な方が良い。
– 明確な単語を選ぶ。

“`
def Getpage(url):
“`
このメソッドはデータベースやインターネットなどどこから取ってくるかわからない。インターネットであれば、DownloadPage()の方が適切。

また、使用する単語の代替案を調べれば、適切な単語を選択できる。

– tmpやret

元記事を表示

いつもぶつかって何となく調べて解決してきたAndroid周りの対応

# 前置き
– いつも同じようなエラーが発生する……
– 多分Unityのversion upしたタイミングな気がしている……
– でもその度調べて解決してるが、結局いつも原因忘れてしまっている……

# 環境
– Unity2019.4.18f1
– GoogleMobileAds-v5.4.0
– Android Studio 4.1.3

# 結論
– JDKのバージョンをテキトーなやつ指定してるとUnityでエラーになる場合がある

# 事象
– GoogleMobileAdsを更新したので、Android Force Resolveを再度実施しようとした
– そうしたら以下のようにエラーが発生……

“`sh
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
at org.codehaus.groovy.vmplugin.VMPluginFactory.(VMPluginFactory.java:43)
at

元記事を表示

SpringBoot2で簡単なアプリを作ってみよう!(2/3) ~画面表示~

この記事は以下の続きです。
[SpringBoot2で簡単なアプリを作ってみよう!(1/3) ~環境設定~](https://qiita.com/nmaolks/items/63be973c604a20cecdaa)

第2回目は画面表示をしていきます!

##画面を表示する
パスについてですが、前回も載せておりますが戻って確認するのも面倒だと思うのでこちらにも載せておきます。
![スクリーンショット 2021-03-27 22.25.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/6cb66866-8397-a71e-4fb1-8140fd4a0b37.png)

####HTMLを作成する

“xmlns”で名前空間を宣言することによりThymeleafタグを使用することができるようになります。
(\)←こんな感じのタグを使います。

“`html:productManage.html

javacコマンドでコンパイルするソースファイルを指定する方法(※ソースファイル内に、パッケージ宣言のクラスが参照されている場合)

#概要
パッケージ宣言のクラスが参照されているソースファイルを
コンパイルする際にエラーが起き、
コンパイルが出来なかったので、その時の健忘録である。

“`terminal:フォルダ階層
. #①
├── logics #②
│   └── CalcLogic.java #③
└── main #④
└── Calc.java #⑤

“`

“`java:Calc.java
package calcapp.main;

public class Calc{
public static void main(String[] args){
int a = 10;
int b = 2;
int total = calcapp.logics.CalcLogic.tasu(a, b);
int delta = calcapp.logics.CalcLogic.hiku(a, b);
System.out.println(“足すと” + total + “、引くと” + delta);
}
}
“`

“`java:CalcLo

元記事を表示

いい感じのランダムの色が欲しいなぁって時にこれ。

例えば10個のいい感じのランダムの色が欲しいって時。
ガチのランダムにすると意味わからない変な色が出来上がったりしてしまうので。
っていうものをメモ程度に残しておきます。
意外と使える!

hueの部分の分母を欲しい個数にするだけです。
saturationとbrightnessに関しては自分の好みの色味にしてください。

下記コードそのまま使用した際にはこんな感じの色が出力されます。
~~似てる色があるとか言わないで~~
`#CC8B29`
`#ABCC29`
`#49CC29`
`#29CC6A`
`#29CCCC`
`#296ACC`
`#4929CC`
`#AB29CC`
`#CC298B`
`#CC2929`

“`swift.swift
let colorList =
[
UIColor(hue: 0/10, saturation: 0.8, brightness: 0.8, alpha: 1),
UIColor(hue: 1/10, saturation: 0.8, brightness: 0.8, alpha: 1),
UIColor(

元記事を表示

JavaのObjectはObjectかとか

# クイズとか
またもや突然クイズです。
**「Javaにおいて、全ての配列およびクラスは暗黙的にObjectクラスを継承している」**
YESかNOか

# 答えとか
これ、自分もよくこういうことを言ってしまっていますし、[日本語のJavaDoc](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html)読んでみたら
>Objectクラスは、クラス階層のルートです。すべてのクラスは、スーパー・クラスとしてObjectを持ちます。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。

と書いてありますし。

が、**答えはNO**です。

Javaにおいて、全ての配列およびクラスは暗黙的にObjectクラスを継承しているわけではありません。
**例外がある**んです。

# 例外のクラスとか
例外となるクラスはObjectクラスです。
**ObjectクラスはObjectを継承しません**。
そりゃそーですよね。
Object extends Objectとかやったら
Objcet::newを

元記事を表示

【JDBCドライバ】MySQL Connector/J 8.0ダウンロード手順

##はじめに
自身がJava学習中にDB接続の環境を整える際に悩んだので、
JDBCドライバのダウンロードから環境のセットアップまでを記載します。

##使用環境
開発環境:paizacloud
Javaバージョン:13.0.1
Apache Tomcatバージョン:9.0.41
DB:MySQL
JDBCバージョン:8.0.23

##1.JDBCのインストーラーダウンロード

https://dev.mysql.com/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573636/75f58bb3-950c-f08c-b5b5-2f2b70bc9ffa.png)
——————————
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573636/5d49a746-5048-6b92-f23b-0ee244462728.png)

元記事を表示

Java 16 から利用可能な Unix ドメイン ソケット

Java 16 で [JEP 380: Unix-Domain Socket Channels](https://openjdk.java.net/jeps/380) が取り入れられました。今回はこれをご紹介します。

名前の通り、Unix で使われてきたものですが、Windows 10 April 2018 Update 以降は Windows でもサポートされています。Windows Subsystem for Linux (WSL) や Docker コンテナのように、ホスト OS 上の Unix と通信したい場面が増えたためだと思われます。

私なりにわかりやすくご紹介しようと思いますが、にわかユーザーに過ぎませんので、正確な情報や参考になる実装コードがほしい方は、ぜひ JEP 380 のオーナーさんによる [Inside Java – JEP-380: Unix domain socket channels
](https://inside.java/2021/02/03/jep380-unix-domain-sockets-channels/) ([Logico Insid

元記事を表示

2重登録制御

#### トーク制御
トークン制御は登録、更新、検索処理をボタンなどに対して、ボタンの二重クリックを防止する。

### 代表的な制御方法
#### 1.javaScript
更新処理を行うボタンを押下した際に、JavaScriptによるボタン制御を行うことで、2度押しされた際にリクエストが送信されないようにします。

– ボタンやリンクを非活性化することで、ボタンやリンクを押下できないように制御します。
– 処理状態をフラグとして保持しm処理中にボタンやリンクが押された場合に処理中であることを通知するメッセージを表示します。
などがあげられます。

#### 2. PRG(Post-Redirect-Get)パターン
更新処理を行うリクエスト(POSTメソッドによるリクエスト)に対する応答としてリダイレクトを返却し、その後ブラウザから自動的にリクエストされるGETメソッドの応答として遷移先の画面を返却するようにします。
PRGパターンを適用することで、画面表示後にページの再読み込みを行った場合に発生するリクエストがGETメソッドになるため、更新処理の再実行を防ぐことができます。

元記事を表示

【Java】ハッシュユーティリティを列挙型とチェーンな感じで書いてみた

# 0. INDEX
– 概要
– ハッシュユーティリティを書いてみた
– あとがき

# 1. 概要
列挙型を使ってtypoしないぞ計画!
ってそこまで大層なものじゃないけど、いつものようにあれば使うよなって奴です。

# 2. ハッシュユーティリティを書いてみた

## 2.1. 動作サンプル
https://paiza.io/projects/l7JLOgpc_dJpGXJ75gFhqA

## 2.2. 使い方
こんな感じでupdate関数を繰り返せるチェーンメソッド仕様です。

“`java
String result = MessageDigestUtil.SHA256
.update(“hello”.getBytes())
.update(“everyone”.getBytes())
.toHexString();

System.out.println(result);
“`

## 2.3. ソースコード
“`java:MessageDigestUtil.java
package jp.go.mahny_conf.jun

元記事を表示

【メモ】 JSON 概要

JSONを初めて使用したので、概要だけまとめておく。

おおむね、下記の3パターンを階層的に組み合わせていく。

## オブジェクト型
### json
“`
{
“id”: “001”,
“name”: “taro”
}
“`

### java
“`
// マッピング
JsonSampleBean bean = mapper.readValue(json, JsonSampleBean.class);

// Beanの定義
package com.example.app.bean.json.request;

import lombok.Getter;
import lombok.Setter;

/**
* JSONマッピング用のオブジェクト。
*
* @author start
*/
public class JsonSampleBean {

/** ID */
@Getter
@Setter
private String id;

/** 名称 */
@Getter
@Setter
private String name;

}
“`

元記事を表示

【解説】AtCoder Beginner Contest 197【A~C問題】

#はじめに
オイイイイイイイイイイイイッス!どうも、歌うプログラマのことり兄貴(・8・)です!
「AtCoder Beginner Contest 197」、お疲れさまでした~
昨日はかなりやらかしました…

レート-30…
バタバタしてたので動画もないですw
まあ2完でしたが、Cまで書いてみたいと思います。

今回はJavaとPythonの両方で書いてみます。

#目次
[1.A – Rotate](#1-a—rotate)
[2.B – Visibility](#2-b—visibility)
[3.C – ORXOR](#3-c—orxor)
[4.おわりに](#4-おわりに)

#1. A – Rotate
####問題
長さ3の文字列Sが与えられます。
Sの先頭の文字を末尾に移動した文字列を出力してください。

####制約
・Sは英小文字のみからなる長さ3の文字列
[A問題リンク](https://atcoder.jp/contests/abc197/tasks/abc197_a)

####考察
文字列のインデックス番号で考えます。

3文字の文字列の

元記事を表示

【Spring Boot】SOAPクライアントの実装

はじめに

SpringBootでのSOAPクライアント実装方法について記載します。
あまり使われなくなったSOAPですが、たまに使うので備忘として。

環境

– Spring Boot 2.3
– spring-ws-core
– Java 8

ライブラリの追加

spring-ws-coreを依存関係に追加します。

“`xml:pom.xm

org.springframework.ws
spring-ws-core

“`

WSDLからソース生成

maven-jaxb2-pluginを使用します。
pom.xmlに下記を定義し、実行することでSOAPサービスのRequest/ResponseのBeanが生成されます。
データ定義をXSDに切り出している場合にも対応しています。

#Gradle版がなくすみません…。いつか試して追記したいです。

“`xml:pom.xml

元記事を表示

Java黒本著者の「オブジェクト指向の基礎」Youtube動画が分かりやすかったのでまとめメモ

[Oracle Certified Java Programmer認定試験](https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html#2)の問題集(いわゆるJava黒本)の著者である志賀澄人さん([@betteroneself](https://twitter.com/betteroneself?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor))が解説する「オブジェクト指向の基礎」の動画がとても分かりやすかったので、個人のメモがてら共有します。

動画の再生リストは以下でご覧になれます

なお、動画は全部で12本あるのですが、どれも6~10分ほどでサクッとみることができます。
この記事は自分のメモがてらでかなり端折っていますが、動画では図も交えて分かりやすくなっているので、全編見てみることをお勧

元記事を表示

Javaの開発環境  ~JDK(Java Development Kit)~

#Java Development Kitとは?
日本語でjava開発キットと呼ばれています。Javaの開発に必要な各種ツールが入ったアプリケーションです。このJDKにはJavaコンパイラとJava仮想マシンが入っています。

-Javaコンパイラ :Java用のファイルにプログラムを変換する。
-Java仮想マシン :Java用のファイルを読み取り実行する。

#Javaにおけるプログラミングとは?

プログラムというのは一般的に、まず、人間語で元ネタ(ソースコード)を作ります。
人間語で書かれたプログラムの元ネタファイルは「ソースファイル」です。
#↓

次にコンパイル(編集)という作業を通して、コンピュータが分かる形に変換します。
#↓
これでコンピュータさんは、プログラムの内容を理解できるようになりました。
あとは実際に動かします。
#↓
いろいろと端折りましたが、これが、プログラムができるまでの流れです。

プログラムを作るときには、コンパイルしてくれるやつ(コンパイラ)が必要です。
他にも、必要なものや、あると便利なものが、あれやこれやとあります。

以上を踏まえてJav

元記事を表示

[Spring Batch] ItemWriter内でJPARepositoryを使用してデータの更新を行う

# はじめに
Spring BatchのChankモデルではDBからデータを一括で取得するReader, 取得したデータに対しビジネスロジックを追加するProcessor, DBへデータの更新を行うWriterの3層構造になっています。WriterにSQLを渡してデータの永続化を行う方法では、同時に2テーブルの更新ができないので、今回Writerで2つのテーブルの更新を同時に行う方法を記述したいと思います。

# シナリオ
実際の例題があった方が書きやすいので…
例えば、とあるサービスの会員申請フォームから新規会員登録の申請情報を格納するテーブル`registration`と
会員テーブル`user` を用意して、`registration`からビジネスロジックを加えて`user`へ一括INSERTをすることを考えます。
めちゃめちゃシンプルにテーブルは

`registration`テーブル(会員登録申請テーブル)

“`
user_name, // ユーザの名前
status  // 処理ステータス(未処理0, 完了1, エラー9)
“`

`user`テーブル(会員

元記事を表示

デスクトップマスコットを作ってみる。【マスコットの表示編】

# 初めに
この記事は以下の記事で作成していた内容と同じですが、
作成中に方針を変えたため、別記事としています。
[JavaFX+Kotlinでデスクトップマスコットを作ってみる。【マスコットの表示編】](https://qiita.com/urado/items/140293b94cac2424dc02)

上記ではJavaFXとKotlinで作成していましたが、
マスコットアプリ作成のライブラリとして公開する際に、
依存関係が増えないようにするため、javaのみで実行できるように変えています。

そのため、以降の記事からはJavaFXもKotlinも出てきません。
(ライブラリとしてリリースされた内容をKotlinで使用することは可能なはず)

ということで、似たような内容にはなると思いますが、行ってみましょう!

#環境
環境も変わってます。

* windows10
* Eclipse 2019-12 (4.14.0)

# プロジェクトの作成
Eclipseを起動したら、パッケージエクスプローラを右クリックでプロジェクトを作成しま

元記事を表示

デスクトップマスコットを作ってみる。【マウスの操作編】

# 初めに
前回の記事ではマスコットの表示と反転までを作成しました。

今回はマウスで動かせるように処理を追加していこうと思います。
JavaFXで行っていた時と異なり、マウスイベントについて実装を変える必要があったので
そのあたりが中心になります。

# MouseListenerの関数型インターフェース化
JavaFXで作成していたころはFxmlにイベントを定義していましたが、
今回からはSwingを使用しているため、同じようにはいきません。

JFrameのマウスイベントを設定するためには**MouseListener**インターフェースを
実装する必要があります。

このインターフェースにはマウス操作の必要なメソッドがずらっと定義されています。
これは関数型インターフェースではないため、ラムダで記述できないのです。

マウスイベントごとに実装クラスを作成したり、何かしらの条件分岐を作れば
実現可能と思いますが、めんどくさい・・・

悩んだ自分はどうしたかというと、こうしました。

“`java:JDIMouseClicked.java

@Functional

元記事を表示

JavaとJavaScriptの違い

#JavaとJavaScriptの違い

まずJavaとJavaScriptは全く違うプログラミング言語です。そもそもこの二つの言語は違う目的で使われます。

#Javaとは

javaは環境に依存せずに開発を行えます。そしてJavaはシステム開発、Web開発、アプリケーション開発と、使える場面が多岐にわたり、さまざまな開発に利用されています。

#JavaScriptとは

Webページの見栄えをよくしたいユーザーが使用して、主にデザインや簡易的な処理をブラウザ上のみで行えるようにした言語。

JavaScriptの特徴は、あまりプログラミングの知識もなく、開発環境がそろっていなくても手軽に始めることができる点です。

# 具体的にどう違うか?

#1 開発した会社が違う

そもそも開発した会社は違うのでその目的や文法、利用される分野も異なります。

#2 目的が違う

Javaは「Write Once, Run Anywhare(一度プログラムを書けば、どんなハードウェアでも動作する)」ことを目指して開発されました。

JavaScriptは、容易に開発できる手軽さと素早さを求めて

元記事を表示

OTHERカテゴリの最新記事