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

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

Spring Cloud OpenFeign でサーバ間通信処理のサンプルを作ってみた。

## Spring Cloud OpenFeign とは
Springで簡単に通信処理を実現できるツール

## サンプルのシステム構成図
・サーバ情報
Server①:localhost:8080
Server②:localhost:8090
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951197/a98f44b7-0b39-47e3-c84e-6ef3d1b73085.png)
#### 実行内容
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951197/9a0966a2-ca32-a47c-6ccc-4373e0e4ca23.png)
「localhost:8080/api/hello」をブラウザーで表示すると「Hello, World」と表示。
Server①がServer②に「Hello,」という文字を渡して、Server②の処理内で「Hello, World」に加工。

元記事を表示

OpenJDK コミッターになれました

2022年9月20日付で OpenJDK のコミッターになることができました。
協力してくださった方々に感謝申し上げます。

これからコミッターを目指す方のために、私の例を記載します。

# OpenJDK での役割
OpenJDK では、Contributor, Author, Committer, Reviewer の役割があります。後者の方が権限が高いです。

Contributor 修正を提案するためには Oracle Contributor Agreement を承諾する必要があります。個人として、または会社として承諾が必要になります。個々のケースによって状況が異なるため、詳細は公式ページを確認してください。https://openjdk.org/guide/
Author 2件以上修正が採用された後プロジェクトリーダーにメールで依頼すると Authorとして登録されます。Author になると JDK Bug System のユーザーがもらえるので、自分で問題を登録す

JavaでPDFに1行または多行テキスト透かしを追加する方法

PDFの透かしは、その内容の下または前にテキストまたは画像を配置することによって、所有者を識別する、機密性を示す、またはPDFファイルの状態を示す手段として機能します。この記事では、無料の[Spire.PDF for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)を使用して、Javaで**PDFに1行または複数行のテキスト透かしを追加する方法**、および透かしの位置、不透明度、サイズ、および角度を設定する方法を紹介します。

– **[PDFに1行のテキスト透かしを追加する](#pdfに1行のテキスト透かしを追加する)**
– **[PDFに複数行のテキスト電子透かしを追加する](#pdfに複数行のテキスト電子透かしを追加する)**

## 【依存関係の追加】

> **この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml フ

ByteBuffer#getInt()でBufferUnderflowExceptionが出るときの対処法

# 2byteの16進数を整数にしたい

Jpegのメタデータのセグメント長を取得したかったのですが、思いもしなかったところでハマりました。

“`java
byte[] bytes = new byte[]{(byte)0x03,(byte)0x1e} // これから798を求めたい
ByteBuffer.wrap(bytes).getInt(); //BufferUnderflowExceptionが発生
“`

## javaのIntは32bitの符号付き整数
つまり`byte[4]`です。

上のコードでは`byte[2]`です。ByteBuffer#getInt()は4byte取得しよとします。僕はここで自動で0x00で埋めてくれると勝手に思ってました。

## getShort()を使う
`ByteBuffer#getShort()`はshort型なので2byteです。これで動きます。

## 4byteになるまで埋める
~~これが最適解かはわかりませんがとりあえず動きます。~~
3byteのときはこの方法が良いと思います。

“`java
byte[] tmp =

Open Libertyを試してみる

# What’s?

Java EE/Jakarta EEのアプリケーションサーバーである、Open Libertyをちょっと試してみたいということで。

Open LibertyのGetting startedの流れをなぞりつつ、簡単なJAX-RSとCDIを使ったアプリケーションを動かすところまでやってみようと思います。

そもそもOpen Libertyとは?というところも見ていきたいなと。

# WebSphere

まずは、WebSphereから。

以下のページを見ると、「WebSphere Traditionalランタイム」と「WebSphere Libertyランタイム」の2種類があるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309669/6a54e354-e1d0-7ae3-f19f-e3a2a0dc45bc.png)

https://www.ibm.com/jp-ja/cloud/websphere-application-server

WAS N

Python,Ruby,PHP,Java,JavaScript,PerlのPDF作成の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのPDF作成の比較

# Python

https://qiita.com/godan09/items/13866970972bf3a1c243

# Ruby

https://qiita.com/inoue9951/items/4498e5d130702d884352

# PHP

https://qiita.com/one_punch_man/items/bf140d4300195577dd3d

# Java

https://qiita.com/iceblue/items/a059c99ef1c17226a02a

# JavaScript

https://qiita.com/shuhei_sakiyama/items/ef68d49b7199d50a853b

# Perl

https://perlzemi.c

eclipse警告”assignment to variable xxx has no effect”についての覚書き

ええと、入門者向けテストにありがちなクイズだと思いますが、以下のJavaコードがあった時、aが増えないステートメントはA~Fのどれでしょうか。
“`java
public class IncTest {
static int a;
static int b;
public static void main(String[] args) {
a++; //A
a=a++; //B
a=(a+=1); //C
a=a+1; //D
a=++a; //E
b=a++; //F
System.out.println(a);
System.out.println(b);
}
}
“`
正解はBですね。Javaの仕様では、上記のうちBの文a=a++;のみ、aのインクリメントが意味を持ちません。後置インクリメントa++は代入操作の後に行われることになっていますが、代入先もaなので、インクリメント前の値でアサインが完了してしまい、文の判定としてはインクリメント前のaに戻される(もともとのaが残る)ことになります。上記の実行結

【Java】IntelliJ IDEAで環境変数を設定する方法

# はじめに
今回は、環境変数の設定について調べたことをまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
以下内容のアウトプット

– IntelliJ IDEAで環境変数を設定する方法
– application.propertiesでシステム環境変数を扱う方法

# 開発環境
– Java 17.0.4.1
– Spring Boot 2.7.4
– IntelliJ IDEA

# この記事の内容
1. 前提
2. 環境変数を設定する
3. application.propertiesの記述を変更する

# 1. 前提
リモートリポジトリにプッシュするため、`application.properties`の以下内容を環境変数に置き換えたい。

“`application.properties
# 現状
spring.datasource.url = データベースのURL
spring.datasource.username = ユーザー名
spring.datasourc

Excelでコメントを挿入、編集、削除する方法(Java)

Excelのコメントは、任意のセルに挿入できるメモです。例えば、数式の説明、提案、他の人のためのメモなど、さまざまな目的に使用することができます。コメントを挿入すると、ユーザーは必要に応じてそれを編集したり削除したりすることができます。この記事では、無料の[Free Spire.XLS for Java API](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html)を使用して、Javaで**Excelにコメントを挿入、編集、削除する方法**を説明します。
– **[Excelにコメントを挿入する](#excelにコメントを挿入する)**
– **[Excelでのコメントを編集する](#excelでのコメントを編集する)**
– **[Excelからコメントを削除する](#excelからコメントを削除する)**

## 【依存関係の追加】

> **この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven

M

PDFのレイヤーの追加・非表示・削除(Java)

PDFレイヤーは、PDFドキュメントのためのインタラクティブな機能です。レイヤーは、テキスト、画像、その他の要素を追加することができる独立した重ね合わせページと見なすことができます。レイヤーは名前を持つことができ、ユーザーはこのレイヤーが見えるか見えないかを変更することができます。この記事では、無料のFree Spire.PDF for Javaを使用して、**PDFドキュメントにレイヤーを追加、非表示、削除する方法**を説明します。

– **[PDFにレイヤーを追加する](#pdfにレイヤーを追加する)**
– **[PDFのレイヤーの可視性を設定する](#pdfのレイヤーの可視性を設定する)**
– **[PDFからレイヤーを削除する](#pdfからレイヤーを削除する)**

## 【依存関係の追加】

> **この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven

Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にア

PHPerが”プロになるJava”を読んでJavaに入門する【データ構造編】

# はじめに
普段PHPを業務で使っているエンジニアがJavaを勉強するために
[プロになるJava](https://gihyo.jp/book/2022/978-4-297-12685-8)を読んで、その中でもデータ構造や型の部分で個人的にPHPと違うなと思った個所や特に覚えておいた方がいいなと思った個所をまとめました。

# 4.2.2 基本型と参照型
> String型だけ大文字で始まっていて、他の型は小文字で始まっています。
> int型やdouble型など小文字で始まっている型を**基本型** (または**プリミティブ型**)といいます。
> 全部で8つありますが、ここに挙げた4つは必ず押さえておきましょう。
> では基本型ではないString型は何になるかというと、**クラス**というものになります。
> クラスはJavaで機能をまとめるための基本的な仕組みです。クラス以外にも基本型ではない型はありますが、そういった基本型ではない型を**参照型**といいます。
> クラスであるString型の値には、toUpperCaseメソッドなどのメソッドを呼び出すことが出来ました。

Java で Unicode の Fullwidth や Halfwidth を判定する方法

ICU4J ライブラリーを使って Unicode の East Asian Width プロパティーを取得することで、Unicode としての全角・半角を判定することができます。

“`java
import com.ibm.icu.lang.CharacterProperties;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.lang.UProperty;
import com.ibm.icu.util.CodePointMap;

public class EastAsianWidthChecker {
private static final CodePointMap eastAsianWidthMap =
CharacterProperties.getIntPropertyMap(UProperty.EAST_ASIAN_WIDTH);

/**
* @return {@link UCharacter.EastAsianWidth#NARROW NARROW},

Java で全角・半角・どちらでもないを判定する方法

Windows-31J でエンコードしたときのバイト数を基準として全角・半角を判定する方法を紹介します。エンコードできない場合は半角でも全角でもないものとします。

## 実装

以下のメソッドは、入力が半角文字だと1、全角文字だと2を返し、どちらでもない場合には例外 CharacterCodingException を投げます。

“`java
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;

public class Windows31JWidthChecker {
private static final CharsetEncoder encoder = Charset.forName(“windows-31j”).newEncoder();

/**

Wordドキュメントにワードアートを挿入するまたは読む方法(Java)

ワードアートは、テキストに塗りつぶし、輪郭、影などのデザイン要素を追加することができる一連のテキストスタイルです。ワードアートを挿入することで、テキストを目立たせることができます。Microsoft Wordでドキュメントを作成する際、ワードアートの挿入が必要になることがあります。この記事では、Free Spire.Doc for Javaを使用して、JavaでWordドキュメントにワードアートを挿入または読み込む方法について説明します。

– **[JavaでWordドキュメントにワードアートを挿入する](#javaでwordドキュメントにワードアートを挿入する)**
– **[JavaでWordドキュメント内のワードアートを読み込む](#javaでwordドキュメント内のワードアートを読み込む)**

### 【依存関係の追加】
> この方法は、無料のFree Spire.Doc for Javaが必要ですので、先にjarファイルをインポートしてください。
#### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加するこ

JavaとGridDBによるパーセプトロンニューラルネットワーク

多層パーセプトロンとは、入力データを適切な出力に対応させるフィードフォワードの人工ニューラルネットワークモデルを指します。

多層パーセプトロンは、有向グラフのノードを何層にも重ねたもので、どの層も次の層と完全につながっています。

今回は、パーセプトロンのニューラルネットワークモデルをJavaとGridDBで実装します。このモデルの目的は、住宅価格が住宅価格の中央値より上か下かを予測することです。

完全なソースコードと `csv` ファイルは、Github リポジトリで見ることができます。

## データ説明

使用するデータセットには11個の特徴があります。データセットの最初の10個の属性が入力の特徴となります。これらの入力はそれぞれ家の特徴を記述しています。

データセットの最後の属性は、これから予測する特徴で、住宅価格が中央値より上か下かを記述します。値が1であれば、住宅価格が中央値より高いことを意味し、値が0であれば、住宅価格が中央値より低

Java でナイーブベイス分類器を実装してみた

成果物

https://github.com/YmBIgo/Easy_Naibebayes_Java

## ナイーブベイス分類器とは?

https://analysis-navi.com/?p=3108

ここらへん見てもらえば分かりますが、文章のカテゴリ分けなどをするためのアルゴリズムの1つです。
上の記事では形態素分析のような手法を用いていますが、ここでは n-gram を使って実装しました。
learn で n-gram の要素がどれくらいの文書で出現したかを biWords に入れて、judge で

![スクリーンショット 2022-09-29 1.22.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92647/65d1ba42-5a6d-dba6-1c25-9d2c601398ff.png)

の式に当てはめた代入をしています。
小数点が小さくなる計算を double では出来なかったので、BigDecimal というクラスを使いました。BigDecimal では 足し算なども

SpringBootでh2コンソールに接続ができない

# SpringBootでh2 databaseをインメモリで使用時、h2-consoleからdb接続ができなかった

エラー内容: Database “mem:testdb” not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-214] 90149/90149

環境
IDE: STS3.9.7RELEASE
JAVA: 8
他は下記設定ファイルに

## 事象発生時の設定ファイル
### application.properties

ファイル内容(クリックで展開)

“`
// コンソール使用有効
spring.h2.console.enabled=true
// コンソールパス
spring.h2.console.path=/h2-console
// トレース有無
spring.h2.console.settings.

【SpringSecurity】認証を行うカラムを変更する

# はじめに
SpringSecurityを使ったログイン機能を作成した際に、SpringSecurityの認証に関してネット上で調べていたら、ほとんどがDBのカラム名が「username」と「password」で行っているものばかりで、どうにか「userid」カラムで認証できないかと思い調べて実装できたのでメモ(簡単に)

# 結論

“`:AccountRepository.java

-public interface AccountRepository extends JpaRepository {

public Account findByUserid(String userid);
}

“`

これでとりあえずはuseridカラムでの認証可能。
「findBy + カラム名(最初は大文字)」で好きなカラム名にできる。

まだ実装段階なので不具合などの可能性もありますが…

# 前提
SpringSecurityの実装済み。

Javaプロジェクトを1から作る(FWなし)

# はじめに
Java に触り始めて早5年、そこそこの期間が経ったわけですが基本的に保守開発がメインであるため、新規にプロジェクトを作るなどはあまり行ってきませんでした。また、自己学習で多少手は動かしてきたものの、アウトプットをしてこなかったこともあり、久々になにか作ろうか、となっても、1から調べ直しながら進めています。

わからないことは調べて理解できるのであれば頭に残す必要はないと考えていまして、これまでもこれからもその価値観は変わらないと思うのですが、流石にここまで Java に触れてきて、インフラ周りはともかく java プロジェクトの立ち上げすらサクッとできないのはちょっとなぁと。

重い腰を上げて、1から調べたことをこちらにアウトプットしていけたらと。
※今回はプロジェクト作成記事の初回ということで、細かい用語も説明していけたらと。

## 環境

OS: macOS Catalina version10.15.7
メモリ: 8GB
Java Version: 11
IDE: eclipse 2020-12 M1(日本語化済み)

今回はフレームワーク(FW)は使用しない方

Python,Ruby,PHP,Java,JavaScript,Perlのデータベースの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのデータベースの比較

# Python

https://qiita.com/ku_a_i/items/9c68e8aed3c2c066bc60

# Ruby

https://qiita.com/mzmz__02/items/0f73224dd77fe7d24c1b

# PHP

https://qiita.com/mpyw/items/b00b72c5c95aac573b71

# Java

https://qiita.com/zaburo/items/b8c2ab8db7b972d614e7

# JavaScript

https://qiita.com/mzmz__02/items/6e85c1210824d55f64f2

# Perl

https://perlzemi.com/blog/2017013014