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

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

Spring Java

* Spring Tools 4 for Eclipseを入手し以下で解凍

“`bash
java -jar spring-tool-suite-4-4.5.1.RELEASE-e4.14.0-win32.win32.x86_64.self-extracting.jar
“`
* 必要によってSpringToolSuite4.iniに-vm追加

“`bash
-vm
C:\Program Files\Java\jdk1.8.0_211\bin\javaw.exe
“`

* springプロジェクト作成

File → New → Spring Starter Project → Next →
web機能とホットデプロイを使うため以下をチェック
1. Developer Tools→Spring Boot DevTools
2. Web→Spring Web
→ Finish

![new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500676/7436d9d2-77f6-21cb-a4

元記事を表示

HttpUrlConnectionの謎いスタックトレース

# 概要

[HttpUrlConnection](https://docs.oracle.com/javase/jp/8/docs/api/java/net/HttpURLConnection.html)の`getInputStream`メソッド呼び出し時に`IOException`が発生した場合、意味がわからない例外スタックトレースが返却されることがあります。

## TL;DR

`HttpUrlConnection#getInputStream`で`IOException`が発生する場合、過去にそのインスタンスで発生した`IOException`がネストされます。

## 検証環境

– macOS 10.15.2
– AdoptOpenJDK (HotSpot) 1.8.0_242-b08

# 事象

以下のようなコードがあるとします。

– 400 Bad Requestを決め打ちで返却する簡易HTTPサーバを用意する
– HttpUrLConnectionを使って、簡易HTTPサーバにリクエストを送信する
– HttpUrLConnection#getInputSt

元記事を表示

業務改善をしよう!目次編

# はじめに
2020年を迎え早一ヶ月が経ちました。
私も一年と少し居た現場を離れ、2020年から新たな現場に向かうこととなりました。
そのためこの一月、新たな現場に慣れるために様々な業務を見て聞いてきました。

**なんだこの面倒くさい業務は!?**

そう感じる業務が多くありました。
前の現場が業務効率化に積極的だったのと、そこで働く人達の意欲も凄かったため、どうしても比較して見てしまっているのかもしれませんが…

**ただ…これはチャンスなのでは?**
前の現場にいたこともあって、おかげで ShellScript の開発を独自で行う機会があったり、API の開発をしていたため通信周りの知識も増えました。
何より、そうした人たちに囲まれていたおかげで業務の効率化に対し積極的な意識がついていました。
まだまだ経験の多くない私ですが、これは貢献あるいはアピールするチャンスなのではと。

というわけで、今の現場で感じた無駄な業務の改善案や、実際になんとかした Script 等を書き記していこうと思います。
この記事は主に改善案等を書き記す目次的な役割を持たせる予定です!
それぞれの記事を

元記事を表示

“色違いポケモンシミュレータ”

乱数を使う練習①
アイテムなしで色違い孵化厳選を行った場合のシミュレーション

import java.util.Random;

public class Irochigai
{
public static void main(String[] args)
{
System.out.println(“色違いシミュレータ”);

Random r = new Random();
int randomValue = r.nextInt(4096);

if (randomValue == 4096) {
System.out.println(“Irochi”);
}
else {
System.out.println(“normal”);
}
System.out.println(randomValue);
}
}

元記事を表示

『Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans』を読んで要点を翻訳してみた

# domain-driven-design
Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans
(NOTE: Description with brackets like this means my own thoughts, not translation)

# Index
– [FOREWORD](#foreword)
– [PREFACE](#preface)
– [I. Putting the Domain Model to Work](#i-putting-the-domain-model-to-work)
– [Chap.1 Crunching Knowledge](#chap1-crunching-knowledge)
– [Ingredients of Effective Modeling](#ingredients-of-effective-modeling)
– [Chap.2 Communication and the Use of

元記事を表示

【Java】BeanValidationでURL形式をチェックする場合HibernateValidatorの@URLは使わない方がよいかもしれない

内容は大体タイトルの通りです。

# 理由
`org.hibernate.validator.internal.constraintvalidators.hv.URLValidator`の実装では「`http:`」と入力しただけの状態でもバリデーションが通ってしまいます。
「入力される内容は`http`/`https`といったプロトコルだけ、最低限ドメインまで入っていてほしい」など、URLはURLでも限られた内容しか入力されない場合は`@Pattern`アノテーションを使って正規表現でチェックした方が良いでしょう。

# 補足
[Maven Repository: org\.hibernate\.validator » hibernate\-validator » 6\.1\.2\.Final](https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/6.1.2.Final)で検証しました。

元記事を表示

Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(サーバー編)

#概要

今回はこちらの記事の続きです。
[Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(JS編)](https://qiita.com/biy0ganba/items/6c3a886759254e0e942c)
クライアントサイドでログインしてバックエンドサーバーで認証といった感じでやります。

前回の記事でユーザー情報などをレスポンスで取得することができました。
ただこれをこのままサーバーサイドに送ったりするのは危険です。
例えば、ユーザーIDをサーバーに送信する際にユーザーを偽装できちゃったりします。。

なので、その代わりに検証可能なIDトークンを使用して、サーバー側でサインインしているユーザー情報を安全に取得します。

さっそく実装していきましょう。
#フロントサイドの実装

まずJSの部分を書きかえます。

“`javascript:JavaScript

function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; //

元記事を表示

コンストラクタインジェクションだと単体テストが楽なんじゃない?って話

# はじめに

Springでコード書いてるときに絶対使うアレ、`@Autowired`です。
最近はフィールドインジェクションじゃなくて、コンストラクタインジェクションのほうが推奨されているらしいのです。

そもそもなんでコンストラクタインジェクションが推奨されているのかは、ググってみてください。
いろいろ理由がありますが、その中で一番納得したのは「あれ?これって単体テスト楽なんじゃね??」って思ったので、それについて書いてみました。

# モック作るのめんどくさい

### テスト対象のクラス

サンプルが適当すぎですが、こんなメールを送るクラスがあったとして。

“` java:MailService.java
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

@RestController
@RequestMapping(path=”/mail”)
public class MailService {

@Autowired

元記事を表示

【Java】Eclipseで”1.Xより下のソース・レベルで許可されていません”とエラーが出た際の対処方法

##ブランチを切ると稀に起きる現象
職場でブランチを切って作業しようとした際に、ビルドすると何故かエラーが下の画像のように大量に発生するときがあります。備忘録も兼ねて解決方法を書きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/a7eff3fe-3ba1-87f2-6f59-6a86f992dafd.png)
よく見てみると
> ‘<>‘オペレーターは1.7より下のソース・レベルでは許可されていません

とのこと。
エラー表示されている箇所にマウスオーバーしてみると、どうやらJREのバージョンの問題のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/209ce98a-f016-8e1b-a345-cddfe951c91b.png)

##解決方法
解決方法はとっても簡単です。まずはEclipseのナビゲーターに表示されているプロジェクトを右クリックし

元記事を表示

なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか

この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。
[なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep-](https://munchkins-diary.hatenablog.com/entry/2020/02/05/002748)

またブログには書いたのですが、諸事情により先に英語版が存在します。
こちらも書いたのは僕なので、剽窃などではないことはご了承ください。

\[元記事\]: [Why we replaced Java with Typescript for Serverless](https://dev.to/csohei/why-we-used-typescript-instead-of-java-on-serverless-39e2) in [dev.to](https://dev.to)

## はじめに

**サーバレス(serverless)**は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょうか

元記事を表示

Javaの名前を変更するExcelシートとセットTabの色

この記事では、Spire.XLS for javaを使用して、ワークシートの名前を変更し、Javaアプリケーションのシートのタブカラーを設定する方法を紹介します。
使用ツール:[Free Spire.XLS for Java (無料版)](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)
Jarファイルの取得と導入:

Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。

Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。

`

元記事を表示

JavaからGoogleスプレッドシートを操作する

## 新しいシートの追加

“`java

final String spreadsheetId = “my spreadsheetId”;

List requests = new ArrayList<>();
SheetProperties sheetProperties = new SheetProperties().setTitle(“New Sheet”);
requests.add(new Request().setAddSheet(new AddSheetRequest().setProperties(sheetProperties)));

BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest();
requestBody.setRequests(requests);

Sheets.Spreadsheets.BatchUpdate request = service.spreadsheets().batchUpdate(spreadsheetId,

元記事を表示

【Swing】JFrameクラスについて

###(JFrameのクラス階層)
java.lang.Object
→java.awt.Component
→→java.awt.Container
→→→java.awt.Window
→→→→java.awt.Frame
→→→→→javax.swing.JFrame

###(JFrameクラスのコンストラクタ)
“`java
JFrame()
//初期状態が不可視な新しいフレームを構築する
“`

“`java
JFrame(GraphicsConfiguration gc)
//画面デバイスで指定されたGraphicsConfigurationと空のタイトルでFrameを作成
“`

“`java
JFrame(String title)
//指定されたタイトルを使用して、初期状態で不可視な新しいFrameを作成
“`

“`java
JFrame(String title, GraphicsConfiguration gc)
//指定されたタイトルと画面デバイスの指定されたGraphicsConfigurationで、JFrameを作成します。
“`

元記事を表示

【Java】正規表現でズンドコキヨシ

# 流行ったよね、ズンドコ
完全に時期を逃しているのですが、流行ったときに書いて放置してたソースが出てきたので、投稿します。
Javaでは余りこのパターンは見かけなかった感ある。

元ネタはこれ。