- 1. WIP: Oracle JDK は Java 17 以降も本番環境で無償利用できない可能性あり
- 2. Javaのvar変数のうまい使い方
- 3. AtCoderで茶色になったから書いた記事
- 4. SpringBootアプリケーションをCodePipelineを用いてBeanstalkに自動デプロイ
- 5. 「Javaの基本のk」を書籍と動画で学び直して、改めて理解が深まったことをまとめる
- 6. リフレクションの基本の使い方について
- 7. Dockerでサクッと試すローコード開発 -「iPLAss」
- 8. 【Servlet・JDBC】executeUpdata()とexecuteUpdata(String sql)の違いについて
- 9. SpringSecurity(ステートレス)Jwt認証
- 10. 【Java】StreamAPIを用いた階乗(n!)・順列(nPr)・組み合わせ(nCr)の計算記述方法(サンプルコード・計算時間の性能比較有)
- 11. 【Java】フィールド変数とローカル変数
- 12. 【Java】可変長引数
- 13. 進化についていくのは大変
- 14. SpringBootでDBUnit 〜@ExpectedDatabase〜
- 15. 【新卒SE】Java入門 ~Singleton(シングルトン)とはなんぞや~
- 16. 【Java】型変換の不思議:データ型(byte ~ long) ⇔ char型
- 17. 【Java】Stringクラス①:length
- 18. 【Java】Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredExceptionの対処方法
- 19. 【JSP】宣言とスクリプトレットの違いについて
- 20. [Java]Paizaでよく使うコード集
WIP: Oracle JDK は Java 17 以降も本番環境で無償利用できない可能性あり
:::note alert
**この記事は、誤った内容を含む可能性があります。**
2022/05/14 時点での作者個人の見解に基づいて記載されており、作者の所属組織の見解や、作者が Oracle 社に直接確認した情報を表すものではありません。この記事は、確定的な情報を提供することはできませんが、そもそも懸念があることにすら気付けていない人への注意喚起になればと思って公開します。願わくば、今後誤解が起きづらい状態に何かしらのアップデートがあることを期待します。
:::Java 17 のリリースとともにアナウンスされた Oracle JDK の [NFTC (Oracle No-Fee Terms and Conditions) ライセンス](https://www.oracle.com/downloads/licenses/no-fee-license.html) により、乱立する JDK ディストリビューション問題に決着をつけ、今後は Oracle JDK でいけると思った人も多いのではないでしょうか。
Webでもこのライセンス変更が大きく取り上げられたことは、記憶に新
Javaのvar変数のうまい使い方
Java8のエンジニアだった筆者がJava11の案件に参画し、varの変数のうまいなーと思う使い方があったので紹介したい。
# Javaのvar変数の特徴
Javaでvar変数はJava8では使えなかったが、Java11では使えるようになった。ただし、Javaのvar変数の使用に関しては以下のような制約を含んでいる。* 左辺でvar変数の宣言をした場合、右辺でどの型の指定をしなくてはいけない。
* var変数としては処理しておらず(JavScriptのように)、結局右側で提示した変数の処理として処理される。上記2つの制約を守れば、Javaでvar変数を使用することはできるわけではある。
しかし、特段変数宣言を左右で行う従来の宣言と何が違うのか分からなかったのが、従来の思想であった。# こんな使い方
感心させられた使い方はこんな使い方である。
ただし、実際に書いてあるソースコードとは違うもので、大体同じような構成になっていたと考えてよい。“`
import java.util.*;public class Main {
public static voi
AtCoderで茶色になったから書いた記事
## はじめに
入茶記事を書いている人を見かけて自分も書いた方が良いかなと思って書きました。
茶色になったのは一ヶ月半程前なので、曖昧なところもありますが、それなりに思い出しながら書きます。誰かが「あぁ、こんなやつでも茶色になれるんだな」と思って競プロを始めるきっかけになったらいいなぁと思ってます。## 入茶したとき
入茶したのはABC245 (2022/3/26)のときでした(401というギリギリのレートでした)。

それまでコンテストには計6回参加していたので、まぁ自分の実力を考えれば良い方なんじゃないかなと感じています。自惚れかもしれませんが。
ちなみに、画像からもわかる通り、次のコンテストで灰色に戻りました。
(10回目のコンテストでまた茶色に戻ったからヨシ!)## 一応の自己紹介
そ
SpringBootアプリケーションをCodePipelineを用いてBeanstalkに自動デプロイ
## 概要
[SpringBootアプリケーションをCodePipelineを用いてEC2インスタンスに自動デプロイ](https://qiita.com/tatsuakimitani/items/86258d80326ddc8091d9)
があったので、
[CodePipelineでSpringBoot on BeanstalkのCD/CIパイプラインを構築する](
https://springhack.com/codebuild-codedeploy-codepiplne%e3%81%a7springboot%e3%81%aecd-ci%e3%83%91%e3%82%a4%e3%83%97%e3%83%a9%e3%82%a4%e3%83%b3%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/)に倣ってBeanstalkに自動デプロイしました。## 手順1 Githubにソースをコミットしておく
[spring initializr](https://start.spring.io/)でspringbootプロジェクトを作成し、
ロ
「Javaの基本のk」を書籍と動画で学び直して、改めて理解が深まったことをまとめる
## 参考書籍
本記事では、主な参考書籍1冊を先に記述する。
– 中川清喬/国元大悟.**『スッキリわかるJava入門 第2版』**:::note
この記事はJavaの初学者が、本人が忘れがちな語彙や文法事項を、学習内容定着とさらなる理解を深めるためにまとめたものです。
なにか新しい情報を提示する論文的記事ではないので、ご容赦ください。
:::## 文法
– **代入時の自動変換**
– 「大は小を兼ねる」的な代入ができる。 e.g.)short型の値をlong型の変数に代入。
– 例外として、intをbyteやshortに入るもんなら入れることもできる。
– **キャスト変換**
– 大は小を兼ねないのに、無理矢理ぶち込むための手法。
– `int a = (int) 3.5;`のように表記すると、入らない部分は切り取って無理矢理代入できる。
– が、できないこともあるし不具合の原因にもなるし、よっぽどじゃない限り使わないのが◎
– **演算時の自動変換**
– 演算子の左右のオペランドの型も、基本揃えないといけない。
リフレクションの基本の使い方について
servletをjunitでテストするにあたってprotectedにアクセスする必要が出た。
調べたらリフレクションを使えばアクセスができるっぽい。
備忘録として記載。# 【目標】 Q.リフレクションとは??
:参考記事達:
・リフレクションについて
https://qiita.com/suke_masa/items/0df3bb92bcb69f4a95d1
↑個人的にすごくわかりやすかった。・ジェネリクスの\>について
https://qiita.com/pebblip/items/1206f866980f2ff91e77
↑たまにでてくる\>について・junitでリフレクションのやり方
https://qiita.com/11295/items/b632850389831041b987
https://www.sejuku.net/blog/33252#:~:text=%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82-,private%E3%83%95%E3%82%A3%E3%83%BC%E3%83%
Dockerでサクッと試すローコード開発 -「iPLAss」
本記事では、Dockerで「iPLAss」をインストールし、簡単に機能を試すまでの手順をまとめます。
近年開発手法として注目される「ノーコード開発」や「ローコード開発」ですが、iPLAssが提供するローコード開発の形をDockerでサクッと体験してみてください!# iPLAssとは
「iPLAss」は、オープンソースのローコード開発プラットフォームです(OSS版のライセンスは、`AGPL v3`になります)。
以下のような特徴を持ちます。
– **ノーコード開発**
GUI操作によるノンプログラミングでのデータ定義やその他の各種定義(認証ポリシーや画面表示に関する設定など)を行うことでアプリケーションの構築が可能です。また、データ定義を行うことで自動的に当該データのCRUD(登録/参照/更新/削除)機能を持った汎用管理画面を構成します。
▼ `Admin Console` という管理者向けのWebコンソールで各種定義が行えます。
とexecuteUpdata(String sql)の違いについて <忘備録>
DB操作の時に使用するexecuteUpdate()とexecuteUpdate(String sql)の違いについての忘備録
調べたことや実行したものをまとめたものなので、間違ってる部分があるかもです。
## 実行環境
・Eclipse 4.23.0
・Java 17
・Apache Tomcat 9.0
・Servlet 4.0## executeUpdateとは
一言で表すと『SQLを実行するやつ』もう少し細かく説明すると、
・SQL文を実行する
・[INSERT, DELETE, UPDATE]のSQL文を実行可能
・更新行数が戻り値として返されるこんな感じになる。
二つ目については、MERGEも実行できるらしい。
自分はMERGE文を使ったことが無いため、実際に実行できるかどうかは不明。## executeUpdate()とexecuteUpdate(String sql)の違い
では、引数の有無の違いでどのような違いがあるのか。パッと見、引数の有無の違いしか分からないが、調べてみると異なる点がまぁまぁあるらしい。
簡単にまとめると、
* execut
SpringSecurity(ステートレス)Jwt認証
## 前提条件
以下URLのプログラムを元にJwt認証用(ステートレス)に変更します。https://qiita.com/nmaolks/items/92edd19b3b606fad82f9
## クラスの説明
以下の6つのクラスを改修、追加します。### ◇設定ファイル
〇WebSecurityConfigクラス(設定)### ◇認証(トークン取得)
〇WebUsernamePasswordAuthenticationFilterクラス(認証)
〇WebAuthenticationProviderクラス(検証)
〇SuccessHandlerクラス(認証検証成功時)
〇FailureHandlerクラス(認証検証失敗時)### ◇認可(トークン認可)
〇JwtAuthorizationFilterクラス(認可)## プログラムの流れ
◇JWTトークン取得する場合
ユーザがトークン取得APIを実行時
↓
認証(トークン取得)が動く◇その他API
【Java】StreamAPIを用いた階乗(n!)・順列(nPr)・組み合わせ(nCr)の計算記述方法(サンプルコード・計算時間の性能比較有)
# 概要
本記事はJava8より追加されたStreamAPIを使用した場合と使用していない場合の階乗・順列・組み合わせの記述方法と性能比較について説明します。
StreamAPIの理解やサンプルコードの流用等でご利用ください。
また、それぞれの計算は静的メソッドにて、int型の入力、BigIntegerの出力で実装してます。
本記事に記載されているサンプルコードはJava8以降で実行できます。
サンプルコードは静的メソッドで記載してますので、クラス内に記載するだけで簡単に流用することができます。# 階乗計算(n!)
$n!$の階乗計算をします。
$n!$は$1$から自然数$n$までの連続する$n$個の自然数の積を計算します。
例えば、$4!$は自然数$1$から$4$までの$4$個の積、つまり$4!=1\times2\times3\times4=24$です。
従来通りの実装方法のサンプルコードは以下のものです。
“`Java:StreamAPIを用いない場合の階乗計算の静的メソッド
/**
* 階乗計算
* n!の計算を行う
* @param n 入
【Java】フィールド変数とローカル変数
フィールド変数とローカル変数についてまとめる。
フィールド変数
クラス内に定義される変数のこと。
フィールド変数はクラス内のメソッドから参照可能な変数となる。ローカル変数
メソッド内にて宣言された変数のこと。
※メソッド内の範囲でしか参照できない変数。
※if文/for文/while文等にて宣言されている変数もローカル変数に含まれる。フィールド変数の実例
“`java:fieldSample.java
public class fieldSample {
private String name = “Jony”;public void name() {
System.out.println(name); // 実行結果:Jony
}
}
“`
ローカル変数の実例
“`java:localSample.java
public class localSample {
public void sample() {
String name = “Jony”;
int age = 30;
}public static void main(Strin
【Java】可変長引数
可変長引数についてまとめる。
**可変長引数**
Java SE 5から引数の個数が不定(可変)なメソッドを定義できるようになった。##### 可変長引数の使用方法
下記のように引数の型の直後にピリオドを3つつけて宣言する必要がある。
注意点:可変長引数は2つ以上同時に宣言できない。
可変長引数は最後の引数として宣言する必要がある。
“`java:sample.java
// sample1
void sample1(int… num) {
for (int i = 0; i < num.length; i++) { System.out.println(num[i]); } } // sample2 void sample2(int value, int... num) { // do something } ``` 可変長引数を宣言する際の注意点が2つある。 注意点: ①可変長引数は2つ以上同時に宣言できない。 ②可変長引数は最後の引数として宣言する必要がある。 ```java:ngsample.java // sample1 void sample1
進化についていくのは大変
プログラム言語ってたくさんあって
私がやってきたのはjava、C#、swift、javascriptあたりがメインなんですが
ずーーっと思っているのが『進化しすぎてません?』『
Struts便利だなー
⇒DIっていうのが次来るらしい
⇒seaser便利
⇒えっseaser古いの?世界的にはspringなの?
⇒spring便利
⇒えっspringbootが簡単?
⇒springboot便利
』
こんな感じで、
とにかくいろんな技術が次から次へと出てきては進化が続いてて
java⇒kotlin
javascript⇒typescript
みたいに派生していった言語もあるし。各言語のフレームワークも山盛りあって、
例えば画面周りはいつの間にか
「え?jspでゴリゴリ動的に作る時代終わったの?」
「SPA??react?vue?Angular?javascriptでゴリゴリ書くのが主流なの?」
「え!javascriptじゃない!?typescriptで書くの!?」
「tsをコンパイルしてjsにしてnodeで実行!?」5年前までバリバリコーディングしてたけど昇進し
SpringBootでDBUnit 〜@ExpectedDatabase〜
SpringBootでDBのテストを書いています。
アノテーションの属性の意味を忘れないようにメモ。# @ExpectedDatabase
## value
結果検証用のファイルのパスを記入する。
## assertionMode
DBと結果検証用のファイルを比較のしかたを指定する属性。
##### DEFAULT(または指定なし)
全てのテーブルとカラムの一致を比較する。
そのため、CSV等を用意したテーブル以外も調査対象となる。このまま使うと、
“`
junit.framework.ComparisonFailure: table count expected:<[3]> but was:<[47]>
“`
と言った感じのスタックトレースが出力されてしまう。DB上の全てのテーブルが見られていることがわかる。
そのため、単体テストで用いる場合は以下の2つのどちらかを指定する必要がある。
##### NON_STRICT
結果検証用のファイルに存在しないテーブル、カラムがあっても無視する。
##### NON_STRICT_UNORDERED
【新卒SE】Java入門 ~Singleton(シングルトン)とはなんぞや~
今日、研修でJavaの問題演習に取り組んでいた際に初めて知った概念?で、正直まだ理解が曖昧ですが、後学のために間違っていても良いので現状の考えを残そうと思い、アウトプットします(間違ってたら教えてくださいm(__)m)。
## シングルトンとは
一言でいうと、
**「1つのクラスからは1つのオブジェクト(インスタンス)しか作れないよ~」**
ってことです。
通常、クラスから複数のオブジェクトを生成できると思います。例えば、以下の図のように
「Car クラス→TESLA・TOYOTA・BMW」と言ったように、複数のオブジェクトを通常は生成できます。
しかし、シングルトンの場合は、オブジェクトの生成の処理が一度しか行われないため、下図のようの1つのオブジェクトしか生成されません。なので、「このクラスからはオブジェクトを一つしか作りたくない!」というような時にシングルトンを使用します。
 ⇔ char型
データ型からchar型にcastについてまとめる。
#### データ型(プリミティブ型)について
※byte ~ long & charまでを紹介する。
| データ型 | 値の種類 | ビット数 | 格納できる範囲|
|:——–|:——–:|:——-:|:-:|
|byte |整数値 |8ビット |-128 ~ 127 |
|short |整数値 |18ビット |-32,768 ~ 32,767 |
|int |整数値 |32ビット |-2,147,483,648 ~ 2,147,483,647 |
|long |整数値 |64ビット |-9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807|
|char |文字 |16ビット |0 ~ 65,535
※Unicode文字、\u0000~\uffff|#### castの実例
“`java:castSample.java
【Java】Stringクラス①:length
Stringクラスにてよく使用するメソッドの詳細について
パート毎に内容をまとめていく。
今回はlengthについて下記の通りまとめる。###### lengthの働き
length():文字列の長さ(文字数)を取得(return)する。
length :配列の長さ(要素数)を取得(return)する。###### lengthの使用例
“`java:sample.java
String sample1 = “Hello”;
String sample2 = “Hello World”;
String[] str = new String[5];System.out.println(sample1.length()); // 5 ※文字数をカウント
System.out.println(sample2.length()); // 11 ※スペースも1文字としてカウントされる。
System.out.println(str.length); // 5 ※要素数にてカウントされる。
System.out.prin
【Java】Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredExceptionの対処方法
# 参考
https://stackoverflow.com/questions/70438180/what-is-the-last-version-of-flyway-community-edition-that-supported-mysql-5-7
# 事象
MySQL(v5.7)に対して、Flyway(v8.5.10)でマイグレーション実行したら下記のエラーが発生。
“`
Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredException:
Flyway Teams Edition or MySQL upgrade required:
MySQL 5.7 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
“`
Flywayの依存
“`xml
org.flywaydb
【JSP】宣言とスクリプトレットの違いについて <忘備録>
JSPの宣言(declaration)とスクリプトレット(scriptlet)の違いについての忘備録
調べたことや実行したものをまとめたものなので、間違ってる部分があるかもです。
## 実行環境
・Eclipse 4.23.0
・Java 17
・Apache Tomcat 9.0## 宣言とスクリプトレットの特徴
#### 宣言(declaration)
“`text:記述例
<%! int num = 0; %>
“`
・変数やメソッドの宣言を行う
・1回目のリクエスト時のみ処理が実行される
・jspコンテナが再起動されるまで値が保持される
・ここで宣言した変数はインスタンス変数になる
・スレッドセーフではない#### スクリプトレット(scriptlet)
“`text:記述例
<% int num = 0; num++; %>
“`
・Javaコードを記述する
・リクエストの度に処理が実行される
・ここで宣言した変数はローカル変数になる
・スレッドセーフ### スレッドセーフとは
マルチスレッドでも問題なく動作するシステム。このサイトにわ
[Java]Paizaでよく使うコード集
## 著者
Javaを用いてPaizaを解き始めた駆け出しエンジニアです。
元々はJavaScriptを用いてBランク程度の問題を解いていたのですが、業務でJavaを使用することになったので、学習のアウトプットとしてPaizaを活用しています。(有料会員)JavaScriptで問題を解く時と比べてJavaだと文字列→数値の変換や、配列の扱い方、定義の仕方など、暗記しづらいがよく使うコードがたくさんあるなと感じました。
そこで、自分のアウトプット兼備忘録のために、Paizaでよく出てくるコードを載せました。
(Paizaでは、解答を転載することは禁止されているので、解答自体を載せることはしません。あくまでメソッドや定義の解説になります。)“`java:int型で入力値を保存
int n = sc.nextInt();
int m = sc.nextInt();
“`“`java:数値を文字列変換
int num = 10;String str = String.valueOf(num);
“`“`java:文字列を数値変換