- 0.0.1. SpringSecurity 403エラーページをカスタマイズする
- 0.0.2. PDFに署名があるかどうかを判定する方法(電子帳簿保存法のため)
- 0.0.3. ParameterとArgumentは何が違う?
- 0.0.4. Java
- 0.0.5. VSCode拡張機能Community Server Connectorを試して、sample.warをデプロイしてみた
- 0.0.6. IoCとDI
- 0.0.7. Beansの意味と発展歴史
- 0.0.8. [Servlet&JSP]formから複数の値をまとめて変更する
- 0.0.9. SpringSecurity DBアクセス処理
- 0.0.10. Javadocの使い方とhtmlファイルで出力する方法について
- 0.0.11. JavaとVB.NETしか仕事でやったことないけどGo言語触ってみる
- 0.0.12. 【Flyway】Found more than one migration with versionX.X.Xは、ファイル名が違う場合でも、バージョンが同じだと発生する。
- 0.0.13. ABC257A〜Cの解答[Java]
- 0.0.14. [サーブレット&JSP]formからcheckボタンでまとめて削除する
- 0.0.15. Robocode Tank Royale より知的に弾を打つ(三角比)
- 0.0.16. Selenium + ModHeader で Request Header を変えてみた
- 1. はじめに
SpringSecurity 403エラーページをカスタマイズする
# はじめに
SpringSecurity その4です。前回からの続きになっています。
今回はエラーページをカスタマイズしていきます。# 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)|
|その4|[SpringSecurity 403エラーページをカスタマイズする](https://qiita.com/ryo0527/it
PDFに署名があるかどうかを判定する方法(電子帳簿保存法のため)
コロナの影響もあって世の中テレワークや電子化だと良くなった事も色々ありますね!
さて、今回はそんな中ちょっとニッチな話題「電子帳簿保存法(略して電帳法!)」のためのチップスになります。
この情報を開示する事でダメ出しとか賛同とかもらえたらほんっと助かりますOrz#### 電帳法とはざっくりなんだ?
知ってる人はここ読み飛ばしてね。電帳法とは本当にざっくりいうと、こんな感じ
①PDFファイル化した領収書とかをハッシュ化する
②そのハッシュ化した文字列が今現在存在した事を第三者機関に証明書(タイムスタンプ)を発行してもらう
③そのPDFファイルにその証明書を内蔵させる(10年とか有効だよ)
④紙は不要!さらば!#### 何が課題か?
理屈とか経緯どうでもいい方はここも飛ばしてね!
証明書は10年とか有効な訳ですが、証明書の延長処理というのがあります。その時に他所で勝手に付与されてたタイムスタンプが邪魔になる事があるんです。具体的には「A社がB社に領収書をPDFで送ってきて、既にタイムスタンプが付与されてました」というパターンです。
この時B社は電帳法において、そのPDFをどうし
ParameterとArgumentは何が違う?
### Parameter?Argument?
勉強しながら、ParameterとArgument(arg)という単語をよく聞きます。
自分でははっきりと区別がつかなかったため少し調べてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2662678/56047b63-710d-1733-655b-8049adcb3a95.png)
ここに書かれている通り、Parameterはメソッドを宣言する時の変数を表します。下の例ではint aと
int bがParameterになります。Parameterの例
“`ruby:Parameter
public int add (int a, int b) {return a + b;
}
“`
—
そして、Argumentは、メソッドが呼び出されたときに渡される実際の値とのことです。下の例では1と2がArgumentです。
Java
# Java
## stream
– distinctByKeys
“`java
/**
* リストから重複するオブジェクトを除却する関数を取得する
*
* @param keyExtractors 重複判定に使用するフィールドのgetter
* @param
* @return 重複除却関数
*/
private staticPredicate distinctByKeys( Function super T, ?>… keyExtractors ) {
final Map, Boolean> seen = new ConcurrentHashMap<>();
return t -> {
final List> keys = Arrays.stream( keyExtractors )
.map( ke -> ke.apply( t ) )
VSCode拡張機能Community Server Connectorを試して、sample.warをデプロイしてみた
## はじめに
– VSCodeでTomcatにデプロイするためのサンプルのJavaアプリ開発でもしてみようと思い、Tomcat for Javaを見てみたらなんと、非推奨となっておりました。。
![2022-06-27-23-14-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411902/80ca559f-af34-f6cf-11a0-65b2841cd889.png)
代わりに推奨されている拡張機能である`Community Server Connectors`を利用し、tomcatのサーバを立ててsample.warをデプロイしたので、その紹介記事となります。
—
### Community Server Connectorsとは
[VSCodeのマーケットプレイス](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-community-server-connector&ssr=false#
IoCとDI
### IoCとDI
#### IoC(制御の反転)
制御の流れを伝統的な方式と逆に変えること。Aオブジェクトの中にB、Cオブジェクトがあるとしましょう。
* 伝統的な方式は開発者がAオブジェクト内にB、Cオブジェクトを直接作る方式
* IoCは、Aオブジェクトでsetterを使用して外部からB、Cオブジェクトを生成して注入させる方式。(DI)
→プログラムの流れを開発者が制御せず、プログラム、正確に言えばSpring containerが管理することで、開発者は複雑なプログラムの流れをSpring containerに任せ、ロジックにすることに集中して作業の効率を高めることができる。#### DI(依存性の注入)
使用するオブジェクトを直接生成するのではなく、Beanの情報を元にContainerが自動的に注入してくれることで、クラス間の分離が行われ、再利用性の高いコードとなる。
Beansの意味と発展歴史
#### Beansとは?
+ Component(文書、モデル、テーブル、コード、ライブラリ)またはオブジェクトを意味うる。簡単に言えば、プログラミングをする際に持ち込んで再利用が可能な部品だと思えばいい#### Beansの歴史
1. javabean再利用可能なComponentで、ルールは複雑。 2. Servlet&JSP Bean
MVCからデータを渡すModelとして機能する。ルールは簡単。JSP containerに管理される。
※管理:Beanのライフサイクルを生成、消滅する行為3. EJB(Enterprise JavaBeans)
企業環境で使用するため誕生したが、ルールが複雑。 EJB containerに管理される 4. Spring beans
ルールがシンプルで独立的。Spring containerに管理される。
[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)|
|その4|[SpringSecurity 403エラーページをカスタマイズする](https:/
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 で Request Header を変えてみた
はじめに
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)