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

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

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, @RequestParam(name = “formList”, require

元記事を表示

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を触ったこと

元記事を表示

「なぜ人は利益は確定しようとするのに損失は運に任せて回避しようとするのか」をシミュレーションで解明しようとした

# はじめに
行動経済学の知見の一つに「損失回避の法則([プロスペクト理論](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E7%90%86%E8%AB%96))」というのがあります。例えば以下のような選択肢があったとします。

1: 選択肢A:100万円が無条件で手に入る。
2: 選択肢B:コインを投げ、表が出たら200万円が手に入るが、裏が出たら何も手に入らない。

この二つは手に入る金額の期待値は同じ100万円ですが、ほとんどの人は(おそらくあなたも)100万円が無条件で手に入る方を選びます。
一方で以下のような質問をされたとします。

1: 選択肢A:無条件で借金が100万円減額され、借金総額が100万円となる。
2: 選択肢B:コインを投げ、表が出たら借金が全額免除されるが、裏が出たら借金総額は変わらない。

この場合も期待値が-100万円で **同じ** であることは変わりません。しかしほとんどの人は前回と打って変わって2番目のギャンブル性のある選択肢

元記事を表示

Javaの学習まとめ①

### はじめに
Javaの学習はじめたので用語をまとめています。
理解のためにRailsでやった内容だとこういう意味かな?とリンクさせたりしていますが合っているのか自信はないです🙇‍♀️
(Rubyは学習できていないのでRailsで考えています)

なにやらメソッドやらクラスやらインスタンスやらの用語が結構出てきます。
モデルへのメソッドの定義方法を知れたことが結構でかく、言っていることが少しわかります。
↑これが出来るようになるまでは出てくる用語に対して全然理解できていなかったのでJavaの学習が進まなかったと思います。

#### 言語
Java:コンパイル言語
はじめにソースコードをパソコンが理解できるように置き換えてからプログラムを実行。
いちいちコンパイルしてから実行するので面倒だけど一度書いちゃえば環境問わず、高速に動作する。
Railsみたいにdebuggerを入れてデバッグは出来ないらしい

Rails:スクリプト言語
実行するたびに理解できるように書き換える。プログラムが途中でも実行が可能。

Javaの使いづらい部分を改善するために出来た言語が多いが、それでもJa

元記事を表示

[ JJUG CCC 2022 Spring ] AWS Batch × Spring Batch でクラウド最適なバッチを構築した話

こんにちは。[Red Frasco](https://www.red-frasco.com/) でインフラエンジニアをやっている[猪熊](https://twitter.com/sinocloudon)です。
[JJUG CCC 2022 Spring](https://ccc2022spring.java-users.jp/) にて、 [AWS Batch × Spring Batch でクラウド最適なバッチを構築した話](https://fortee.jp/jjug-ccc-2022-spring/proposal/fbb1e886-d51a-4052-b284-6e9c80f132ea) というタイトルで登壇させていただきました。

セッション内容の紹介と登壇のふりかえりをしようと思います。

# セッションの紹介

まずは、セッション内容について紹介します。

## 自己紹介

詳細は割愛します。
香川県出身で、うどんが好きなインフラエンジニアです。

## バッチ基盤を構築する背景

![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

動画でJavaを学習したまとめ

### はじめに
下記のYouTubeがとてもわかり易かったので、自分なりにまとめました。(メモの様になってしまいすみません🙇‍♀️)

「Java基礎学習」再生リストの#1へ飛びます。
用語の解説やなぜその記述が必要なのか?など丁寧に解説されています。
Java学習してるけど曖昧なところが多い、という方はぜひ!

### メソッドの定義の書き方 

##### 基本構文

“`
修飾子 戻り型 メソッド名 (引数型 引数名) {}
“`
修飾子:よく分かっていません…
戻り型:メソッド実行時に最終的に**returnされる型**
メソッド名:一行が長いのでわかりにくいが戻り型の直後がメソッド名
引数:()内で変数の宣言ができる(直前に別途で宣言する必要はない)

##### void使うとき?

戻り値のないメソッドの場合はvoid(戻り値がないので型なんてものもない→なにもないよ:voidってこと)
例)表示さ

元記事を表示

Java開発未経験がJava Gold に合格できた勉強方法

# はじめに
私が**Java Gold**を合格した時の勉強時間と勉強方法をお話しします。
少しでも参考になればと思います。

# 受験時のスペック
## 1. 開発経験
+ Webアプリ開発:1年
+ **Javaの開発経験はなし**
## 2. 受験時の保有資格
+ Java Silver

# 勉強期間
**Java Silver**取得から半年ほどで取得。
途中勉強時間を取れてない期間もあったので、棍詰めれば3ヶ月ほどで合格することも可能かと思います。
# 勉強時間
だいたい100時間くらい勉強しました。
Javaの開発経験のない方は、このくらいの勉強時間は必要かと思います。

# 勉強方法
## 1. 黒本の問題を解いて解説を理解
黒本の問題を全て解けるようになるまで勉強しました。
また解説も徹底的に読み込み、処理のロジックを理解することを意識していました。
## 2. 紫本を読み込み
Java Goldの試験範囲についての知識(構文やメソッドなど)を理解するために使用しました。
紫本の問題は解いていません。

# 受験してみての感想
実務経験がない方が**Java Gol

元記事を表示

DTOについて

1.定義
DataTransferObject、データ転送オブジェクト)はプロセス間でデータを伝達するオブジェクト

2.なぜ使用しなければならないのか?

1)DTOを使わないと、通信の回数が増加するだけでなく、ロジックが非効率的になるからだ。

2)通信を通じて値がサーバーに伝達されるとしよう。
送信された値をサーバで使用する値に変えるために、我々は直列化(serialization)を経なければならない。
ところが、原始値の場合、直列化ロジックを内部に持ちにくいので、
通信を担当するコントローラレイヤーで直列化に対するコードを持たなければならない。
このコードはコントローラごとに必要なので管理することも難しく、
また、修正しようとする時、正確にどこを修正しなければならないのか知ることも難しい。
しかし、オブジェクトに整理されたDTOの場合、直列化ロジックを内部にカプセル化して持っていることができる。
この場合、責任も明確でコードを修正することも楽だろう。

3)EntityではなくDTOを伝達することで、各レイヤー間の役割を分離することができるため

元記事を表示

Docker未経験の素人がSpring + MySQLで開発環境を構築したら

# はじめに
 Dockerを用いてSpring BootとMySQLの開発環境を構築し、ごく簡単なTODOアプリを作成しました。自身で勉強しながらの環境構築なので、Dockerfileやdocker-compose.ymlといった設定ファイルは、必ずしも最適な記述方法ではないということをご了承ください。
 今回作成したプロジェクトはGitHub上に公開しております。

https://github.com/be834194/Container-Practice

# 前提
+ Mavenを用いたSpringプロジェクトが作成できる
+ gitインストール済みで、githubアカウントを持っている
+ VS Codeとjavaの拡張機能インストール済み
+ Dockerインストール済み

 各アプリのインストールや初期設定に関しましては、本記事の趣旨から外れてしまうため説明いたしません。ご了承ください。

# 筆者の環境
+ java 17
+ jdk 17
+ maven 3.8.3
+ VS Code 1.68.1
+ Docker 20.10.16

# Dockerとは
 コン

元記事を表示

Java使いからPHPerに転身した際にはまったこと

# 概略
業界に入ってから長らくJavaをメインで使っていたプログラマである筆者が、業務でPHPを使うようになった際にはまったことを思い出して列挙していく。
詰まった時しか公式リファレンスとか見ないから何となくでやるとびっくりしてしまう。

## マルチスレッド
Javaだとマルチスレッド当たり前なので、シングルトンだったりstaticな変数を更新していたりすると「そんなバカな、死にたいのか!?」と思ったりしたが、Webアプリケーションとして動くPHPでは通常リクエストごとに別プロセスが起動していてそんな問題になることはないようだった。

## arrayがプリミティブ風に動く
内部的にどういう扱いになっているのか具体的にわかっていないけれど、arrayを代入したら別の配列となる。
Java的な常識だと同じオブジェクトの参照となるイメージだったから衝撃だった。
javaだと
“`java:Main.java
public class Main {
public static void main(String[] args) {
int[] array1 = {10, 20

元記事を表示

java.util.Collectors vs. System.Linq.Enumerable

# 動機

C# には java の Stream API に相当する Linq があるが、いまひとつ使いこなせなかったため、
java で出来ていたこういう処理を C# で書くとどうなるのか? についてのメモを残そうと思い立った.

おそらく初めての言語として C# を選んだ人にとっては役に立たないだろう.

# 具体例

「java でこう書くとこのような結果が出る」というのを書き、その後ろに C# での書き方の一例を示していく.

## 例に使用するコード

“`java:java sample
public class Program {
public static void main(String[] args) {
List list = createDataList();

// T resultXX = list.stream().collect(Collectors.XXX());
// System.out.println(“resultXX=” + resultXX);
}

private static Li

元記事を表示

JavaのSocketでプロキシを使う

# はじめに
今時のプロキシはConnectすると生データがそのまま通せるので、普通のSocketでもプロキシが使える。

# プロキシサーバの設定
とりあえず普通に指定する場合、Proxyのコンストラクタでアドレスを指定すれば良い。

“`java
Proxy px = null;
try {
InetSocketAddress px_addr = new InetSocketAddress(“プロキシサーバのアドレス”, 3128);
px = new Proxy(Proxy.Type.HTTP, px_addr);
}
catch (Exception e) {
// エラー処理
}
“`

# Socket生成
SocketのコンストラクタでProxyが指定できるようになっている。作ったら普通にconnectすれば良い。

“`java
Socket sock = null;
try {
sock = new Socket(px);
InetSocketAddress con_addr = new InetSocketAddress

元記事を表示

OTHERカテゴリの最新記事