- 1. [Java] 内部クラスについて まとめ
- 2. APIリリースの手順(1)
- 3. Javaで実装されていたシステムをRubyに移行した話
- 4. 副作用満載のコードをリファクタリングした
- 5. Javaでの順列(N!通り)、組み合わせ(N^m通り)の全探索を応用しやすくしてみた
- 6. JavaでSlack botをリリースするまで その1
- 7. SpringSecurity 403エラーページをカスタマイズする
- 8. PDFに署名があるかどうかを判定する方法(電子帳簿保存法のため)
- 9. ParameterとArgumentは何が違う?
- 10. Java
- 11. VSCode拡張機能Community Server Connectorを試して、sample.warをデプロイしてみた
- 12. IoCとDI
- 13. Beansの意味と発展歴史
- 14. [Servlet&JSP]formから複数の値をまとめて変更する
- 15. SpringSecurity DBアクセス処理
- 16. Javadocの使い方とhtmlファイルで出力する方法について
- 17. JavaとVB.NETしか仕事でやったことないけどGo言語触ってみる
- 18. 【Flyway】Found more than one migration with versionX.X.Xは、ファイル名が違う場合でも、バージョンが同じだと発生する。
- 19. ABC257A〜Cの解答[Java]
- 20. [サーブレット&JSP]formからcheckボタンでまとめて削除する
[Java] 内部クラスについて まとめ
### はじめに
Javaの学習を始めたのでアウトプットとして投稿しています
今回は内部クラスについてまとめました### 内部クラスとは?
名前の通りクラスの中にクラスがあり、ネストしているような状態のクラスのこと
通常は1ファイルの中に1クラスを定義するが、言語仕様上は1ファイルの中にいくつもクラスを持つことが出来るクラスAの中に内部クラスB、の中に内部クラスCを持つ
“`java
public class A {
public class B {
public class C {
}
}
}
“`
これは1ファイルに複数のクラスを持っているだけで内部クラスではない
“`java
public class A {}
class B {
}
“`### 使い方
クラス同様インスタンス化ができるが制約もある
– staticクラスは、クラス外から直接インスタンス化できる
– 非staticクラスは、外部クラスのインスタンスからのみインスタンス化できる
(非staticな場合のみ内部クラスと呼ぶ、それ以外は「ネスト
APIリリースの手順(1)
# Eclipceを使用したJarファイルの生成
## 1. Pleiadesのセットアップ
### 1-1. Eclipceのインストール下記URLよりEclipceをインストールする
https://mergedoc.osdn.jp/![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297939/c96ee219-ce18-6a5c-5e2
Javaで実装されていたシステムをRubyに移行した話
https://tech.speee.jp/entry/java-to-ruby
副作用満載のコードをリファクタリングした
## はじめに
https://qiita.com/official-events/535fdbb5cb67791998f8の参加記事になります。
少し昔の話ですが、Javaのシステムのコードを大きなリファクタリングをした経験があり、
その内容のうち3つのリファクタリングについて書いてみました。## 既存コードの状況
自分は新しくチームに参画したばかりで、既存コードには詳しくありませんでした。
新規の機能追加のタスクを担当していましたが既存のコードを見た感覚として3つの問題があると思いました。
– 1つ目はメソッドの呼び出しが副作用で溢れており、どこで何が行われているかが追いづらくなっていました
– 2つ目はDBのレコードデータを実行時に処理するときに様々なテーブルの情報を組み合わせながら処理していましたが全てのレコードidがintで扱われており、処理に必要なテーブルが5-10種類の様々なidの存在チェックの認知が難しくなっていました– 3つ目はcookieのデータを読み取りと保存処理がありましたが、cookieから読み取りオブジェクト化するロジックとcookieに
Javaでの順列(N!通り)、組み合わせ(N^m通り)の全探索を応用しやすくしてみた
JavaでのAtCorderやTOPSICで役立つ全探索について自分なりに使いやすくしてみました!
順列の全探索(N!通り)
–
順列の全探索のコードについては
https://maku77.github.io/java/numstr/permutation.html
を参考にしました。
1つ1つの並べ替えを“`ArrayList“`型に格納してそれを“`ArrayList >“`します。
コードは次のものです。
“`main.java
import java.util.ArrayList;
public class Chu8_1 {
private static ArrayList> permutation(int[] seed) {
ArrayList> array =new ArrayList >();
int[] perm = new int[seed.lengt
JavaでSlack botをリリースするまで その1
# はじめに
SLackのアプリをJavaで実装する方法に、Slackが提供するフレームワークboltがあります。
今回はこちらを使用して既存のアプリをSlackに対応させる方法・手順について記載します。# アプリの作成
## Slack側の設定
### 新規アプリの登録
[Create New App](https://api.slack.com/apps) より新規アプリを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20464/15383a51-ae00-d602-94b1-6c2368809582.png)### OAuth & Permissions の設定
Permission を設定します。設定は一例ですので必要に応じて設定を変更してください。
今回は Slash Commands を利用するので、以下のようにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz
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-