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

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

Selenium DOM要素をホバー&クリックする方法

## Seleniumを使用してDOM要素をホバーしてからクリックする方法について明記します。

SeleniumはWebサイトやWebページの閲覧を自動化することができます。
今回は、抽出したDOM要素をホバーしてからクリックする方法について明記します。
要素をホバーすることでプログラム上、`マウスカーソルがDOM要素に重なっている状態`を表現します。

“`qiita:Java
import org.openqa.selenium.interactions.Actions;

public static void autoHoverClick(WebDriver driver, WebElement element){
Actions act = new Actions(driver);
act.moveToElement(element).perform(); // 指定したDOM要素をホバーする(hover)
element.click(); // DOM要素をクリック
}

“`

元記事を表示

たったこれだけ!チーム開発でコードフォーマット忘れを防ぐ方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122958/37d8e44e-07cb-355a-809b-25bf16a3b198.png)

# はじめに

**「コードフォーマットが適用されておりません。」**
こんな指摘をした人、された人。いるのではないでしょうか?
今回はコードフォーマットを**CIツール**で実行し、開発者はフォーマッターの実行をしないような仕組みを紹介します。

# この記事を書こうと思った動機

**お客様指定のコードスタイルのある規約があるプロダクト**において以下の問題に直面し、結果的に工数が増大したため。

:star: **ケース1. ローカルで「コードフォーマッター」が適用されずにPull Requestを出すケース**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122958/4e6534c9-9f34-1a71-6865-0ddd34e1b0

元記事を表示

Javaでディープラーニングを実装してみた

ディープラーニングをスクラッチから実装して理解するアプローチの書籍としては、『[ゼロから作るDeeplearning](https://www.oreilly.co.jp/books/9784873117584/)』が有名ですが、同じ趣旨の『[ディープラーニングの数学](https://www.nikkeibp.co.jp/atclpubmkt/book/19/273470/)』という書籍がとても分かりやすかったので、[Pythonのコード](https://github.com/makaishi2/math_dl_book_info)を[Javaで実装](https://github.com/kinmojr/math_deeplearning_java)してみました。

Javaは機械学習不毛地帯(というかデータサイエンス領域がPythonの独壇場?)ですが、Javaで機械学習のロジックを理解したいという奇特な方がいれば参考にしてください。

オリジナルと同様にできる限りライブラリを使わず、スクラッチで実装しました。
(実行速度の問題で行列やベクトルの演算部分はcommons mat

元記事を表示

SpringBootで日付の相関チェックをする

#概要
SpringBootで複数項目を比較してバリデーションを行う方法(相関チェック)をまとめる。

#コード
まず、ユーザから日付の入力を受け取るエンティティクラス。

“` java
package com.sample.Form;

import com.sample.Annotation.DayCheck;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.time.LocalDate;

@Data
@DayCheck //(1)
public class SearchLogForm {
@NotNull(message = “日付入れてね^^”) //(2)
private LocalDate startDate;

@NotNull(message = “日付入れてね^^”)
private LocalDate endDate;
}
“`

解説
(1)->このあと作成する自作のアノテーションをクラス全体に付与。
(2)->そもそも日付が入力され

元記事を表示

Java Powerpointにフッタを挿入

 

今日はJavaでPowerpointにフッタを挿入する方法を紹介します。Spire.Presentation for Javaというライブラリを使ってPowerpointにフッタを簡単に挿入することができます。

下準備

1.E-iceblueの公式サイトからFree Spire. Presentation for Java無料版をダウンロードしてください。

f:id:lendoris:20210120151857p:plain

Java  PowerPoint パスワード設定と解除

Spire.Presentation for Javaを使ってPowerPointのファイルにパスワード設定することができます。今回はPowerPointにパスワードを設定・解除する方法を紹介していきます。

下準備

1.E-iceblueの公式サイトからFree Spire. Presentation for Java無料版をダウンロードしてください。

f:id:lendoris:20210120151857p:plainフィボナッチ数列の初歩メモ

・フィボナッチ数列

**フィボナッチ数列**は、イタリアの数学者レオナルド・フィボナッチが考えた「[ウサギ算](https://talavax.com/usagizan.html)」から導かれる数列です。この数列は、自然界の現象に数多く出現し、ヒマワリの種の[配列](https://talavax.com/array.html)にも**フィボナッチ数列**の法則が働いているといわれている。

n番目のフィボナッチ数をFnで表すと、Fnは再帰的に

“`jsx
F0 = 0
F1 = 1

Fn+2 = Fn + Fn+1 (n≧0)
“`

で定義される。

1番目と2番目の値を足すと3番目の値になる。
言い方を変えると、ひとつ前とふたつ前の値を足した数が次の数となる。

・実際に書いたコード

“`java
public class TryJava0120 {

public static void main(String[] args) {

int f0, f1, fn;

f0 = 0;
System.out.println

Java基礎 ファイルの読み書き

## FileWriter、FileReaderを使ってファイルを読み書きする

まずファイル名を指定し、Fileオブジェクトを生成します。
それをもとにキャラクタストリームである「**FileWriter**」「**FileReader**」を使って、char単位で読み書きを行います。

ちなみにキャラクターストリームを使用すると、文字コードが自動的に変換されるので、ファイルが保存されているOSの文字コードを意識することなく入出力を行えます。

以下のコードは、「text.txt」というファイルを生成し書き込みを行ったのち、
そのファイルの中身を読み込んで出力しているというプログラムです。

“`Main.java
import java.io.*;

public class Main {
public static void main(String[] args) {
try (FileWriter text1 = new FileWriter(new File(“text.txt”));
FileReader text2 = new FileReader(new

Oracle Autonomous Database 21c へJDBC Thin接続してみてみた

Autonomous DatabaseではTransport Layer Security (TLSv1.2)を使用するセキュアな接続が要求されます。 JDBC Thinドライバを使用するJavaアプリケーションには、Oracle WalletまたはJava KeyStore (JKS)が必要です。
ということで、[JDBCコード・サンプル](https://github.com/oracle/oracle-db-examples/tree/master/java/jdbc/ConnectionSamples)から[DataSourceSample.java](https://github.com/oracle/oracle-db-examples/blob/master/java/jdbc/ConnectionSamples/DataSourceSample.java)と[UCPSample.java](https://github.com/oracle/oracle-db-examples/blob/master/java/jdbc/ConnectionSamples/UCPSa

意外と知られていない。SpringBoot のもう一つのPlatformTransactionManager

意外と知られていない。SpringBoot のもう一つのPlatformTransactionManager
それは:org.springframework.data.transaction.ChainedTransactionManager です。

使用するイメージ

“`java
@Bean(name = “chainedTransactionManager”)
public ChainedTransactionManager transactionManager(@Qualifier(“primaryDs”) PlatformTransactionManager ds1,
@Qualifier(“secondaryDs”) PlatformTransactionManager ds2) {
return new ChainedTransactionManager(ds1, ds2);
}
“`

“`java
@Transact

MySQL workbenchでレコードを削除したらjavax.persistence.EntityNotFoundExceptionが発生

###環境
Spring Boot 2.4.0
java 1.8
thymeleaf 3.0.11
Spring Security 2.4.0
MySQL 8.0.22

###現象
MySQLWorkbenchで「いらんなぁ」って思ったレコードを消去しました。
`Delete row`でぽんと消しちゃったんですね。

そしたらシステムにログインできなくなりました。

別にしようとしてたログインとは関係ないレコードなんですけどね。

また元に戻せば大丈夫ですが、AutoIncrementがあるので、
1. AutoIncrementを外す
2. idを指定するinsertする
3. AutoIncrementをつける

ってめんどくさいことをしないと戻せない。

前にもやったんですけど、解決策がわからず前に進まなかったので、とりあえずめんどくさいけど上のやり方をしました。

でもまたあとから見て不要だと思ったので削除しようってやったら、「またかよ・・・」

これからもあるかもしれないので、ちょっと調べました。

###解決策
https://stackoverflow.com/que

プログラミングで使われるなんちゃらケースってのを整理してみた

プログラミングのときに使われる「~~~ケース」ってやつを、整理してみます。

#キャメルケース

複数の単語をつなぐときに、先頭の単語の頭文字は小文字、2語目以降は頭文字を大文字で書くというルールです。

“`
hello world -> helloWorld
programing language -> programingLanguage
osaka city -> osakaCity
“`

利用例

・Javaのメソッド名や変数名

#スネークケース

複数の単語をつなぐときに、単語同士を「_(アンダーバー)」でつないで書くというルールです。

“`
hello world -> hello_world
programing language -> programing_language
osaka city -> osaka_city
“`

利用例

・リレーショナルデータベースのテーブル名やカラム名

#パスカルケース

複数の単語をつなぐときに、単語の頭文字を大文字で書くというルールです。

“`
hello world -> Hel

Jersey – What is Difference Between bind and bindAsContract in HK2?

Great explain.

https://stackoverflow.com/questions/56262240/difference-between-bindascontract-and-bind-in-hk2

SpringBootでログイン中のユーザーのUserDetailsクラスを継承したクラスの情報を取得したい

###環境
Spring Boot 2.4.0
java 1.8
thymeleaf 3.0.11
Spring Security 2.4.0

###実現したいこと
ログイン中のユーザーのUSERDETAILSを継承したクラスの情報を取得したい。

###いろいろ試してなんとか実現
ほぼ丸一日かかりました。というかちゃんとSpringBootを理解していないのだとは思いますが、いろんなサイトを見て試してみてなんとかうまく行ったので、記録として残しておきます。

###USERDETAILSを継承しているクラス

“`java
Tenantsクラス
Staffクラス
“`

###ログイン認証
MyUserDetailsServiceクラスのloadUserByUsernameメソッドで、返すクラスを分けています。

“`java:MyUserDetailsServiceクラス
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 引数がnul

2021年、最近のJavaに浮いた話題がない (ポエム)

*ポエムです。

[Software Development Trends in 2021 – ソフトウェア開発トレンド予測記事](https://qiita.com/e99h2121/items/89c047f3c1852f257ff5)をせっかく頑張って読んだので、他にも2021年版的な某かをまとめた。

Developer Roadmaps
https://roadmap.sh/
[The 2021 Web Developer Roadmap](https://levelup.gitconnected.com/the-2020-web-developer-roadmap-76503ddfb327)
2021年版に更新されているようだ。

[What are your plans to read/learn in 2021?](https://dev.to/deveconomics/what-are-your-plans-to-read-learn-in-2021-3nkj)
に記載されている以下は便利かもしれない。無料ツール・リソース50。
[50 free tools an

line-bot-sdk-java 自社サービスユーザーとLINEユーザーのアカウント連携

[line-bot-sdk-java](https://github.com/line/line-bot-sdk-java)を使用した、自社サービスの既存ユーザーアカウントとLINEユーザーのアカウントの連携手順についてメモ。
`※記事内のソースは例外処理等記述してないので、注意。`

[サンプルソースコード](https://github.com/try0/line-bot-java-sample/blob/main/line-bot-java-app/src/main/java/jp/try0/line/bot/sample/app/resource/WebhookResource.java)

[アカウント連携のシーケンス](https://developers.line.biz/ja/docs/messaging-api/linking-accounts/#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E9%80%A3%E6%90%BA%E3%81%AE%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%

RHEL/CentOSでの暗号化ポリシーで、Javaのセキュリティ設定が変わるという話

# What’s?

Red Hat Enterprise Linuxでは、システムの暗号化ポリシーを設定できます。

[システム全体の暗号化ポリシーの使用](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)

この内容で、Javaのセキュリティ設定も変わりますよ、という話です。

# 環境

CentOS 8で確認してみます。

“`shell
$ cat /etc/redhat-release
CentOS Linux release 8.3.2011
“`

使用するJavaは、OpenJDK 8とします。

“`shell
$ java -version
openjdk version “1.8.0_275”
OpenJDK Runtime Environment (build 1.8.0_275-

Lombokの@Accessorsについて

@Accessors:getter/setterをカスタマイズするためのアノテーション
       @Getter/@Setterなどと一緒に使う
       オプションは “chain” “fluent” “prefix” の3種類

### 環境
Java : 1.8
Lombok : 1.18.16
(SpringBoot : 2.3.7)

## setterのメソッドチェーン化

`@Accessors(chain = true)`でsetterをメソッドチェーン化する

“`java
user.setName(“Tom”).setAge(24);
“`

のように連続して記述できる

<実際に生成されるコード>

“`java
public User setName(final String name) {
this.name = name;
return this;
}
“`

<ポイント>
つけるのはクラスでもフィールドでも可、ただしどちらに付けても**クラス内に一つでも存在すると全フィールドに適用される**

## getter/setterを

InputStreamをStringに変換したい

必要になるたびにぐぐるのに疲れたので自分用のメモとしておいておきますね(´・ω・`)

`InputStream`をすべて読み込んで`String`に変換したい場合、おおよそ以下のように書いておけば大丈夫です。

“`java
public static String readAll(InputStream in) throws IOException {
byte[] b = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
return out.toString();
}
“`

また`String`に変換したい`InputStream`の文字コードがUTF-8ではない場合、`ByteArrayOutputStream.toString(Charset charset)`を利用すればよい

初心者が1から始めるJava開発-Vol.1- eclipseセットアップ編

今回はJava開発を1から始める初心者向けの投稿をしたいと思います。

Javaの記事はいつか書きます(自学のために)。

———————————
**Javaの初心者向けおすすめ本**