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

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

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

[もう怖くないSpring × Junit5 ~中編~](https://qiita.com/sho-yamashita/items/ec763cbb1924552ad112)からの続き

## モックを使ったテスト
### Mock?モック?ハンモック?
モックとは、あるクラスのメソッドが呼ばれたときの返却値を予め決めておくことで、
そのメソッドの処理をいちいち再現せずに、テストしたいクラスのテストを可能にしてくれる仕組み

![もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263851/bb195ff4-fe32-9aa4-a040-7fd7b4bcf91f.png)
引用)https://to-education.hateblo.jp/entry/2019/06/20/210558

### Mockito
![もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

Apache Log4j 脆弱性「CVE-2021-44228」について調べたこと

# はじめに
* 2021年12月よりアナウンスされている Apache Log4j の脆弱性「CVE-2021-44228」について個人的に調べたことを記載します。

# Apache Log4j について
* The Apache Software Foundation が提供している Java のロギング用ライブラリです。
* 2021年時点では、Apache Log4j 1.x を継ぐ、Apache Log4j 2 でアップデートが行われています。
* Apache Log4j 2 では、log4j2.xml というログフォーマットやログレベル等の定義ファイルをもとに、プログラムでログを出力します。

# CVE について
* MITRE により掲載されている、サイバーセキュリティ関連の脆弱性情報の一覧が該当します。
* 世界各国のサイバーセキュリティ製品やサービスで脆弱性の影響の有無がアナウンスされる場合に、CVE の番号が使われています。

# CVE-2021-44228 について調べたこと
* スコア
* NVD (アメリカ国立標準技術研究所が管理する脆弱性情報

元記事を表示

AtCoder Beginner Contest 005をやった(Java)

AtCoder Beginner Contest 005をやった。
~~C問題、、、できるかな。。。再起処理だと思うんだけど。。。~~
普通にループさせました。ただ一番最初からループさせたらパンクしそうな気がしたので、ちょっと工夫しました。

##[A](https://atcoder.jp/contests/abc005/tasks/abc005_1)
整数値を求めて、割り算する問題

“`java
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());
System.ou

元記事を表示

JavaでBase64符号化・復号化を省メモリに行う

## 概要
Java 8からjava.util.Base64が導入されてBase64符号化・復号化が標準ライブラリで可能になった。
しかし、一般的な実装だと符号化前データの数倍のメモリが必要になるため、大きなデータを符号化・復号化したい場合にはメモリ使用量の問題が生じる。そこで標準ライブラリによる省メモリなBase64符号化・復号化の実装を考えた。

## 実装

“`Base64Sample.java
public class Base64Sample {

private static final int T_LEN = 16 * 1024;
private static final int B_LEN = T_LEN * 3 / 4;

// 符号化
public static void encode(Path src, Path dst) throws IOException {
try (InputStream is = Files.newInputStream(src);
OutputStre

元記事を表示

Windowsのファイル名で禁止されている記号を置換する

## 実行環境
– Eclipse IDE for Enterprise Java Developers
– OS: Windows 10
– Java version: 11.0.9

## コード
“`Main.java
public static void main(String[] args) {
// Windowsでファイル名として禁止されている文字は\/:?”<>|
String src = “\\_/_:_*_?_\”_<_>_|.txt”;
Pattern illegalFileNamePattern = Pattern.compile(“\\\\|/|:|\\*|\\?|\”|<|>|\\|”);
String fileName = illegalFileNamePattern.matcher(src).replaceAll(“-“);
System.out.println(“src :”+src); // \_/_:_*_?_”_<_>_|.txt
System.o

元記事を表示

jenkins swarm clientの自動起動・停止

# 1.起動用シェルファイルを作成
/home/ec2-user/swarmd.sh

“`
#!/bin/bash
cd /home/ec2-user
java -jar /home/ec2-user/swarm-client-3.29.jar -executors 2 -disableSslVerification -master http://172.31.34.77:8080 -name swarm-node -username admin -password xxxxxx -mode exclusive &
“`

# 2.unitファイルを作成
/etc/systemd/system/swarmd.service

“`
[Unit]
Description=swarm connection daemon
After=network.target

[Service]
SuccessExitStatus=143
Type=forking
User=ec2-user
Group=ec2-user
ExecStart=/home/ec2-user/swarmd.sh
E

元記事を表示

jenkins jnlp agentの自動起動・停止

# 1.起動用シェルファイルを作成
/home/ec2-user/jnlpd.sh

“`
#!/bin/bash
cd /home/ec2-user
java -jar agent.jar -jnlpUrl http://172.31.34.77:8080/computer/jnlp/jenkins-agent.jnlp -secret xxxxyyyyzzz -workDir “/home/ec2-user” &
“`

# 2.unitファイルを作成
/etc/systemd/system/jnlpd.service

“`
[Unit]
Description=jnlp connection daemon
After=network.target

[Service]
SuccessExitStatus=143
Type=forking
User=ec2-user
Group=ec2-user
ExecStart=/home/ec2-user/jnlpd.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Re

元記事を表示

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

[もう怖くないSpring × Junit5 ~前編~](https://qiita.com/sho-yamashita/items/eb1dad4139b322ca722f)からの続き

## JUnitのいろんな機能
### 例外の検査
例外のチェックが簡単にできます
![もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263851/3ca43357-c0a6-813f-251d-67b566c8ba3a.png)
### 複数の値で同じテストする(パラメーター化テスト)
複数のテストを作らなくても一つのテストで境界値テストできます
![もう怖くないspring×Junit5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263851/9bcfeb20-15e1-3e89-7ede-2794f4b68f45.png)
![もう怖くないspring×Junit5.png](http

元記事を表示

ソフトウェア演習D:NetBeans12.5でjsonを使えるようにする

こんにちは岩手県立大学とか、岩手の人たちAdvent Calender18日目の記事です。

先日、ソフトウェア演習Dの課題でGsonを利用してjsonを使いました。
個人的にGsonを導入するのに詰まったので、NetBeans12.5にGsonの導入について書きたいと思います。

## NetBeansにGsonを導入する
### Gsonとは
Gsonとは、Googleが提供するライブラリでJSONデータとjavaオブジェクトを変換することができます

Gsonライブラリの使い方:https://sites.google.com/site/gson/gson-user-guide#TOC-Overview
Gson GitHub:https://github.com/google/gson

#####今回使用するGsonは外部ライブラリなので以下の手順で追加する必要があります。

注意:私の環境では日本語化プラグインを入れていないので`日本語(英語)`で表記しま

元記事を表示

TALON(ローコード)でSAP S/4 HANAとPostgreSQLを連携して業務システムをサクッと作ってみた

この記事は [CData Software Advent Calendar 2021](https://qiita.com/advent-calendar/2021/cdatasoftware) の17日目の記事です。

#はじめに

こんにちは、株式会社HOIPOI 代表取締役の古関と申します。ローコード開発ツールTALON(タロン)という製品を開発・販売しています。CData社とは2017年にお付き合いが始まりました。最初に製品を知った時、TALONとCDataドライバの相性の良さに驚いた記憶があります。現在もTALONを使っているお客様からは色々なドライバの利用希望を頂いています。

今回はTALON上で、CDataドライバを使ってSAP S/4 HANAと、PostgreSQL14を連携して業務システムチックな物をサクッと作ってみました。
SAPと直接連携するとなるとかなり敷居が高いイメージですが、想像よりもはるかに簡単に出来てしまったのでポイントを含めて書いていきます。

今回紹介する製品は全て無料で試せますので是非チャレンジしたい人はやってみて下さい!
※SAP S/4 H

元記事を表示

Keycloak に独自の REST API を追加する

## はじめに

Keycloak には拡張機能を配置することで独自の REST API を追加できる仕組みがあります。
公式リポジトリにあるサンプルで拡張機能のビルド・デプロイの一連の流れを試したので、その手順を紹介します。

## 環境

“`zsh:terminal
% mvn –version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /usr/local/Cellar/maven/3.8.4/libexec
Java version: 17.0.1, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home
Default locale: ja_JP, platform encoding: UTF-8
OS name: “mac os x”, version: “11.2.3”, arch: “x86_64”, family: “mac

元記事を表示

JavaBeansについて

この記事は、[シアトルコンサルティング株式会社 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/seattleconsulting)の18日目の記事です。
こんにちは、シアトルコンサルティングの小泉です。
##はじめに
今回はJavaBeansについてまとめました。
実務の中でBeansを使用する中でBeansの役割って何なんだろうと疑問に思い調べてまとめてみました。

##ゴール
JavaBeansの役割について理解できるようになる。
## JavaBeansとは
JavaBeansとは、Java言語で再利用可能な部品(モジュール)化されたプログラムを作成するための仕様。また、その仕様に則って開発された部品化されたJavaプログラム(略してBeanとも呼ばれる)。※IT用語辞典より

簡単にいうと、データを保存しておくための倉庫のようなものです。
例えば、ユーザーから送られてきた氏名や年齢などの情報を個人ごとにそれぞれ整理して保存しておくための仕組みがJavaBeansです。

## JavaBeansの3

元記事を表示

JavaはWordで脚注と文末脚注を読む方法

脚注は文章の内容を補充し説明するときに役に立ちます、Wordを使用している中よく見える機能の一つです。今回の記事はWordで脚注と文末脚注を読む方法を紹介します。
注:この記事では、Wordライブラリー(Java Free Editionの場合はFree Spire.Doc)を使用して読み取ります。公式Webサイトからライブラリーを**[ダウンロード](https://www.e-iceblue.com/Download/doc-for-java-free.html)**し、ファイルを解凍して、JavaプログラムをlibフォルダーのSpire.Doc.jarにインポートできます。または、Mavenリポジトリを介してインストールおよびインポートします。

jarインポートの効果は次のとおりです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/68131eee-3be4-4344-f9de-1cb555feab80.png)
テストドキュメントは、脚注と文末脚注を含めて次のとおりです

元記事を表示

AtCoder004をやった(Java)

AtCoder004をやった。
~~C問題のちに追記予定。。。間に合わない、いろいろと。~~
C問題追記(12/17)

##[A](https://atcoder.jp/contests/abc004/tasks/abc004_1)
借金の算出方法を参考に実装

“`java
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();

System.out.println(scan.nextInt() * 2);
}
}
“`

##[B](https://atcoder.jp/contests/abc004/tasks/abc004_

元記事を表示

Minecraft:Bedrock Editionのパケットを解析するためのクライアントソフトウェアを開発した話

はじめましてHmy2001です。

**約3年前**にMinecraft:Bedrock Editionのパケットを解析するためのクライアントソフトウェアを
開発したのですが、そこでいろいろあったことを紹介したいと思います。

クライアントソフトウェアはJavaで開発し、[GitHub](https://github.com/hmy2001/MCBEClient)にて公開されています。

https://github.com/hmy2001/MCBEClient

#Minecraft:Bedrock Editionのパケット
Minecraft:Pocket Edition v0.15.0 alpha (リリース日時:2016年6月 **とても昔!**)から
パケットの暗号化機能が追加されました。
楕円曲線暗号とAESアルゴリズムを用いています。

楕円曲線ディフィー・ヘルマン鍵共有(ECDH)でお互いの公開鍵を共有し、
得られた共有鍵を用いてAESアルゴリズムでパケットを暗号化し通信するといった感じです。

#Javaの採用
楕円曲線暗号とAESアルゴリズムが言語ライブラリでサポー

元記事を表示

Apple Silicon M1でMacOSDnsServerAddressStreamProviderがロードできずエラーとなる

# はじめに
KINTOテクノロジーズでは開発端末としてWindows、Macを選択することができ
Macに関してはIntelチップ搭載のMacBook Proが貸与されます。

2021年はApple M1 Pro、Maxチップ搭載のMacBook Proが発売されたこともあり
開発端末にApple Silicon M1が増えることに開発者一同熱い眼差しを向けています。

今回は開発端末の選択肢に増えるであろうApple Silicon M1の技術検証時に発生したエラーのお話です。

# 事象
KINTOテクノロジーズのいくつかのシステムではSpring Boot 2.5.0が利用されています。
今回技術検証をしたシステムは、テストコード内で外部サービスのAPIを利用する部分でテスト効率化のために
Spring WebFluxを利用していました。

Spring WebFluxではデフォルトでNettyが利用されますが、Spring Boot 2.5.0ではバージョンを指定しない場合、
io.netty:netty-resolver-dns-native-macos:4.1.63.F

元記事を表示

マイクロサービスをdatadogで分散トレースする

この記事は [ZOZO #4 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/zozo) 17日目の記事になります。

今回はマイクロサービスのdatadogの分散トレースに挑戦したのでそれについて記載しようと思います。

構成は以下になります。

|![Untitled Diagram.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645177/c4d608de-cd9a-dbaf-c420-5a9036df169b.jpeg)|
|:-:|

処理の流れは以下になります。

1. Classic ASPからJava API【A】の登録APIを呼ぶ
1. Java API【A】はDynamoDBに処理開始のレコードを登録する
1. Java API【A】はKinesis Data Streams(以下、KDS)に登録情報を渡す
1. Java API【B】はKDSから情報を取り出し、処理を行う
1. Java A

元記事を表示

Javaを使って四角形をキーボード入力で動かしてみた

#はじめに
この記事はこの記事は、[SLP KBIT AdventCalendar2021](https://adventar.org/calendars/6706) 17日目の記事です。
Javaを使って画面に映した図形をキーボードからの入力で動かす処理を作ってみました。

Javaで2Dゲーム作ってみたいなと思い、とりあえずキーボードでキャラクターを動かせるようにしてみようという経緯で作りました。

#目次
[・プログラムの作成](#プログラムの作成)
[・コード](#コード)
[・まとめ](#まとめ)

#プログラムの作成

##環境
Java 16
Eclipse 4.19.0

##機能
画面に表示した四角形をキーボードの[W][A][S][D]で動かします。

#コード
“`Java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

元記事を表示

Apacheのhttpclientを利用してServiceNow REST API( Table API)をJavaでたたく方法

# 前記事
https://qiita.com/seino-ta/items/fe04d5cf71f126583774

ここではJavaのプレーンなものでGETを実行しました。

# Apacheのhttpclientを利用してGETを実行

“`Java
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;

public class

元記事を表示

Spring Bootで簡単なWebアプリを作ってみたい!【CRUD処理を実装】

# 【はじめに】
この記事は[【マイスター・ギルド】本物の Advent Calendar 2021](https://adventar.org/calendars/6579)の12日目の記事です。
ためになる技術的な記事から、猫ちゃんに癒やされる記事、健康オタクになれる記事まで、バラエティに富んだ記事が投稿されているので、ぜひチェックしてみてください!

# 【経緯】
こちらの記事は前記事の[Spring Bootで簡単なWebアプリを作ってみたい!【準備からGet・Post表示まで】](https://qiita.com/takuch/items/3dc30caf45af06a01f41)の続きになります。
Javaの入門書である「スッキリわかるJava入門」を読み終わったので、なにかWebアプリを作ってみたいと思ったのがきっかけです。
ちょうど業務でSpring Bootが使われていたので勉強を始めたのですが、チュートリアルが少なく苦労しているので、備忘録的にまとめようと思っています。
この記事だけで、CRUDの実装はできるようになっていますが、前記事で説明した内容は省略していま

元記事を表示

OTHERカテゴリの最新記事