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

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

AtCoder003をやった(Java)

AtCoder003をやった。
C問題解けそう、後で追記しよう。

##[A](https://atcoder.jp/contests/abc003/tasks/abc003_1)
さいころの大きさは与えられた入力値分の面があるということ、
各面の金額は、面番号 * 10000(円)

“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
Scanner scan = new Scanner(System.in);
ArrayList list = new ArrayList();

list.add(Integer.parseInt(scan.nextLine()));

double kyuryo = 0;
for(int i

元記事を表示

もう怖くないSpring × Junit5 ~前編~

# はじめに
テスト?なにそれ、美味しいの?
テスト?俺の実装完璧だし。テストなんていらん。
テスト?Junit?なんかコワイ。。。((((;゚Д゚))))ガクガクブルブル

っていう人もそうでない人もJunitと触れ合いましょう。

## テストクラスの作り方
eclipseの例
### 1.作りたいテストを選ぶ
![20190725もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263851/95e73472-c4f3-d348-f9b9-4d6ae8835f2c.png)

### 2.テスト作るウィザード立ち上げる
![もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263851/03fc3588-24e5-6a16-a2b1-524cb4c3a223.png)

### 3.テストフォルダを選択する
![もう怖くないspring

元記事を表示

【Spigot】魔法を作る

この記事は [Minecraftサーバ開発・運営 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/minecraft-server-dev) – 16日目の記事になります。

# 概要

Minecraft Java Editionのサーバーソフトウェアとして最も有名なSpigotで動作するプラグインで簡単な魔法を実装する記事になります。

# 設計

今回作るプラグイン 『MagicPole』 の設計はこんな感じで立ててみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666481/4f977125-c873-ee94-87ff-938f7c9712d3.png)

“`md
・コマンドではなく専用のクラフトレシピを用意する
・魔法の詠唱には10秒のディレイを用意する
・魔法を使うにはマナ、もとい満腹度を要求する
・魔法を詠唱すると **HPブースト・スピード** が付くようにする
“`

また要件

元記事を表示

クイックスタート WildFly

#はじめに

Advent Calendar 16日目です。
[2018年末のAdvent Calendar](https://qiita.com/advent-calendar/2018/nri-openstandia)にWildFly の記事を書いてから3年が経ちました。

https://qiita.com/tama1/items/829be5aacd81637ae73a

その時に使用したのが WildFly-14.0.1.Final で、2021年12月1日現在の最新バージョンは WildFly-25.0.1.Final なので、3年の間に11もバージョンが上がったことになります。

その間、どのような変化があったか、ざっと挙げてみると以下のようになっています。見出しレベルでしか書きませんので、詳細を知りたい方は公式サイトのリリースノートを見てください。

:information_source:長くなるので折りたたんでます。▲をクリックすると広がります。

WildFly更新履歴概要
WildFly-1

AWS SDK for Javaのバージョンごとのクライアントの設定

[ZOZO Advent Calendar 2021](https://qiita.com/advent-calendar/2021/zozo) の16日目の記事です。

# AWS SDK for Java
AWS SDK for JavaにはAWSのサービスを利用するためのJava APIが用意されています。

その中で接続タイムアウトやリクエスト再試行などのクライアントの設定を変更することができます。
AWS SDK for Javaには、バージョン1(v1)とバージョン2(v2)があり、アップデートする際に使用するそれぞれのバージョンの主なクラスとメソッドの対応をまとめました。

# v1、v2オプション対応表
以下のようにメソッドチェーンを使用して設定することを想定しています。

“`
new ClientConfiguration()
.withConnectionTimeout(connectionTimeout)
.withClientExecutionTimeout(clientExecutionTimeout)
.withRequestT

【Java】設計未経験者に読んでほしい「千鳥格子模様」の作り方3選

# はじめに
最近まともにプログラミングをしておらず、Javaの使い方や勘どころを思い出す目的で
リハビリのために簡単な模様を作ってみます。

## ■この記事のターゲット
– プログラミング経験はある程度経験あるけど設計は未経験

そんな方に向けた記事です。

この記事では目新しい技術はありませんが、
どのように作るか、なぜそう作るかに着目しながら模様の作り方を書いていきます。

※前置きが長いのでソースと結果だけサクッと見たい方は[「準備」](#準備)から読み進めてください。

## ■この記事を通して伝えたいこと

– 重要なのは目的に合ったやり方ができているかということ
– 設計をする場合は特に、「何をするか」ではなく「なぜそうするか」を考えてほしいということ

本記事を通して、これからシステム開発をしていく中での
設計の進め方やマインドセットの部分で少しでも参考になれば幸いです。

## ■「千鳥格子模様」とは?
↓↓こんな模様↓↓
![図1_千鳥格子B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

単純な処理で思わぬ性能問題が出た話

Listに重複がある場合に出力するという、Java初心者練習用のようなプログラム。

“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
List list = Arrays.asList(“yamada”, “nakamura”, “aoki”, “yamada”, “shimizu”, “nakamura”);

Iterator it = list.iterator();
List list2 = new ArrayList();
while(it.hasNext())
{
String name = (String)it.next();
if( list2.contains(name)){
System.out.println(n

ServiceNow REST API( Table API)をJavaでたたく方法

# ServiceNowのREST APIをJavaで実行
ServiceNowのREST API ExplorerではJavaでの方法がなく、キックに結構困ったのでここに残しておきます。
誰かの参考になれば幸いです。

“`Java
import java.io.*;
import java.net.ProtocolException;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Base64;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.n

JAVA Springメソッド

備忘録として残します。
人に説明したりするのが僕にとって良いアウトプットになっているのでもし間違っていましたらご指摘宜しくお願い致します。

今後も追加予定です。

##equalsメソッド

equalsメソッドとは、文字列の比較を行うことができる命令文です。

比較といえば基本データ型である整数の比較があります。

基本データ型の整数比較とは異なり、equalsを使用する際は、参照データ型の文字列比較になる点が異なります。

eaualsメソッドでは、一致するときにtrueを返し、一致しない場合にはfalseを返します。

##アプリケーションプロパティズのcontext-pathについて。

“`
server.servlet.context-path=/spring_training
“`

HTML内でパスを通すときに以下のように

“`
/spring_training/lesson01_08/login
“`
spring_trainingのルート設定をしているということになるので、フォルダの前に明記する必要がある。

##コントローラーの命名

コントローラー

Javaを使用してHTMLをPDFに変換する方法

今回の記事でJavaを使用してHTMLをPDFに変換する方法を紹介します。変換することには、以下の2点に注意する必要があります。

##変換プラグインを使用します
対応するプラグインは、さまざまなシステムに応じてダウンロードできます。ダウンロード先:[windows-x86.zip](https://www.e-iceblue.com/downloads/plugins/java/plugins-windows-x86.zip)、[windows-x64.zip](https://www.e-iceblue.com/downloads/plugins/java/plugins-windows-x64.zip)、[macosx_x64.zip](https://www.e-iceblue.com/downloads/plugins/java/plugins-macosx-x64.zip)、および[linux_x64.zip](https://www.e-iceblue.com/downloads/plugins/java/plugins-linux-x64.zip)。ダウンロードした後、

MyBatis利用時に発生した例外から抜け出した話

はじめに

O/Rマッパーの一つであるMyBatisを使いQiitaのような質問投稿アプリを作成しています。
そこで悩んだ例外処理の発生原因について、忘備録兼同じことで悩んでいる方の手助けができればと思い投稿しました。
認識が異なる点があればご指摘いただけると嬉しいです。。。

org.apache.ibatis.binding.BindingException

①リポジトリクラスにアノテーションが抜けていた

“`
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo.repository.UserMapper.insert
at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235) ~[mybatis-3.5.7.jar:3.5.7]
“`

こちらの例外は、ユーザー情報を入力

AtCoder002をやった(Java)

AtCoder002をやった。
初めてC問題解けた。

##[A](https://atcoder.jp/contests/abc002/tasks/abc002_1)
大小の比較です。正直者を出力してあげてください()

“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
Scanner scan = new Scanner(System.in);
ArrayList list = new ArrayList();

list.add(scan.nextLine());
if(Integer.parseInt(list.get(0).split(” “)[0]) < Integer.parseInt(list.get(0).split(" ")[1]))

【Spring】@Autowiredはコンストラクタインジェクションで使おう!

この記事は、[シアトルコンサルティング株式会社 Advent Calendar](https://qiita.com/advent-calendar/2021/seattleconsulting) 2021の15日目の記事です。

こんにちは、シアトルコンサルティングの 羽田野 と申します。
この度、弊社 シアトルコンサルティング株式会社 でAdvent Calendarに参加することになりました。

TeamTech Move the WorldをMissionに掲げ、日々全力で業務に取り組んでおります!
少しでも興味を持って頂けたら下記のサイトを覗いてみてください!

コーポレートサイト

ホーム


Wantedly
https://www.wantedly.com/companies/seattleconsulting
よろしくお願い致します!

## はじめに
今回はSpringフレームワークで用いるアノテーション`@Autowired`でのインジェクションの種類について見ていきます。
記事の対象としてはJavaは少

勤怠管理の作成を目指す+α:Day2

 早起きに失敗したけど、とりあえずやっていきます!

やったこと
———-
https://eng-entrance.com/java-get-time

・上記サイトを読み進めて実践する

勤怠に関係しそうな整理としては。。。
朝の時間が足りなくなり、Dateクラスの実践&理解(中途半端)で断念。

・Udemyの動画進める
めっちゃ駆け足だけど、理解追い付いてないけどなんとか

明日やること
————-

【Elasticsearch】メモリ32GBの境界を越えてゆけ

# はじめに

オークファンの@iwatake255です。
開発部 データソリューションチームでリードエンジニアをやっております。
`Elasticsearch歴2リットル`の初心者ですがElasticsearchについて書きたいと思います。

さて、オークファンでは膨大な量のオークションデータを保存・検索するためにElasticsearchを採用しております。

Elasticsearchでは自分が使用するJVMヒープメモリサイズを変更することもできるのですが、世間ではこのメモリサイズを32GB以上に設定すべきではないという`神話`が語り継がれてきていました。

しかし弊社サービスにおける性能チューニングの中で、JVMヒープメモリサイズを32GB→64GBに変更しただけで検索性能が劇的に向上したケースがあり、本記事ではこの`神話`の妥当性について検証してみようと思います。

# Elasticsearchの「32GB神話」について

## 公式ドキュメント等
かつて(Elasticsearch 7.10まで?)は`約32GBを超えないように`JVMヒープメモリサイズ(XmsおよびXm

Spring MVC × MayaaテンプレートでHello World

# Spring MVC × Mayaaテンプレート

MayaaテンプレートはSeasar2の拡張機能として2000年台に登場したHTMLテンプレートエンジンです。
プログラマーとデザイナーの作業分担を意識した思想があり、主にMayaaファイルとHTMLファイルに分けられて画面が実装されます。

Seasar2としては2016年9月にEOLを迎えていますが、Mayaaテンプレート自体のサポートは2021年12月現在も継続しています。
元々Seasar2の一部として登場していますが、テンプレート自体はフレームワークに依存していないため、その他のMVCフレームワークでも動作させることが可能みたいです。

https://github.com/seasarorg/mayaa

Servlet APIのバージョンも4.0まで対応しているみたいなので、比較的新しいバージョンのAPサーバー上でも動作が可能です。
JavaについてもLTSバージョンに対応しているので、Springとの相性としても問題はなさそうです。

## Spring MVC側での設定実装

Mayaaテンプレートを動作させるた

ラムダ式を用いて、拡張for文の可読性を上げる。

#問題
Listをループする際に便利な拡張for文ですが、どうしても冗長化してしまい
可読性に欠けることが多くある為、ラムダ式を用いて冗長化をなるべく防ぎたいと日々思っています。

例えばListを普通に拡張for文でループする場合は

“`
List list = new ArrayList<>();
list.add(“赤”);
list.add(“青”);
list.add(“黄色”);

for(String color: list){
System.out.println(color);
}
“`

これをラムダ式に置き換えると、、、

“`
List list = new ArrayList<>();
list.add(“赤”);
list.add(“青”);
list.add(“黄色”);

list.forEach(color -> System.out.println(color));
“`

上記の場合
①:「color」の部分にループする際に代入する変数を定義
②:「System.out.println(color)」の部

[英語が苦手な人向け]英語でのググり方(JavaのScannerクラスのコンストラクタにSystem.inを入れた場合にCloseするべきか?問題を添えて)

ググって解決しづらかったこと Advent Calendar 2021 14日目の記事です。
すみません遅刻しました (_ _。)

## はじめに

Q 英語が苦手です。 英語でググれません。無理です。
A そこにGoogle翻訳があるじゃろ。

英語苦手でも以外と検索できますという事を伝えたかった

[茶番を飛ばして結論読みたい方](#補足まとめ)

## 茶番

後輩くん)うーん?
先輩さん)どうしました後輩くん?
後輩くん)ちょっとこのコードを見て下さい。

“`java
package test_java;

import java.util.Scanner;

public class App {

public static void main(String[] args) {
var s = new Scanner(System.in);
var input = s.nextLine();
System.out.println(input);
s.close();
}
}
“`
先輩さ

勤怠管理の作成を目指す+α:Day1

 会社から「座学だけで勉強が進む性格していないでしょ? 勤怠管理作ってみてよ」と提案され、全くもってその通りだったので、JAVA SEの取得目標と合わせて進めていこうというログとなります。

 ひとまず、指針を決めにゃダラけ街道まっしぐらなので、今日は簡単な指針を決めるとこから。
 ついでに、その日の計画をその日に立ててもダレたりやらなかったりする甘ったれな性分なので、次の日の目標を立てて消化できたか否かを振り返ろうと思います。

今日やったこと
———
・勤怠管理の前に、打刻を通すことだけを考える必要がある
・打刻を通す前に、ボタンを押したら同じページに時間を出力する
上記から、下記サイトを参考にやってみる
https://eng-entrance.com/java-get-time

明日やること
———-
・上記サイトを読み進めて実践してみる
・勉強としてUdemyの動画を進める

log4jとは

## 勉強前イメージ

apacheくらいしかしらない・・・
脆弱性で話題

## 調査

### log4jとは

正式にはApache log4j といい、オープンソースのJavaプログラム用のロギングAPIになります。
プログラムが正しく動作してるかを確認するために、
規模が大きくなればデバッグツールやロギングツールを使ってプログラムの流れを確認します。
Apacheのサブプロジェクトで、Apache Loggingプロジェクトで開発が進められています。
元々はApache関係なかったですが合流することになったようです。
Java以外の言語でもサポートされているものはあり、PerlやRuby、pythonなどがあります。

### 脆弱性について

JavaにはJNDI(Java Naming and Directory Interface)という
アプリケーションがDNSや [LDAP](https://qiita.com/miyuki_samitani/items/6c5ad9b213f89979da17) を利用するためのライブラリがあります。
Log4jの機能としてJND