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

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

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

元記事を表示

Twitter検索ツール開発日記(1)

初めまして。Louchuraです。プログラマを名乗るにはあまりにもひよっこですが、Qiitaにはお世話になる機会が多いので備忘録や開発日記などをつけていければと思い始めました。
さて、今やろうと思っているのはJavaを用いてTwitterを分析するためのツールです。
(なぜJavaか?専門学校でやっているのがJavaなので)
正直この手の取り組みは初めてなのですが、具体的には特定期間、指定の言葉に関してどんなワードがツイートされているかを知るためのアプリを作れたら、と思っております。
というのも、私は趣味でインターネットのカルチャーを研究しているんですが、特定の期間トレンドというよりも、特定の期間においてある特定のワードがどんな認識をされていたのか知りたいっていう時が多々あります。
であるならば、特定の期間、ワードにまつわるツイートを検索してみて、ある言葉がどれくらい含まれているか調べれば良いんじゃ無い、と。
例えば芸能人にしても、その芸能人がなんである期間トレンド入りしてたのか、トレンド欄を見るだけだと分かりにくいけど「オリコン」っていうワードと一緒にツイートされていればその期間その

元記事を表示

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

元記事を表示

Eclipseワークスペース新規作成方法

# ワークスペースを新規作成する

Cドライブ直下に新しいフォルダーを作成。
階層が深くなると正常に動かなくなることがある。
名前はなんでも。workspaceなど。
小文字スタート、スネークケース。

![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1605855/5da699f3-8a41-d5ea-7557-1f832ee6c718.png)

# Eclipseを起動する

前回使用していたワークスペースが選択された状態で起動されるので、
参照を選択して、さきほど作成したフォルダを選択する。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1605855/e11bdc11-96bc-e783-fd0b-6e16f2e6a3e7.png)

![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

[Java] 配列の書き方がスッキリわかる記事

配列の書き方がいろいろあって、混乱したので自分用にまとめました。

# この記事の対象読者

以下のコードが構文エラーになる理由がわからない人

“`java
int[] ary;
ary = new int[]
ary[0] = 1;
ary[1] = 2;
ary[2] = 3;
“`

このエラーの理由がわからない場合は、この記事を読めば頭が整理されてスッキリすると思います。
# 結論

配列を定義して使用するためには、以下の3つのステップが必要になります。

– 配列の宣言
– 配列の生成
– 要素の初期化

3番目の「要素の初期化」はなくてもエラーにはならないけど、
わかりやすいコードにするためにも、明記することが推奨されてます。

# 配列の宣言

まず最初に必要なのは、配列の宣言です。

こんなやつ。

“`java
int[] ary;
“`

“`java
int ary[];
“`

aryという変数名で配列を宣言してます。

上記はどちらも同じ意味です。
お好みでどうぞ。

また、intのところをStringやdouble等、他の型にすることもできま

元記事を表示

動画で学ぶJHipster (6) fakerの削除

# 参考動画

# fakerの削除
(動画の6:00ごろ~)
データを自動生成してくれるfakerですが、(動画の流れで)削除します。

削除する方法は、
`src/main/resources/config/application-dev.yml`の、以下の部分のfakerを削除して、

“`
liquibase:
# Remove ‘faker’ if you do not want the sample data to be loaded automatically
contexts: dev, faker
“`
下記のようにします。

“`
liquibase:
# Remove ‘faker’ if you do not want the sample data to be loaded automatically
contexts: dev
“`

さらに、`./mvnw clean`を実行します。すると、H2 databaseに入ってい

元記事を表示

むずむずしたJavaコード

# むずむずしたJavaコード
普段Javaをつかった開発に従事させていただいてますが、
読む機会のあったコードの中で、おこがましいですが
「ううう、こう書いてもいいのでは」とむずむずすることがありました。

今回はそういったむずっとくるコードを改善するコードを記載できればと思います。

## foreach
“`java
class Member {
private String name;
private int age;
// …AllConfigConstructor,getter,setter
}

List members = List.of(
new Member(“Tom”, 21)
, new Member(“Gomez”, 19)
, new Member(“Ame”, 10));

Map teens = new HashMap<>();
members.stream().forEach(member -> {
if (member.ge

元記事を表示

Basic operation of NIO Buffer classes

There are 4 internal indicators (capacity, limit, position, remaining) in Buffer classes, example below shows the change of these indicators.

“`java
import java.nio.Buffer;
import java.nio.ByteBuffer;

public class BufferTest {

public static void main(String[] args) {
ByteBuffer buf = ByteBuffer.allocate(8);
System.out.println(“[new buf]”);
printBufferInfo(buf);

buf.put((byte) 1).put((byte) 2).put((byte) 3);
System.out.println(“[put 3 elements]”);
printBufferInfo(buf);

for (i

元記事を表示

(JAVA勉強用メモ)4. 制御構造

## for文に関するtips
“`java
for (int i = 0, j = 0; ; ) { } // 型が同じなら複数の変数を宣言できる
for (int i = 0; ; i++, System.out.println(“JAVA”)) { } // 更新文で複数の処理を実行できる
“`

## 拡張for文内の変数
拡張for文で要素を格納する変数は一時的なものなので、変数の参照先を変更しても集合には影響しない。

“`java
String[] ary = {“A”, “B”, “C”};

for (String str: ary) {
str = “X”;
}

for (String str: ary) {
System.out.println(str); // -> ABC
}
“`

元記事を表示

【雑談】あえて今、20年前のJavaを自由に語る

# はじめに

「10年前の技術」に関する記事。
こんなテーマなら、さらに20年前の話から始めて、私の思い出話を語ろうかなと思う。

https://qiita.com/official-events/1e99fc384200c38548fd

この記事では、私が知っている時代の**「Java」**を自由に語る。

語ろうとしている年代(1990年代後半)、私は当時小学生であり、当然SEなんて仕事はしていなかったが、密かに**「システムエンジニアになりたい」**という夢を抱いていた。

そんな私にとってJavaは、**「プログラミング言語として学んだ2番目の言語」**であり、
長い期間きちんと独学していた言語でもあるので、思い入れがたくさんある。
当時からしてみれば、**オブジェクト指向**や**ガベージコレクション**、**AWT/SwingなどのGUIライブラリ**~~(なお今は死語)~~は非常に画期的な機能の一つであった。

当時は**「Javaは文法的にもかっちょいいし、Cよりは遅いけど色々ソフトウエアが作れる言語なんだぜ~」**なんて世間の風潮だったわけ。
実際、当時は**

元記事を表示

Java11の時代に実装されたSpring BootのアプリケーションはJava17でもworkするのか

## これはなんですか
俺はJava11をやめるぞジョ○ョー!

長いから結論を先に書いておきます。

**つこてるライブラリがものによってはworkできない。**

## 諸元
### Java
* https://jdk.java.net/17/
* JDK 17 **Release-Candidate Builds** (2021-08-06)
* arch: macOS/x64

### PC
* Darwin bb.local 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64 x86_64
* MacOS Big Sur version 11.5.2

### Spring Bootその1(軽めのやつ)
* Spring Boot 2.5.0
* 実装されたJavaのclass及びinterface 40個くらい
* Dependencies

“`
[INFO] +- org.springframework.boo

元記事を表示

OTHERカテゴリの最新記事