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

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

【備忘録】VS CodeでJavaのビルドツール変更にハマった話

# はじめに

JavaのコーディングをVS Codeでしていて、Dependencyの解決で見事にハマりました。
備忘録として(たぶん、またハマると思うんで)、調査の過程を記します。

それは、興が乗った私がGitHubからクローンしたSpring Bootのサンプルコードを魔改造しようとして、調子に乗ってpom.xmlを書き換えた後に発生しました。

「追加したdependencyがVSCodeに反映されない…だと?」

そこから、調査がはじまったのです。

# 調査

VS Codeに導入しているJava関係の拡張機能はJava Extension Packのみですので、もしJava Extension Packの問題であれば世間様(※Google)に聞けばわかるはずです。

ところが、世間様(※Stack Overflow)のご意見を伺っても、pom.xmlを更新したら「更新を反映しますか?」的な確認ダイアログが出てきちんと反映されるよ、というご意見ばかり。

唯一可能性がありそうなのは、Java Language Serverのキャッシュに問題があって、それを消せば良いのでは

元記事を表示

Docker × Java シンプルすぎる開発環境構築

# DockerでJavaの開発環境構築

## 概要
Docker上にJavaのコンテナを設置するだけのシンプルな環境を構築します。
プログラムを極めし証`Hello World!`をコンソールに出力するところまでをご紹介します(笑)

## 環境
– macOS Catalina バージョン10.15.5
– Docker version 19.03.8
– docker-compose version 1.25.5

## 構成
最終的に以下のような構成になります。

“`
├── docker
│   └── java
│   └── Dockerfile
├── docker-compose.yml
└── server
└── src
├── Main.class
└── Main.java

“`

## 手順
### 1. docker-compose.yml作成
javaコンテナ1つだけのシンプルな構成です。

“`docker-compose.yml
version: ‘3.6’
services:
java

元記事を表示

AbstractFactoryパターンをenumで生成するメリット

AbstractFactoryパターンの説明には、実行時引数に文字列を渡したり、フラグでif-else判定する例をよく見かけます。

個人開発では自分がすべてを把握しているため気にならないかもしれません。
しかし、チーム開発で他チームにモジュールとして提供している場合、
Factoryの提供を受けたチームが生成可能なFactoryを知るにはどうするのか?

方法としては、自分でコードを調べるか、Factory側のコード担当者に確認するかのどちらかになると思います。

Factory側の担当者は、クライアントのコード担当者の為であろうと、
自分にいちいち聞きに来た時に答えるのが面倒だという理由であろうと、
**『Enumにしておけば何を生成できるかを明白に示せる』**ということを知っておいてもらいたい。

# よく見るFactroy生成方法
## クラス名を文字列で渡して判定するコード例

Spring Boot, Doma2, Gradleの初期設定まとめ

# 始めに

Eclipseで開発する際の、Spring Boot + Doma2 + Gradleの初期設定でいつもハマっているので自分用にまとめる。

# 環境

– IDE:Eclipse pleiades-2020-03
– Spring Boot:2.3.1 RELEASE
– Doma:2.35.0

# 設定手順

## (省略可)Spring Initializerでアプリケーションのひな型を作成する

![image-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560068/eb24c07a-7724-e4f0-0de7-3494bca82607.png)

![image-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560068/aa74946f-67ea-cbc5-85eb-405a029500a2.png)

## Doma2への依存関係を追加する

“`bui

元記事を表示

JavaとJavaScript 間違えられやすい問題

# はじめに

ちょっとキニなることを叫びます。
たぶん、これを読む皆さんも
おそらく聞いたことがあると思います。

——————————–
# 結論から言います

JavaとJavaScriptは違います!!!

——————————–
# なんで間違えてしまうん

単純に「勉強不足」と片づけてしまえれば
楽なのですが
なぜか、頑なにJavaScriptを「Java」と
発言してしまう方がチラホラいます。

——————————–
# なぜこうなるのか

JavaScriptという言語自体が
Java開発に参画していたSun Microsystems社とともに
開発された言語だった為

——————————–
# でもさあのさ

うんうん、わかるよわかるよその気持ち
ホンマのIT技術者ならばこれくらいの違いは
わかって当然だよね。

——————————–
# それでもわか

元記事を表示

【実践‼】MyBatisを使用する際の最低限の設定

## 1.事前知識
– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)
– [【実践‼】Spring Boot で Hello World を表示する](https://qiita.com/ryome/items/8d7f71ebedeeb2526cee)
– [【実践‼】Javaデータベース連携(Connector/J 8.0.20)](https://qiita.com/ryome/items/c78534200ae725ad571b)

事前知識として、上記リンクの内容が必要です。

## 2.事前準備
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/73a0e22e-c500-a42a-f60f-82f6ddc13bb3.png)
![23.png](https://qiita-image-store.s3.ap-n

元記事を表示

Gradleで任意のフォルダのプロジェクトを追加する

# はじめに

React NativeのAndroidプロジェクトで変則的なフォルダ構成だったのでGradleでうまく扱う方法を紹介します。
サブフォルダや同じ階層のフォルダの場合は[Gradleでマルチプロジェクト](https://qiita.com/shiena/items/371fe817c8fb6be2bb1e)で実現できます。

# フォルダ構成

“`
myapp/
android/ ★rootプロジェクト
build.gradle
settings.gradle ★これを編集する
app/ ★アプリプロジェクト
build.gradle
library/
android/ ★ライブラリプロジェクト
build.gradle
“`

# 設定

“`gradle:settings.gradle
include ‘:app’
// ここから追加
include ‘:library’
project(‘:library’).projectDir = file(‘../../library/android’)
// こ

元記事を表示

Apache Tomcat 9 にデプロイする Java Servlet と JSP の WAR ファイルを Gradle で作成する

## 概要

– Java Servlet と JSP を含む WAR ファイルを Gradle で作成する
– Apache Tomcat 9 にデプロイする

## 今回の環境

– Apache Tomcat 9.0.37 (Java Servlet 4.0, JSP 2.3)
– Java 14 (AdoptOpenJDK 14.0.1)
– Gradle 6.5.1
– macOS 10.15 Catalina

## Java Servlet と JSP を含む WAR ファイルを Gradle で作成する

### ソースコードを置くディレクトリを用意する

今回は任意のディレクトリに mywebapp というディレクトリを作成してその中にシンプルなサンプルコードを用意する。

“`
$ mkdir mywebapp

$ cd mywebapp
“`

### ファイル一覧

“`
mywebapp
├── build.gradle
└── src
└── main
├── java
│   └── com

元記事を表示

Azure Functions & Java のウォームアップトリガー実装時の注意点

Azure Functions の Premium プランでは **[ウォームアップトリガー](https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-warmup?tabs=java)** を用いてインスタンスのスケールアウト時に任意のウォームアップ処理を実行できます。Java で実装する際には注意するポイントがありますので、本記事で簡単にまとめたいと思います。

# tl;dr
Azure Functions の Java は現状では `WarmupTrigger` 属性をサポートしていないため、ウォームアップ用の `function.json` を自前で準備しておき、ビルド成果物のパッケージに同梱する必要があります。

# ドキュメントの解説
Azure Functions のウォームアップトリガーについて以下のドキュメントにまとまっています。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings

元記事を表示

画像はアップロードされたのに、画面には表示されない!?

# 困ったこと

Spring Bootを使って、画像をアップロードする。
アップロード直後は画像がHTML上に表示されず、30秒程待って画面をリフレッシュすると表示される。

# 画像のアップロード方法
画像ファイル -> /resource/static/images/配下
ファイル名(xxx-20200712151409.jpgなどのファイル名) -> DBに格納

# 解決方法
1. ルートフォルダ直下にフォルダ(仮に、imagesとする)を作る
今回は、RamenKingdomというルートフォルダの直下にimagesを作成しています。
![スクリーンショット 2020-07-12 15.17.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/7ecb1f23-36ef-4c78-cc04-9b5ee36063db.png)

2. WebConfigurationクラス(仮に、AdditionalResourceWebConfigurationとする)を作成

“`jav

元記事を表示

QuarkusでAWS Lambdaを作る

Quarkus(https://quarkus.io/) とは`SUPERSONIC SUBATOMIC JAVA`で、

> A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.

だそうです。
何言ってるかわかりませんがすごそうです。

GraalVMの機能でJavaのプログラムをネイティブに変換することが可能なので、AWS Lambdaのカスタムランタイムと組み合わせることで AWS Lambda上で動作するJavaアプリケーションの特性である **コールドスタートが遅い問題** の解決に期待ができます。

公式サイトの手順に従い試してみましたので、手順を残します。

QUARKUS – BUILDING A NATIVE EXECUTABLE
https://quarkus.io/guides/building-native-image

QUARKUS – AMAZ

元記事を表示

ラズパイでjavafxを動かす方法 2020/07/12投稿

恐らく、かなり多数の方がラズパイでJAVA FXを実行する方法を探しているかと思うが日本語の情報が少ない為、ここに略記する。

Google先生で検索すると以下の記事が最も気になる。
https://qiita.com/sh1k1ya/items/72d40e6ef8b8cd51e68c
「RaspberryPiでJavaFXとGPIO制御を組み合わせてみる…が、まだ完成していないorz」

参考にしたが、なかなか動作させるに至らなかった

開発ツールはEclipseを使用
EclipseにJAVAFXを導入し、開発する方法は他サイトにゆずる。
<やりたいこと>
〇ラズベリーパイにsambaを導入してwindows上のeclipseでクロス開発環境を構築する
 windows10の場合は、プログラムと機能でsambaクライアントを有効にする必要もある
〇シーンビルダーで編集した実行可能jarを自動実行させる

<実行手順略記>
1.SDカードにRasbian OS イメージを書き込み
2.初期設定
3.無線LANの設定
4.sambaのインストール

$/sudo ap

JavaでTODOアプリを制作しよう3 MySQLに仮のデータを保存 -> 全取得 -> topに表示する

こんにちは。
[JavaでTODOアプリを制作しよう2 Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)の続きの記事です。

今回はデータベース(MySQL)に仮のデータを保存し、それらを全取得してtop画面に表示してみようと思います。

## TODOアプリ作成リンク集
[1: MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
3: JavaでTODOアプリを制作しよう3 MySQLに仮のデータを保存 -> 全取得 -> topに表示する(今ここ)

## MySQL及びSequelProのインストール
まずはDBと便利なGUIを導入します

【AtCoder Beginner Contest 152 C問題】TLEについてと、printデバッグ位置のコツ

# printデバッグを入れる位置で混乱していませんか?

お久しぶりです。宇宙意志です。

今回はいつものように書き捨てのSeleniumではなく、[ABC152-C](https://atcoder.jp/contests/abc152/tasks/abc152_c)問題を見ていきたいと思います。__別にリングフィット購入の自動転売で大儲けしようとしたのにLambdaが動かなくてキレていた訳ではないです。__

今回の趣旨ですが__考え方とデバッグの位置を說明__です、まだTLE(時間切れ)で解けていません。

#問題の概要

1.N個の順列がバラバラに並んでいます
2.前からiを走査させます
3.走査中のiよりも手前にある順列全て(ここではjと定義されてます)と比較して、~~j!>=i!~~ j>=iが常に成立するならi 1つに付き1カウント
4.条件が成立するiの合計カウントを求める

という問題です。

#解法の考え方

1.まずこの問題を聞いた時に、__2重for文を使って配列のiの位置を記憶させて、
 jを配列として左端からiの位置まで走査すれば良いな__、というのはす

google-http-clientのHTTPヘッダをログに出力する

GCPクライアントライブラリが発行しているHTTPリクエストヘッダ/レスポンスヘッダをログに出したい、というニーズにお答えします。

追記: 本家に記載があることに気が付きました。内容は今のところ当メモとだいたい同じですが、本家側を見ていただくのがいいと思います。
https://googleapis.github.io/google-http-java-client/http-transport.html

(追記終わり)

—-

# 下調べ

google-http-clientでは、JUL(java util logging)を使っているようです。

– ログ出力に使っているLoggerは `com.google.api.client.http.HttpTransport` クラスの[LOGGER定数](https://github.com/googleapis/google-http-java-client/blob/v1.36.0/google-http-client/src/main/java/com/google/api/client/http/HttpTransp

QuarkusがJava Lambdaを救う!?

すごいですQuarkus!!!!!!
JavaのLambdaのコールドスタートがチョッパヤです!!

以下の公式サイトを参考に試しました。

https://quarkus.io/guides/amazon-lambda#tracing-with-aws-xray-and-graalvm

# テスト対象

前回の[AWS LambdaのJavaは遅い?](https://qiita.com/moritalous/items/632333088948aad7f8c9)とほぼ同じですが、以下が異なります。いずれもQuarkusの制限?制約?です。

* アノテーションが付いてる
* httpClientがUrlConnectionHttpClient

ソース全体

“`java
package example;

import javax.inject.Named;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.s

【Java】Spigot プラグイン開発 – コマンドをバニラコマンドとして登録する

#概要
・普通はplugin.ymlで登録するコマンドをバニラコマンドとして登録する。

#対象読者
・プラグイン開発の環境が整っている。

#環境
・Windows 10 – 1909
・Eclipse IDE Version: 2020-06 (4.16.0)
・Minecraft 1.16.1
・Spigot 1.16.1

#注意
ここでは、Minecraft 1.13から追加されたコマンドエンジン brigadier を使用するので、1.13より下のバージョンではできないかもしれません。

#作成するコマンド
・今回は、無難に「プレイヤーを飛べるようにする」というコマンドを作成します。
・コマンドの構文
“`/fly <プレイヤー> allow“`

#ソースコードと説明
・まずは、クラスを作成しましょう。

“`java:FlyCommand.java
package com.hamusuke.qiita.command;

import java.util.Collection;

import com.mojang.brigadier.CommandDispatc

enumの比較は==がつよつよ、equalsはよわよわ【Java】

# 理由

– [==はNullPointerExceptionが発生しない/ equalsは発生する](#はnullpointerexceptionが発生しない-equalsは発生する)
– [==は型変換がないため無駄がない(速い)/ equalsはObject型への型変換があるため無駄がある(遅い)](#は型変換がないため無駄がない速い-equalsはobject型への型変換があるため無駄がある遅い)
– [==はコンパイル時に型チェックがある/ equalsは型チェックない](#はコンパイル時に型チェックがある-equalsは型チェックない)

## ==はNullPointerExceptionが発生しない/ equalsは発生する

“`java:ぬるぽ確認
public class EnumNullPointerExceptionTest {

enum Season { SPRING, SUMMER, AUTUMN, WINTER; }

public static void main(String[] args) {
Season season = null

(学習メモ)Java2級対策:問5要点(演算結果)

(自己学習用)

~~~ TBE ~~~

Java StringBuilderクラスについて

StringBuilderクラス、の『クラス』とは、Javaに標準装備されている機能のこと、という理解で正しいでしょうか?

また、「プログラムを実行するための処理をまとめたオブジェクト」、という意味のクラスとは別の用語なのか否かも教えて欲しいです。

拙い投稿申し訳ありません。