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

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

SearchViewでソフトキーボードを非表示にする

AndroidアプリでActionBarにSearchViewを実装する際のソフトキーボードを非表示にする方法は、以下の通りです。
今回は、Fragmentに

## レイアウトファイル
“`menu/search.xml


【Mac】2行でJDKバージョンを切り替える

# 結論
“`bash
export JAVA_HOME=`/usr/libexec/java_home -v “17”`
PATH=$JAVA_HOME/bin:$PATH
“`

## version確認
“`bash
java –version
openjdk 17.0.4.1 2022-08-12 LTS
OpenJDK Runtime Environment Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.4.9.1 (build 17.0.4.1+9-LTS, mixed mode, sharing)
“`

# 補足
– `/usr/libexec/java_home -V`でマシン内にインストール済みのJDKのJAVA_HOMEを一覧表示できる。
– `/usr/libexec/java_home -v “{バージョン番号}”`で指定したバージョンのJDKのJAVA_HOMEだ

元記事を表示

新卒文系SEクイックソート書いてみた

基本情報技術者の擬似言語の学習のため実際にプログラム化してみました。
基本情報の問題集をもとにフローチャートを作成し、コーディングをおこなっております。
今回は、配列の最初の要素と隣の要素を比較し、大きい方を基準値にしております。別パターンも近いうち投稿したいと思います。

“`java:Qiita.java
import java.util.*;

public class QuickSort_2 {
public static void main(String[] args) {

/*
* テストデータ
*
* [3,5,8,4,0,6,9,1,2,7] ok
* [7,7,7,7,7,6,9,1,2,7] ok
* [0,0,0,0,0,0,0,0,0,0] ok
* [80,70,60,50,40,30,20,10] ok
* [70,60,40,70,30,70,50,70] ok
* [80,60,40,70,30,10,50,20] ok
* [80,60,40

元記事を表示

初級SEの年間資格取得チャレンジ

もうすぐで2022年が終わりますね…:partly_sunny:
年々、一年過ぎるのが早く感じるアラサーSEです。

実は私、他業種からSEに転職したのですが、
現場で感じたことは
「**分からないことがわからない…**」です。

指示があればコーディングや設計はできるが、
なんとなくこなせているだけではないのか…?

なんて疑問が頭をよぎることが多かったので、
とりあえず、今できるだけ多くの知識と今までの経験の紐づけも兼ねて
年間最多資格取得に挑戦しました!!!

以下私が今年一年とった資格になります。
:apple:**Oracle MASTER Silver SQL**
:apple:**ORACLE MASTER Bronze DBA**
:apple:**AWS Certified Cloud Practitioner**
:apple:**Python 3 エンジニア認定基礎試験**
:apple:**Oracle Certified Java Programmer, Gold SE11**
                        計**5**つ
(思

元記事を表示

未経験から転職して半年が経とうとしてますが、以下が通読してる書籍一覧になります。

JavaSE11 Silver
JavaSE11 Gold
Java入門実践編
サーブレット&JSP入門
Eclipseパーフェクトガイド
新しいLinuxの教科書
Spring徹底入門
JUnit実践入門
良いコード/悪いコードで学ぶ設計入門
Silver DBA

元記事を表示

「良いコード/悪いコードで学ぶ設計入門 」のコレクションの章を勉強

# コレクションに関する設計技法

7.1わざわざ自前でコレクション処理を実装してしまう
7.2ループ処理中の条件分岐ネスト
7.3低凝集なコレクション処理
について、自分なりにサンプルソースを書きながら勉強しました。

国をコレクションとして扱い、各ランキングを出力するサンプルソースを実装しました。(国のデータは末尾の参考サイトを参照)

“`java:データクラス
import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Country {
private int index;
private String jpName;
private String enName;
private int population;
private int area;
}
“`

国クラスは、和名、英名、人口、面積をもちます。続いて、この国クラスを使って世界各国を作成するデータクラスです。

国のコレクションを作

元記事を表示

Java、Python、JavaScriptでよく使われる構文や機能を比較した表

## Java 、 Python 、 JavaScriptでよく使われる構文や機能を比較した表

| Java | Python | JavaScript |
|——|——–|————|
| `public class` | – | `class` |
| `class` | `class` | `class` |
| `public static void main(String[] args)` | `def main():` | `function main()` |
| `System.out.println()` | `print()` | `console.log()` |
| `int` | `int` | `number` |
| `double` | `float` | `number` |
| `boolean` | `bool` | `boolean` |
| `char` | `str` | `string` |
| `String` | `str` | `string` |
| `void` | – | `undefined`

元記事を表示

[Spring]リクエストパラメータ・パスパラメータのバリデーションを行う

## 前提

Spring Frameworkを用いたWebアプリケーションで、リクエストパラメータ・パスパラメータ文字列のバリデーションを行いたい。

## 対応

まず、クラスに `org.springframework.validation.annotation.Validated` アノテーションを付与する必要があります。

その上で、リクエストを受け付けるメソッド( `recordContentPost()`)のリクエストパラメータに `@Size(min=1, max=10) @Valid`のように `javax.validation` パッケージのアノテーションを付与します。

下の例ではリクエストパラメータを使用していますが、パスパラメータを使用した場合にも同様に使用できます。

“`java
//(省略)
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validati

元記事を表示

Javaで何か作ってみる(2022/12/20 Day61)

## 今日やった事
– Springの動画教材を見た。(**オブジェクト指向を復習しておきましょう** まで見た。)
– Macに、VSCode + Spring Boot環境の構築を始めた。
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【簡単】VSCode+Spring Bootアプリケーション開発手順 | こへいブログ](https://kohei.life/spring-vscode/)
## 所感
– VSCodeで拡張機能までのインストールまでは出来た。
– Spring Bootの使い方については、本当これから。

## 明日の予定
– 引き続き、動画教材を進めていく。
– 併行して、VSCode + Spring Boot環境の構築を進めていく。

## ※2022年12月29日追記
– 以下の理由により、今回で、Java、Springの勉強を一旦終了する。

元記事を表示

Spring Boot 依存関係について

## はじめに
今回は、Spring BootでのWEBアプリケーション開発で、最低限の必要になる依存関係について書いていきます。

## 依存関係とは
Spring Bootで開発を進める上で、様々な機能を提供してくれるものです。
今回はGradleを使っていきます。

## 最低限必要になる依存関係
こちらの機能があれば、簡単なWEBアプリケーションが作れます。
ざっくり説明していくとこんな感じです。

|依存関係名| 機能説明 |
|:–:|:—:|
|Spring Boot DevTools|開発用の機能を提供するライブラリ。アプリケーション起動中にコードを編集した場合に自動的に反映するホットリロードを使用するために導入する。|
|Lombok|Getter/Setterなど機械的に作成するメソッドをアノテーションのみで自動生成するライブラリ。単純作業になるコードを削減するために導入する。|
|Spring Web|WEBアプリケーションを開発するために必要な機能を提供する。WebAPI開発には必須。|
|Spring Data JDBC|RDBMSに接続するために必要な

元記事を表示

Database Rider 使い方メモ

# Database Rider とは
– DBUnit をもっと使いやすくするライブラリ
– アノテーションで初期データや期待値のデータファイルを指定できる
– YAMLやJSONなど、 DBUnit でサポートされていないデータセットが用意されている

# Hello World
## 実装

“`text:フォルダ構成
|-build.gradle
`-src/test/
|-java/
| `-sandbox/dbrider/
| `-HelloDatabaseRiderTest.java
`-resources/
`-sandbox/dbrider/
|-hello.yml
`-hello-expected.yml
“`

“`gradle:build.gradle
plugins {
id “java”
}

sourceCompatibility = 17
targetCompatibility = 17

[compileJava, compileTestJava]*.options*.encoding

元記事を表示

Word文書で表を作成または読み取る方法【Java】

Microsoft Wordの表は、データを表示するための便利なツールです。大量のデータを行と列のグリッドを使って並べることができるので、読者はより簡単に読み、分析することができます。この記事では、[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)ライブラリを使用して、Javaで**Word文書内の表を作成したり、読んだりする方法**を紹介します。
– **[Word文書に表を作成する](#word文書に表を作成する)**
– **[Word文書内の表を読み込む](#word文書内の表を読み込む)**
## 【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

元記事を表示

Behavioral Design Pattern in Java

Recently, we have covered Creational Patterns in our Design Patterns series. Today, we are going to cover behavioral design patterns and their types.

If you want to get an overview of design patterns before getting started with behavioral patterns, then check out our previously written blog: Design Patterns in Java.

For al

元記事を表示

javaでStringとintを文字列結合する場合は、nullチェックを必ずしましょう

仕事をしていた時に、バグとして出ていた現象です。

NULLチェックをしていないのが悪い、テストしてないのが悪い
という結論なのですが、意識はしておかないと気付きにくいなと思って、備忘録として保存します。

## javaではStringとintをそのまま結合した場合、文字列扱いで結合する。
以下のように、文字型と数値をそのまま結合した場合、文字列扱いで結合してしまう。
intの場合などはプリミティブなので、nullは入れることができません。
そのため、特に型変換などをしなくてもまぁなんとかなってしまったりします(;^ω^)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565426/521e496f-ec47-7ffc-6c46-5a8e0cfb5f35.png)

## ただし参照型(Integer)などでnullを入れた場合はどうなってしまうのか?
Integerの場合は、数値型ですからもちろん**そのまま結合します**。
つまり、nullという文字列を結合します(´・ω・)。

元記事を表示

ModiTect Maven Plugin で非モジュールなライブラリをオレオレモジュールにしてみる

[Java Platform Module System](https://en.wikipedia.org/wiki/Java_Platform_Module_System) は Java SE 9 以降で導入された仕様であり、いわゆるクラスパス地獄だとか JAR 地獄といわれる問題を回避するために提案されました。

モジュールの定義情報は `module-info.class` (ソースとしては `module-info.java` ) に格納されています:

“`java:module-info.java
module モジュール名 {
requires 依存するモジュール;
exports 公開するパッケージ;
}
“`

モジュールシステムにより、依存関係が明確になったり、呼び出されたくないクラスを非公開にできたりします。実行時のオプションも変化しており、モジュールの場所を示す `–module-path` と、実行するモジュール・クラスを示す `–module` を指定します:

“`powershell
java –module-path “<

元記事を表示

Javaのメソッドで返り値を複数にする方法

Javaのメソッドは(2022年12月現在)一つの返り値しか返せませんが、以下の方法で擬似的に複数の値を返すことができます(他の方法もありますが一番シンプルでバグが発生する可能性が低いもののみ紹介します)。
## 型が同じ場合
返り値がすべて文字列など同じ型の場合は配列を使うといいでしょう。
“`java
public String[] retunMultipleStrings(String str) {
return str.split(“,”);
}
“`

## 様々な型の返り値を返したい場合
Javaはバージョン14から`record`というものが追加され、メソッドがなく複数のデータをまとめて保持したいだけの場合は`class`よりもシンプルに書けます。

“`java:MultipleValues.java
public record MultipleValues(String str, double probability, int point) {}
“`
使い方は以下の様になります。
“`java:Main.java
public static

元記事を表示

[Java]FTPs通信のアイドルタイムアウト回避

## 起きた問題

`spring-integration` のFTPSアダプター(`MessageSource` および `OutboundGateway`)を利用したFTPs通信を行うバッチ処理で、巨大なファイルの送受信を行うと **送受信完了後に例外が発生** して異常終了した。

## 直接原因

FTPsの **制御チャネルのアイドル状態が長時間化** し、通信経路中にある **ロードバランサのアイドルタイムアウトに抵触** したため。

## 根本原因

`DefaultFtpsSessionFactory#createClientInstance()` で生成される `FTPSClient` のインスタンスには、*controlKeepAliveTimeout* (※)が設定されていないため。

※ controlKeepAliveTimeout を設定すると、一定間隔で制御チャネルから無害なコマンド(NOOP)を送信するようになり、通信経路中にあるネットワーク機器のアイドルタイマーをリセットする効果がある

## 回避方法

`DefaultFtpsSessionFac

元記事を表示

Spring Bootプロジェクトの開始(VSCode)

## はじめに
今回はVSCodeでのSpring Bootプロジェクトの開始方法を書いていきます。
Macで作成しています。

最初に、表示からコマンドパレッドをクリック
![スクリーンショット 2022-12-26 16.37.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/7523af8d-efb3-d3c8-8095-13b14dea1b59.png)

そうすると以下のような表示になります。
Spring Bootのプロジェクトには主に、「Gradle」と「Maven」がありますが、今回は「Gradle」で作成していきます。
![スクリーンショット 2022-12-26 16.37.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/9d79972a-4e16-18e0-ce46-097376af79df.png)

次は、Spring Bootのバージョンを指定します。

元記事を表示

[Java] SerialVerisonIDの自動生成

たぶん適当でもいいんだけど、せっかく機能があるので紹介。
環境はIntelliJ IDEA。Kotlinでも使えた。

# 方法
`Ctrl + Shift + A`でアクションの検索画面を開き、`Serial`と入力。
`”JVM言語: ‘SerialVersionID’のないクラス”(Serializable class without ‘serialVersionUID’)`とあったらそれを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883146/59f58a41-810a-a258-0ada-d4998d4b3937.png)

選択肢右側のトグルが`ON`になっていることを確認。なってなかったら再度クリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883146/a5c0efd6-d9f0-8bec-01c7-cb82fd5c1ef8.png)

`Seria

元記事を表示

Javaのラムダ式の例外ハンドリング(検査例外)に悩んだら。

### 悩んだこと

“`java
hogeSupplier.get(() -> {
try {
fugafuga();
} catch(Exception e) {
// Runtimeで投げる?何もしない?
// 【問題】考えたり定義するのがメンドクサーーーーーーーイ
}
});
“`

### 原因

* 原因はラムダ式ではなく、Java8 時点の `Supplier` が `throws Exception` になっていないから。
* 😥 <ラムダ式は検査例外扱えない~! * とか勘違いしていた。 * あくまでもFunctionalInterfaceのシグニチャの問題だった。 ### 解決した方法 * ならば `throws Exception` な `Supplier` を作ればいいじゃないのよ。 ```java:ThrowableSupplier.java @FunctionalInterface public inter

元記事を表示

OTHERカテゴリの最新記事