- 0.0.1. [Servlet&JSP]formから複数の値をまとめて変更する
- 0.0.2. SpringSecurity DBアクセス処理
- 0.0.3. Javadocの使い方とhtmlファイルで出力する方法について
- 0.0.4. JavaとVB.NETしか仕事でやったことないけどGo言語触ってみる
- 0.0.5. 【Flyway】Found more than one migration with versionX.X.Xは、ファイル名が違う場合でも、バージョンが同じだと発生する。
- 0.0.6. ABC257A〜Cの解答[Java]
- 0.0.7. [サーブレット&JSP]formからcheckボタンでまとめて削除する
- 0.0.8. Robocode Tank Royale より知的に弾を打つ(三角比)
- 0.0.9. Selenium + ModHeader で RequestHeader を変えてみた
- 1. はじめに
- 1.1. 準備
- 1.2. コード
- 1.2.1. The Badass Runtime Plugin+Gradle+JPackageで自己完結型Javaアプリケーションインストーラを作る&パスも通す
- 1.2.2. [サーブレット&JSP]ArrayListを使って文字を表示させる
- 1.2.3. 初心者による初心者のためのSpringBoot
- 1.2.4. Javaの引数と戻り値
- 1.2.5. 【ちょっとアレンジ】Spring bootのControllerクラスで定義したパスを一覧として取得する
- 1.2.6. ArrayListで遊んでみる
- 1.2.7. Jetpack Composeを現場のアプリ開発で使用してみて思ったこと
- 1.2.8. 【Java, Slack】Spring で Slack メッセージ送信
- 1.2.9. SpigotプラグインにおけるTagを用いた処理の制御
- 1.2.10. Spigotにおいて看板を用いてプレイヤーからの入力を取得する
- 1.2.11. SpringBoot でよく使うアノテーション
[Servlet&JSP]formから複数の値をまとめて変更する
## 今回も前回の続きでformで入力して一覧に表示させた後に、さらにチェックボタンを使用してまとめて変更を行う。
### 前回も続きになっているので、先にそちらの記事をみるとわかりやすいかもしれません↓
#### [[サーブレット&JSP]ArrayListを使って文字を表示させる](https://qiita.com/take14/items/3c2fee036bc0731785d9)
#### [[サーブレット&JSP]formからcheckボタンでまとめて削除する](https://qiita.com/take14/items/3c2fee036bc0731785d9)
### formから上原さんと鈴木さんを選択する。
![スクリーンショット 2022-06-27 8.16.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/1e18bf42-415e-56c6-d9f8-ca27633e6d1e.png)### 変更内容を入力する。今回はテスト1とテスト2を入力
!
SpringSecurity DBアクセス処理
# はじめに
SpringSecurity その3です。今回はDB認証の機能を実装していきます。
完全に理解することができていない為、不備等あるかもしれませんがご了承ください。# SpringSecurityシリーズ 項目表
|NO |タイトル |
|—-|————————–|
|その1|[SpringSecurity 導入から基本的な認証フロー](https://qiita.com/ryo0527/items/dbdbb2a476cc74e9116b)|
|その2|[SpringSecurity ログインページをカスタマイズする](https://qiita.com/ryo0527/items/2ee963cea31e82fd3dc5)|
|その3|[SpringSecurity DBアクセス処理](https://qiita.com/ryo0527/items/0b0b161530a2f0eb9e0c)|前回の続きからとなる為、その1とその2を実装後にご覧ください。
# 実装
### データベー
Javadocの使い方とhtmlファイルで出力する方法について
1.Javadocとは
–
JavadocとはJavaのクラスやメソッドの仕様についてまとめる仕組みのことで、「/**」から始まり、「*/」で終わる形で記述されます。下に例を挙げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725869/42726b78-d35a-326f-959f-8158550d2580.png)
この写真では引数に1を足すaaaというメソッドについて、Javadocを用いています。
Javadocでは@は特殊な文字として認識されます。「@param」など、@を先頭に置いたものをJavadocタグと言います。
「@param」は引数、「@return」は戻り値、「@author」はプログラムの著者をそれぞれ意味します。
Javadocタグは他にもいろいろ存在します。2.Javadocを用いる意味
–
Javadocを用いて、クラスやメソッドの説明を行うと、該当するクラスやメソッドが他のクラスで呼び出された際にもそれらにカーソルを合わせるだけで、記述
JavaとVB.NETしか仕事でやったことないけどGo言語触ってみる
# Go言語の本がKindleで安かったので買ってみた
Kindleの日替わりセールでたまたま500円だったので買いました。
友人もお勧めしてたのでせっかくなので読み進めてみます。
業務では5年ほどJava、VB.NETを扱ってきましたが、それぞれの違いなどについてざっくり書こうかなって思います。(基本Javaです)
あとこれを書き終わるくらいには何か動くものがあればうれしいなと思ってます。↓これを読みました。
# 開発環境を作る
## IDE
新しい言語ならVSCode一択でしょ、と思ってVSCodeをダウンロードします。
プラグインは、軽くググって必須なものに加えてざっくり便利そうなものをいくつか選んで入れておきます。
まだ歴が浅いのでこんなの便利だよ~みたいなのあれば教えてほしいです。## バージョン管理
SourceTreeが見やすいのでこれを入れます。
それとGitHubアカウン
【Flyway】Found more than one migration with versionX.X.Xは、ファイル名が違う場合でも、バージョンが同じだと発生する。
# エラー内容
“`
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘flywayInitializer’ defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found more than one migration with version 1.0.0
Offenders:
-> /プロジェクトの配置ディレクトリパス/プロジェクト名/target/classes/db/migration/V1.0.0__users.sql (SQL)
-> /プロジェクトの配置ディレ
ABC257A〜Cの解答[Java]
## はじめに
今回はCまでしか解けなかった(本番中はBまで)ので、そこまで解説します。では、見ていきましょう。
## A – A to Z String 2
問題文は[こちら](https://atcoder.jp/contests/abc257/tasks/abc257_a)単純に文字列を作ってもいいですが、計算だけで実装しましょう。
“`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、Xを文字列として受け取ってから数値変換
String[] str = reads(” “);
int N = Integer.parseInt(str[0]
[サーブレット&JSP]formからcheckボタンでまとめて削除する
## 今回は前回の続きでformで入力して一覧に表示させた後に、さらにチェックボタンを使用してまとめて削除を行う。
### 前回の続きになっているので、先にそちらの記事をみるとわかりやすいかもしれません↓
#### [[サーブレット&JSP]ArrayListを使って文字を表示させる](https://qiita.com/take14/items/3c2fee036bc0731785d9)**1点注意点といたしましては、スコープをrequestからsessionに変更しております。**
### form入力
![スクリーンショット 2022-06-26 11.16.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/a5924706-13cb-3083-4770-2f1964b4293e.png)### 削除したい人を複数選択
![スクリーンショット 2022-06-26 11.22.49.png](https://qiita-
Robocode Tank Royale より知的に弾を打つ(三角比)
これらの続き
https://qiita.com/JQinglong/items/7ec02a689f78abbd3324
https://qiita.com/JQinglong/items/0415d200d66c152edd10
https://qiita.com/JQinglong/items/c43b60f0efa0742eaa7b
前回の最後に、知的に弾を打つためのメソッドをCornersからパクりましたが、今回は、これを発展させます。
三角比ネタが盛り上がっているうちにここまできたかった・・・
## 問題の所在
現在、基本的には敵をスキャンできたらそこに対して弾を打っているわけですが、そこに向けて打っても、止まっている敵でない限りはそこにはもう敵はいないことが多いわけです。
これに対応していきます。## 時間による移動距離の計算
基本情報はこちらになります。
https://robocode-dev.github.io/tank-royale/articles/physics.html#movement
まず、とっかかりとなるのは、
[distanc
Selenium + ModHeader で RequestHeader を変えてみた
はじめに
Selenium と Chrome拡張ツールの ModHeader を使ってRequestHeaderの「User-Agent Client Hints」を書き換えてページアクセスする方法。
今回はモバイル判定で利用する「sec-ch-ua-mobile」を「?1」に書き換えます。
## 環境
Java8
Selenium 4
WebDriverManager準備
事前に「chrome-modheader」をダウンロードしておきます。
https://github.com/modheader/modheader_selenium/tree/main/chrome-modheader
コード
“`java:Example.java
package example;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.openqa.selenium.WebDriver;
import org
The Badass Runtime Plugin+Gradle+JPackageで自己完結型Javaアプリケーションインストーラを作る&パスも通す
# はじめに
どーもnaotikiKtです。とあるコンソールアプリにJavaを同梱して配布したくなったのでその時のハマりポイントとかを備忘録的な感じで書いておきます。**本記事はInteliJ IDEA&Kotlinユーザーの方向けです。**
# JPackageて何?
JDK 14から含まれるようになったJavaを同梱した様々なプラットフォームのネイティブインストーラを作成できるツールです。
もとはjavafxpackager(JDK 7),javapackager(JDK 11)て名前だったらしいです。https://docs.oracle.com/javase/jp/14/jpackage/index.html
# 環境
Windows,Linux両方のインストーラーを作りたいので両方の環境を用意する必要があります。“`text:Windowsの環境
OS: Windows 11
JDK: Amazon Corretto Version 17.0.3 (JDK 14以上が必要)
IDE: InteliJ IDEA 2022.1.3
“`“`text:Ubu
[サーブレット&JSP]ArrayListを使って文字を表示させる
### formで入力した値をArrayListに格納して表示させる。
### form入力
![スクリーンショット 2022-06-25 16.29.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/e9c3d6fe-e681-bf11-b218-940685af9794.png)### 入力結果
![スクリーンショット 2022-06-25 16.31.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/cea839c8-021e-c59c-c38b-2d92d2f1ee08.png)“`java:form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
初心者による初心者のためのSpringBoot
# 環境構築
Eclipseをダウンロード
以下のURLへアクセス
URL:https://mergedoc.osdn.jp/– Eclipseの最新版を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676412/c105bb94-9ff3-5113-8646-fe1891266a71.png)– JavaのFull Editionをdownload
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676412/27fffb92-4a87-2007-bcd4-905c8f9715aa.png)あとは解凍してEclipseを起動してください
:::note info
これで環境構築は完了になります!!
Spring Tool Suite (STS)などはFull Editionにすでに入っているのでDownLoadは不要です。
:::# HelloWordを表示しよ
Javaの引数と戻り値
Javaでは、ある機能を持ったメソッドがあり、そのメソッドにデータを渡すことで、メソッドの機能を利用することができます。メソッドに渡されるデータを「引数」と呼びます。詳細は以下の通りです。
# 引数とはなんぞや
引数とは、メソッドに渡すデータのことで、メソッドの後の「( )」内にある。例えば、printlnメソッドでは、以下の部分の「コンニチハ!」が引数になります。
“`java
println(“コンニチハ!”);
“`
引数には数値データ、文字データなどを用いることができ、引数の数は倍数で指定することができます。複数の引数を使用する場合は、「,」で区切られます。引数は、第1引数、第2引数、第3引数の順で呼び出されます。
“`java
メソッド名(第1引数,第2引数,第3引数,);
“`
# 戻り値とはなんぞや
メソッドに引数を渡した結果、返されるデータを戻り値と呼びます。たとえば、maxメソッドは、数値の大きさを比較して大きい方を返すメソッドです。以下の例では、maxメソッドの第1引数に「2」、第2引数に「5」が渡されています。
“`java
Math.max(2,5)
【ちょっとアレンジ】Spring bootのControllerクラスで定義したパスを一覧として取得する
## やりたいこと
APIの本数が増えてきたので、実装済みのAPIのURIの一覧を出力したい
→[Spring bootのControllerクラスで定義したパスを一覧として取得する](https://qiita.com/shigeshibu44/items/886efb44c8c573c3ba6b)の内容の踏襲でほぼいけたのですが、PJの実装ルール的に少し考慮が必要な部分があったので、その部分を書き記しておきます
## アレンジした部分
クラスに@RequestMappingを付与して基幹部分のパスを、メソッドにリクエストメソッドに応じたアノテーションを付与して相対パスを定義するルールなので、以下2点実現できるように手を加えました。
* リクエストメソッドに応じたアノテーションからリクエストメソッドと相対パスを出力する
* クラスに定義された親パスとメソッドに定義された相対パスの関係性が分かるように出力する“`参考記事のControllerクラスをループする部分改変.java
// 略
for (BeanDefinition def
ArrayListで遊んでみる
“`java
package sample;import java.util.ArrayList;
//Parsonクラス
class Parson {
private String name;//コンストラクタ
public Parson(String name) {
super();
this.name = name;
}//gettar
public String getName() {
return name;
}//setter
public void setName(String name) {
this.name = name;
}
}public class Array{
public static void main(String[] args) {Parson p1 = new Parson(“加藤”);
Parson p2 = new Parson(“佐藤”);
Parson p3 = new Parson(“伊藤”);
Parson p4 = new Parson(“松原”);A
Jetpack Composeを現場のアプリ開発で使用してみて思ったこと
最近、Androidのアプリ開発においてJetpack Composeを使用する機会が増えました。
ということで、私が特に現場でJetpack Composeを使用してみて感じた(ている)ことを書いていこうと思います。(2022/6/24時点の感想)
知識不足で間違っている点あればご指摘ください。# 良いと感じている点
### レイアウトの変更・管理がしやすい
– Kotlinコードでレイアウトを書いていくので、個人的にXMLベースよりコードのネスト構造が浅くなる(りやすい)傾向があります。
– Kotlinコードで管理するので、XMLファイルといった形式の異なるレイアウトファイルを管理する必要がほぼなくなります。見るのがKotlinコードに一元化されるので管理がしやすいです。
– 同じKotlinファイル内に複数のComposable定義を記述できるのでグルーピングしたい時とか便利個人差はあるので、上記はいまいちピンと来ない方がいるかもしれませんが、XMLよりKotlinに慣れ親しんでいるエンジニアは頷けると思います。
### 状態に応じたUIの出しわけがやりやすい
その
【Java, Slack】Spring で Slack メッセージ送信
# 背景
– Springプロジェクトで Slack にメッセージを送りたい(Apache Velocity テンプレートで)# 環境
– Spring Framework 4
– slack-api-client 1.XX
– Apache Velocity 1.7
– Java 8# 参考リンク
https://slack.com/intl/ja-jp/help/articles/215770388-API-%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E7%94%9F%E6%88%90%E3%81%A8%E5%86%8D%E7%94%9F%E6%88%90https://slack.dev/java-slack-sdk/guides/composing-messages
# 基底クラス
– AbstractSlackService:使いたいサービスで extend して使うイメージ
“`java:AbstractSlackService.java
public abstract class AbstractSlackS
SpigotプラグインにおけるTagを用いた処理の制御
## 最初に
~~今回はいつものダラダラ解説ではないです。~~# Tagを用いて処理の実行を制御する
## Tagの操作
処理の条件にはTagを使いましょう。
裏側でファイルやデータベースを用いて判定してもいいですが、なにかと用意が面倒くさいと思います。
というわけでマインクラフトに搭載されているTagという機能を使って処理の制御をしてみましょう。### Tagの付与
Tagの付与は簡単です。
“`
player.addScoreboardTag(“Tag名”);
“`
で付与することができます。
付与することのできるTag名には一部使うことのできない記号があるので注意しましょう。:::note warn
マインクラフト側からでは空白、/は使用することができないのでプラグインでも同じだと思われます。
またこれら以外にも使えない文字があると思われます
:::### Tagの取得
TagはSetに格納されているのでListのように番号を指定して取得することができません。
toArrayなどを用いれば全要素の取得をすることができます。### Tagの存在確認
タグ名が
Spigotにおいて看板を用いてプレイヤーからの入力を取得する
## 最初に
看板でプレイヤーからの入力を取得する方法を雑に書きます。## ステップ1
今回はプレイヤーの座標に看板を設置して入力を取得していきます
“`
Location loc = player.getLocation();
Block block = loc.getBlock();
block.setType(Material.OAK_SIGN);BlockState signState = block.getState();
Sign sign = (Sign) signState;
sign.update();
player.openSign(sign)
“`
おわりです。……嘘です。少し解説します。
## 解説
1行目:
プレイヤーの座標(Location型)を取得2行目:
`Location loc = player.getLocation();`で取得した座標のブロックを取得3行目:
`Block block = loc.getBlock();`で取得したブロックをオークの看板に置き換える4行目:
`Block block = lo
SpringBoot でよく使うアノテーション
# はじめに
業務でよく使っていたアノテーションについて備忘録兼解説です。# アノテーション
## @RestController
JSON 形式などで返却するコントローラークラスに対して付与するアノテーション。
コントローラーには、ロジックを含む処理は入れずに、サービスからレスポンスを受け取って、そのまま返却するイメージ。“`
@RestController
public class SampleController {@GetMapping(“/”)
public SampleResponse findSampleResponse() {
…
“`
似たようなやつで、@Controller は HTML 形式のレスポンスに利用される。## @Service
サービスクラスに付与する。「サービスクラスですよー」って宣言しているみたいな感覚で使ってた。
サービスクラスでは、値をフロントエンドで扱いやすくするために、整形して Entity クラスに詰めるみたいなことをやる。
“`
@Service
public class SampleService {