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

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

SpringBoot × Thymeleaf タグ要素の中に式(値)を入れる方法

# はじめに
今回は、以下のように、親要素とその子要素のテキストをThymeleafの式で実装する方法について解説します。
※以下の記述にすると、親要素(h2タグ)の`th:text属性`の値しか表示されません。
“`html:sample.html


“`

# th:text属性について
ます、「なぜ、上記のような記法で親要素と子要素のどちらの値も表示できないのか」を解説します。

結論を言うと、「`th:text属性`を指定すると、**その要素の中身身全て(入れ子になっている要素も含む)** が`th:text属性`の値に置き換わるため」です。

それでも親要素と、入れ子になっている子要素に値を渡したい時があります。
そんな時にはThymeleafにある`インライン記法`を用いるとすんなり実装できます。

# インライン記法
インライン記法というのは、Thymeleafの式をth:**属性ではなく、直接HTM

元記事を表示

Java SEアプリケーションにHTTP Server機能を組み込みたい(Grizzly編)

この度、個人ブログを閉鎖することなり、一定のアクセスがあった記事を記録として遺すことにしました。
以下は、2020年4月14日に投稿した記事の写しです。この記事がこの世の誰かの助けとなることを願います。

JavaでWebというと、warファイルをAPサーバに搭載してみたいな運用が多いと思いますが、
Java SEアプリケーションにHTTP Serverとしての機能を組み込みたい、といった要件を提示されることも多々あります。

GrizzlyはJava EEアプリサーバのGlassFishで採用されているHTTPサーバの実装ライブラリで、Java SEアプリケーションに単体で組み込むこともできます。

公式サイト
https://javaee.github.io/grizzly/

公式のサンプルほぼそのままですが、Mavenプロジェクトでの実装例を記載します。

まずは、pom.xmlに以下の通り追記して保存します。
“`xml


org.glassfish.grizzly

元記事を表示

Spring Boot + Vue + Axiosで検索&無限スクロール機能の実現

# はじめに
Spring Boot学習中の者です。学習のためにアプリケーションを作成していて、無限スクロールを実装する上で考えたことや躓いたポイントをまとめました。
今回はユーザの投稿を検索するページを例とさせていただきます。

# 参考文献
http://terasolunaorg.github.io/guideline/current/ja/ArchitectureInDetail/DataAccessDetail/DataAccessMyBatis3.html#dataaccessmybatis3howtousefindpageusingmybatisfunction

https://reffect.co.jp/vue/vue-js-infinite-scroll-intersection-observer-api

https://qiita.com/opengl-8080/items/3720ed415c2df26251a7

# 使用技術
Spring Boot 2.5.6
Spring Security
Thymeleaf
Mybatis 2.2.0
Vue.js
A

元記事を表示

Amazon EC2にJavaアプリをデプロイする方法(war&jar)

Amazon EC2にJavaアプリをデプロイする方法をwarファイルとjarファイルそれぞれメモとしてまとめます。

これはAWSでEC2インスタンスを作っている前提でまとめていますので、ご了承願います。ちなみにEC2はLinux2です。

# warファイルのデプロイ

## 1、EC2にJava17をインストール

EC2にJava17をインストールします。Javaのバージョンは適宜読み替えてください。

OpenJDKをダウンロード

“`
$ wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz
“`

ダウンロードしたものを展開

“`
$ tar xvf openjdk-17_linux-x64_bin.tar.gz
“`

展開したものを移動

“`
$ sudo mv jdk-17 /opt/
“`

パスを通す

“`
$ sudo tee /etc/profile.d/jd

元記事を表示

auカブコム証券のkabuステーションREST APIの認証済TOKENをファイル管理する

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

auカブコム証券のkabuステーションREST APIのテスト用モックサーバーを作る

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)

最近、思いついたビジネスロジックを、相場がお休みしている土日に作ろうと思った

元記事を表示

初心者がJavaのマルチスレッドプログラミングを学ぶお題を作ってみた

# はじめに
チーム内でJavaプログラミング初心者向けの勉強会をしていて、そのときに出したマルチスレッドプログラミングの勉強用の題材とメンバーからの回答例です。
よくある事例からお題を作ってみたら、いろんな回答が返ってきました。

# お題
以下のプログラムをスレッドセーフにしてみよう

“`java:スレッドアンセーフ(お題)
package study.concurrent;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import lombok.Getter;

public class ThreadUnsafeMain {

private static ExecutorService executor = Executors.newSingleThreadExecutor();

public static void main(String[]

元記事を表示

【Java】ファイル操作関連

# まえがき
Javaではファイル操作関連クラスが豊富に提供されている。それぞれのクラスの役割/使い方についてまとめる。
# java.io と java.nio と java.nio2
JDK6/SE6:io系(File)
JDK7/SE7:nio系(Files, Path)
JDK8/SE8:nio2系(nioの強化)+ Stream + ラムダ式 + メソッド参照

SE → JavaAPI群。JDKの一部品。
JDK → Java開発プログラムのセット(ソフトウェア)
# JDK6/SE6:io系(File)
## File
・ファイルの置き場所を定義する
・ファイルを操作する

# JDK7/SE7:nio系(Files, Path)
## Path
・ファイルの置き場所を定義する
## Files
・ファイルを操作する

Fileクラスの2機能を、PathクラスとFilesクラスで分割したような形。
**Fileクラスにはない便利機能がPathとFilesにはあるので**、JDK7/SE7以上の環境である場合は
 ✕ Fileクラス
 〇 Pathクラス&Filesク

元記事を表示

SpringBootの値をJavaScriptに渡す方法

# はじめに
SpringBootで設定した値をJavaScriptに渡す際に、少しばかり、つまずいたため備忘録がてら記録しておこうと思います。
SpringBootとJavaScriptを用いた場合には、非常にあるあるな事象だと思うので、ご参考になれば幸いです。
ちなみに、Thymeleafでは、このことを「 **JavaScriptナチュラルテンプレート** 」と呼ぶようです。

# ControllerからJavaScriptに値を渡す方法
以下のように`Model`に登録してある値をJavaScriptに渡したいとします。

“`java:SampleController.java
@GetMapping(“/index”)
public String getIndex(EasyHouseholdForm form, Model model) {

model.addAttribute(“form”, form);

return “sample/index”;
}
“`

これを渡す方法は`Thymeleaf`で以下のようにします。

“`ht

元記事を表示

【Java】ファイルダウンロード

# まえがき
ファイルをバイナリに変換したものをレスポンスにセットすることで、ファイルダウンロードを実現する。やり方は2つ。

① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。
② レスポンス(メソッドの引数/HttpServletResponse)にバイナリをセットする。

# 参考

① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。

https://nainaistar.hatenablog.com/entry/2021/10/21/120000

② レスポンス(メソッドの引数/HttpServletResponse)にバイナリをセットする。

https://stackoverflow.com/questions/17933508/how-to-delete-a-file-after-sending-it-in-a-web-app

# ① レスポンス(Controllerメソッドの戻り値)にバイナリをセットする。

## ソースコード
“`java
import java.io.IOException;
impo

元記事を表示

【 Java Servletについて(また、その周辺) 】

現在書籍にてJavaを独学で学習中です。
この投稿はその備忘録になります。

## Java Servlet(サーブレット)とは?
Javaサーブレットとは、一言でいうと`プログラム`のことです。
どんなプログラムか?
・`Java`を使って作成されている。
・`サーバ側(バックエンド側)で動くプログラム`。
・動的なwebページの`配信システムを実現するためのプログラム`。

#### ■Javaサーブレットの働き■
クライアント側からのリクエストをサーブレットが受けて、
データの処理や動的なwebページを生成したりします。
【例】YouTubeで👍ボタンを押すとそれが反映されたページが構成される。

#### ■サーブレットコンテナという実行環境■
サーブレットはプログラムのため実行環境が必要になります。
その実行環境となるソフトウェアが`サーブレットコンテナ`です。

#### ■GETメソッドとPOSTメソッド(リクエストの違い)■
サーブレットはクライアント側から送られてくるリクエストに対して、
`GETメソッド`か`POSTメソッド`かを判断します。
・GETメソッド…

元記事を表示

Javaでメール受信

# 概要

[Apache James](https://james.apache.org/)を使うサンプル。Jamesはかなり高機能なようですが、今回はメール受信して独自に処理する必要があったので、受信してログ出すだけの最小サンプル。

# Apache James

Javaで実装されているメールサーバ。SMTPやIMAPなどに対応しているようです。「Mailet」を実装することでメールの独自処理を行うことができます。

# 実装

[https://github.com/YasunoriHigashiyama/custom-james-assembly-sample](https://github.com/YasunoriHigashiyama/custom-james-assembly-sample)

元記事を表示

廃止されたJavaアプレットをブラウザ外で動かしてみました

# はじめに
本投稿の内容は、ブラウザ上でJavaアプレットを動かすものではありません。

現状として私は何度か繰り返し使う可能性が高い方法です。なのに忘れそうです。
ここにメモしておきます。

# 環境および前提
Windows10.

この方法ではJavaアプレット本体のソースが不可欠です。
今回は、動かしたいJavaアプレットが載っているページの管理人様が、github上でアプレットの[本体であるソース](https://github.com/edpegg/CutTheKnot-Java)を公開していました。
(あまり公開されているものとは思いません。が、今回のケースに関しては公開することで、Javaアプレットの廃止に対応できないことを補う意図があったそうです。非公開だけどどうしても使いたいなら、管理人様にお願いすることになるのかもしれません。)

また、JavaがPCにインストールされていることが必要です。
今回の環境は下記。
“`
java version “1.8.0_131”
Java(TM) SE Runtime Environment (build 1.8.0_13

元記事を表示

eclipseにおける「クリーン」とは

■まとめるきっかけ

・原因不明のエラーで悩まされて、サーバーをクリーンすると解決したという場面が何度かあり、真剣にクリーンの機能について調べ、利用するタイミングを確認しておきたい。

■ここでまとめる機能
・プロジェクトのクリーン
・サーバーのクリーン
・リフレッシュ

それぞれの概要と、実行タイミングを記載する。

■プロジェクトのクリーン
“全て”のビルド成果物を削除し、
“全て”のモジュールをビルドしなおすこと。

一部モジュールを修正した際に、自動でビルドが行われるが、あれは修正した箇所のみをビルドしなおしている。
クリーンビルドは、一旦ビルドによって、作成されたクラスファイルなどのファイルを削除し、全てのモジュールをビルドしなおす。

●実行タイミング
サーバーで実行する前には一度は行うべき、依存関係にあるモジュールを特定することは難しいため。

■リフレッシュ
Eclipse外で中身を変更した時、それをEclipse内に反映させたい時などに使う。
ビルドは行っていない。

●実行タイミング

元記事を表示

Spring4Shell:JavaのSpringフレームワークのゼロデイRCE脆弱性について解説します

本記事は2022年3月31日(米国時間)/2022年4月1日(日本時間)に公開した英語ブログ[Spring4Shell: The zero-day RCE in the Spring Framework explained](https://snyk.io/blog/spring4shell-zero-day-rce-spring-framework-explained/)を日本語化した内容です。

[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/687b9c44-fd95-1778-2869-898100ade8b6.png)](https://snyk.io/jp)

2022年3月30日(米国時間)、Spring フレームワークに[リモートコード実行(RCE)可能な重大な脆弱性](https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751)が発見されました。具体

元記事を表示

gradle.ktsでMavenリポジトリにpublish

gradle/kotlinでMavenリポジトリにpublish
===
日記

環境

– Gradle 7.1
– Kotnin 1.6
– Nexus Repository Manager 3.36.0

[サンプル](https://github.com/kyoya-p/samples/blob/master/2021/SNMP4J/Snmp4jUtils_KtJvm/build.gradle.kts)

build.gradle.kts に [Maven Plugin](https://docs.gradle.org/current/userguide/publishing_maven.html)を追加

https://docs.gradle.org/current/userguide/publishing_maven.html

さらに、publish対象モジュールの名前はバージョンを定義

“`build.gradle.kts
plugins {
kotlin(“jvm”) version “1.5.31”
`maven-publish`

元記事を表示

【Java】Collectorインタフェースの使用方法 

# Collectorインタフェース
ストリーム外部のオブジェクトの状態を変更したい時に使用します。また、Collectorはストリームのリダクション操作のためのインターフェースです。リダクション操作とは一連の入力要素を受け取り、結合操作を繰り返し適用することで、単一のサマリー結果を出力します。例えば、一連の数値の合計や、最大値の合計値などを求めることが挙げられます。

# なぜ必要なのか?
副作用がある処理の問題を解決できるのがCollectorインターフェースです。副作用のある処理とは、同じメソッドでもタイミングによって結果が変わってくる処理のことです。例えば、外部のオブジェクトにラムダ式の内部でアクセスする場合、そのオブジェクトは実質的にfinalとして扱われます。そのため、変数が保持している参照を変更していないかはコンパラーはチェックしていますが、参照先のオブジェクトが持つ値を変更しているかどうかはチェックしません。そのため、参照先のオブジェクトが持つ値を変更してもコンパイルエラーにはなりません。このような、副作用のある処理を解決するのがCollectorインターフェースなので

元記事を表示

「マイクロサービスパターン」の復習 4章

## 概要

– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 4章 サーガによるトランザクションの管理

– マイクロサービスでトランザクションをどう扱うかの話
– マイクロサービスアーキテクチャでは、多数のサービスがあり、それぞれが自分用のデータベースをもっている。
– ではデータの整合性はどうやって維持するのか?

### 分散トランザクション

– 従来、分散アーキテクチャでは、分散トランザクションが唯一の選択肢かのごとく言われてきた
– 利点
– 単一データベースとプログラミングモデルが変わらない
– ACIDについても、単一データベースと同様に期待できる
– 欠点
– 可用性が低い
– すべてのサービスが生きてないといけないので
– 同期的
– そもそもそういうプログラミングモデルなので
– サポートがない場合もある
– RDBMS以外が入ると、サポートされてない方

元記事を表示

コンピュータとオセロ対戦50 ~行列計算~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/1f784fbd9d1af6b03415)

# 今回の目標
新しい深層学習ライブラリの作成のため、基本となるMatrixクラスを作成する。
# ここから本編
これまでの方法では、強いオセロを作ることが難しいことが前回の実験で分かりました。
そのためこれからは深層強化学習、DQNと呼ばれるものをやってみようと思います。
しかし私は強化学習の経験がなく、また、今まで使用していた自作ライブラリは実行速度の点で不安があります。
そこで、強化学習について勉強する傍ら、ライブラリの作り直しを行うことにしました。
この記事では、ライブラリ内で使用する基本データ型となるMatrixクラスを作成します。

少し話は変わりますが、[これらの記事](https://qiita.com/tt_and_tk/items/068f2afde6db637e189f#%E3%83%A9%E3%82%A4%E3%83%96%E3%

元記事を表示

SE 1年目で読んだ技術書68冊+α

# 概要
社会人1年目が終わるので、この1年間で読んだ本のうち技術寄りの68冊と、Udemy 10本をざっくり紹介します。

## 説明
オススメ度、難易度を5段階で付けています。

「技術寄りのスキルを地道に付けたいSE1年目」を想定しており、情報系学部生やWeb系エンジニア1年目へのオススメ度とは異なります。また、SEでも「コードは書きたくないです。上流だけやって数年でコンサルに転職したいです」というキャリア観の人へのオススメ度とも異なります。

難易度観はIT業界新卒平均の感覚と上下にズレていることがあります。
参考までに、1年前時点の自分です。
– 情報系修士卒(基礎理論系)
– 応用情報は持ってる
– CやPythonは平凡程度にできる。関数型言語の方が得意
– フロントエンドは初心者
– Japanese Traditional SIer

読んだ本はジャンルごとに時系列で掲載していますが、「この順で読むのがいい」になっていないこともあります。
たまたま難易度が前後していることもありますし、「読み終えた技術書とやり終えたUdemy」のみ紹介しているため、途中で別の学習が挟ま

元記事を表示

OTHERカテゴリの最新記事