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

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

Minioを用いてAWSアカウントなしでS3接続(javaSDK)を確認する方法

#概要
この記事では、AWSのアカウントなしでもAWS S3 接続を確認できる方法を記事にしてみました。
Minio自体は、AWS S3 と互換性があるマルチクラウドオブジェクトストレージのOSSとして知られています。
現場の業務上 S3 に対してJavaを用いて接続する必要があり自宅で無料で接続確認がしたくてminioを採用しました。
使用方法をwebで調べたのですが、出てくるのはdockerを用いて簡単に構築することができることやMinioが提供しているライブラリを用いて接続する方法しかなく、AWS SDKで接続する方法が見つからなかったので今回挑戦し成功したので記事にしてみました。

minioって何?っていう方は以下の記事や公式のサイトを見ると理解できると思います。
https://min.io/
https://dev.classmethod.jp/articles/s3-compatible-storage-minio/

aws s3って何?という方は以下の記事や公式のサイトを見ると理解できると思います。
https://aws.amazon.com/jp/s3/
htt

元記事を表示

[java]戻り値を利用して台形の面積を求める

アウトプット用!!

5回目は
戻り値を利用して台形の面積を求めていく!!

はじめに
戻り値とは何なのか??
戻り値とは呼び出されたメソッドから、呼び出し元のメソッドへ値を返すことまたは値を戻すことを言います。
戻り値を使うことでより汎用性のあるメソッドを作れるようになります。

早速ですが、こちらがコードになります

“`ensyu1.java
//戻り値を利用して台形の面積を求める
//台形の公式     面積 = {(上辺 + 下辺) *  高さ} /2
public class ensyu1 {
public static void main(String[] args) {
int area = daikei(5, 7, 4);
System.out.println(“台形の面積は” + area + “㎠です”);
}

public static int daikei(int topside, int bottomside, int height) {
int area = ((topside + bottomside) * 4) /2;
re

元記事を表示

Java – try-catch throwsを用いた例外処理について

# Javaの例外処理を独自の例外クラスを作成して行う方法
* なぜこの記事を書くことに至ったか
* 大学の課題でtry-catchを用いた例外処理のプログラムを書かないといけなくなったため
* 備忘録として残しておくため

# 本題

* 課題の内容は、Scannerインスタンスで入力された文字列が用意された配列(2つ)の中身と入力内容(2つ)が一 するかどうかというもの。

* そして、try-catchを用いて独自の例外クラスを用いた処理を行うために、入力内容が何もない状態(改行)の時に例外処理を行うプログラムを作れ、というものでした。
 

 まず先に例外処理クラスの作成を行います。

“` java:ExceptionCheck.java
public class ExceptionCheck extends Exception{
// warningを回避するための宣言
private static final long serialVersionUID = 1L;

ExceptionCheck(String msg) {
// 継承

元記事を表示

iOS APIでは RSA/ECB/OAEPwithSHA-256andMGF1Padding の暗号化・復号ができない

iOS の標準APIでは、Java の RSA-OAEP の “RSA/ECB/OAEPwithSHA-256andMGF1Padding” の暗号化・復号ができません。SHA-512も同様。

## iOS API と Java の OAEP の違い

[OAEP](https://ja.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding) は RSA で使われる平文パディングの手法で、アルゴリズムとしては2つのダイジェスト(ハッシュ)アルゴリズムを使います。

* メッセージダイジェスト
* MGF(Mask Generation Function) ダイジェスト

iOS の標準API と Java API では OAEP の仕様が微妙に違います。

* Java の RSA/ECB/OAEPwithSHA-256andMGF1Padding: メッセージダイジェスト=SHA-256, MGF1ダイジェスト=**SHA-1**
* iOS の SecurityAlgorithm.rsaEncryptionOAEPSHA

元記事を表示

[java]標準入力とif文で簡単なプログラムを作ってみた。

アウトプット用!!
今回は標準入力と条件式で簡単なプログラムを作ろう!とのことでさっそくやっていく。

まず今回のプログラムの流れ
①キーボードで好きな沖縄料理を入力する。
②条件式を用いて入力した文字と条件が一致したらtrueになって沖縄料理が食べられる。もし沖縄料理じゃないとfalseになり沖縄料理ではないよ!と表示される。

“`okinawa.java
import java.util.Scanner;

public class Okinawa {

public static void main(String[] args) {

System.out.println(“——————“);
System.out.println(“沖縄料理を食べよう!!”);
System.out.println(“何を食べたいですか?”);
System.out.println(“——————“);

Scanner scanner = new

元記事を表示

MyBatis × SpringBoot チャットアプリでメッセージ・画像送信機能の作成

#はじめに
今回は、自作のチャットアプリで主機能となるメッセージ・画像送信機能の実装を行なったので、実装にあたり詰まったところと解説をアウトプットしていこうと思います。

#環境
– SpringBoot 2.5.5
– MySQL 5.6.51
– MyBatis 2.2.0
– thymeleaf

#ER図
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/e2284666-c6b2-1d52-62d6-ae3283747e27.png)

#テーブル定義
## usersテーブル

| Column | Type | Options |
| ———— | ——- | ———|
| id(PK・FK) | BIGINT | NOT NULL |
| email | VARCHAR | NOT NULL |
| password | VARCHAR | NOT NULL |
| p

元記事を表示

気ぃつけよ! JavaエンジニアがC#を学ぶ時につまずくポイント3選

こんにちは。
Javaを今まで書いていてここ2ヶ月でC#を書き始めたものです。

それにしてもJavaとC#って似てますよね?

> 「JavaとC#ってほぼ同じだし、1日で文法さらえたわ」

こんなふうに思っていたら、要注意です(自戒)。
似てるが故にハマる落とし穴というものもあるのです。

# 背景

聞くところによると、Javaが1995年に最初に登場して、C#が2000年に最初に登場したようです。
Javaの方が5年上の先輩ですね。

よって、**C#にできるけどJavaではできない**、みたいな言語機能もあるわけです。

まあでもお互いに影響し合って今まで成長してきたのでしょうね。

ここからは、実際にJavaとC#の相違点について考え、**Javaエンジニアが特に陥りやすい**言語仕様などを紹介していきたいと思います。

# 1. “`protected`” の意味が違う

JavaをやっていてC#を始めて触る人は大概、「internalってなんだ?でもprotectedは共通してる!たぶん同じ意味だろうな」なんて思ったりするものです。

違います。

JavaとC#で

元記事を表示

== とequalsの使い分け

== とequalsの使い分け

[同一性と同値性]
・同一性
//同じインスタンスを参照していること
・同値性
//インスタンスは異なるが、同じ値を持っているこ

[==]
同一性を示す時に使う
int型などのプリミティブ型の時には、値が等しいことを示すことができる
配列や文字列などの参照型、同じオブジェクトを参照しているときにtrue
→2つの文字列が同じ値であっても、参照している文字列のオブジェクトが異なる場合はfalseになる

[equals]
同値性を示すときに使う
なにかオブジェクトが等しいかどうかを示すときに使う
Ex.

String sample1 = sc.next();
String sample2 = sc.next();

if(sample1.equals(sample2)){
処理
}

元記事を表示

日付マスタ/カレンダーマスタ生成プログラムを作る Java編

#はじめに

かなり間が空きましたが前回の記事です。

セルフサービスBIの定着化はデータの下処理で決まる! 日付マスタ/カレンダーマスタに必要な項目
https://qiita.com/kitade58k/items/08db8147a7bb90a1bedd

日付マスタ/カレンダーマスタの重要性や利便性についてお伝えした記事です。
業務でBI製品を販売している関係で、お客様の創業期に合わせた日付マスタを作成してお客様へプレゼントしていたりします。

そのために作成した日付マスタ/カレンダーマスタ生成プログラムを社内展開したところ作り方を記事にしてみたら?との声があったので今回はその作り方を解説してみようと思います。

#完成版の動作
CUIでコマンドプロンプトから実行します。
こんな感じです。

“`
C:\DateMasterCreator>create.bat
起点日(創業日)を入力してください。形式: yyyyMMdd 例:20000301
※日が1日以外の値の場合、自動的に1日に変換されます
20000401
作成年数を入力してください。例: 20
30
作成先のフ

元記事を表示

【Java文法】データ型

こんにちは、コイキングです。

本記事では’データ型’について、説明したいと思います。

****

# 1.データ型とは?
変数がどの様なタイプのデータかを示すのがデータタイプと言えます。
Javaでデータ型は大きく **’プリミティブ型’と’参照型’** に分けられます。

# 2. プリミティブ型
プリミティブ型は **変数に値の実体が格納される** データ型です。
因みに **’変数に格納される値の実体’をリテラル** と言います。

Javaでプリミティブのデータ型は8つありまして、詳しくは以下の表を参考にしてください。

**※ Javaのプリミティブデータ型**

|データの分類|データ型|メモリー空間|値の表現範囲|解説|
|——|—|—|—|—|—|
|整数|byte|1 byte|-128 ~ 127|整数データを入れられるデータ型、最も多く使われているのはint型|
||short|2 byte|-32,768 ~ 32,767||
||int|4 byte|-2,147,483,648 ~ 2,147,483,647||
||long

元記事を表示

[アルゴリズム]挿入ソートで配列の中身を小さい順に並べるプログラム

アウトプット用!!

#第4回目は挿入ソートで配列の中身を小さい順に並べるプログラムを作っていく!!

今回も前回と同様にアルゴリズムを意識してプログラミングしてみました。
早速作っていきます。

“`Sort.java
class Sort3 {
public static void main(String[] args) {
int Sort[] = {9,5,3,1};

int i;
int j;
int x;
for(i = 1; i <= Sort.length-1; i++) { //配列[0]は自動的に整列済み。なので[1]から配列の最後まで値をずらす j = i; while( j >= 1 && Sort[j-1] > Sort[j]) { //
x = Sort[j];
Sort[j] = Sort[j-1];
Sort[j-1] = x;
j = j -1;
}
}
i = i +

元記事を表示

AtCoder Beginner Contest 015をやった(Java)

AtCoder Beginner Contest 015をやった。
C問題は追記予定です。
できるか正直自信がないところです。

##[A](https://atcoder.jp/contests/abc015/tasks/abc015_1)
問題文記述の**必ず違う数字**というところに注意

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
String A = scan.nextLine();
String B = scan.nextLine();
if(B.length() < A.length()){ System.out.println(A); } else { System.out.println(B

元記事を表示

【Java文法】変数

こんにちは、コイキングです。

本記事では’変数’について、説明したいと思います。

***

# 1.変数とは?
![変数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862601/6b26df30-4a95-f141-babd-d43fb7ebf895.png)

変数は値を入れるための、箱のような役割をするものと言えます。
Javaでは数字・文字のようなデータタイプを指定し、変数を宣言します。
こちらは実生活で物を片付ける際に **同じ種類の物同士を箱に入れて整理する** と思ってもらうとオッケーだと思います。

# 2. 変数の宣言
変数を宣言する方法は以下のようです。

“`
// [データタイプ] [変数名];
int var_int_1;
“`

変数が宣言だけされている状態では変数に値が入っていないため、変数の値を出力するなどのコードを作成すると、コンパイルエラーが発生します。

# 3. 変数の初期化
変数を宣言だけした場合、変数がつかえないため、変数に値を入れる必要があります

元記事を表示

Windows出身者がMacでパスを通してみた【zsh】

#背景
Qiita初投稿です。よろしくお願いします。

学生時代と社会人を通し、ずっとWindowsを使ってきた私が個人開発のためMacを使うことになり、Windowsだと慣れていた「パスを通す」という作業で苦労したためやり方をここに残しておきます。

Macでパスを通す記事は検索したらたくさん出てきますが、Macの知識がバックグラウンドにあることを前提に書かれているように見受けられるものが多く、「初心者向け」と書かれていてもWindows出身の私にはわかりづらく感じるものが多かったです。

そのあたりも踏まえ、WindowsからMacに移行した人にもわかりやすい記事を書こうと思いました。

#シェルを理解する
Macでパスの通し方を調べてみると、「シェル」という言葉が出てきます。Windowsを使っていて私は今までシェルを意識しないといけない状況に遭遇したことがなく(意識する必要がある場面もあるとは思うのですが、私がその経験がないだけです)、そもそも「シェル」が何なのかわかりませんでした。

シェルに関する説明は[こちらの記事](https://recruit.cct-inc.co.

元記事を表示

DynamoDBデータ型記述子付きJSONをPOJOに変換する方法

[ref_low]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html
[ref_type]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html#Programming.LowLevelAPI.DataTypeDescriptors
[ref_capture]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/streamsmain.html
[ref_mapper]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBMapper.html

## ユースケース

[Amazon DynamoDB

元記事を表示

プログラミング初心者がjavaを触ってみる1 そもそもjavaって何だ?

#はじめに
現在プログラミング学習を始め5ヶ月目の初学者です。
学んだことをqiitaに投稿という形でアウトプットするため、また備忘録として記事を作成しています。
javaはprogateで軽く触れたことがあるだけですので、改めて基礎的な知識から学習していこうと思います。

macでの環境構築で下記の記事が大変参考になりました。

https://qiita.com/suke_masa/items/f9af0fb84ad9447ae961

##java特徴
###1.JVM(Java Virtual Machine:Java仮想マシン)で動いている
このJVMが動いているコンピュータであればOSがmacでもwindowsでもLinuxでも、どんな環境であれ動作する。

###2.オブジェクト指向で作られている
javaでプログラミングするにはこのオブジェクト指向という考え方が重要

_オブジェクト思考とは?_
モノ(オブジェクト)を同士を関係させ、組み立てていくプログラミングの考え方のこと
例えば机を作る時大きな木材を切り出して作るのは大変だが、天板、足4本と分けて作成すれば簡単に出

元記事を表示

[アルゴリズム]配列の中身を小さい順に並び替えるプログラム

“` Sort.java
アウトプット用!!

#3回目は、
配列の中身を小さい順に並び変えるプログラムを作っていく!!
今回はアルゴリズムの勉強も兼ねてあえてjava.utilパッケージにあるArrays.sort(arr)を使用しないでプログラミングをしてみました。

そこで配列の中身を小さい順に並べるにあたりバブルソート(基本交換法)でやってみました。

こちらがコードになります。

class Sort {
public static void main(String[] args) {
int Sort[] = {8,1,7,5};

int x;
int i = 0;

for(i = 0; i <= Sort.length-2; i++) { //外側のループ(最初の要素から最後の要素の一つ手前に向かって後ろに進む) int j = Sort.length-1; //最後の要素 for(j = Sort.length-1; j>=i+1

元記事を表示

Windowsでclassファイルをデコンパイル

# 経緯
既存のJAVAプログラムを読み解きたい。
そもそもJavaファイルをプログラムとして動かすためにコンパイルしてclassファイルにしているため、逆の手順を踏んで人間が読める形に変換し直す必要がある。

ソースコードからプログラムを生成:コンパイル
プログラムからソースコードを生成:**デコンパイル(逆コンパイル)**

# classファイルをデコンパイルする
以下の手順で行う。

* Amazon Correttoインストール、JAVAのパスを通す
* JADをインストールし、パスを通す
* コマンドプロンプトでデコンパイルを行う
* エラーが出たファイルを逆アセンブルする

## Amazon Corretto インストール、JAVAのパスを通す
Amazon Corretto は、マルチプラットフォームで本番環境に対応した、無料の Open Java Development Kit (OpenJDK) ディストリビューション。
Linux、Windows、macOS などの一般的なオペレーティングシステムで Javaを簡単に使用することができる。

参考:[Ama

元記事を表示

リフレクションでKotlinの要素を取得する【Javaリフレクション編】

Androidの単体テストにあたり、privateなクラスやメソッドにアクセスするために使用するリフレクションについてまとめました。

【注意点】
この記事では、筆者がリフレクションを一緒くたに認識していた背景から、KotlinでJavaリフレクションを使用しています。
しかし実際はKotlinにはKotlinリフレクションが存在するため、あえてKotlinでJavaリフレクションを使うのであれば、その理由を明確にできることが望ましいはずです。
次回は、Kotlinリフレクションをまとめます。

##リフレクションとは
リフレクション(reflection)とは、反射、内省、熟考という意味の英単語です。
JavaやKotlinでは、クラスやコンストラクタ、メソッドなどの情報の取得、必要に応じて書き替えるための仕組みを指します。
Java:[Trail: The Reflection API (The Java™ Tutorials)](https://docs.oracle.com/javase/tutorial/reflect/)

リフレクションを使うことで、通常はアクセスできな

元記事を表示

javaのプロジェクト管理を学ぶ:そもそもビルドって何?

#java プロジェクト管理を学ぶ:そもそもビルドって何?

### 【超初心者向け】Maven超入門
https://qiita.com/tarosa0001/items/e5667cfa857529900216

### そもそも、ビルドとは

– ビルドとは、**「ソースコードに問題(バグ)がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てること」**

– コンパイルとの違い:コンパイルはビルド作業の中に含まれる作業の1段階
– コンパイル: プログラミング言語から機械が分かりやすい機械語に翻訳を行うことを指す。

– **ビルドの仕組みと流れ**
– 1.各ソースコードの静的解析を行う。静的解析では、文法や構文の誤りを検出する(バグを見つける処理)
– 2.プリプロセッサで前処理を行う。定数の数値への置き換えやコメントの削除、マクロ(複数の操作をまとめて呼び出せるようにする機能)の展開
– 3.各ソースコードのコンパイルを行う。機械語に翻訳し、オブジェクトファイル(.o や.objなど)に変換する。
– 4.各オブジェクトファ

元記事を表示

OTHERカテゴリの最新記事