JAVA関連のことを調べてみた

JAVA関連のことを調べてみた
目次

SpringBootで独自ユーザー台帳によるログイン認証とページにユーザー名表示

# この記事はこれの続きです

https://qiita.com/waokitsune/items/d6ef667e1c5ff5f2aac6

# 概要

前回までは **SpringBootが用意してくれる『user』という名前の固定ユーザーでしかログインできない** というシステムでした。

そこから

* ユーザーIDとパスワードは独自の台帳を用意。
* ログインしたあとの画面ではユーザー名表示。

と変更していきます。

また、簡易サンプルのため、ユーザー台帳はデータベースを使わずハードコーディングします。

# UserDetailsServiceを実装したクラスを新規作成

“`java:NekoUserDetailsService.java
package com.example.demo;

import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.sp

元記事を表示

[Cloud Storage API(V2)] Javaでデフォルトのアクセス制御リスト(ACL)エントリを作成・更新・削除する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのデフォルトのアクセス制御リスト(ACL)エントリを作成・更新・削除する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[ACLを作成](#1-aclを作成)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|2|||[ACLを上書き](#2-aclを上書き)|
||1||[スコープ](#21-スコープ)|
||2||[実行](#22-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|3|||[ACLを更新

元記事を表示

Javaで「文の記述と空白や改行の扱い」の動作を確認してみた

# 概要

Javaで「文の記述と空白や改行の扱い」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/const/index4.html

# 実装

以下のファイルを作成しました。
“`Hello03.java
class Hello03{
public static void main(String[] args){
System.out.println(“Hello”);
System.out.println(“How are you?”);
System.out.println(“Bye”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac Hello03.java
$ java Hello03
Hello
How are you?
Bye
“`

# まとめ

何かの役に立てばと。

元記事を表示

SpringBootでログアウト実装を間違えてちゃんとログアウトできていなかった(セッション残)

# 間違い

このように **ただログアウトページへのリンクだけ** でした。

“`html:


login-success

ログアウト


“`

こんな動作になってしまっていました。

1. ログアウトのリンクをクリック。
1. その後に再度認証が必要なページのURLへ直接行けてしまった。
1. セッションが残ったまま = ログアウトできていなかった。

# 正しくはこう

SpringBootにはクロスサイトリクエストフォージェリー対策が施されているので、hiddenパラーメーターを送ってあげる必要がありました。

“`html:

元記事を表示

DeepLのAPI呼んでみた

## はじめに
弊社運用中のアプリにてDeepLを用いた翻訳機能が必要になったため、その実装方法を備忘録として残しておこうと思います。

公式ドキュメントは以下になります。

https://developers.deepl.com/docs/getting-started/your-first-api-request

## 実装していく
まずbuild.gradleにライブラリをインストールします。
“`kotlin
implementation(“com.deepl.api:deepl-java:1.5.0”)
“`

次に公式ドキュメントにあるプログラムをそのままコピペします。
“`kotlin
import com.deepl.api.Translator

class Example {
private val translator: Translator

init {
val authKey = “f63c02c5-f056-…” // あなたのキーに置き換えてください
translator = Translat

元記事を表示

Javaでスリープソートを実装してみた。

## スリープソートとは?
配列内の値だけ並列にsleep処理をし、終わったものから配列に格納してソートするもの。
今回は終わったものから配列に格納する処理が思いつかなかっため、Threadクラスを継承したSleepThreadクラスに処理終了順を持たせる方針で対応した。
## 経緯
現在進行形でIT研修中。
同期がスリープソートというものを紹介してくれたので実装してみた。
拙い部分もあるが、新卒一年目SEということでどうか温かい目で、、、
アドバイス等あればお願いします。

## 実装
“`java:SleepSort.java
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.atomic.AtomicInteger;

/**
* スリープソート
*/
class SleepSort {

/**
* スリープソートを実行します。
* @param args コマンドライン引数
*/
public static void main(Str

元記事を表示

BigDecimal の丸めが結局よく分からない時のチートシート

# 問題

適当な実装って入力値を制限していないのに、負数を与えると正しくない結果を返してきたりしますよね。

全くもう…

# 実行結果を見て判断する?

色々検証するのも面倒といえば面倒なので実行してしまえ、というのはある。

必要な際には最新の動作を把握しておきたいので、チートシート代わりのコードが有ると便利よね。

“`kotlin
import java.math.BigDecimal
import java.math.RoundingMode

fun main() {
listOf(
BigDecimal.valueOf(0.123_456_789),
BigDecimal.valueOf(-0.123_456_789),
BigDecimal.valueOf(123_456_789.123_456_789),
BigDecimal.valueOf(-123_456_789.123_456_789),
).forEach {

元記事を表示

[Cloud Storage API(V2)] Javaでデフォルトのアクセス制御リスト(ACL)エントリを取得する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのデフォルトのアクセス制御リスト(ACL)エントリを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[ACLリストを取得](#1-aclリストを取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|2|||[ACLを取得](#2-aclを取得)|
||1||[スコープ](#21-スコープ)|
||2||[実行](#22-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|

## 1. ACLリストを

元記事を表示

java オーバーロード

## オーバーロード
同じメソッドを複数のバージョンで定義すること
引数の数や型が異なれば同じ名前で定義することができる

#### 型が異なるオーバーロード
“`Main.java
public class Main {
// 1つめ addメソッド(int型)
public static int add(int a, int b) {
return a + b;
}
// 2つめ addメソッド(double型)
public static double add(double a, double b) {
return a + b;
}
// 3つめ addメソッド(String型)
public static String add(String a, String b) {
return a + b;
}
public static void main(String[] args) {
// 1つめ addメソッド(int型)が呼び出される
System.out.println(add(5, 10));
// 2つめ addメソッド

元記事を表示

Spring Boot: ビューの複数データをコントローラのListで受けた例

# この記事で分かる事
SpringBootを使用したWebアプリケーション開発において、ビューから送信された(キーが同じ)複数のデータをコントローラのListクラスで受け取る際、どのような形で格納されるか、表にまとめています。
表を見る事で、コントローラのデータハンドリングを適切に指定できます。

# リクエストとList内データのまとめ
・条件
リクエストはhoge=valueの形式で送ります。
コントローラのListクラスの型はList\ hogeで宣言しています。
hoge
(デバッグで見た値)はEclipceのデバッグ機能で表示された値を記載しています。

| リクエストの状態\List | hoge
(デバッグで見た値) | hoge.size()
(実行結果) | hoge.get(0)
(実行結果) |
| ———————————————————-

元記事を表示

配列

## JavaSilverでメモしたところ備忘録として残しておこうと思います。

# 配列の宣言・初期化について

### 配列の宣言
“`java
//データ型[] 配列変数名
int[] num;

//もしくは、データ型 配列変数名[]
int num[];
“`
### 配列の作成
“`java
//配列変数名 = new データ型[要素数]
num = new int[3];

//初期化
int[] num = new int[3];
“`

#### []の位置は変数名の後ろでもコンパイル可
“`java
int[] num; //もしくは
int num[];

//二次元でも三次元でも同じ

int[][] num;
int num[][];

int[][][] num;
int num[][][];
“`
#### []は分けて書いてもコンパイル可
“`java
int[] num[];
int[] num[][]
“`
#### 変数とインスタンスの次元は一致させる
“`java
int[] array = new int[2][2]; //

元記事を表示

[1.20.4]Spigot PluginでCustom BiomeのNamespaceを取得する

# 結論

Java Code

“`java:java
public BiomeBase getBiomeBase(Location location) {
World bukkitWorld = location.getWorld();
if(bukkitWorld == null)
return null;

int x = location.getBlockX();
int y = location.getBlockY();
int z = location.getBlockZ();
net.minecraft.world.level.World nmsWorld = ((CraftWorld) bukkitWorld).getHandle();
return nmsWorld.getNoiseBiome(x >> 2, y >> 2, z >> 2).a();

元記事を表示

Web開発の基本概念-3層アーキテクチャについて

この記事はweb開発をするにあたっての3層アーキテクチャについて記述する.さらに例示としてPythonフレームワークであるDjangoとJavaのフレームワークであるSpring Frameworkと3層アーキテクチャの関係性についても記載する.

# 3層アーキテクチャとは
3層アーキテクチャとは,アプリケーションの構造を以下の層に分離することを指す.

![スクリーンショット 2024-04-26 14.27.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3757442/9cc5c2f1-2354-e8d3-7d8a-2ed28836844f.png)

## クライアントサイド
ユーザーインターフェース(UI)を提供するサイド.ユーザーの入力を受け取り、プレゼンテーション層(WEBサーバ)にHTTPリクエストを送信する.また,プレゼンテーション層(WEBサーバ)からのHTTPレスポンスを受け取り,結果を表示する.

## サーバーサイド
### プレゼンテーション層
クライアントからのH

元記事を表示

音声データをMIDIで完全再現する

# 目次
1.はじめに
2.概要
3.詳細
4.結果
5.やってみての感想

# はじめに
 Youtubeで音の錯覚がバズっていたのを見かけたので、自分でも作ってみたいなと思い実行に至った。

※音の錯覚とは、
 MIDIだけで相当数の音を組み合わせることで、元の音声を再現するもの。

# 概要
 フーリエ変換をすることで、元の波形を周波数とその位相に変換することができます。その原理を利用して、MIDIで設定する楽器を正弦波にし、MIDIだけで人のボーカルも含めた曲を再生できるようにしました。(フーリエ逆変換相当の部分をMIDIで行う。)
原理としては、Mp3に近いと思います。

# 詳細

MIDI

 バズっていた音の錯覚動画では、楽器はピアノ(初期設定?)や電子ピアノなどになっていたと思われます。これらの楽器は倍音成分が少ないので比較的高精度に再現できるのだと考えてますが、今回は完全再現していきたいので、より正弦波に近い楽器を設定していきたいと思います。

 Windows標準搭載のMIDI音源であるMicrosoft GS Wavetable SW Sy

元記事を表示

[Cloud Storage API(V2)] Javaでバケットの変更通知(通知サブスクリプション)を取得する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのバケットの変更通知(通知サブスクリプション)を取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[変更通知リストを取得](#1-変更通知リストを取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|2|||[変更通知を取得](#2-変更通知を取得)|
||1||[スコープ](#21-スコープ)|
||2||[実行](#22-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|

## 1. 変更通知リ

元記事を表示

Javaのお勉強(Gold資格対策第1章まとめ)

# はじめに..
全くの未経験の友達にプログラミング(Java)を教えることになり、復習ついでにJavaGoldを受講することにした。
本稿では、紫本を参考にまとめている。

まずは、以下の章についてまとめる。
* 第1章 : Javaクラスの設計

## 第1章まとめ
### switch文
多分岐処理を行う文として、**switch文**がある。
式を評価した結果と**case**で指定した定数を比較し、一致した場合にそのcase以降に記述した処理文を実行する。
一致しない場合は、次のcase文と比較する
下記コードはBが表示される
“`java:switch文例
int num = 2;

switch(num){
case 1:
System.out.println(“A”);
break;
case 2:
System.out.println(“B”);
break;
case 3:
System.out.println(“C”);
}
“`
switch文の式の結果はデータ型として、**byte**, **char

元記事を表示

Spring Bootを使ってWebアプリケーションを作成する方法(実装編)

# はじめに
### この記事でわかること
* Spring BootにおけるWebアプリケーションの具体的な実装方法

### 開発環境
| | |
|:-:|:-:|
|Java |22 |
|ビルドツール | Maven |
|IDE | InteliJ IDEA 2022.1.3 |
|DB | MySQL Ver 8.3.0 |
### 今回のMVCの概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/ca0b3c48-94cb-1e6c-96ae-759288a2ece2.png)

 今回の各クラスの関係性は大雑把に書くと図のようになります。
 ユーザーが入力した情報をJavaのコントローラークラスに引き渡して、CONTROLがDaoクラスにDBのアクセスとSQL送信を指示、DAOが取得したデータをCONTROLに返して、CONTROLがVIEWに表示を指示しての繰り返しです。
 Spring Bootの大きな特徴はVIEWと

元記事を表示

[Cloud Storage API(V2)] Javaでオブジェクトの情報を取得する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのオブジェクトのメタデータを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う](https://qiita.com/doran/items/2a5f7ef8070fd5b8c94d)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[オブジェクト一覧を取得](#1-オブジェクト一覧を取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
||4||[オブジェクト一覧のパラメータの指定例](#14-オブジェクト一覧のパラメータの指定例)|
|||1|[全てのオブジェクトを取得](#141-全てのオブジェクトを取得)|
|||2|[ルート階層配下のみを取得](#142-ルート階層

元記事を表示

UbuntuにJavaをインストール

まず定番の
“`
apt update
“`
を行い最新状態にします。

その後、
“`
apt-cache search openjdk
“`
でJDKのパッケージを探し、結果である下の図から、(私の場合)
“`
openjdk-11-dbg – Java runtime based on OpenJDK (debugging symbols)
openjdk-11-doc – OpenJDK Development Kit (JDK) documentation
openjdk-11-jdk – OpenJDK Development Kit (JDK)
openjdk-11-jdk-headless – OpenJDK Development Kit (JDK) (headless)
openjdk-11-jre – OpenJDK Java runtime, using Hotspot JIT
openjdk-11-jre-headless – OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-11-

元記事を表示

Javaで「mainメソッドとは」の動作を確認してみた

# 概要

Javaで「mainメソッドとは」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/const/index3.html

# 実装

以下のファイルを作成しました。
“`Hello.java
class Hello{
public static void main(String[] args){
System.out.println(“Hello”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac Hello.java
$ java Hello
Hello
“`

# まとめ

何かの役に立てばと。

元記事を表示

OTHERカテゴリの最新記事