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

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

Mr.Nam 先生の講義要約 Chapter 3, 1-8

1강 Spring DI 흉내내기 (1)
1)변경에 유리한 코드(1) – 다형성, factory method
//변경 포인트 2개
SportsCar car = new SportsCar();
–> Truck car = new Truck();

==>

//다형성 –> 변경에 유리
//변경 포인트 1개
Car car = new SportsCar();
–> Car car = new Truck();

==>

Car car = getCar(); // getCar()메서드 하나만 고치면 됨
static Car getCar() {
return new SportsCar();
}
2)변경에 유리한 코드(2) – Map과 외부 파일

2강 Spring DI 흉내내기 (2)
객체 컨테이너(ApplicationContext) 만들기
Map map 객체 저장소
Properties에 저장된 내용을 Map에 저장
반복문으로 클래스 이름을 얻어서 객체를 생성해서 다시 map에 저장
자동 객체 등록하기 –

元記事を表示

駆け出しエンジニアのJava Silver 受験記

少し前に受けたJava Silver受験記。
参考になるかはわからないけど、いち駆け出しエンジニアの受験記録です。

# 受験時の状況

まず受験当時の状況はこちら
→Javaを勉強し始めてから2カ月弱
→勉強期間:3週間

# 勉強内容

### 試験3週間前~1週間前
受験を決意し、テキストを買い、申し込みをしたのが試験3週間前。
資格試験の勉強はなるべく短期間で効率的にやりたいという気持ちから先に試験日を決め申し込むスタイル。

ただ思ったよりエンジンがかからなくて、テキスト購入から約2週間でやっと1周終了。
というか第1・2章を解いたときに、当時の自分は、
「こんなことまで問われるのか、細かい・・・」思ってしまい、あまり勉強が進まなかった。
1周目は正解を求めず、「へえ、こんなことが聞かれるのねー-」くらいの軽い気持ちでいたほうがサクサク進めそう。
問題解いても全然当たらないから、楽観的に考えないと心折れそうだった。
ちなみに第11章までを1周した後、第12章の総合問題を解きましたが、
結果は、_28/80(35%)_
合格は6

元記事を表示

DAO(Data Access Object)

### DAO(Data Access Object)

1. **DAO**とは?
データにアクセスするためのオブジェクト。DatabaseにセーブされたデータをCRUDするために作られ、使われる。DBテーブルごとに1つのDAOを作成する。

2. **分離**
Controllerが直接DBにアクセスすることもできるが、複数のコントローラがDBに直接アクセスすると重複メソッド作業が何回も行われる可能性が100%に近い。ここで重複メソッドを分離して別途のオブジェクトにしたのがDAOだ。
(1) 階層の分離:DAOは永続階層(Persistance Layer)と言われ、DBに接近する役割をする。それに反してコントローラは表現階層(Presentation Layer)と言われ、データを表示する役割をする。
(2)関心の分離:コードの分離と同時に役割を分離して関心の分離になるとも言える。こう分けられたことで、作業効率が高まり、メインテナンスも容易になる。

“`mermaid
graph TD;
Controller1–>DAO;
Controller2–>

元記事を表示

【初めてのAndroidアプリ開発】気温変化の通知(暫定版)

はじめに

某所にてJavaプログラミングを学んだので、何か対外的にアピールできる成果があればと思い、ある程度実用的なAndroidアプリ開発を行なった。

※内容の不備や著作権上の問題などございましたらコメントなどでご指摘いただけると幸いです。

アプリの目的

春先から日ごとに気温が不安定で、前日と同じような服装でも暑すぎる・寒すぎると感じることが多かった。一方で天気予報を見る習慣はあまりなく、とりわけ忙しい朝に「予報の確認→服装の調整」の流れを毎日実行するのは難しく感じてしまう。
そこで、スマホに毎朝自動で今日の気温と前日比が通知されれば、さすがに服装調整に意識を向けられるのではと考え、初めての開発としてその目的に適うアプリを作成を目指した。

動作の概要

  1. 設定画面(MainActivity)から都道府県・通知時間を設定
  2. 都道府県(ListView_PrefSetting)、通知時間(ListView_TimeSetting)はそ

元記事を表示

業務見える化ー(nobuglady-network)

# :izakaya_lantern:nobuglady-network:izakaya_lantern:

![](https://img.shields.io/badge/license-Apache2.0-yellow)

### :blue_book: 使い方

#### 導入

FlowRunnerから継承されるクラスを作成して、フローの構成ファイルと同じフォルダに格納することが必要です。

MyFlow1.java

“`
public class MyFlow1 extends FlowRunner {

@Node (label= “a” )
public void process_a() {
System.out.println( “processing a” );
}

@Node

元記事を表示

[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 static Predicate distinctByKeys( Function… 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が自動的に注入してくれることで、クラス間の分離が行われ、再利用性の高いコードとなる。

#### 依存オブジェクトの自動注入(Automatic Dependency Injection)
依存オブジェクトの自動注入は、Spring 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:/

元記事を表示

OTHERカテゴリの最新記事