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

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

Mockitoが難しいのでUdemyで勉強しました ②

# 概要
前回の続きです。

転職の面接で見せるSpringBootのポートフォリオ作成しています。
現在テストコードで苦戦してるのでUdemyの講座で勉強しています。
今回はSection10:Behavior Driven Mockitoを取り組みました。
内容については大まかに何やってるかを見てもらえれば幸いです。
詳細は講座のほうで確認お願い致します。

https://www.udemy.com/course/testing-spring-boot-beginner-to-guru/

# Behavior Driven Development(BDD)とは
以下リンクで理解しました。
mockitoはBDDに対応してるみたいです。

https://shiftasia.com/ja/column/%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E9%96%8B%E7%99%BA%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Btdd%E3%81%A8bdd/#:~:text=BDD%E3%81%AFTDD%E

元記事を表示

Java学習まとめ②

### はじめに
Javaの学習をはじめたばかりです。
まとめメモの様になってしまっています、ご了承ください?‍♀️
自分なりにまとめたり、学習してきたRailsと少しリンクさせて理解を深めようとしていますが、間違っている可能性があります。

### static
オブジェクトを生成していなくても利用できるメンバ変数やメソッドを定義するときに使用
`クラス名.変数名[メソッド名]`で使用可能

##### 使い所
– 全てのインスタンスから共通して使う変数やメソッドを作りたいときに使う
– クラスの関連する便利なメソッドをまとめたいとき 

例)いくつオブジェクトを生成したかcountしたいとき
“`java:Student.java
class Student {
int counter = 0;
// コンストラクタにインクリメント
Student() {

counter ++;
}

void display() {
System.out.println(counter + “人です”);
}
}
“`
これで行けるか

元記事を表示

DTOとは

### DTO(Data Transfer Object)とは

* ユーザーの要請データをサーバに受け渡し、サーバの応答データをユーザーに渡すオブジェクト
* MVCでは、ControllerがModelとViewのデータを送受信するときにDTOを使用する
* User ⇄ View ←(DTO)→ Controller ←(DTO)→ Model

#### DTOを使用する利点
* Modelをカプセル化し、UI画面で使用するデータのみを選択的に送信することで情報漏洩を防止する
* 複数のデータをまとめて1つの要請に送ることができ、データの検証とロジック処理が1回で終わる
* 検証とロジック処理を何度もしないことで安定性が高くなり、処理時間が短縮される

元記事を表示

[Java] 基礎的な例外処理について

### はじめに
Javaの学習のまとめです
今回は例外に絞って投稿しています。

### かなりオススメします

https://www.youtube.com/channel/UC57H40XcMcL4Lbp_Uq2MVaQ

とてもわかりやすいし、説明がすんなり入ってきます。
なぜ使うのか・いつ使うのかも含めて丁寧に説明してくれているのでJava学習をはじめたばかりの方はぜひ!
わかりやすいように構成が考えられているようで、その時その時に必要な情報を出してくれるのでパンクしないで済みます。
また、オブジェクト指向についても解説してくれていますので曖昧な方もぜひ!

### 例外
実行時に発生するエラーのこと
例外処理を行わないとプログラムにエラーが出た箇所で止まってしまい(異常終了し)、最後まで実行されない
→これだと困るので例外処理が必要になる

##### 何が起きているのか
例外が発生すると例外クラスのオブジェクトが**自動生成**される
Javaには発生するエラーごとに例外クラスが存在していて、エラーが発生するとそこからオブジェクトを自動で生成して表示してくれる

###

元記事を表示

【初心者】プログラムを作る材料5つ その3「コンパイラ」

# はじめに
IT歴2ヶ月の初心者プログラマー鹿太郎です。
初心者なりに感じた疑問や分からないことを発信していきたいと思います!

続いては、プログラムを作る材料その3!「コンパイラ」について紹介します!

# コンパイラとは
コンパイラとは人間が理解できる言葉で書いたプログラム(ソースコード)を、コンピュータが理解できる「機械語」に変換するプログラムのことです。

「機械語」とは0と1の2種類で表現されるデータのことで、コンピュータはこの機械語で構成されたものしか読み取れません。

しかし、人間が機械語でコードを書くのは非常に効率が悪く、また難解です。

よって、コンパイラが必要なのです。

# コンパイラがプログラムを機械語に変換する仕組み
コンパイラは以下の5つのステップを踏んで、プログラムを機械語に変換しています。

## ① 字句解析
「字句解析」とは、ある言語で書かれたプログラムについて、構成要素を解析し、言語的に意味のある最小の単位に分解する処理のことです。

予約語や識別子、演算子などの単位で分け、プログラムのどこにどのような要素があるのか把握するのが目的となります。

元記事を表示

JibのDockerベースイメージのバージョンを固定してみた

# はじめに

こんにちは!毎日あれこれくだらないことを思い巡らすシステムエンジニアのfengdidiです。
本日はJibのDockerベースイメージのバージョンを固定する方法をご紹介させていただきます。

# Dockerベースイメージのバージョンを固定する理由

先日、Google Jibを使ってSpringbootのプロジェクトをデプロイしていました。

> Jibは、Javaアプリケーションの構成を読み取り、ビルドプロセスの中でJDKが入っているベースイメージにJavaアプリケーションを加えてコンテナイメージを生成し、Dockerコンテナのレジストリへの登録まで自動的に行ってくれるビルドツールです。

Jibは非常に便利ですが、JibはデフォルトでDockerベースイメージを固定しないので、Jibのバージョンにより、ビルドする時に使うDockerベースイメージは違う可能性があります。

Jibの公式ドキュメントによりますと、

> Starting from version 3.2, the default base image is the official eclipse

元記事を表示

AmazonHttpClientにて、プロキシが自動で設定されてしまうことにハマった

## 背景
ある日、DynamoDBをローカルで動かすようなプログラムをいつものように実行したら、プロキシ関係のエラーではまった。
結局は単純だったが、かなり時間かけてしまったので、ほかに自分みたいな人間が生まれないように、記録。

## 起きたこと

JavaプログラムからAWS SDkを使用して、Awsのサービスにアクセスしようとした。
これまでは、問題なくアクセスできていたが、サービスにアクセスできない事態が発生。

スタックトレースには、以下のエラーが発生。
“`console
com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: null (Service: AmazonDynamoDBv2; Status Code: 502; Error Code: null; Request ID: null; Proxy: proxy.*****)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(Amaz

元記事を表示

Mr.Nam 先生の講義要約 Chapter 2, 27-35

27番 例外処理(1)-実習

ExceptionController.java
メソッドの前に@ExceptionHandlerを付けてtry-catchのcatchのように使用可能。ただし、同じクラス内で使用。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

28番 例外処理(2)-理論
@ExceptionHandlerと@ControllerAdvice
例外処理のためのメソッドを作成し、@ExceptionHandlerを貼り付ける。

@ControllerAdviceで全域例外処理クラスを作成可能(パッケージ指定可能)
例外処理メソッドが重複の場合、コントローラ内の例外処理メソッドが優先。

@ResonseStatus
応答メッセージのステータスコードを変更する際に使用

例外処理メソッド
例外処理をすると200(成功)が出る。–>405に変更

ExceptionResolver
ばねの例外処理基本戦略
handlerExceptionResolver
1. ExceptionHandlerExc

元記事を表示

Mr.Nam 先生の講義要約 Chapter 2, 14-26

14番 サブレットとJSP(2)
有効範囲(scope)と属性(attribute)
HTTP特徴-状態情報保存X(Stateless)
したがって、貯蔵所が必要(Stateful)-状態情報保存ができます。

4つの貯蔵所(アクセス範囲、生存期間によって区分)
貯蔵所はMap形態(Key:属性、Value:属性値)

Mapに読み込み、書き込み可能。
読み:getAttribute()
書き方:setAttribute()
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

15番 サブレットとJSP(3)
URLパターンの種類と優先順位
1.exactmapping(正確)
– URL pattern : /login/hello.do
– マッチングURL:http://localhost/ch2/login/hello.do

2.pathmapping(経路マッピング)
– URL pattern : /login/*
– マッチングURL:http://localhost/ch2/login/~~~~~~

元記事を表示

[Java] 基礎的なカプセル化について

### はじめに
Javaの学習のまとめです
以前にもざっくりとしたまとめを書きましたが、今回はカプセル化に絞って投稿しています。

### かなりオススメします

https://www.youtube.com/channel/UC57H40XcMcL4Lbp_Uq2MVaQ

とてもわかりやすいし、説明がすんなり入ってきます。
なぜ使うのか・いつ使うのかも含めて丁寧に説明してくれているのでJava学習をはじめたばかりの方はぜひ!
わかりやすいように構成が考えられているようで、その時その時に必要な情報を出してくれるのでパンクしないで済みます。
また、オブジェクト指向についても解説してくれていますので曖昧な方もぜひ!

### アクセス修飾子
クラス・メンバ変数・メソッドの**公開範囲**を指定できる
| 修飾子 | 同クラス | 同パッケージ | サブクラス | その他 |
|:-:|:-:|:-:|:-:|:-:|
| public | ◯ | ◯ | ◯ | ◯ |
| protected | ◯ | ◯ | ◯ | |
| (無し) | ◯ | ◯

元記事を表示

CordaにおけるReference Stateの活用方法(デモンストレーション編)

## まえがき
今回、Reference State(以下Ref.State)に関する細かな動作確認を行うため調査を行いました。
調査にあたりましてサンプルプログラムを作成しました。**[コード解説編](https://qiita.com/ShotaIMO/items/c9a7fbac0ee2c33196cf)**と**デモンストレーション編**の2部編成でお届けしたいと思います。**本記事はRef.Stateについて詳しく知りたいCordaに精通していらっしゃるエンジニアの方やセールスの方を対象としております。** Cordaについて詳しく知りたい方は **[R3公式ドキュメント](https://docs.r3.com/)** や **[株式会社digglueさんの記事](https://baasinfo.net/?p=2205#outline__2_2)** をご覧ください。また、Cordaの概念であるUTXOモデルについて知りたい方は、**[こちらの解説記事](https://medium.com/corda-japan/corda%E3%83%87%E3%83%BC%E3%8

元記事を表示

CordaにおけるReference Stateの活用方法(コード解説編)

## まえがき
今回、Reference State(以下Ref.State)に関する細かな動作確認を行うため調査を行いました。
調査にあたりましてサンプルプログラムを作成しました。**コード解説編**と **[デモンストレーション編](https://qiita.com/ShotaIMO/items/8be229ab8cd873d87c89)**の2部編成でお届けしたいと思います。**本記事はRef.Stateについて詳しく知りたいCordaに精通していらっしゃるエンジニアの方やセールスの方を対象としております。** Cordaについて詳しく知りたい方は **[R3公式ドキュメント](https://docs.r3.com/)** や **[株式会社digglueさんの記事](https://baasinfo.net/?p=2205#outline__2_2)** をご覧ください。また、Cordaの概念であるUTXOモデルについて知りたい方は、**[こちらの解説記事](https://medium.com/corda-japan/corda%E3%83%87%E3%83%BC%E3%

元記事を表示

アルゴリズム②【最大値と最小値】






実行結果

![スクリーンショット 2022-06-21 4.47.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2133160/e64d91f6-e3e6-9063-1c51-7cad9ff47eaa.png)

コード

“`java
//最大値と最小値
public class Rensyu0620b {
public static void main(String[] args) {
int[]data = {31, 41, 59, 26, 53, 58, 97, 93, 23, 84};

int maxData = data[0];
for(int i = 0; i < data.length;i++) { if(maxData < data[i]) {//trueの場合、maxDataにdata[i]を

元記事を表示

JavaメインからRuby学習で困惑した点(unless)

# はじめに
もともと、工業高校でC言語から始め、社会人にてJavaで活動していた
SEが転職を期にRubyを学んだ時の混乱について一部書きます。(条件分岐について => タイトル通りです)

## お馴染みの条件分岐(if else)
Rubyを学ぶまで、if(もし)、else(でなければ)
の2つで条件分岐は丸く収まると思っていました。

## unlessが登場
基本的には、言葉の文法通りに想像するなら
「もし~なら、でなければ」と基本的にはなると思います。

ところが「でなければ」から始まる構文が
Rubyでは存在しました。
これが「unless」です。

極端な例:偶数かそうでない場合の判別
(どの言語でも分かりやすいようにevenメソッドは使用しません + 括弧も付けます)
“`ruby:example_if_else.rb
# if、elseのパターン
if (num % 2 == 0)
puts “偶数”
else
puts “奇数”
end
“`

“`ruby:example_unless.rb
# unlessのパターン
unless (num %

元記事を表示

サービスアカウントでspreadsheet-apiへアクセスする(java)

# 概要

ネット上ではいろんなサンプルコードがあったが、javaバージョンは少なかったので、個人メモ用で、
gcpのサービスアカウントを使って、spreadsheetのデータを取得する方法について、記載する。

### step1: gcp上でサービスアカウントを作成し、サービスのキーを作成する

![スクリーンショット 2022-06-21 0.50.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1184340/c83b3043-a1ba-ba6b-131f-e95f04806a7f.png)

– キーを記載しているjsonファイルをダウンロードする
– 単純に、spreadsheetのデータを取る場合、ロールなど付与しなくても良い。[詳細の理由](https://stackoverflow.com/questions/55527829/what-is-the-role-which-allows-to-use-gcp-apis-such-as-drive-sheets-etc)

###

元記事を表示

アルゴリズム①【ソート(昇順)】






説明

配列を昇順に並び替えるアルゴリズムです。「[0] > [1]〜[9]」といった感じで比較していき、trueだったら該当部分を入れ替えるという内容です。コードのみだと入替の実感が得られなかったので、プロセスを書いて確認しました。

実行結果

![スクリーンショット 2022-06-20 22.05.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2133160/ec46ad01-e529-81d4-f071-3b1776fc1556.png)

コード

“`java
public class Rensyu0620a {
public static void main(String[] args) {
int[]data = {31, 41, 59, 26, 53, 58, 97, 93, 23, 84};

元記事を表示

ABC256A〜Dの解答[Java]

## はじめに
今回のコンテストも前回同様企業コンということもあり、少々難易度が高く感じました。
A、Bはコンテスト中に書いたものをそのまま、C、Dはコンテスト後に解いたのでそのコードを載せます。

それでは解説してきます。

## A – 2^N
問題文は[こちら](https://atcoder.jp/contests/abc256/tasks/abc256_a)

単純に2をN乗してやりましょう。
“`A.java
import java.io.*;
class Main{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);

public static void main(String[] args)throws IOException{
//Nの取得
int N = readInt();
//2^Nを出力(flushも)
println(p

元記事を表示

CSRF(クロスサイトリクエストフォージェリ)のテスト

セキュリティを学習するなら自分で自身を攻撃し、自ら防いで学べ

構成:Spring Boot,Thymeleaf

# まずは、呟き画面を作って、urlが含まれていればurl化にするアプリを作る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384409/98349f79-7459-119f-35f4-d8a014f8c78b.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384409/e233d140-e11f-d7f2-83e6-d2b05ca79af8.png)

“`コントローラ.java
/**
* CSRFのテスト
* @param model
* @param formList
* @return
*/
@GetMapping(“/twi”)
public String twiA(Model model, @RequestP

元記事を表示

Robocode Tank Royale 衝突時の対応

こちらの続き

https://qiita.com/JQinglong/items/7ec02a689f78abbd3324

## 動きを変える

近場をうろちょろせず、混戦は避けるために
・盤面を動き回る

https://qiita.com/JQinglong/items/0415d200d66c152edd10

・敵に衝突したらそこから離れる

止まっている敵にも、意外と弾が命中しない。
・せめて止まっている敵には確実に命中させる

これらをやっていきます。

## 衝突したらそこから離れる

IBaseBot のAPI一覧を見ていると、衝突イベントにもいろいろあるのだなと分かります。

https://robocode-dev.github.io/tank-royale/api/java/dev/robocode/tankroyale/botapi/IBaseBot.html

衝突するのは敵だけではなく、壁もある。
しかも、敵は体当たり得点もあるけど、壁はダメージを受ける。

https://robocode-dev.github.io/tank-royale/artic

元記事を表示

Mockitoが難しいのでUdemyで勉強しました

# 概要
現在SpringBootのテストコードの勉強中です。
私の実力不足によりテストコードはとても難しく試行錯誤している状態です。

mockitoを使うのですが
mockitoについて公式ドキュメントを読んでも全く理解できませんでした…

この現状を打開すべく、Udemyで講座を受けました。

私は現状なんとなくしか理解してないです。大まかな感じが伝われば幸いです。
正確な情報は公式Documentと講座の方で確認お願い致します。

# 受けた講座について

**Testing Spring Boot: Beginner to Guru**

https://www.udemy.com/course/testing-spring-boot-beginner-to-guru

講師名:John Thompson氏
Section9:Getting Started with Mockito

音声、字幕共に英語です。理解に時間は掛かりますが情報量が多く満足しています。

SpringBootのテスト手法を幅広く扱っています。総再生時間は17時間です。
junit5を触ったこと

元記事を表示

OTHERカテゴリの最新記事