JAVA関連のことを調べてみた2020年12月06日

JAVA関連のことを調べてみた2020年12月06日
目次

VSCode拡張 Tomcat for Java でDocker上のTomcat を登録できない時の対処法

## これは何
vscodeでtomcatの開発環境を構築する際,**Tomcat for Java**にDocker上のtomcatを登録できずハマったときのメモ.

## 環境
– Windows10pro
– Docker Engine – Community Version: 19.03.13
– WSL2
– 使用イメージ tomcat:9.0.40-jdk11-openjdk-buster
– Visual Studio Code 1.51.1
– Tomcat for Java v0.11.3
– Remote Development v0.20.0

## 現象
Tomcat: Add Tomcat serverでtomcatのインストールされているディレクトリである**/usr/local/tomcat**を指定するも,うんともすんとも言わない.permissionの問題だと思い chmod で権限の変更を試みるものの,改善しない.

## 原因と暫定対処
現時点では不明
私の環境では**devcontainer.json**に以下

元記事を表示

人事システム「COMPANY」のバッチ処理の裏(側) の話 – 番外編

せっかく [人事システム「COMPANY」のバッチ処理の裏(側) の話](https://qiita.com/e99h2121/items/d9a83a6e47a53dcfbfbd) を書いたのでこいつが如何なるやつかをもう少し書いておきたくなりました。

[Develop fun!を体現する Works Human Intelligence Advent Calendar 2020](https://qiita.com/advent-calendar/2020/whi)
[Develop fun!を体現する Works Human Intelligence #2 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/whi-2)
Works Human Intelligence アドベントカレンダー 12/5 の記事の補足です。

## キューはどこからやってくるのでしょう

[人事システム「COMPANY」のバッチ処理の裏(側) の話](https://qiita.com/e99h2121/items/d9a83a

元記事を表示

英語のテックジョークで使えそうなワード

#良さげなワード
arrays(配列)-> a raise(昇給)
bugs(バグ) -> bugs(虫)
dark(IDEなどのダークモード) -> dark(暗闇)
table(DB table) -> table(机)
server(サーバ) -> server(レストラン店員)
cache(キャッシュ) -> cash(現金)
Java(プログラミング言語) -> java(コーヒー)

#今日の名言
I hope my death makes more cents than my life.(私はこの人生よりも硬貨な死を望む)
※ make cents(小金を稼ぐ)とmake sense(意味をなす)をかけている

-アーサー(映画ジョーカーの主人公)

元記事を表示

【Spring Tool Suite 4】スペースとかタブを可視化する

#初めに
以下のコードをご覧ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/f46d7db7-1315-d49e-19bf-d19736b45424.png)

コンパイルすると、、、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/3dc73f9f-9d8d-1340-84ca-a2034cb71006.png)
ギャ
全角スペースがありました、、、、
しかも、エラーの^位置がずれている、、、、、、

前回の記事[【Java】Spring Tool Suite(STS) インストールからHello World出力まで](https://qiita.com/eikichichichi/items/00b1dde73dba42cb0fa2)
で導入したSTSでは一応全角スペースがあることを教えてくれます(優しい!)。
![image.png](https

元記事を表示

「Factoryメソッドでドメインオブジェクトを生成する」という規約をArchUnitでテストする

## 概要

ドメインオブジェクト自体が複雑になってくると、その生成ロジックも同じく複雑になりやすい。

複雑化したドメインオブジェクトの生成ロジックをクライアント側にもたせると、ドメインが流出してしまう懸念がある。

上記の課題を解決するには、以下のような解決策が考えられる。

* ドメインオブジェクト自身にFactoryメソッドをもたせる
* ドメインオブジェクトの生成を責務とするFactoryクラスを用意する

今回は「ドメインオブジェクト自身にFactoryメソッドをもたせる」ことをArchUnitを使用して機械的にチェックしてみる。

## 実行環境
“`
// build.gradle

dependencies {
testImplementation ‘com.tngtech.archunit:archunit-junit5:0.14.1’
}

test {
useJUnitPlatform()
}
“`

## テスト対象のイメージ

“`java
// Hoge.java

public class Hoge {

public Ho

元記事を表示

Spring Boot / Java を約 1 年間しっかり学んでみて

この記事は[ぷりぷりあぷりけーしょんず Advent Calendar 2020](https://qiita.com/advent-calendar/2020/ppap)の6日目の記事です。

## 背景
研修時代でも Spring Boot や Java は触ってきましたが、業務でしっかり触ったことはなく、業務を通して学んだことや参考書・勉強会で学んだことを本記事でアウトプットしていこうと思います。
自分のローカル環境における Spring Boot / Java のバージョンは以下となります。

* Spring Boot … 2.3.1
* Java … 14

そのバージョンならではの技術にも触れていこうと思っています。

## Spring Boot
### v2.3
個人開発でもよく使用していた Spring Boot フレームワークですが、今年の 2 月に 2.3 がリリースされたことをうけ、[JJUG](https://www.java-users.jp/page/about/) でオンライン勉強会が開かれました。
その際の勉強会で魅力的な機能が豊富にあり、個

元記事を表示

JavaのエンジニアがPHPで開発するときに知ってるといいこと

[Phoneappli Advent Calender 2020](https://qiita.com/advent-calendar/2020/pa_engineers) の6日目
昨日の@teino_ponytailさんの[「HTTP/3ってなに?」](https://qiita.com/teino_ponytail/items/6db84334c23ae9f2549f)を見て、

「あ、Advent Calendarってそういう感じでやるんだ」
と初めて知った、ITリテラシーの低い人です。

仕事でウェブ系開発やるようになって、PHPもやらされるようになりました。
PHPってwebの情報多いし、コピペで簡単に動くものが作れるし、適度に枯れた、
素晴らしい言語だと思います。

「でも、コピペでお金もらうのも仕事としてどうかな」

と思ったりして、言語仕様を調べたこともありました。
その時にJavaエンジニア視点で、PHPのおかしなところとか、
知らんかったことがけっこうあったので、そういうところをまとめました。

まとめたのが2018年なんで、今のPHP7には対応してないかもしれ

元記事を表示

【Java】jarファイルってなに?

#プログラミング勉強日記
2020年12月5日
jarファイルを扱うことが増えたが、実際のところ圧縮ファイルであることしか理解していないのでjarファイルについてまとめる。

#jarファイルとは
 拡張子が`.jar`であるものがjarファイルである。
 jarはJava Archiveの略でJavaのファイルがまとめられてアプリケーションとして使えるファイルのことである。コンパイルされた複数のクラスファイルや画像といったプログラムに必要なものがjarファイルの中に入っている。ファイルを全て入れると容量が大きくなってしまうので、jarファイルはzip形式で圧縮されている。ただ、jarファイルは圧縮された状態のまま使用することができる。

#jarファイルの使い方
 Windowsの場合コマンドプロンプトで操作することができる。jarファイルを操作するためにはjarコマンドを入力する必要がある。ここではjarコマンドのオプションを紹介する。

| オプション | 説明 |
|:–:|:–:|
| -f | jarファイル名を指定する |
| -c | jarファイルを

元記事を表示

MavenでGitHub PackagesへJARをデプロイする

## 概要

GitHub PackagesへJARをデプロイする方法を書きます。

基本的なことは次の公式ドキュメントに書かれています。

– [GitHub Packagesで利用するために Apache Maven を設定する](https://docs.github.com/ja/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages)

公式ドキュメントの内容と重なる部分もありますが、ローカルから手動でJARをデプロイする方法とデプロイしたJARを使う方法、それからGitHub Actionsでデプロイする方法を書きます。

## とりあえずローカルから手動でデプロイする

手順は次の通りです。

1. Personal access tokenを作る
2. `~/.m2/settings.xml`へデプロイ先となるMavenリポジトリの認証情報を書く
3. `po

元記事を表示

*Android*ListViewにカスタムレイアウトを使用してスクロールできることを確認・タップしてリストから値を取得する

# はじめに
こんにちは。今回は、カスタムレイアウトを使用してListViewを作成する際にハマった点を中心に、ListViewをスクロールできることを確認しつつ、ListViewのアイテムをタップして値を取得するところまで解説します。

カスタムレイアウトを使ったListViewの作成では、Androidでデフォルトで用意されているレイアウトを使う際には発生しない、スクロールできないといったエラーが発生することがあります。また、ListViewを画面全体に配置しない場合(画面の先頭ではなく途中から配置する場合)、ListViewを画面全体に配置する時には発生しないエラーが発生することがあります。これらのエラーにハマった際の解決方法を明確にしておきます。以下は解決方法として間違っています。

– ScrollViewでListViewを囲うことにより、スクロールできるようにする
– Java側のコードで何とかしようとする

# 前提
*Android Studio 4.0.1
*targetSdkVersion 29
*Google Pixel 3a XL

# 完成イメージ
以下のよ

元記事を表示

「職業訓練校に通って、javaSliver11を取った件」

##前文
 javaSliver合格のための、暗黙知や経験知に関する記事です。
具体的なアドバイスになりそうな項目は、前半に、若干まとめてありますので、これから受験される方は、そこだけ読めば十分だと思います。

 javaSliverを2020年11月取得しましたので、その経緯と経験をまとめたものです。今後Goldを取る予定があるのと、資格の更新があるので、再受験をする自分のために書かれています。文体や内容が整っていない部分もあります。そして、Javaの問題の解き方は、この記事では解説しません。

![1Z0-815.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72239/d26f63f1-1085-5f33-dc2c-610fc6c97469.jpeg)

##概要

| 項目 |内容 |
|:-:|:-:|
| テスト種類 | 1Z0-815 JAVA SE 11 Silver |
| 受験日 | 2020年11月下旬 |
| 会場 | 横浜テストセンター(ピアソンVUE公認

元記事を表示

プリミティブ型のソートでは最悪計算時間に注意する

Java11にはさまざまなソートAPIが用意されていますが、ソートアルゴリズムとして、プリミティブ型のソートにはDual Pivot Quick Sortが、参照型のソートにはTimsortがそれぞれ採用されています (以下は`java.util.Arrays`より抜粋したもの)

“`java:Arrays.java
public class Arrays {
public static void sort(int[] a) {
DualPivotQuicksort.sort(a, 0, a.length – 1, null, 0, 0);
}

public static void sort(Object[] a) {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a);
else
ComparableTimSort.sort(a, 0, a.length, null, 0, 0);
}
}

元記事を表示

【Java】Controller の概念( MVCモデル )


# Controller


## 一言まとめ
「$ServletのようなViewとModelを制御する機能$ 」


## 【説明】

コントローラは、ViewとModelを制御します
MVCモデルにおいてのControllerは、名前の通り「システムをコントロールする役割」役割の機能のことで、ViewやModelへの命令を担います



## 【特徴】

Controllerは、自分自身でModelとViewの仕事である「ロジックの実行」や「画面の表示」は行わない。

Controllerの仕事は以下のように、「ModelとViewに仕事を割り当てる事」です。

1. Viewからリクエストを受け取る
2. Modelへ処理の命令を出す
3. Modelから処理の結果を受け取る
4. Viewへレスポンスを返す

JavaEEではContr

元記事を表示

よく知らないアプリケーションの性能と戦わないといけないときの防衛術(前編)

# よく知らないアプリケーションの性能と戦う、という状況

* **SNSにキャンペーン載せたらバズってサイトがずっと503なんです、なんとかなりませんか?**
* **バッチがいつもの時間に終わらないんですけど、急ぎ見てください!**

みたいな連絡を、そろそろ帰るかと思った21時とか明け方5時とかに電話が鳴って受けることって、そこそこあると思うんです。

私が設計したわけでもなく開発したわけでもなく、レビュー参加とかで辛うじて全体はわけるけど、いまからソース見る時間もないし、開発した方は性能面の対処が覚束ない。**突然性能面で火を噴いてなぜか自分が召喚されて2~3時間でどうにかしたい、という闇な状況**にどういうふうに対応していたっけ自分、というのを**経験則100%で書いてみよう**と思います。

**この前編は道具の紹介(OS編)、中編は道具の紹介(Java, PostgreSQL)、後編は具体的なケースです。**

……あっ、たぶん変なところもあると思うので、ご指摘お待ちしております。

# 想定する環境

仕事柄、想定する環境はすごくレガシーです。クラウド(AWS EC2)

元記事を表示

【Java・SpringBoot】RowCallbackHandlerでコールバック / CSV出力機能(SpringBootアプリケーション実践編18)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して、Spring JDBCの使い方について学びます⭐️
今回は**RowCallbackHandler**を使って、**ユーザー一覧画面からCSV出力する機能**を作ります^^
構成は前回/これまでの記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC / ResultSetExtractor(SpringBootアプリケーション実践編17)](https://qiita.com/suema0331/items/b55919b2076207790164)

#RowCallbackHandler
* RowCallbackHandlerでコールバックして、**ユーザー一覧画面からCSV出力する機能**を作ります

###コールバックとは
* 時間のかかるような処理を**別のコールバック関数に実行依頼**する
* その処理が終わるまで**他の処理を行うことができる**
* コールバック関数の処理が終わったら結果を受け取る

###RowCallback

元記事を表示

【Java】Viewの概念( MVCモデル )


# Viewの概念


## 一言まとめ
$「View」は、JSPなどの「Model」をユーザインタフェースに出力するのを担当するもの$


## 【説明】

「View」は、JSPなどの「Model」の表示を担当する部分で、ユーザインタフェースへの出力を担当します。
modelに保存されている情報は、viewに渡されることで初めてユーザーが確認できます。

ウェブアプリケーションではHTMLやCSSなどを指し、一般的なGUIではウィジェットの階層構造を指します。


## 【メリット】
Viewがデータベースの情報をただ数値で表示するだけでなく、グラフや図などを利用してより視覚的に表示したり、配置や配色などを工夫することで、UXの高いアプリケーションを構築することに繋がる。


## 【特徴】
J2EEでは、JSPがよく利用されます。
MVCモデルにおいての JSP の役割は、ブラウザ

元記事を表示

【Java】Model の概念( MVCモデル )


# Model ( MVCモデル )
「Model」という概念についてのメモ。


## 一言まとめ
モデルとは
$「データを処理したり、データをDBへ保存したりする部分」$


## 【説明】
Modelの仕事は主に以下のような「データベースの処理を司る部分」のことです。

– ビジネスロジックを書く部分
– データを処理したり、データをDBへ保存する
– DBからデータを取得してControllerへ送る
– データベースとデータのやり取りを行う機能を実装
– データベースから取得したデータを形式でデータを変換

データを処理する部分は、Logic(ロジック)という別の場所を用意して書くこともある。


## 【メリット】
MVCモデルのメリットとして、、

– 役割でアプリケーション開発が効率的に行える
– それぞれで分割して専門性が高い仕事が可能
– 専門的な仕事の独立性が非常に高い
– 変更などの対応にも柔軟に行な

元記事を表示

結婚生活における不吉な匂いをリファクタリングする方法を考えてみる

[アジャイルを使ってクリスマスまでに彼女を作る方法を考えてみる](https://qiita.com/Let_kdm_free/items/7287325f4a3541e4551e) を踏まえ
[結婚生活は生涯にわたるリファクタリング](https://qiita.com/Let_kdm_free/items/7287325f4a3541e4551e#comment-d37ae4bb02ce78decb91) との声があった。良い指摘だとおもった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/4f527e57-dcef-fbff-4948-38ad3f8dfc20.png)

ので、考えてみました。

## 結婚生活における[不吉な匂い](https://qiita.com/NagaokaKenichi/items/22972e6ba698c7f2978a#%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%B8%8D%E5%90%89%E3%

元記事を表示

enum型をわかりやすく説明する

## はじめに

Javaではenum型というものを使って、定数を定義するらしい。
これまで仕事でちょくちょく使っていたが、知識不足を痛感したので、勉強がてら使い方などをまとめてみる。
enumの定義や基本的な使い方を扱い、忘れたときに参照できるような記事を作成していく。

## enumとは?

“enum“はJava5.0から導入されており、“列挙型“と呼ばれ、関連のある定数(列挙子)をまとめるためのクラスの特殊な形式である。

## 使い方

基本的な使い方としてはまとめたい定数を
**大文字** で定義し、 **カンマ区切り** で列挙していく。

“` java
public enum Drink {
COLA, CIDER, COFFEE

// また、以下のように改行も可能
public enum Drink {
COLA,
CIDER,
COFFEE
}
“`

また、それ以外にも以下のようなことが可能である。

1. フィールド、コンストラクタを定義することで、定数に関連する値を紐付けることができる。
2. 定数特有の処理を行うためのクラス本体

元記事を表示

【Java・JDBC】INSERT, UPDATE, DELETEを実行する


# INSERT, UPDATE, DELETEを実行する


## 一言まとめ
DB接続からSQLの値を書き換える方法についてのメモです。

## executeUpdate() 【戻り値で更新行数を返却】
SQLのINSERT文、UPDATE文、DELETE文の実行は、executeUpdate() メソッドを使用します。
executeUpdate()メソッドは、前処理済みのINSERT文,UPDATE文,およびDELETE文を実行した場合、[戻り値]で更新行数が返却されます。これら以外のSQL文を実行した場合は,0が返却されます。

“`java
Statement statement = connection.createStatement();
String SQL = “INSERT INTO テーブル名(カラム名, カラム名, …) VALUES( 値, 値, …) “;
statement.executeUpdate(SQL);
“`

元記事を表示

OTHERカテゴリの最新記事