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

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

SpringBootアプリをService(デーモン)として起動する方法

# はじめに
SpringBootアプリは「java -jar」コマンドで実行できますが、ログアウトするとアプリが停止します。
起動し続けるためにはサービスとして起動させる必要があります。
今回はSpringBootアプリケーションをService(デーモン)として起動する手順を記載します。
※デーモンとは常駐プログラムのUNIX系OSにおける呼び名です。

# 環境
OS:CentOS7

# 手順
1. Fully Executable Jarの作成
2. confファイルの作成
3. Service(デーモン)の登録
4. Service(デーモン)の自動起動設定

# 1. Fully Executable Jarの作成
SpringBootアプリを常駐させるために通常のjarファイルは起動スクリプトを書く必要があるが、
Fully Executable Jarは起動スクリプトが組み込まれています。

作成方法は、pom.xmlに次のようなのタグを追加します。

“`xml:pom.xml

元記事を表示

Eclipse 2021-06(4.20.0)でlombok 1.18.20適用時のエラー

# 環境
* java version “16” 2021-03-16

# 現象と対処方法
以下のエラーが発生してjavaのエディタが開けなくなる。

“`java
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang” to unnamed module @2b8bb184
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.Access

元記事を表示

SpringBootアプリケーション(Jar)をCentOS7にデプロイ

# はじめに
SpringBootは実行可能ファイルとして jar 形式と war 形式の2種類のファイルを作成できます。
jar 形式はTomcatが組み込まれており、単体で実行可能です。
war 形式はTomcatがインストールされた環境にデプロイし、実行する必要があります。
今回はjarファイルをCentOS7にデプロイする手順を記載します。

# 前提

### 開発環境
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

### サーバー環境
OS:CentOS7(仮想マシン)
Java:11
Apache:2.4.6

# Jarファイル作成
プロジェクト上で右クリック > [実行] > [Maven install] を選択します。
完了後、[プロジェクトフォルダ] > [target]に「XXX.jar」ファイルが作成されます。
※ここではプロジェクト名「demo」のjarファイル作成
![jar作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798

元記事を表示

SpringBootでHello World プロジェクト作成~実行

# はじめに
SpringBoot + Thymeleaf + Mavenで「Hello World」を表示させる手順を記載します。

# 開発環境
OS:windows10
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

# 手順
「Hello World」を表示させるまでの手順は下記です。
1. プロジェクトの作成
2. pom.xmlの編集
3. 画面の作成
4. Controllerの作成
5. 実行

# 1. プロジェクト作成
eclipseを起動します。
eclipseの[ファイル]→[新規]→[プロジェクト]を選択します。
![プロジェクト選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798422/7f9d50b7-2165-81b4-263f-f07224f2c729.png)
「Spring スターター・プロジェクト」を選択し、「次へ」ボタンを押下します。
![Springスタータープロジェクト選択.png](https://qiita-i

元記事を表示

Javaで単語学習アプリを作ろう

こんにちは。プログラミングを勉強していると、一刻も早く単語学習アプリを作りたくなりますよね。え、ならないんですか???

単語学習アプリを作ってみたい同志たちの願いを叶えるべく、今回はJavaで、フラッシュカード式の単語学習ができる機能を作ってみました。アプリというほど整った形ではありませんが、ひとまずコンソールで使えるレベルになりました。

例によって、正しく動きはするものの最適な書き方であるか自信がない部分もありますので、何かお気づきになりましたらご指摘いただければと思います。

今回扱う項目は以下です。

– tsvファイルを作り、ソースコードで内容を読み込む。
– 読み込んだ情報をもとに、ランダムで単語を表示させる。

前提条件

– IntelliJ IDEA: 2021.1.2 (Community Edition)
– JDK:16.0.1
– MacOS:Version 11.1

## 1.今回やることの整理

今回は以下のような要件を満たした機能を作ります。

– 起動すると、日→英か英→日どちらかの学習モードを選べる
– スタートすると無作為に選ばれた単語が表示

元記事を表示

[Java]  エクセルで数式を追加・読み取る

Excelで、セルに数式や関数を入力して計算などの作業を自動的に行わせることができます。数式や関数を使いこなせれば、Excelでの文書作成がぐっと楽になると思いますので、今回は、free Spire.XLS for Javaという無料のライブラリを活用して、Excelで数式を追加・読み取る方法を紹介していきます。

下準備

1.E-iceblueの公式サイトからFree Spire. XLS for Java無料版をダウンロードしてください。

f:id:lendoris:202108181216</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>数式</div>
<div class='tag-cloud-link'>エクセル</div>
<div class='tag-cloud-link'>追加</div>
<div class='tag-cloud-link'>読み取る</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/ddb74e05c65004624b42'>元記事を表示</a></div>
<h3 id=Thymeleafの日付比較

#Thymeleafの日付比較が賢い!
と感動したので、簡潔ですが投稿させていただきます。

#コード例
ControllerからModelに値を渡し、Thymeleafで表示する例です。

“`java:○○Controller.java

@GetMapping(“/index”)
public String index(Model model) {
model.addattribute(“today”, “2021-8-18”);
model.addattribute(“tomorrow”, “2021-8-19”);
return “index.html”;


“`

“`html:index.html

falseなので表示されない
trueなので表示される


“`
比較演算子で「>」とか使いたくなりますが、
Thymeleafでは以下のように書き換える必要があります。

元記事を表示

Java入門[インターフェース]

前回は抽象クラスについてまとめました。

https://qiita.com/tomorun/items/8c210446b586d343ef53

階層の上には`Human`クラス
その下には具体化された`Teacher`や`Engineer`、`Unployed`などが生まれました。

しかし、`Human`クラスを更に抽象化することもできますね。
どんどん抽象化していくことで、抽象クラスのフィールドやメソッドが減っていきます。

抽象クラスの中でも、更に抽象化されたクラスを`インターフェース`として特別に扱うことが可能になります。

`インターフェース`の条件は以下の2つ
1 すべてのメソッドは抽象メソッドであること
2 基本的にフィールドを1つも持たない

では、作成してみましょう。

`アクセス修飾子 interface クラス名`

“`java:Animal.java
public interface Animal{
// public abstract void run();
// public abstract void eat();
// public

元記事を表示

全く役に立たない小ネタ(Java)

変数定義時に自身を参照できる

“`java
static String foo = foo = “ABCD”;
String bar = bar = “ABCD”;
void hoge() {
String baz = baz = “ABCD”;
}
“`

実行結果(IDEONE)
https://ideone.com/48OXMp

元記事を表示

【画像処理解説】ポスタリゼーション(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#ポスタリゼーションとは?
階調変更アルゴリズムであり、色の階調を変更する画像処理です。
一般的な画像は0から255の256階調で成立しています。
これをルックアップテーブル(LUT)を用いて、任意の階調数に変更します。

似たような処理として減色処理があります。
減色処理では、階調を減らすというよりも、画像情報を残しつつ情報量を減らすことが目的となります。
ポスタリゼーションは画像を加工してアートみたいにできるのが特徴ですね。

#LUTとは?
画素値変換用の参照テーブルのことです。
ポスタリゼーションの場合、階調数を$t$とするとLUTは以下の式で定義されます

“`math
lut(i) = \left[\left[\frac{i\times t}{256}\right]\times\frac{255}{t-1}\right]
“`

階調数が4の時、画素値100は85に、画素値200は255に変換されます。

元記事を表示

ただただ公式ドキュメントのリンクを並べただけ

タイトルの通り、ただ公式ドキュメントのリンクを並べました。
私が勉強した or 勉強に使いたいな、と思っている範囲のものです。
読んだ感想なども記しました。
適宜、更新するかもしれません。

# Java関係

### Java
|タイトル |リンク |その他 |
|—|—|—|
|ドキュメント |https://docs.oracle.com/javase/jp/11/ |Java 11 |

Javaに関しては、公式を見るよりも市販の本とかの方がいい気がしています。

### Spring Boot

|タイトル |リンク |その他 |
|—|—|—|
|チュートリアル |https://spring.io/guides |英語 |
|チュートリアル |https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html |日本語|

日本語だと、最近こちらの本が出たようです。amazon prime会員だとタダで読めるようです。
https

元記事を表示

【画像処理解説】メディアンフィルタ(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#メディアンとは?
日本語では中間値といい、名前の通り数集合の中間に位置する数のことです。

簡単な例ですが、あるテストを受けた人が7人いて、点数分布は以下の通りでした。
$\begin{matrix}
34 & 36 & 39 & 42 & 44 & 48 & 100
\end{matrix}$

この例において平均点を計算すると、49点となります。
直感的には49点が真ん中というのは高いように感じませんか?
2位ですら平均点以下となってしまっています。
これは一人だけ100点という高得点を取っている人がいるため、平均点が高めに出ているのです。

次に、メディアンを計算してみましょう。
7人の中間なので、4位の点数である42点が採用されます。
この点は4位の点数そのままなので、1位の100点には引っ張られていません。
メディアンのほうが「真ん中」という感じがしますよね?

以上、説明した通りメディアンには外れ値(極端

元記事を表示

Jasper Report で帳票を縦横4分割で作成する。

# 初めに
Jasper Report で帳票をA4用紙4分割で作成する方法をまとめます。
印刷順序はZ順序で印刷されます。

# 前提条件・環境
・TIBCO Jaspersoft Studio-6.17.0

# 手順
1. PageFormat から Colums を 2 に、Print Order を Horizonal に設定します。
2. BandDetail の高さを PageFormat の高さの 1/2 で設定します。

## 1. PageFormat から Colums を 2 に、Print Order を Horizonal に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1864623/e2c8ccfb-8535-3a15-1cbc-5a77e3b4d3dd.png)

## 2. BandDetail の高さを PageFormat の高さの 1/2 で設定します。

![image.png](https://qiita-image-stor

元記事を表示

【java】ロト6で夢を買おう~申込番号を決めてみよう~

#1.きっかけ

ここ1年半話題といえば__「コロナ絶賛感染拡大中!一年半前の数人から今は5000人に伸びました!」__
という話でニュースがにぎわっている。
__`オリンピックで日本経済が盛り上がる予定だったけど、夢に終わってしまった。`__
さらに、と悪いことを挙げればきりがない。

そんな暗い空気を背負って、テレワークを終えて近所を歩いていた。
私と同じ暗い空気をまといながらも、やけに野望に燃えた目の人々が集まっている場所がある。
高額当選を叩き出した宝くじ売り場だ。
その集まりの先に「キャリーオーバー発生中!」「サマージャンボ」のポスターが見えた。
「では〇〇と〇〇で五万円になります。」と無機質な店員さんの声も聞こえる。
渋い顔をしたオジサンが、財布からお札を取り出している。
サマージャンボやロトの当選金額の大きさと、列に並ぶ人の熱気に呑まれてしまった。
__「これもし当たったら、どうしよう???」__と根拠のない自信が溢れ出してきた。
サマージャンボは、自分で番号を決められないけど、ロト6、ロト7は自分で番号を決められるということも分かった。
しかもキャリーオーバー発生中で、

元記事を表示

Java入門[抽象クラス]

#### 抽象クラスとは
その名の通り、抽象的なクラスです。
具体的な役割は子クラスに任せます。

抽象クラスを作成することで、予期せぬインスタンス化やオーバーライド忘れを防ぐことができます。(オーバーライドは後述)

抽象クラスの作成は以下の通りです

`アクセス修飾子 abstract class クラス名`

抽象メソッドはこのような形
`アクセス修飾子 abstract 戻り値 メソッド名();`

では、前回作成した`Human`クラスを抽象クラスにしてみましょう。

“`java:Human.java
public abstract class Human {
private String name;
private int money;

public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getMoney(){
return this.money;

元記事を表示

[Java] Java Bronze SE の試験に合格した勉強方法

# はじめに

`Java Bronze SE 試験番号1Z0-818`の試験に約1ヶ月で合格したのでその勉強方法をまとめました。
目安としては、Java以外のプログラミング言語の基礎は理解している状態で1日1〜2時間ほど勉強しました。
勉強方法はたくさんあるので自分にあった方法で学ぶことが一番ですが、やる気はあるけど、どう勉強したら良いのか悩んでいる方の手助けになれたら幸いです。

# 合格のためのステップ
## ステップ1
まずは参考書を購入しましょう。
オラクル認定資格教科書と問題集を購入することをお勧めします。

[オラクル認定資格教科書 Javaプログラマ Bronze SE(試験番号1Z0-818) / 山本 道子(著)](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Bro

元記事を表示

VSCodeにSpringBootの環境を構築しよう!!

#環境
* windows
* JDK11
* Maven3.8

# step1:必要な拡張機能のインストールをしよう
下記をインストールしよう!
![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/9c7a64d6-49a5-0934-5e21-67167a778ca8.png)
![スクリーンショット (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/0b575c69-183f-1546-7c8a-fc8d795dbbbb.png)
![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/96f79f8d-88fa-46e5-9b57-357a24dd7851.png)

# step2:VSCodeにJavaとMavenの設定をしよう
1

元記事を表示

Javaについて、基本だけど意外と知らないこと(Java Silver 「データ型の操作」)

本年度中に、Java Silver及びJava Goldの資格取得を目指しています。
現在エンジニア3年目にも拘らず、今までの経験言語がJavaだったりC#だったりしてふらふらしていたので、ここらで一発、言語について基本的な知識を持っておこうと思ったのがきっかけです。

2年目までは言語知識を深く知らなくても、先輩の作った基盤の上でなんとなくプログラミングできていたように思えます。そのせいか、恥ずかしながら3年目になって(試験勉強を始めて)Javaの理解が進んだ点がいくつかあるので、備忘程度に記載します。

##出典
Java SE 8 Silver試験「Javaのデータ型の操作」単元より

###インスタンスとガベージコレクション

“`Java

Object a = new Object(); //【I】Objectインスタンスを生成し、Object型の変数aの参照先とする
Object b = new Object(); //【Ⅱ】Objectインスタンスを生成し、Object型の変数bの参照先とする
Object c = a; //【Ⅲ】Object型の変数cの参照先を、変

元記事を表示

Velocityで自動HTMLエスケープする

##問題

WEBアプリで、velocityを使用してHTMLテンプレートを記述する場合、[EscapeTool](https://velocity.apache.org/tools/1.4/generic/EscapeTool.html)を使用してエスケープ処理を行うのが普通だが、項目出力の都度エスケープ処理を記載しなければならず、記載忘れでクロスサイトスクリプティングなど重大な脆弱性を埋め込むおそれがある。

##解決方針

デフォルトでHTMLエスケープを行うようにして、コーディング時の負担を軽減する

##課題

全ての項目をエスケープすれば良いわけではない(出力項目の中にはHTMLタグを埋め込んでやる必要があることもある)。
[ココ](https://velocity.apache.org/engine/2.3/developer-guide.html#registering-event-handlers)に記載のあるように、VelocityプロジェクトでHTMLエスケープを自動で実施する仕組みを作っていたこともあるが、一律同じエスケープ処理を行うことは「実用的でない」として

元記事を表示

Lombok徹底解剖

Javaにおいて、フィールドへのアクセサ等の用意を、アノテーション付与によって肩代わりしてくれる便利なライブラリ、Lombok。

主なアノテーションについてまとめる。

###Getter/Setter

get○○、set○○メソッドを自動で用意してくれる。

“`Java:プログラマが書くソース
public class User {
@Getter
private userId;

@Setter
private userName;
}
“`

“`Java:コンパイルするとこうなる
public class User {
private userId;
private userName;

public String getUserId() {
return this.userId;
}

public String setUserName(final String userName) {
this.userName = userName;
}
}
“`

###EqualsAndHashCode

クラ

元記事を表示

OTHERカテゴリの最新記事