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

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

Slack に Java のライブラリがどのようなリクエストを投げているかを調べるため Charles を使って HTTP トレースをとった話

# 概要
レガシーの Java アプリケーションが slack-api を使って通知していましたが、2020 年 3 月初旬になったら通知に失敗するようになりました。
Mac でトラブルシュートをするため、通知に失敗しているリクエストのペイロードがどのような内容であるかを確かめたいと考えました。
[Fiddler](https://qiita.com/yut-nagase/items/19be8d4df706f8373ff0) を使ってトレースを取ろうとしましたが、乗ってきてくれないので、[Charles](https://www.charlesproxy.com/) を使うことに。
curl では、[こちら](https://www.yoheim.net/blog.php?q=20180308) を参考に、localhost:8888 へのプロキシを -x で指定すると、Chales でログが取得できました。

“`.sh
curl -x localhost:8888 -X POST –data-urlencode “payload={\”channel\”: \”#genera

元記事を表示

Windows+VS CodeでSpring Boot環境を作る

# やりたいこと
WindowsでSpring Bootを動かす環境を作りたい。
せっかくWindowsでやるならWSL上で作ってそれをVS Codeでよしなに開発するのが今風な気がするのでそれを目指す。
まずはWindows上のみで動かし、そのあとWSL上で動かす。

# やったこと
## Windows上のみで動かす
### OpenJDKのインストール
http://jdk.java.net/14/ からWindows用のJDKをzipでダウンロードして展開する。
出来たフォルダを適当なパスへ移動する。今回は`C:\Program Files\Java\jdk-14`以下に置いた。

また、システム環境変数に下記を設定する。

変数|値
—|—
JAVA_HOME|C:\Program Files\Java\jdk-14
Path|先頭に %JAVA_HOME%bin を追加

### VS Codeの設定
#### 拡張機能のインストール
下記をインストールした。

– Language Support for Java(TM) by Red Hat
– htt

元記事を表示

spock のセットアップとかの実行順まとめ

まわり見てるとちょいちょいこれでハマっている人がいるので、躓かなくなると良いなと思ってまとめ

さっと

## spock
細かい説明は省きますが、setup cleanup がいくつかと、where というテストデータ定義をする箇所があります

結論をさっと
表と絵で

定義 | タイミング | 備考
:– | :– | :–
setupSpec | テスト [クラス] の最初で [一回] 動く | static 相当
setup | テスト [データ] [ごと] に最初に動く |
cleanup | テスト [データ] [ごと] に最後に動く |
cleanupSpec | テスト [クラス] の最後で [一回] 動く | static 相当
where | テスト [メ

元記事を表示

【Java】HTTPステータス 400 – Bad Requestの「リクエストヘッダが長すぎます」問題を解決

##はじめに
![スクリーンショット 2020-04-01 18.33.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486824/56d8461e-7eb7-462d-2de5-271fcf63e2e1.png)
上のような問題がでました。

どういう状況の中で出たかというと
#####Tomcatでサーバーを立ち上げようとしていたとき

に出ました。完全に初歩ですね。RailsでRails sするときに謎のエラーが出る感じです。

サーバーに関してはそんなに知識を持ってなかったので、解決するのにちょっと戸惑いました。解決策を共有したいと思います。

作業環境
・Tomcatバージョン:8.5

参考記事:[Tomcat: Request Header too large? Resolved!](https://thewebspark.com/2017/12/06/tomcat-request-header-too-large-resolved/)

##結論

###「maxHttpHe

元記事を表示

java・JDKのバージョン管理 ベストプラクティス

# scala・javaのバージョン管理 ベストプラクティス

## 背景
jdk 1.8.0 系のプロジェクトと個人で、最新のjavaとscalaを使用する際にバージョンの切替が必要になりました。
昔`jEnv`を使用していたのですが、設定が複雑だったので見直したところ [sdkman](https://sdkman.io/) というバージョン管理ツールがありとても使いやすかったのでご紹介します。

## [sdkman](https://sdkman.io/) インストール方法
**sdkman インストール方法**

“`
curl -s “https://get.sdkman.io” | bash
source “$HOME/.sdkman/bin/sdkman-init.sh”
“`

“`
➜ ~ sdk list java
================================================================================
Available Java Versio

元記事を表示

Spring-Securityの新規登録とログイン(JPA)

#SpringSecurityの設定でハマった
タイトル通りです。初めてSpringSecurityを使って認証処理をしようとしたのですが、見事にハマりました。
参考URLは[こちら](https://qiita.com/a-pompom/items/80b3f4bb6414e8678829)と[こちら](https://qiita.com/sukezane/items/93f9155b5a4fa1976247)です。

まずはプロジェクト作成。環境は以下。
Javaバージョン:1.8
FW:Springboot(gradle)
DB:MySQL(アクセスはJPA)
他:WebとかlombokとかThymeleafとか入れてます。
#まずはログイン画面を表示
“`java:LoginController
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotatio

元記事を表示

Win10上でJavaとmysqlのWebシステム構築手順

#Overview

今回は一般的なDevelopmentEnviromentを作りたい

##概要

– Mysql
– ダウンロード
– インストール
– 設定
– Java
– Download
– 展開するフォルダー
– IDE
– ダウンロード
– インストール
– 設定など
– Tomcat
– ダウンロード
– インストール
– テスト
– サーバー
– DBと接続

# MYSQL

###ダウンロード

https://dev.mysql.com/downloads/installer/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546056/d1dd52e4-13da-03cb-dfd8-c80614a0f464.png)

次の画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546056/f66b3db9-

元記事を表示

Kotlin Coroutineのサンプルをコマンドラインから実行する方法

## やりたいこと
みんな最初に実行する以下のコードをコマンドラインでビルドして実行する。

“`kotlin

import kotlinx.coroutines.*

fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println(“World!”) // print after delay
}
println(“Hello,”) // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
“`

## 前提条件
– MacOS
– Javaインストール済

元記事を表示

[jackson]JSONの値「0」「1」をbooleanとして受け取りたい

## 動機
* JAVA SpringBootを利用したWEBシステム
* JSON文字列を入力として用い、データを保持するオブジェクトに変換する
* JSONにおける「0」の値をfalse、「1」の値をtrueとしてbooleanに変換して受け取りたい。

## 参考
* https://stackoverflow.com/questions/34297506/how-can-i-serialize-de-serialize-a-boolean-value-from-fasterxml-jackson-as-an-in

## 概要
* JsonDeserializer を継承したデシリアライザクラスを作る
* public static class になる
* @JsonDeserialize(using=作成したデシリアライザクラス.class) で指定する

### シリアライズとデリシアライズ
* シリアライズ
* ソフトウェアが扱うオブジェクトを、文字列表現に変換すること。
* オブジェクト→JSON。
* デシリアライズ
* 文字列表現の

元記事を表示

WebFluxのセッションを実装してみる

引き続きWebFluxの話です。
今回はWebFluxでのSessionの使い方を紹介します。
なお、ここで紹介するのは最小構成のRedisを使わないインメモリの実装例です。

# サンプルの環境
– Java 8
– Spring Boot 2.2.6

# プロジェクトのビルド構成
Mavenの場合、[基本編のビルド構成](https://qiita.com/kilvis/items/fb18be963da6cac03ee9#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)に以下のdependencyを追加します。

“`xml:pom.xml
〜 省略 〜

org.springframework.session
spring-session-core

“`
Gradleの場合は以下のdependencies

元記事を表示

Could not find tools.jar in the active JRE.となった時の対応方法

– 環境
– Windows10 64it Pro バージョン1903
– Eclipse Version: 2019-12

# 事象 : Eclipseでクラスを新規作成したら怒られた。
しかも、Eclipseを起動するたびにメッセージが出るようになった。

“`text
Could not find ‘tools.jar’ in the active JRE.

Spring Boot Live hovers will not work without it.

The JRE you are running Eclipse with is:
…省略…
“`

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/1737b453-926f-8118-bf27-282ad6b7c053.png)

## 原因 : Eclipseで使用しているのが`tools.jar`のないJREだから
`Spring Boot Live hovers`さんが`tools.

元記事を表示

ガベージコレクションを意識してメモリリークを避ける

メモリリークを避ける為に、ガベージコレクションが機能する時としない時を自分の知る限り列挙してみました。

#ガベージコレクションについて
オブジェクトがどの変数からも扱われなくなった場合にJavaの判断によって自動でオブジェクトが破棄される機能のこと。
「finalize()メソッド」がオブジェクトを破棄しているのだが、Javaの場合はこのメソッドを定義してもタイミングを管理することができない。

##ガベージコレクションが機能するケース
>単純な処理で確かめたので、メモリリークしやすいようにヒープ領域を下げて実行してます。
>(2Mでメモリリークするように)
>ヒープの初期サイズ -Xms1m
>ヒープの最大サイズ -Xmx2m

###①オブジェクトを参照している変数がすべてnullになった時
『変数にnullを代入する=変数はどのオブジェクトも表さなくなる』なので、あるオブジェクトを表している変数が全てnullになった場合に機能します。
nullを代入=「これもう使わないです」と言ってるようなものなので、ガベージコレクションさんが不要と判断してくれます。

“`
public

元記事を表示

屋内環境を手軽にモニタリングする~⑪BH1750FVI(代用)から照度をJavaで取得する(I2C / Pi4J)~

以前、[こちらの記事](https://qiita.com/s5uishida/items/9c31e6fd9b6eb0fa9c96)で紹介した、環境情報をモニタリングする簡易ツールは、照度の情報を[テキサス・インスツルメンツ社のSensorTag CC2650](http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User’s_Guide)から取得します。ただ、BLE環境センサータグとして、永らく世界的に知られたCC2650は[生産中止](http://www.ti.com/tool/CC2650STK)のため、今後、入手が困難になると思われます。そこで、別のセンサーにも対応することにしました。

今回、新たな照度センサーとして、ROHMの[BH1750FVI](https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf)を選択しました。手頃な価格であり、数百円で入手できます。

## BH1750FVIセンサーとは
このセンサーは、照度を測定することができま

元記事を表示

屋内環境を手軽にモニタリングする~⑩BME280(代用)から温度/湿度/気圧をJavaで取得する(I2C / Pi4J)~

以前、[こちらの記事](https://qiita.com/s5uishida/items/9c31e6fd9b6eb0fa9c96)で紹介した、環境情報をモニタリングする簡易ツールは、温度、湿度、気圧の各情報を[テキサス・インスツルメンツ社のSensorTag CC2650](http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User’s_Guide)から取得します。ただ、BLE環境センサータグとして、永らく世界的に知られたCC2650は[生産中止](http://www.ti.com/tool/CC2650STK)のため、今後、入手が困難になると思われます。そこで、別のセンサーにも対応することにしました。

世間には、温湿度センサーは数多く存在し、どれを選べばよいか正直悩みます。ちょうどその時、[参考になる情報](http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html)を見付け、結果、Boschの[BME280](https://www.bosch-

元記事を表示

新しいJavadocのタグ @apiNote @implSpec @impleNote

# 初めに

javadocを眺めていたらふと見たことが無い`@apiNote`というタグを見つけました。
少し調べてみると `@apiNote` `@implSpec` `@impleNote` というタグがJava 8から追加されているようです。

公式ドキュメントなどを探しても記載がないため少し調べてみました。

# 概要

これらのタグはLambda式の仕様策定の副産物で生まれたそうです。
2013年4月にJDK Javadoc maker が更新され使えるようになったとのこと。

ただし、これらのタグはJDKドキュメントで使用する以外に普及させる計画が無いそうです。
そのため公式ドキュメントにも記載がされていないということのようです。

# 各タグの詳細
それぞれのタグで記載されている内容を見ていきます。

## `@apiNote`

APIに関する解説、根拠、または例を記載します。
通常javadocに記載するAPI仕様の補足的な記載をします。

[Object#isNull](https://docs.oracle.com/javase/jp/8/docs/api/ja

元記事を表示

Java Silver SE8 (Oracle Certified Java Programmer, Silver SE 8)に合格した話

# はじめに
4月から入社3年目になるエンジニアです。
Javaに関する知識は業務でJavaのWebアプリをServletで作成したくらいです。ほぼ初心者です。
今回この試験の学習を通してオブジェクト指向言語またはJava特有の言語仕様の知識を深めることができたと感じています。
自分のように会社から何かベンダー資格を取れと言われている方や、エンジニアとしてのスキルアップとして何を取ろうか迷っているという方におすすめできる資格だと思います。

# Oracle Certified Java Programmer, Silver SE 8とは?
公式からの抜粋です。
>Javaアプリケーション開発に必要とされる基本的なプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向け資格です。日常的なプログラミング・スキルだけでなく、さまざまなプロジェクトで発生する状況への対応能力も評価することを目的としています。

# 学習時間
試験1か月前から平日は1日あたり30分、休日は2~3時間くらいしました。

# 学習方法
[徹底攻略 Java SE 8 Silver 問題

元記事を表示

初めてのSpring案件を終えたメモ ~データベース編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。:speech_balloon:
記事の内容としてはチュートリアル以上、実践未満のイメージ。
掲載コードは動作確認できていないのであくまで参考で。:pray:

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#SpringDataJPAについて
関連用語が難しい。
JPA(仕様)を実装したもの(Hibernate)を利用したフレームワークがSpringDataJPA。自信ない。
動的クエリ作成で使うCriteriaAPIはJPAの機能だから参考にしていい。
サンプルで見かけるEclipseLinkはHibernateとは違う実装なので参考にしないほうがよさそう。
でも[Hibernateの機能でなくSpringの機能を推奨してたりするから、油断ならない。]
(https://qiita.com/suke_masa/items/392976749fce94a8ef1f#hibernate-va

元記事を表示

初めてのSpring案件を終えたメモ ~MVC編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。
記事の内容としてはチュートリアル以上、実践未満のイメージ。:speech_balloon:
掲載コードは動作確認できていないのであくまで参考で。:pray:
英語は目が滑るので日本語多様してる、許して。:pray::sob::pray:

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#MVCについて
ロジック(Model)と、画面(View)とそれを繋ぐコントローラ(Controller)に分けて設計しましょう、という理解。
でもSpringではViewとControllerでやりとりするデータのことをModelと呼んでいる。
自分がそもそもMVCを理解できていたか不安になったけど、言葉の定義はフレームワークごとに異なるので深く考えるのはやめた。:innocent:
https://qiita.com/yo1000/items/a6acbf5f454a7f53aef9
https://q

元記事を表示

初めてのSpring案件を終えたメモ ~Springとは編~

#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。:speech_balloon:
記事の内容としてはチュートリアル以上、実践未満のイメージ。

#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS

#Spring Framework について
10年もののフレームワークで、大体のことができる、つまり、ごちゃごちゃしてる。
情報を入手するときは書籍にせよネットにせよ、鮮度を確認する。
特に設定に関して、XML地獄からはすでに解放され、アノテーションやapplication.propertiesに記述できることが多い。
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

#application.propertiesについて
後から知った application.yml のほうが見やすそう。

元記事を表示

【GradleでJakartaEE 8 アプリケーション開発】2. プロジェクト作成

#はじめに
本記事は [【GradleでJakartaEE 8 アプリケーション開発】1. 環境構築](https://qiita.com/sunnycloudy764/items/1431d78f05dc092a23b2) の続きです。
前回の記事では開発環境の構築を行いました。本記事ではGradleプロジェクトを作成します。

#EclipseのGradle設定
EclipseでGradleプロジェクトを使う際、前回の環境設定でインストールしたGradleを使用するために下記設定を行います。
Eclipseを起動し、ウィンドウ > 設定 を開き、Gradle を選択し、下記の変更を行います。

| 項目 | 内容 |
|:——|:——–|
| ローカル・インストール・ディレクトリー| Gradleのインストールフォルダ |
| Java ホーム | Jakarta EE 8 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226889/47bf4ab9-91d1

元記事を表示

OTHERカテゴリの最新記事