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

JAVA関連のことを調べてみた2021年09月18日
目次

Javaプラクティス シーザー暗号

#前書き
Javaで練習してみる。 FizzBuzzができればどんどん実践にという人もいるが
他にないかと思い提案します。
#javaの要素
・ファイル入出力
・ループ
・Javaが用意してくれているメソッドを使用
発展としてメソッド化してパラメータを変更できるようにする。
入力ファイルをもっと複雑にするなどが考えられる。
#前提知識 シーザー暗号
シーザー暗号を使う。以下Wikipediaによる説明
シーザー暗号は単一換字式暗号の一種であり、平文の各文字を辞書順で3文字分シフトして(ずらして)暗号文とする暗号である。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた。

#前提知識 アルファベットからアスキーコードへの変換

“`java
char c = ‘A’;
int code = c;
System.out.println(code);
結果が 65
“`

#前提知識 ファイル 読み込み
https://www.javadrive.jp/start/stream/index1.html

#試作 その1
“`

元記事を表示

Java参照実装ってなに?

### 経緯

Glassfishを初めて触って、

>GlassfishはJavaEEの参照実装である。

の記載に??となったので、

今回は備忘録的に参照実装について書いていく。

:::note warn
あくまで、調べた結果僕が感じた感想です。
:::

### 参照実装ってなに?

参照実装またはリファレンス実装と呼ばれる。

JSR (Java Specification Request)という仕様を具体的に実装したサンプルとなる実装のこと。(?)

先に述べたGlassfishであれば
**JavaEEのサンプル真似てます、インターフェース仕様はJavaEEに則っています**ってことですね。

それのなにがメリットか?

中身がどうであれ、**同等の動きを保証します!!**ということにつながります。

なので、`Servlet API `であれば、`Tomcat`だろうが、`Glassfish`だろうが同じ動きをするってことなんだな。

### おわりに

という、なんとも自己完結しかしていない内容だが、今回はこれで良しとする。ww

規約とかルールってすげーなーー

元記事を表示

UIテスト自動化してみた~発展編~

### 前回

[UIテスト自動化してみた~導入編~](https://qiita.com/KAWAII/items/f7af1611fc497b2df47b)

引き続き、テスト自動化について記載したいと思います。

まずは、エビデンス残しですね。

### エビデンス取得

Junitのように`asertEquals`を使用してもいいね、
web画面を経由しつつPTってのは面白発想かもしれない。

例えば、

“`java
import static org.junit.jupiter.api.Assertions.assertEquals;

// 画面から要素を取得
String name = Selenide.$(“input[name=username]”).val();

// 期待する値かを比較
assertEquals(“jobs”, name);

// もっと簡単にSelenideの機能を使ってもできる!
Selenide.$(“input[name=username]”).shouldHave(Condition.text(“jobs”));

“`

とは

元記事を表示

【頑張れば5分で作れる】Spring Boot + MyBatisで超簡単なCRUD処理のREST APIを作る【VS Code】

CRUD処理のあるSpring Bootアプリを急いで作ったらどれくらい早くできるのか挑戦したところ…
**5分で作ることができました!**

今回はこちらの動画の解説記事になります。
CRUD(Create/Read/Update/Delete)処理をREST APIで実装していきます。

# 開発環境

– Windows 10
– Visual Studio Code
– (↓主な拡張機能)
– Extension Pack for Java

元記事を表示

UIテスト自動化してみた~導入編~

### はじめに

web開発してて、UIテスト面倒な~

これ全部、自動化されたら、楽なのにな~って思ってる開発者は少なくないと思う!

テスト自動化に`Selenide`を使ってみたので簡潔に内容を記載しようと思う。

### Selenide導入

[Selenide公式ページ](https://selenide.org/)

以下、mavenで使用する場合。

“`xml

com.codeborne
selenide
5.24.3
test

“`

### まずはwebサイトを開く

これだけで画面は開けちゃう。

“`java
import com.codeborne.selenide.Selenide;

// yahooを開く
Selenide.open(“https://www.yahoo.co.jp/”);

“`

#

元記事を表示

Java ど初心者メモ①

ど初心者メモ:

2の2乗を8回行う。
public class Main{
  public static void main(String[] args) {
   int x = 1;
   for(int i = 1; i <= 8; i++) {     x *= 2;     System.out.println("2の" + i + "乗は" + x );    }   } } Javaを使えるようになるのだろうか....はぁ....

元記事を表示

GitHubActionsのSelf-hosted runnerで、SpringNativeのビルド時間を短縮する

SpringBootで作っているRestAPIアプリケーションを、SpringNativeでNative化しています。
Native化のハードルとして「ビルド時間が長い」ことが結構ストレスだったりします。

ローカルマシンだと、ビルドが30分近くかかったり、メモリ不足でビルド自体がエラーで落ちたりします。
AWSにビルドサーバー作ってビルド時間の短縮とかをしていたんですが、GitにPushしてビルドサーバーの方でPullしてというのがちょっと面倒。
GithubActionsでCIもしているが、どうにもこうにも遅かったり、メモリ不足でエラーになったりする。

その解決策として「Self-hosted runner」を使って強めのインスタンスでビルド時間の短縮を実現しました。

# 欲しい環境
・SpringNativeでNative-Buildできる環境
・Dockerが使える

# AWSで利用したUbuntuのAMI

時期によって更新されていくので日付の部分は探す際には、違う日付になっている場合があります。

“`
ubuntu-focal-20.04-amd64-se

元記事を表示

Spring Data Jpa Specificationを使って複数条件での検索機能を作る

# 概要
任意の組み合わせ条件で検索できる検索機能を作りたい。
検索条件の組み合わせの全パターンを`Repository`に書いて呼び出し側で分岐すればできるが、分岐祭りになるのでそれはやりたくない。
`findBy`の後ろが動的に変化させられれば解決するのになぁ、と思って調べたら`Spring Data Jpa Specification`を使って動的にクエリーを変化できて超便利だったのでメモ。

# 環境
– Java 1.8
– SpringBoot 2.2.1.RELEASE
– Thymeleaf 3.0.11.RELEASE

# サンプル
開始日と終了日を持つ予約情報を検索する場合のサンプル。

## 画面イメージ
画面のイメージはこんな感じ。
![Inkedsearch-sample_edited_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265229/0350df73-9221-aec0-f047-ccaa15da1e78.jpeg)

– 検索条件は、ユーザーID、氏名、開

元記事を表示

Eclipseプラグイン開発:右クリックしたときのポップアップメニューへ自作アクション追加

#目次
[1.はじめに](#はじめに)
[2.目的](#目的)
[3.注意点](#注意点)
[4.開発環境](#開発環境)
[5.依存関係](#依存関係)
[6.拡張](#拡張)
[7.拡張要素詳細](#拡張要素詳細)
[8.終わり](#終わり)
[9.参考サイト](#参考サイト)

#はじめに
– 大学の卒業研究でEclipseのプラグインを作成した際に調べたことを書き残した記事です
– 自分と同じく研究のツールとしてプラグインを利用したい人や、自身の開発環境をよくするためにオリジナルのコマンドを作りたいという人に役立つ記事になればと思います
– 文章を読み飛ばして画像だけ見た方が直感的でわかりやすいかもしれません

#目的
– **独自のコマンドやアクションをポップアップメニューに追加すること**

実装後の画面は以下のようになります
Qiita:Sample2をクリックすると自作の機能が使えるイメージです

![完成品.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691844/8d6871f

元記事を表示

BRMS(ルールエンジン)を使って爆速でAPIとドキュメント一式を作る

# はじめに
みなさん、BRMS って聞いたことがありますか?私は7~8年ほど前にこういうモノがあることを知って興味を持っていたのですが、なんだか難しそう・・・という先入観があり今まで放置していました\(^o^)/

重い腰を上げて調べてみたところ、あれ?これって・・・メチャメチャ良いやん!!って感じたので、記事にしてみました。

(実際にモノを作るのは爆速ですが、記事が長文になってしまったことを最初にお詫びさせて頂きます・・・?‍♂️)

# BRMS とは
BRMS とは Business Rules Management System の略で、ビジネスルールを管理するシステムです。ビジネスルールとは業務で決まっている規則や判断基準のことで、これらを BRMS に定義して、業務上の判断をさせてしまおうという目論見です(なるほど、わからん)。

詳細は Google 先生に譲るとして、これを導入することで何が美味しいかというと、以下のような恩恵を受けられます。

* ローコードで開発できる
* ロジックが分離できる
* 変更に強くできる
* 可搬性を実現できる
* 各種ドキュメントを

元記事を表示

【LeetCode】アルゴリズム体操 9. Palindrome Number

# 9. Palindrome Number

**問題文**
> Given an integer x, return true if x is palindrome integer.

> An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not.

**超訳**
与えられたint xが回文ならtrueを返してくれよな!
ちな121は回文で、123は回文ちゃうよ。

# 解答
### Stringで確認する
“`java:Solution.java
class Solution {
public boolean isPalindrome(int x) {
String original = String.valueOf(x);
String

元記事を表示

Javaのlogging

#### it depends on! situation
#java.util.logging
java 1.4から提供しているlogging utility
7 levelのloggingを提供している

– SEVERE(highest value)
– WARNING
– INFO
– CONFIG
– FINE
– FINER
– FINEST(lowest value)

“`java
private static final Logger logger = Logger.getLogger(MyApplication.class.getName());

logger.info(Level.INFO, “it is test for {0}”,”log”);
“`

長所:外部ライブラリー使用せず、使える

短所:What means “FINE”? “FINER”? “FINEST”?

#log4j
– thread safe?
– performance に最適化
– ALL, TRACE, DEBUG, INFO, WARN, ERROR and FAT

元記事を表示

(JAVA勉強用メモ)5. 配列の操作

## 配列型変数の宣言
`[]`を使って宣言する。

“`java
int[] ary01; // 型の後でも
int ary02[]; // 変数名の後でもOK
int[][] ary03; // 重ねると多重配列になる。

int[][] ary04[]; // どちらも3重配列
int[] ary05[][];
“`

配列型変数には配列インスタンスを代入するだけであり、
参照先の配列がいくつの要素を扱えるかは関係ないため、
宣言時に要素数を指定することはできない。

“`java
int[2] ary; // <- ×: 要素数の指定はできない。 ``` ## 配列インスタンスの生成 必ず要素数を指定する必要がある。 ```java int[] ary01 = new int[2]; // OK int[] ary02 = new int[]; // NG int[][][] ary03 = new int[2][3][4]; // 多重配列は各次元の要素数を一度に指定できる int[][] ary04 = new int[3][]; // 1次元目の要素数の指定

元記事を表示

Javaで飯食ってるエンジニアがGolangを学んでみる~序章~

とりあえずJavaとの差を意識してメモ書きのように書いてみる。Go→Javaの順
序章と書いたが続くかは不明。。。

社会人になり、弊社に入社してからJavaを学んだのだが、
その時は学生時代に研究で利用していたFortranとの対比で基本的な文法は学んで言った記憶があった。
(やり方がいいかは別)

今回もJavaとGoがいずれも静的型付け言語であることを利用し、
同じことをそれぞれの文法で書いたらどうなるかを実際にメモ書きしてみた感じ。

※Editorじゃないのでミスっていたらすみませんコメントで教えてください
※全部はやってません

#コンソール出力

“`Go

import “fmt”

func main(){

var human string = “TOM”

fmt.Printf(“%sは人間です”,human)
}

“`

“`java

public static void main(String[] args){

String human = “TOM”;

System.out.printf(“%sは人間です”,h

元記事を表示

【SQL】テーブルとレコード(登録処理用)

【SQL】employeesテーブル

テーブルカラム

id・年齢・生年月日・メールアドレス・住所・グループ名

“`sql:CREATE_employees.sql
CREATE TABLE employees(
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(100) NOT NULL,
age INT(3) NOT NULL,
birthDay DATE NOT NULL,
email VARCHAR(100),
address VARCHAR(100),
groupId VARCHAR(100),
PRIMARY KEY (id)
);
“`

レコードの追加(10件)

“`sql:INSERT_employees.sql
INSERT INTO `employees` (
`id`
,`name`
,`age`
,`birthDay`
,`email`
,`address`

元記事を表示

MavenプロジェクトをGradleプロジェクトに変換

# 環境

* OS: Windows 10 Home
* Gradle 7.0.2

# 前提

* Gradleがセットアップ済みであること
* https://qiita.com/yiwa81/items/ccfd6f397a949a0fbe95

# MavenプロジェクトをGradleプロジェクトに変換

* コマンドプロンプトを開き、Mavenプロジェクトのフォルダに移動

* `gradle init` を実行
* 実行例

“`
gradle init

Found a Maven build. Generate a Gradle build from this? (default: yes) [yes, no]

Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2]

> Task :init
Maven to Gradle conversion is an incubating feature.
Get more help w

元記事を表示

Gradleのセットアップ(Windows)

## 環境

* OS: Windows 10 Home

## 対象のGradleバージョン

* Gradle 7.0.2

## インストール

* 以下からアーカイブをダウンロードする
* https://services.gradle.org/distributions/gradle-7.0.2-bin.zip

* アーカイブを展開し、適当なフォルダに配置する
* 例: `C:\Gradle\gradle-7.0.2`

* GRADLE_HOME環境変数としてインストールしたフォルダを設定する
* 例: `GRADLE_HOME=C:\Gradle\gradle-7.0.2`

* Path環境変数に `%GRADLE_HOME%\bin` を追加する

## 動作確認

* コマンドプロンプトを開き、以下のコマンドが実行できることを確認
`gradle -version`

元記事を表示

日付のテストは午後にやろう

`SimpleDateFormat` の `HH` と `hh` は結構な確率で間違えます。
結合テストが軌道に乗ってきた頃に、午後にならないと再現しない謎の不具合が発生します。

“`java:
// 現在日時: 2021-09-15 13:24:56

DateFormat df1 = new SimpleDateFormat(“yyyyMMddHHmmss”);
// => 20210915 *13* 2456

DateFormat df2 = new SimpleDateFormat(“yyyyMMddhhmmss”);
// => 20210915 *01* 2456
“`

面倒なので単体テストでちゃんと検知しましょう。
ということで、午後の日付を入力値にするのがポイントです。

以下はdjUnitでやるときの例。

“`java:
// 現在日時を固定(超てきとう)
MockObjectManager.addReturnValue(Calendar.class, “getTime”, Timestamp.valueOf(“2021-09-15 13:24:56”)

元記事を表示

[paiza]スキルチェック見本問題 Java 偶奇の判定/曜日の判定 (paizaランク D 相当)

初めに

今回2つのスキルチェック問題に挑戦しました。
Dレベルにしては、少し難しく感じました。

:fist:①偶奇の判定

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__mod_step3

“`
長さ N の数列Aが与えられます。
この数列に含まれる偶数の要素の個数と、奇数の要素の個数を答えてください。
“`

解答コード(自作)

paizaの解答と比べるとあまりスマートとは言えませんが・・・
なんとか正解しました。
拡張for文マスターできれば色々できますね。

“`java:

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//与えられる数字をキャッチします。
int n = sc.nextInt(

元記事を表示

Java Excelの背景に色と画像を追加

Spire.XLS for javaは、パワフルなエクセル向けのライブラリであり、いろいろな機能を搭載していますので、とても便利です。今日の紹介は、Spire.XLS for javaを利用してExcelの背景に色と画像を追加することにします。早速、行きましょう!

下準備

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

f:id:lendoris:20210915153544p:plain

元記事を表示

OTHERカテゴリの最新記事