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

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

Java + SpringBoot + Gradle + thymeleaf で 簡易DRUDアプリ作成 ( 1 )

## はじめに
エンジニアに転職してから1年半が経とうとしているのでそろそろ、JavaとSpringBootで基本的なアプリ開発ができるようにならないといけないと思い始めました。現在使用している参考書は[Spring Boot 2 プログラミング入門](https://www.amazon.co.jp/Spring-Boot-2-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798053473/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=&sr=)です。まだ全て手を動かしながら実践できていませんが簡易的なアプリを作成するまではできたので纏めておきます。ところどころ自分オリジナルのコードも入れながら作成したので良い勉強になりました。何回かに分けて復習がてら書いていきたいと思います。

github: https://github.com/

元記事を表示

JavaでのスレッドとCallableの基本【初心者】

## JavaでのThreadの基本
マルチスレッドを使えば複数処理を並列に走らせたりできる。
こういう処理の一つ一つをスレッドと呼ぶ。
Javaにおいてスレッド処理をするには継承(`extends`)を使う方法とインターフェイスを実装(`implements`)して使う方法がある。
前者の場合は`Thread`クラスを継承して`start()`メソッドを呼び出す。
後者の場合は`Runnable`インターフェイスを実装して`run()`メソッドを呼び出す。
Javaでは多重継承ができないため、`Thread`を使う方法だと他のクラスを継承できないが、インターフェイスを使った方法であれば可能。
後者の場合は`Callable`インターフェイスを実装して`call()`メソッドを呼び出す方法もある。

## RunnableとCallableの違い

`Runnable`の場合は返り値の指定ができず、例外も飛ばせない。

“`Java:Runnable_interface
public interface Runnable {
public abstract void run(

元記事を表示

破損している画像ファイルを一括でまとめて探してくれるソフトの紹介~もうサムネイルを全て確認しなくていい~

#はじめに
画像をスクレイピングしていると、たまに通信エラーで途中までしかダウンロードされず、変な画像になっていることがある。

こんなのや
![KQI1j.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/6162969c-2240-e19c-0ccd-ea5a98d2efd3.jpeg)

こういうの
![U7Q3A.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/f1cbfcc7-3b88-26c2-84c7-2fb54780925e.jpeg)

破損した画像ファイルを修復するソフトはたくさん出てきたが、
破損しているかどうかを見つけるソフトがぱっと出てこなかったので
BadPeggyというソフトを紹介する

#環境
windows10
Ryzen 3700x
[WD Blue™ SN550 NVMe™ SSD(1TB)](https://shop.westerndigital.com/j

元記事を表示

【Java】Optionalの使い方②

#プログラミング勉強日記
2020年1月2日
[昨日の記事](https://qiita.com/mzmz__02/items/dc19895fc608d0ae87a3)同様にJavaのOptionalクラスの使い方について簡単にまとめる。昨日扱っていないメソッドでの使い方を紹介する。

#orElseThrowメソッドの使い方
 orElseThrowメソッドは、引数の有無で処理が異なる。

 引数がない場合は、nullのときにNoSuchElementExceptionをスローして、nullでないときは値を返す。

“`java:引数なしの場合
import java.util.NoSuchElementException;
import java.util.Optional;

public class Sample {
public static void main(String[] args) {
String str = null;
Optional value = Optional.ofNullable(str)

元記事を表示

Javaで正規分布・対数正規分布の乱数を生成する

# はじめに

Javaで乱数を生成したい場合、まず思いつくのは `Math.random()` かと思います。
ただし、これで得られる値は一様分布であり、どの値もおなじ確率で現れるため、以下のようなダミー値を作りたい場合には適しません。

– テストの点数…平均点が最も現れやすく、平均点から離れるほど現れにくくなる分布 → **正規分布**
– 世帯年収…グラフ中心から右側に長く広がる分布 → **対数正規分布**

それぞれ頑張って計算式を書いても良いのですが(頑張って書いてしまったのですが)、ライブラリがあったのでそれを使いましょう。

# 正規分布

`java.util.Random` の `nextGaussian` を使います。

[Random.html](https://docs.oracle.com/javase/jp/6/api/java/util/Random.html)

“`java
import org.junit.jupiter.api.Test;

import java.util.List;
import java.util.Random;
imp

元記事を表示

[Java]Androidでスプラッシュ画面を実装する4手順

こんにちは、momoritoです。
今回はAndroidアプリを作る際の**スプラッシュ画面を実装する手順**をまとめておきます。

スプラッシュ画面を実装する際、考えられる方法として

* スプラッシュ画面用styleを設定してActivityのThemeを差し替える(**Theme差替型**)
* スプラッシュ画面用のActivityを作成して遷移させる(**Activity遷移型**)

等がありますが、今回は前者の**Theme差替型**で実装します。

#1 はじめに
## (1)完成形
下gifのように、アプリをタップ→スプラッシュ画面を表示→数秒後に元のテーマを適用してMainActivityを表示することを目指します。
qiita-square

## (2)スプラッシュ画面表示の大まかなイメージ

元記事を表示

SWING入門

###メソッドの種類


####drawLine(x1, y1, x2, y2)
点 (x1, y1) から点 (x2, y2) へ直線を描く.


####drawString(“文字列”, x, y)
点 (x, y) を左下とする位置に文字列を配置する.


####drawRect(x, y, w, h)
点 (x, y) を左上とし,横幅 w,高さ h の長方形を描く.


####fillRect(x, y, w, h)
点 (x, y) を左上とし,横幅 w,高さ h の長方形を描き,内部を塗りつぶす.


####drawOval(x, y, w, h)
点 (x, y) を左上とし,横幅 w,高さ h の長方形に内接する楕円を描く.


####fillOval(x, y, w, h)
点 (x, y) を左上とし,横幅 w,高さ h の長方形に内接する楕円を描き,内部を塗りつぶす.


####drawPolygon(x, y, n)
x 座標の配列 x と y 座標の配列 y で定義した n 点で構成する多角形を描く.

元記事を表示

VSCodeのMetalsプラグインでScala(sbt)環境をIDEっぽくする

# やること

– Scala用のビルドツールsbtを入れる
– VSCodeでIDEっぽくするためにMetalsプラグインを入れる

# あらかじめ用意するもの

– JDK (versionは8か11が推奨)
– Scala
– VSCode

# sbtの導入

### [sbt](https://www.scala-sbt.org/)とは

Scala用のコマンドラインビルドツールです。一応、GradleやMavenでもScalaのコンパイルを行うプラグインは提供されていますが、sbtはLightbend社(Scalaを提供している会社)に所属するエンジニアがScalaコアチームと連携しながら精力的に開発しているツールらしいです。

### インストール

[こちらの公式DLサイト](https://www.scala-sbt.org/download.html)からダウンロードできます。

– Windowsでインストール
上記のDLサイトにzip、tgz、msiインストーラが置いてあります。

– MacOSでインストール
Homebrewを使って`brew in

元記事を表示

SpringBoot(gradle)にOpenAPI(Swagger)の導入をしていろいろ設定してみた

## はじめに
昨年[精算くんという個人開発のアプリケーション](https://seisan-kun.netlify.app/#/)を作成したのですが、バックエンドAPIの仕様書を作成していなかったので、手っ取り早くOpenAPI(Swagger)を利用して作成していこうと思い利用するに至りました。
その際の導入方法や、個人的に気になった設定について触れていきます。

## 環境
– Java 11.0.3 (Amazon Corretto)
– gradle 6.0.1
– SpringBoot 2.2.3
– Seisankun-api https://github.com/nooboolean/seisankun_api
– SwaggerUI 2.9.2

## OpenAPI(Swagger)とは
>The OpenAPI Specification, originally known as the Swagger Specification, is a specification for machine-readable interface files for

元記事を表示

【Java】フォルダ内のファイルパスをListで取得

引数のフォルダ内にあるファイルの一覧をStringのListにしてみるメソッド。
※再帰的に呼び出してListにaddAllしてみた
※Java8~15で動作検証済み(不具合あっても責任は取らない方向で

“`java:FileUtils

import java.io.File;
import java.util.LinkedList;
import java.util.List;

public class FileUtils {

/**
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
public static List getFileList(String root) {
return getFileList(new File(root));
}

/**
*
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
publ

元記事を表示

Spring Boot + Java でfileとStringデータを同時にform送信して処理する

File型とString型を一度にForm送信するやり方がわかったので備忘録として残しておきます。

##実現したいことのイメージ
こんな感じのフォームがあり、送信ボタンをクリックすると更新した情報にページが更新されてアラートが表示される

![スクリーンショット 2021-01-01 19.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/8e781aa8-f0a9-18c2-642c-d43de7f66607.png)
![スクリーンショット 2021-01-01 19.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/ca0d50a1-2cfd-56cc-95d9-98c1a06743ab.png)

“`html

【Java】for文についてまとめ

#はじめに

現在Java Silver受験に向けて勉強中です。
勉強の中で、for文について間違えて覚えていたり混乱することが多かったので、自分の言葉で基本からまとめていこうと思います。

#基本
for (初期化文; 条件文; 更新文) {
  /// 繰り返し処理
}

“`
for(int i = 0; i < 10; i++) { System.out.println(i); } ``` ①初期化文 ②条件文 ③繰り返し処理 ④更新文 ⑤終了 ※②~④を繰り返す #拡張for文 for (型 変数名 : 集合) {   /// 繰り返し処理 } ※ ;(セミコロン)ではなく:(コロン)であることに注意 ``` int[] array = {1, 2, 3} for(int num : array) { System.out.println(num); } ``` 集合の中身を最初から最後まで一つずつ取り出すイメージ。 #繰り返し処理の中断 ##break 例: for (初期化文; 条件文; 更新文) {   if (条件文) {     break

元記事を表示

【Java】Optionalの使い方①

#プログラミング勉強日記
2020年1月1日
JavaのOptionalの使い方について簡単にまとめる。

#Optionalとは
 メソッドの戻り値としてnullを返す可能性があることを明示的に示したいときに使う。メソッドがnullを返す可能性があるということを示すことで、より安全に実装することができる。

#Optionalの書き方
 Optionalクラスを使うにはjava.util.Optionalをインポートする必要がある。一般的にはオブジェクトを定義して利用する。Optionalのオブジェクトはダイヤモンド演算子(‘<>‘)ないのType Parameterにnullの可能性があるオブジェクトの型を指定して宣言する。
 ofNullableメソッドの引数にはnullの可能性があるオブジェクト名を指定する。

“`java:基本的な書き方
Optional オブジェクト名 = Optional.ofNullable(nullの可能性があるオブジェクト名);
“`

“`java:サンプルコード
String str = null;
Optional

元記事を表示

(Java、JavaScript、Python)文字列処理の比較

# Java、JavaScript、Pythonの処理比較

最近JavaScriptとPythonの勉強を始めました。
学んだことの整理として、Java、JavaScript、Pythonの3言語の処理比較を記事にしていこうと思います。
今回は文字列処理です。

## 文字列処理の比較一覧

|処理内容|Java|JavaScript|Python|
|—|—|—|—|
|文字列長|length()|length|len(文字列)|
|一致比較|equals(比較文字)
equalsIgnoreCase(比較文字)|==比較演算子
===比較演算子|==比較演算子|
|検索|indexOf(検索文字列)
lastIndexOf(検索文字列)
contains(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列)
|indexOf(検索文字列)
lastIndexOf(検索文字列)
includes(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列

元記事を表示

SpringBootで作成したWebアプリをEC2にデプロイするときに躓いた話

###はじめに
自分用のメモです。

###開発環境
・Windows10
・OpenJDK 1.8
・SpringBoot 2.2.4
・Gradle 6.3
・MySQL5.7
・AWS(EC2・RDS・VPC)

###作業の流れ
1.デプロイ用のSpringBootアプリを用意
2.EC2・RDS・VPCを準備する
3.Amazon Linux2で必要ツールをインストール
4.Buildしてデプロイ

####1.デプロイ用のSpringBootアプリを用意する
こちらは何でも構わないので自身で作成しているアプリで可

####2.AWS(EC2・RDS・VPC)の用意
ここは後日投稿する予定です

####3.Amazon Linux2で必要ツールをインストール
EC2にログインしyumを最新にします

“`
# yum update
“`
Gitのバージョンを確認とインストール

“`
# yum search git
# yum install git
“`
Gitがインストール終わったら一応確認

“`
# git –version
“`
Java8をイ

元記事を表示

JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021

https://github.com/sonota88/libreoffice-java-sample/tree/20210101

以前書いたこれ↓のアップデート版。細かい修正と「2021年初でも動きましたよ」という動作確認の報告です。

[JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2019](https://memo88.hatenablog.com/entry/2019/12/02/070925)

ちなみに上記は 2019年末の記事なのでだいたい1年ぶりのアップデートになります。

# 変更内容

– 使用範囲内での行インデックス・列インデックスの最大値を取得するサンプルコードを追加
– mvnw を使うように変更
– JUnit のバージョンアップ: 4.x => 5.7.0

# 環境

“`
Ubuntu Linux 18.04
LibreOffice 6.0.7.3
OpenJDK 1.8.0_275
“`

# 参考

– [Java LibreOffice Programming (Calc)](https://five

元記事を表示

EclipseのProject FacetsにJavaServer Faces(JSF)がない

# 事象 : Project FacetsにJavaServer Facesがない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/0dd4f35b-68e9-adb2-3ffd-51d0a52bf957.png)

## 原因 : Javaのプラグインがインストールされていないから
最近Pleiades All in One(https://mergedoc.osdn.jp/) ばかり使っていてたところ、久しぶりに普通のEclipse(https://www.eclipse.org/) を使ったら何がプラグインか分からなくなっていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/6cc31d97-3baf-649b-0adf-3779c6968161.png)

### 対応 : Eclipse Enterprise Java Developer Toolsを

元記事を表示

The selected JRE does not support the current compliance level of 15

# 事象 : Eclipseの設定を見たらなんか言われてた
– 環境
– Windows10 Pro バージョン1903
– openjdk version “11.0.2” 2019-01-15
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/1eb06a74-a4d6-7e33-9f22-f2c509b2c5c3.png)

## 原因 : コンパイラに設定したJavaのバージョンとずれてるから
[Java] > [Complier]をみると「15」になっていた・・・
こっちでも`When selecting 15 compliance, make sure to have a compatible JRE installed and activated(currently 11).`って言われている・・・

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

元記事を表示

【Java ~クラス~】勉強メモ6

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

クラス

– クラスの定義

クラスの定義は、`「class クラス名」`とします。
クラス名の最初の文字は、大文字にする。
ファイル名は、`「クラス名.java」`としなければなりません。

“`.java:person.java
class Person {
// ここのメソッドを定義
}

“`

– 他クラスのメソッドを呼び出す

`クラス名.メソッド名()`とすることで、他のクラスのメソッドを呼び出すことができます。

下の例では、
MainクラスとPersonクラスの2つのクラスがあり、MainクラスのmainメソッドでPerson.hello()と
する事でPersonクラスのメソッドを呼び出している。

“`.java:main.java
class Main {
public static void main(String[] args) {
Person.hello();
}
}
“`

`

元記事を表示

【Java】LinkedHashMapクラスの使い方

#プログラミング勉強日記
2020年12月31日
LinkedHashMapクラスの使い方を簡単にまとめる。

#LinkedHashMapクラスとは
 HashMapクラスと同じように情報をキーとバリューのペアで格納して使う。LinkedHashMapクラスはHashMapクラスを継承しているので、HashMapクラスが持つ機能を持っている。HashMapクラスは要素の順番を保障しないが、LinkedHashMapクラスは格納された順番を保持している。

 特徴としては、キーとバリューのペアで要素を保持し、キーの重複を許可しない。nullをキーやバリューとすることができる。要素が格納された順番を保持する。

#使い方
 要素の追加のメソッドは、java.util.HashMapクラスで実装されているメソッドで、サブクラスのLinkedHashMapクラスも同じメソッドで要素の追加を行う。
 要素の取得のメソッドは、引数で指定したオブジェクトをキーに持つバリューを返す。キーがLinkedHashMap内になければnullを返す。

“`java:基本的な書き方
// 要素の追加
pu

元記事を表示

OTHERカテゴリの最新記事