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

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

Azure Container Registry + Jib + Java でアプリを開発する

Microsoft Azure では「プライベートで使えるDocker Container Registry (Docker Hubみたいなもの)」として Azure Container Registry というサービスが提供されています。

本記事ではマイクロソフトが提供する「Azure Container Registry」と、Googleが提供する「Jib」を組み合わせて「Javaアプリ」の環境を構築し、利用する設定をご紹介したいと思います。

設定ファイルを丸ごと用意してありますので穴埋め形式でご利用いただけます。

# フォルダ構成

コンテナにて利用したいスクリプトが src/main/jib/ においてあるものとします。

“`
src/main/jib/app.sh
“`

# 設定ファイル

“`xml

元記事を表示

【AtCoder】JavaでABC224のA,B,C問題を解く!

ABC224のA,B,C問題をJavaで解きました。
備忘録としてまとめておきます。

#A問題『Tires』
問題ページ:[A – Tires](https://atcoder.jp/contests/abc224/tasks/abc224_a)

##入力
S : 文字列(末尾は「er」または「ist」、必ず 2文字以上)

##コード
“`java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();

//文字列の後方一致チェック
if(str.endsWith(“r”))
{
System.out.println(“er”);
}else
{
System.out.p

元記事を表示

Apache POIを利用している際にA1形式でセルを取得したい

Excelではセルの位置を示すにあたって、A1形式を利用することが一般的だと思います。Apache POIを利用している際にA1形式でセルを取得したい場合、`CellReference`を利用するとよいです。

たとえば、以下はAB15のセルを取得するサンプルコードです。

“`java
CellReference cellReference = new CellReference(“AB15”);
Row row = sheet.getRow(cellReference.getRow());
if (row != null) {
Cell cell = row.getCell(cellReference.getCol());
if (cell != null) {
doSomething(cell);
}
}
“`

あるいは`CellUtil`を利用することもできます。

“`java
Cell cell = CellUtil.getCell(CellUtil.getRow(cellReference.getRow(), sheet),

元記事を表示

Apache POIを使って、シートをソートしたい

Excelにはシートをソートする機能は標準で用意されていません。通常はVBAを利用するのですが、VBAにはソート関数がなく、これを自前を用意するのは面倒。そもそもVBAが苦手ということもあり、JavaとApache POIで処理したことがこの記事を書いたきっかけになります。

前置きはさておき、以下は「**src.xlsxのシートをシート名でソートしたものをdst.xlsxに書き出す**」というものです。

“`java
try (Workbook srcWorkBook = WorkbookFactory.create(Files.newInputStream(Paths.get(“src.xlsx”)));
OutputStream dstWorkBook = Files.newOutputStream(Paths.get(“dst.xlsx”))) {

List sheetNames = new ArrayList<>();
for (Sheet sheet : srcWorkBook) {
sheetName

元記事を表示

kotlinのnullについて

## 経緯
kotlinはjavaに比べて、随分とエンジニアに親切になったように思います。
個人的に嬉しいのは所謂null安全です。
これがあることで取り扱いがかなり楽になり、NullPointerExceptionなんて久しく見ておりません。
しかし最近になって知った仕様があったので、自戒を込めて基礎的な部分をまとめてみることにしました。

## なにがあったか
“` Sample.kt
val hoge : Int? = null

if (hoge != null) {
Log.d(“test”, “hoge is not null”)
} else {
Log.d(“test”, “hoge is null”)
}

Log.d(“test”, “hogeStr is ” + hoge.toString())

val fuga = hoge.toString()

if (fuga != null) {
Log.d(“test”, “fuga is not null”)
} else {
Log.d(“test”, “fuga is null

元記事を表示

JDBC・Spring JDBC / JPA・Spring Data・Spring Data JPA・Hibernateの関係性

### 導入

・今までの業務でなんとなく使っていたSpring JDBC、Spring Data JPAらへんの理解があいまいだったので記事にまとめる。


### まず結論

・JDBC…JavaでDBに接続するためのAPI。ResultSetからデータ抜き出すのだるいやつ。
・Spring JDBC…JDBCの使いづらいところを取っ払ってくれたもの。JDBCより断然こっちの方がいい。application.propertiesにDB接続情報定義するだけで接続できるのはありがたい。

・JPA…Java標準のORMの仕様。JDBC系と異なりSQLを自動生成してくれたり、ORMでデータ取得結果をEntityクラスにぶちこんでくれる。
・Spring Data…色んなDBを使いやすくする複数のフレームワークの親玉。
・Spring Data JPA…JPAを使いやすくする抽象クラス/インタフェースを提供してくれる。これはJPAの実装ではない。

✅ JavaでORMの恩恵(Entity間の紐付け等)を存分に授かりたいなら「JPA」を使う。さらにJPAを簡単に使

元記事を表示

HS256のJWS署名検証テスト

# 環境
| | Version |
|:—-|:—-|
|Java| 11|
|Spring Boot | 2.5.6|
|JUnit | 5.7.2 |

# HS256の署名検証
## 仕様
[OIDC 1.0 IDTokenValidation](https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#IDTokenValidation)

HS256のID Tokenは、`client_secret`を鍵として用いて署名されている。

# やり方
ここ([JSON Web Signature (JWS)
Example JWS using HMAC SHA-256](https://openid-foundation-japan.github.io/draft-ietf-jose-json-web-signature-14.ja.html#HS256Example))をお手本にするのが良さそう。

# コード

“`java
@Slf4j
@SpringBootTest

元記事を表示

EJB・EJB3・JPAの関係性

### 導入

hibernate-toolsでリバースエンジニアリングする際に「EJB3」「JPA」「POJO」らへんの単語がでてきたが、関係性がちゃんと理解できなかったので記事にまとめる。


### まず結論(EJB・EJB3・JPAの関係性)

・EJB3は「EJBの上位互換」
・EJBでは「POJOを使えない」 EJB3から「POJOを使える」
・JPAは「EJB3でPOJOを使うために利用されているもの」。JPA単体では1つの技術として独立しており、**EJB3がJPAという技術に依存している**関係性


### JPA

 「JavaでORMを使うための仕様」

・Java Persistence API
・Java標準のORMの**仕様(specification)**
・**実装(implementation)**が別で提供されている。Springはデフォルト実装として「Hibernate」を利用する。
https://stackoverflow.com/questions/41902856/spring-boot-jpa-hibernate-as-de

元記事を表示

クラス名、行番号、メソッド名をタグにセットしてログを出力する (Android Studio + Java)

“`java:Debug.java
package firstlast20180521.utilities;

import android.util.Log;

public class Debug {

static final String SELF_CLASS_NAME = “firstlast20180521.utilities.Debug”;

//引数省略時
public static void print() {
print(“-“); //Log.dのログメッセージが空白であってもログが出力されるように、空白以外の値をセットしている。
}

public static void print(String text) {
StackTraceElement[] trace = Thread.currentThread().getStackTrace();

int length = trace.length;

String className = “”;

元記事を表示

Java: Mockitoでハマった5つの落とし穴とその解決策

[Mockito](https://site.mockito.org/)は、Javaプロジェクトのテストコードを書くときに利用できる優れたライブラリです。

しかし、コードの書き方を間違えると期待通りには動作せず、原因究明に時間を浪費してしまうこともあります。
このため、この記事では、私が過去にハマった落とし穴をまとめました。

以下、執筆時点の最新リリースである、Mockito 4.0.0をベースにしています。

# [InvalidUseOfMatchersException](https://javadoc.io/static/org.mockito/mockito-core/4.0.0/org/mockito/exceptions/misusing/InvalidUseOfMatchersException.html)の発生

テストを実行した際に、下記のようなエラーが出力されることがあります。

“`
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument

元記事を表示

JavaSilverをオンライン試験(監督付き)で受験する前に読んでほしいメモ(Bronze, Goldも可)

#この記事で伝えたいこと(要約)
– 試験中、机にはキーボード・マウス・飲み物しか置くことができない(メモ紙やペンがダメ)
– メモ代わりに[オンラインホワイトボード](https://www.pearsonvue.co.jp/onvue/whiteboard)が使えるが小さくて使いづらい
– チャットベースで対応されるため声出し不要だったがやりづらい

**結論:おそらくテストセンター受験のほうが準備も気持ちも楽**

#事務的なやること
1. Oracleアカウントを作成する
1. CertView(Oracle認定システム)にログインする
1. CertView経由で試験チケットの購入と受験予約をする

ここまではテストセンター受験と共通だと思うので説明はこのくらいにするが、一点だけ。**CertViewのメールアドレスは後から変更ができない。**そのため、会社のメールアドレスで登録する場合は注意が必要だ。
CertView(Oracle認定システム)の詳細については[こちら](https://www.oracle.com/jp/education/certification/m

元記事を表示

未経験からJavaを学び始め、System.out.printlnについて調べてみた。

未経験からエンジニアを目指している30歳。
PHP初級認定試験、LPICレベル1は所持しています。

元記事を表示

Autonomous Database(ATP) に Java(JDBC Thin Driver) で ウォレット無しで接続してみる。

Autonomous Database(ATP/ADW/AJSON) は、従来は Autonomous Database自体が持つウォレットのファイル群を
クライアント側に配置する必要がありましたが、ウォレット無しのTLS接続を許可するオプションが追加されました。

> Update Network Options to Allow TLS or Require Only Mutual TLS (mTLS) Authentication on Autonomous Database
> https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/support-tls-mtls-authentication.html#GUID-3F3F1FA4-DD7D-4211-A1D3-A74ED35C0AF5
>
> About TLS Authentication
> https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-introdu

元記事を表示

【マルチスレッド】syncronizedしなくても良いパターン(Immutableパターン)

↓前回記事

https://qiita.com/kannna5296/items/576385c08e5b770149c1

非同期デザインパターンシリーズの第2弾です。前回は「Single Threaded Executionパターン」を紹介しました。

##参考図書

この本の第2章「Immutableパターン」を基にしています。

##

元記事を表示

Javaのコーディングでお手本探しに役立ちそうなリンクたち

# はじめに
いわゆる「良いコード」や「読みやすいコード」を書くためにお手本が欲しくなる時があると思います.本記事では,こういったお手本を探すときに参考になりそうな検索キーワードやリンクを備忘録も兼ねて残そうと思います.`Java`を題材にしてまとめてみました.

# 「良いコード」や「読みやすいコード」を書く基礎になる指針
「変数名が1文字になるのは避けた方が良いよ」や「`import`文はアスタリスク付きで書かない方が良いよ」といったコードを書く上での指針は基本的にこちらをご参考になさると良いのかなと思います.

https://future-architect.github.io/coding-standards/documents/forJava/Java%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%B4%84.html

「良いコード」や「読みやすいコード」のお手本はこういったコンセンサスの取れたルールみたいなのが基礎になると思いますので,こちらでどんな書き方が良いのか,まずいのかを確認す

元記事を表示

@EqualsAndHashCode

### @EqualsAndHashCode(callSuper = false)
@EqualsAndHashCode
equals, hashCode 自動生成
equals : 二つのObjectの値が一致するか、同等性(equality)を比較する演算子

hashCode : 二つのObjectが同じであるか, 同一性(identity) を比較する演算子

Java beanで同等性の比較のためequalsと hashcode methodをoveridingして使うんだが、

@EqualsAndHashCode Annotationを使ったら自動的にこのメソッドを生成できる。

callSuper 属性を通じて、eqaulsと hashCode メソッド自動生成し親クラスのフィールドまでカバーするかを設定できる。

@EqualsAndHashCode(callSuper = true)の設定し、親クラスのFieldの値も同一であるか確認しfalse(Default)の場合
自身(this)クラスのFieldだけを考慮する。

https://blog.y-yuki

元記事を表示

Amazon CodeGuruを用いて悪しきコードを撲滅したい

## ターゲット
– アプリケーション開発でコードを書いたことがあるひと
– コードレビューしてもらう相手(十分な技術・知識を備えた相手)がいないor 手が空いていない
– コードレビューをしたくても時間の確保が難しい

## はじめに
昨今、従来からあるウォータフォール開発に始まり、アジャイル開発やプロトタイピング開発などソフトウェア開発手法が体系化されたことで、開発スピードとプロダクトの質ともに向上する動きが活発となっています。
しかし、開発スピードとプロダクトの質を担保しようとする際に必ずネックとなるものがあります。

それが**コードレビュー**です。

コードを書いたことがある人は、個人の癖や経験が浅いときに誰しも悪しき習慣がコードに現れてしまう経験があると思います。

そこで、最良なコードレビューと悪しきコード撲滅する方法を考えたいと思います。

## 開発プロセスの体系化とコードレビューの関係
一般的なソフトウェア開発では各工程の粒度を如何にせよ、以下のプロセスを循環させます。
**コーディング → ビルド + テスト → デプロイ → 計測 → 改善**
開発するシス

元記事を表示

Couchbase Lite機能解説:クエリ③ JOIN、GROUP BY、ORDER BY

## はじめに

本稿では、Couchbase Liteデータベースに対するクエリにおける、JOIN、GROUP BY、ORDER BYスタートメント(相当の操作)について、コード例を示して紹介します。

## JOIN

### 用途
JOIN句を使用すると、JOINステートメントで指定された基準によってリンクされている複数のドキュメントからデータを選択できます。

### 例
航空会社の詳細を、航空会社IDでリンクされたルートの詳細と組み合わせて表示します。

“`java
Query query = QueryBuilder.select(
SelectResult.expression(Expression.property(“name”).from(“airline”)),
SelectResult.expression(Expression.property(“callsign”).from(“airline”)),
SelectResult.expression(Expression.property(“destinationairport”

元記事を表示

Couchbase Lite機能解説:クエリ② WHERE句

## はじめに

Couchbase Lite は、SQLと同様に、WHERE句を使用して、クエリによって返されるドキュメントを選択できます。

WHERE句を表現するためには、`Expression`(式)クラスが使われます。WHERE句のフィルタリングを実現するために、任意の数の式をチェーンできます。

## 比較演算子

WHERE句では、条件を指定するために、比較演算子を使用することができます。

以下の例では、`equalTo`演算子を使用して、「type」プロパティが「hotel」に等しいドキュメントを選択しています。

以下は、「type」プロパティの値として「hotel」を持つドキュメントの例です。

“`JSON
[
{
“id”: “hotel123”,
“type”: “hotel”,
“name”: “Hotel Ghia”
},
{
“id”: “hotel456”,
“type”: “hotel”,
“name”: “Hotel Deluxe”,
}
]
“`

以下のコードの、`whe

元記事を表示

Java CSVからのデータを表示させる(spring boot)

#プロローグ

Java(spring boot)を触り始めてコードを書き始めて2週間程度ですが、
色々と使い方を覚えてきたので、メモとして記録を残します。

不備不足だったり、理解が浅くて説明不足なところがあるかと思いますが、
勉強して更新していきたいとは思っています。

このプログラミングを書く前の理解度としては、アノテーションも分からずでした。
spring bootも分からなかったので、Ruby on Railsと同じようにMVCでデータを取得、加工、表示するのかなと思っていました。

計算処理を行う「service」というものの存在も知りませんでした。

##この記事で何ができるようになるか

まだ自分自身もそれぞれのクラスの役割を理解してませんが、
データを受け取って表示させることができると思います。

まずは、わからないなりに手を動かして画面に表示させることで、なんとなくの流れをつかむことが大切なのかなと思います。

この記事でやることとしては、ファイル内に作成したCSVファイルを読み取って、画面上に表示させるというイメージです。

また、ただ読み取って表示させるだけでは

元記事を表示

OTHERカテゴリの最新記事