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

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

【合格体験記】新人がJavaBrozne1週間チャレンジ

#はじめに
**Java Bronze試験に受かりました。**

今回は
「とりあえずSilverの前準備というか肩慣らし(Silverはまだハードルが高いかなと)」
「[この前Rubyの資格は取った](https://qiita.com/Kakese_Chan/items/42d973ffffda05c2537d)ので、Javaの方にもなにか箔をつけておきたい」
「資格手当と昇給」
みたいな理由で受験しました。

また出題範囲的にも**オブジェクト指向(コンストラクタ・継承・インターフェースなど)の問題が目立ち**、まだ自分の中で少し漠然としているオブジェクト指向のトレーニングとしてもいいかなと思いました。

この資格が実用的かどうかで言うと若干微妙かもしれません、出題範囲的に日付型どころかtry-catchすら見かけないので「これでアプリケーションが作れるぞ!」っていう資格ではないかなと思いました。

Javaの実用的な資格というよりは**オブジェクト指向の検定**みたいなニュアンスが強いなっていう感想です。

# 1週間で受験

最初から1週間で受けるつもりはなく、大分結果論的な

元記事を表示

Spring Boot で 404 Not Found などのエラーが発生した際の表示をカスタマイズする

## 今回の環境

– Spring Boot 2.2.0
– Spring Boot Thymeleaf Starter 2.2.0
– Thymeleaf 3.0.11

## デフォルトでは Whitelabel Error Page や JSON が返される

Web ブラウザでアクセスした際にエラーが発生すると、デフォルトでは以下のような Whitelabel Error Page というのが表示されるようになっている。

“`
Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Nov 06 18:38:41 JST 2019
There was an unexpected error (type=Internal Server Error, status=500).
This is a sample error.
“`

[Spring Boot Reference Documenta

元記事を表示

Here Few Upcoming Trends with Angular 8 for 2020

Being one of the most popular software development instruments today, Angular has received a lot of recommendations and recognition from the development community all over the world.

With the rise in popularity of using Angular for building user interfaces, the development community has grown. Heading towards 2020, Angular has a lot for the industries and thus is giving us the opportunity to explore its functionalities, features, and benefits for web and mobile app development.
**1.Enterprise

元記事を表示

Springやってみた。

##[改訂新版]Spring入門 ――環境構築
有名な本ですが、下記の手順がないとやりにくいので
共有します。
[改訂新版]Spring入門
――Javaフレームワーク・より良い設計とアーキテクチャ
http://gihyo.jp/book/2016/978-4-7741-8217-9

手順

・上記記載のgithubからサンプル取得
今回の取得プロジェクト:mvc
・下の二つのアドレスを参考に環境構築
https://qiita.com/yu_eguchi/items/9a56e6c6281c1f0435ff

STSにプロジェクトをインポートする


・アドレスをたどって
表示成功
http://localhost:8080/mvc/customer

元記事を表示

Java Word文書をマージする

この文は以下の2つの方法を使用して、Javaアプリケーションでword文書をマージします。

方法1: 結合された文書は新しいページから開始されます
方法2:前文を受けるWord文書をマージする

DockmentクラスのinsertTextFroomFile()を使用して、異なるドキュメントを同じドキュメントに統合できます。この方法でドキュメントを結合すると、結合されたドキュメントの内容がデフォルトで新しいページから表示されます。

“`java

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class MergeWordDocument {
public static void main(String[] args){

//最初の文書を取得するパス
String filePath1 = “merge1.docx”;

// 2番目の文書のパスを取得します
String filePath2 = “merge2

元記事を表示

Java 単体テスト 指定曜日判定 ArDate,Date,Calendar,longが指定された曜日であるかを判定する.

目次 ⇒ [Java単体テストライブラリ-Artery-サンプル](https://qiita.com/artery/items/77666d51b538d35fa2a5)

“`java
package jp.avaj.lib.test;

import java.util.Calendar;

import jp.avaj.lib.algo.ArDateUtil;
import jp.avaj.lib.algo.ArYoubi;

/**
Java 単体テスト 指定曜日判定 ArDate,Date,Calendar,longが指定された曜日であるかを判定する.

・このサンプルではCalendarが指定曜日であるかを判定する.
*/
public class Q05_03 {
public static void main(String[] args) {
// テストケースを開始する – 集計が不要の場合は不要.
ArTest.startTestCase(“Q05_03”);

// 確認したい曜日 – 火曜日
ArYoubi youb

元記事を表示

Java 備忘録(羅列)

#メモ程度の備忘録

##◆コンパイルエラー
###・エラー:\がありません。
型の指定がされているか確認。

##◆警告(クラスファイルは生成されている)
###・注意:『ファイル名』の操作は、未チェックまたは安全ではありません。
注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルをしてください。
ジェネリクス<>による型推論の記載がされているか確認。

##◆その他
###・インスタンスイニシャライザ
ArrayListやHashMapを一行で初期化できる。

“`
//{{}} ←これがインスタンスイニシャライザの構文

List list = new ArrayList<>() {{add(“A”); add(“B”); add(“C”);}}

//可読性を考えると以下になる。

List list = new ArrayList<> {
{ add(“A”);
add(“B”);
add(“C”);
}
}
“`

###・instanceof演算子
左辺(イ

元記事を表示

SpringBoot+MVCで、リクエストパラメータの型変換を登録する

# SpringMVCによるリクエストパラメータ自動型変換
SpringMVCではリクエストパラメータを適切な型に変換します。デフォルトの型変換が提供されているので、これ以外の型(自作したクラスに格納する、自動的に解決する型とは別の型)に格納したい場合は、SpringMVCの設定にて型変換に登録します。

例:日付の入力をjava.time.LocalDateに変換する(デフォルトでjava.util.Date)場合

“`java:SampleModelController.java
import java.time.LocalDate;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.Reque

元記事を表示

Java メソッド一覧 (私的)

#java メソッド一覧

##◆java.util.*;
**・Collections.unmodifiableXXX(【ListやMapのインスタンス】);**

“`
//finalだけだと再代入はできないが、要素の追加・削除ができてしまう。
//unmodifiableXXXによって要素の変更をできなくする。
//変更しようとすると「UnsupportedOperationException」がthrowされる。

//List (インスタンスイニシャライザの行末にセミコロンはつけない)
private static final List LIST_1 = Collections.unmodifiableList( new ArrayList() {{ add(“X”); add(“Y”); }} );

//Map
private static final Map MAP_1 = Collections.unmodifiableMap( new HashMap() {{

元記事を表示

Spring Boot 2.2 ドキュメントまとめ

## Spring Boot 2.2.0 リリース情報

– [Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)
– [Spring Boot 2\.2 Release Notes](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes)

## 対応している Java のバージョン

Long-Term Support (LTS) バージョンである Java 8, Java 11 は完全にサポート。
LTS ではない Java 10, Java 12, Java 13 は技術的に可能な限り対処するが、サービスレベルの保証は提供されない。

[Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)

> Following on from Spring Framework 5.2’s sup

元記事を表示

Linux OSデフォルト javaコマンド切り替え

#Linux OSデフォルト javaコマンド切り替え方法
Linuxで利用できるjavaとしてopensourceのopenjdkやadoptjdkが存在。デフォルトで使うjavaの切り替え方法

“`ruby:デフォルトのjava切り替え方法

#java切り替え
[root@XXX ]# alternatives –config java

3 プログラムがあり ‘java’ を提供します。

選択 コマンド
———————————————–
* 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.amzn2.0.1.x86_64/jre/bin/java)
2 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.231-2.6.19.1.amzn2.0.1.x86_64

元記事を表示

[悲劇]ジャバを愛したseasar

筆者は数少ないseasar1の利用者である。DIコンテナのseasar2ではなくseasar1だ。

## seasarとの出会い

 2003年くらいだったかなあ。筆者は当時とある金融系事業会社のシステム子会社にいた。その親会社の社長と役員が大株主側と折り合いが合わなくてスピンアウトし、別の金融系事業会社を作った。筆者も誘われたのだが元のシステムでつくりかけのものがあったので、これをリリースしてからまた考えたいと返事した気がする。相手先はそれを待ってられないし、システム子会社で過去に使ったことのある人達に連絡をとって、バックシステム、プライスコントローラー、PC向けオンライントレードシステムを作った。

 システム子会社で協力してもらったのは筆者がジョインする前で、詳しいことはよくわからないのだがあまり評判は良くない感じだった。でもシステム系のツテが少ないので、彼らしか選択肢がなかったらしい。なおデザイナーも同じ人だった。この会社に納品するときに受け入れテストを行ったらしいのだが、単体レベルが大量にでる状態で受け入れ検証どころではなかったらしく、新会社に顔出すたびにいろんな人に「今の

元記事を表示

人生初めてのプログラミングだからこそ、手軽な「メモ帳」を使うな!余計な災いを呼ぶよ!

#コードの内容以前に、何を書いても「不正な文字です」⇒挫折の恐れも#

これからプログラミングの勉強を始めようという方、きっと素晴らしい決意とやる気に満ちていると思います。
「まずプログラミングってどうやればいいの?」といろいろ検索していると、「**パソコン(Windows)に搭載されてるメモ帳機能でお手軽にプログラミングができるよ!**」という初心者向けの記事を目にすることがきっとあるでしょう。

**でもちょっと待って!**

いまから、私が人生初めて「**Java**」という言語でプログラミングをした際に、**「メモ帳を使ったせいで」エラーに悩まされて困った**体験をお話しします。

※ひとことで言えば、「メモ帳のBOMのせいで、UTF-8でコードを書くとコンパイルエラーになり、たとえコード自体が正しく書けていても『不正な文字です』と言われるのでやる気がどんどんそがれる」という話です。「その話なら知ってる」という方はこの先読まなくても大丈夫です。逆に「ん?何?」という方はぜひこの先をお読みください。

#メモ帳を使わずに成功する例#

プログラミング言語の初日にやることとして定

元記事を表示

Latest JavaTrends To Stay Updated in 2019

Latest Technologies of Java and Trends To Stay Updated in 2019

Java has been the most powerful programming language of the virtual world and over 10 billion devices using its applications are maintaining its legacy from years. The language has a strong compatibility feature to support almost any system. Thanks to numerous innovations and updates, technology has completely transformed to an amazing extent and become more compatible, scalable and flexible than before. The last year saw a rapid gr

元記事を表示

アプリケーションのトラブルシューティング

# 序文
ことの発端はwebアプリケーションのとある画面の応答性能が遅いと言う問題が出た。
環境の構築を任された後輩から色々弄ったらアプリからの応答がなくなったとのヘルプから調査を開始した。
原因は解消したのだが、原因特定までのロジックが知りたいとの依頼を受けた。
この辺は感覚知で解決していたのでまとめる意味を込めてアウトプットしてみます。

# 具体的に何があったのか?
APサーバであるjavaのヒープサイズの最大値を上げた事によってjavaが動作しなくなった。
OSの利用メモリは余裕で空いていたのですが、Javaが起動しない。
JDKが32bitの場合、最大利用メモリ数の上限が少ない事を知っていたので解決に至りました。

エラーログから特定したのですが、エラーログをコピるの忘れました。

# 問題解決までの簡単な思考
1. 相談者を疑う
相談者へ「何をどうしたらこうなった?」を聴取をして再現性を確認する
戻せるのであれば、作業前の状態に戻して作業を再現してもらう
戻せないなら、逆手順で手順のどこで事象が発生したかを確認(デバッグ?)する

1. アプリケーション内部で何が

元記事を表示

org.slf4j.Loggerを使った拡張ロガーを作成するための忘備録

# 概要

org.slf4j.Loggerは汎用的に使用できるが、業務アプリではログ出力レベルの統一が必要。
そのためビジネスルールで定義したトレースレベルのみ出力する拡張ロガーを作成する。

# 拡張ロガークラス

org.slf4j.Loggerをラップした独自ロガークラスを作成する。
出力方法はorg.slf4j.Loggerに任せるだけ
Debugレベルは開発時のみ出力する。

“`SystemLogger.java
/**
*
*/
package jp.co.product.system.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* ログ出力共通クラス
*
*/
public class SystemLogger {

private Logger logger;

/**
* コンストラクタ
*
* @param cls
* @see org.slf4j.LoggerFactory#getLogger(Class)
*/
p

元記事を表示

JavaでBufferdImageのRGB誤差が指定割合以内か確認する静的関数

## 背景
* 画像の変換処理がうまくいっているかのテストで、RGB値が多少変わってしまう現象と遭遇した
* 等価判定ができなかったので、どのくらいの誤差を割合で許容するか。という作りにした。
* ニッチなニーズかもしれないが、誰かの一助になることを願ってます。

## 動作確認環境
* Java8
* JUnit4

## Code
“`java
/**
* ピクセルごとのRed,Green,Blueの色の要素値をAssertします。
*
* 要素値の差(±)は 増減 5% まで許容してます。
*/
static void assertImages(BufferedImage actual, BufferedImage expected) {
assertThat(“比較している画像サイズが異なります(縦)”, actual.getHeight(), is(expected.getHeight()));
assertThat(“比較している画像サイズが異なります(横)”, actual.getWidth(), is(expected.getWidth

元記事を表示

javaのjshellとvar がおススメ過ぎます!

最近、Javaのイベントに行ったので、そのメモになります。

# jshell
## なにもの?
何者!かというと、気軽にJavaコマンドを実行できるツールです。
Rubyだと「irb」がありますよね。

Javaだと、、Eclipse を起動して、実行?もしくは、javacでコンパイルして、java で実行?
むっちゃ手間でした。

jshellを使うと、サクッと確認できます。
こんな感じ。タブで自動保管も出来るのがチョー便利です。

“`
D:\Program Files>jshell
| JShellへようこそ — バージョン13
| 概要については、次を入力してください: /help intro

jshell> System
シグネチャ:
java.lang.System

<ドキュメントを表示するにはタブを再度押してください>
jshell> System.out.p
print( printf( println(
jshell> System.out.println(“Hello World!!”);
Hello World!!

jshell>
`

元記事を表示

日本語形態素解析「kuromoji」を使う

kuromoji Home Page
kuromoji GitHub

Gradle

build.gradle

“`text

dependencies {
compile group: ‘com.atilika.kuromoji’, name: ‘kuromoji-ipadic’, version: ‘0.9.0’
}
“`

「-ipadic」は辞書です。

対応している辞書

  • kuromoji-ipadic
  • kuromoji-ipadic-neologd:future version
  • kuromoji-jumandic
  • kuromoji-naist-jdic
  • kuromoji-unidic
  • kuromoji-unid
元記事を表示

SpringBootの例外ハンドリング

# SpringBootの例外ハンドリング

## 概要
SpringBootにおいては、SpringMVCの機能を用いた例外ハンドリングやSpringBootのAutoConfigurationと組み込みサーバーを利用した例外ハンドリングなど複数の方法で例外を取り扱うことができる。
[公式リファレンス](https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/)で述べられているが、ハンドリングが可能な範囲や仕組みが若干わかりにくいので主要な方法をまとめる。

## 例外ハンドリングの方法

### 一覧

|機能名|レイヤ|
|—|—|
|HandlerExceptionResolver|SpringMVC|
|ErrorPage|SpringBoot|
|ErrorController|SpringBoot|

### HandlerExcepitonResolver
“HandlerExceptionResolver“はSpringMVCの機能を利用した例外ハンドリングの方法である。

元記事を表示

OTHERカテゴリの最新記事