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

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

OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた。

# はじめに
IBM CloudのOpenShiftのマネージドサービスである「 Red Hat OpenShift on IBM Cloud 」を使った「OpenShiftによるJava EEアプリケーションのモダナイゼーション」の記事を寄稿しました。
https://www.atmarkit.co.jp/ait/articles/1911/15/news002.html

その記事で使用している「 Red Hat OpenShift on IBM Cloud 」は有料サービスのため、たくさんの人に記事の手順を試してもらうのは難しいと思います。 そこで、**無料で利用できるMiniShiftを使って、気軽にOpenShiftでJava EEアプリケーションのモダナイゼーションを体感してもらえるように、リライトしました。**

**今回はアプリケーション・データベース共に全てコンテナ化するケースを試したいと思います。記事を読んでいただいた方は、記事の内容に加えて複数コンテナの連携(アプリケーションとデーターベース接続)について学べるようになってます。** 記事では、データベースはIB

元記事を表示

JSPで接頭辞cがバインドされていませんとなった時の対応方法

– 環境
– Windows10
– Apache Tomcat 8.5.47
– Eclipse Version: Oxygen.3a Release (4.7.3a)
– Java version 1.8.0_231

# 事象 : JSPファイルを使った処理でログファイルにエラーが出た
“`bash
Caused by: org.xml.sax.SAXParseException: 要素”c:choose”の接頭辞”c”がバインドされていません。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)

“`

# 原因 : JSPファイルにJ

元記事を表示

Spring Initializr のパッケージング JAR と WAR の差異

## Spring Initializr で Web アプリケーションを生成

[Spring Initializr](https://start.spring.io/) にて以下の設定で Web アプリケーションの雛形を生成する。

– Project: Gradle Project
– Language: Java
– Spring Boot: 2.2.1
– Java: 8
– Dependencies: Spring Web

Packaging の項目を Jar および War にしたものをそれぞれ生成して diff コマンドで差分を取った。

## Jar と War の差異

“`
$ diff -r jar war
diff -r jar/demo/build.gradle war/demo/build.gradle
4a5
> id ‘war’
16a18
> providedRuntime ‘org.springframework.boot:spring-boot-starter-tomcat’
Only in war/demo/src/main/java/c

元記事を表示

Google App Engine (Java 8) + Spring Boot + Gradle で Hello World

## 概要
– Google App Engine Java 8 スタンダード環境 + Spring Boot の構成でシンプルな Hello World 表示 Web アプリケーションを作る

## 環境
– Google App Engine Java 8 スタンダード環境
– Spring Boot 2.2.0
– Gradle 6.0
– JUnit 5
– Thymeleaf 3

## ソースコード

### ソースコード一覧

“`
├── build.gradle
├── settings.gradle
└── src
├── main
│   ├── java
│   │   └── com
│   │   └── example
│   │   └── helloworld
│   │   ├── HelloworldApplication.java
│   │   ├── HelloworldController.java
│ 

元記事を表示

LINE Messaging API SDKのFlexMessageをキレイに作る方法

# はじめに

`FlexMessage`を使ってみたのですが、**送信時にエラーが起きる**、**体裁がイメージ通りではない**、とかでかなり時間がかかりました。
[Flex Message Simulator β](https://developers.line.biz/console/fx-beta/) を利用すると体裁を確認しながら、かつエラーを起きないいい感じに実装できることに気づいたのでやり方を紹介しようと思います。

# 1.デザインを決める

「Showcase」で自分のイメージにあったサンプルを選びます。

1.サンプル集.png

今回はデフォルトの「Restaurant」を例に紹介します。

# 2.FlexMessageをJavaで実装する

## 2-1. Bobbleを作成する

サン

元記事を表示

1文字が2文字になる?toCharArrayメソッドの罠

# はじめに

以下は、@tak777 さんの[【Java】文字列を一文字ずつ切り出しする方法](https://qiita.com/tak777/items/a065a2ed8fef3f95974c)という記事に書かれた、@saka1029 さんの以下のコメントです。

> Javaのchar型は16ビットですが、Unicodeの文字集合の符号空間は0x0から0x10FFFFで16ビットを超えます。
> Javaは内部コードとしてUTF-16という符号化方式を採用していて、16ビットを超える文字はchar2個で1文字を表現します。
> 例えば「?(ほっけ)」のUnicode番号は0x29E3Dであり、Javaでは0xD867と0xDE3Dの連続した2個のcharから構成されます。
> 記事にあるコードでは1文字の半分を切り出してしまう可能性があることに注意する必要があります。

このコメントを読んで、[サロゲートペア](https://ja.wikipedia.org/wiki/Unicode#%E3%82%B5%E3%83%AD%E3%82%B2%E3%83%BC%E3%83%8

元記事を表示

後輩養成のすすめ。~あの辛い徹夜ラッシュをもうしないために~

# 1.はじめに
## 1.1 経緯
年代によって大きく技術力は変わります。僕は学生ですので会社では年代は関係ないのかもしれませんが、プログラミングを必要としない世界(例えば非IT企業、研究室、中高学校)では大きく変わってしまうのです。もちろん一定数そうゆう人は入ってきます。学校ではパソコン関連の同好会みたいな部署が学園祭のアプリや動画を作っていました。僕の学校で問題だったのは人が足りないということ、そして学年によって差が多いところでした。

## 1.2 なにが問題?
まずは人が足りないということです。学校でやってるアプリとかっていうのは企業の真似事ですからアプリはデザインの人が仕様書作ってみんなで共同作業を…って感じですし、動画は絵コンテから映像化…ここからここまでは○○で…って感じでやるわけですよ。でも人が足りなければできることも少ない、でもやりたい、だから一人でやる。っていう感じに一人に背負わされるわけです。学生なのに労働基準法に抵触(学生だから適法だけども)してるわけですね(笑)

そして二つ目は代によって差があるということです。学校なので留年しない限り進級して卒

元記事を表示

オブジェクト指向という幻惑

# オブジェクトしこうは マヌーサを となえた!

## はじめに
この記事は、オブジェクト指向と言う幻惑に包まれた人に届けたい記事となります。
オブジェクト指向やってるぜ!と言う勇者に読んでほしい記事です。

## オブジェクト指向の幻惑1
**Javaやってるからオブジェクト使ってます!**

・・・

そんな訳はありません。

Javaもマルチパラグイムを採用しており、以下のスタイルでコーディング可能です。
– オブジェクト指向
– 手続き型
– 関数型

Java=オブジェクト指向となってしまってる原因は
Javaを広げるためのマーケティング用語として**オブジェクト指向**というワードを使ってしまったから。
オブジェクト指向を正しく理解しない人を増やした犯人はJava自体だったわけです。

## オブジェクト指向の幻惑2
**データクラス作って、ロジッククラスを作って、役割毎にちゃんとクラスわけしてます**
**俺、オブジェクト指向やってるぜ!**

・・・

それは手続き型です。

これは従来の開発スタイルが
機能毎に担当を別けて、機能毎に開発を行う、**機能分割式**のス

元記事を表示

Azure App Service の Tomcat で Javaのヒープサイズを変更する

#前提
Azure WebApp のサーバータイプはWindows

#操作

1. Azure Webコンソール上で App Service を開く
2. Development Toolsのうち「Advanced Tools」を開く(Kudu)
3. Debug Consoleから「CMD」を開く(単なるコマンドラインではなくGUI的にも使える)
4. デフォルトで「D:\home」が開いている状態なので「D:\home\site\wwwroot」を開く(マウス操作でも可能)
5. [wwwroot]の右側にある「+」をクリックして「New File」を選択する
6. 「web.config」というファイルを作成して以下のようにする。「%AZURE_TOMCAT90%」はTOMCATのバージョンによって異なるので確認する。(SETコマンドで環境変数一覧が表示されるのでそこで確認できる)
7. アプリを再起動する

“`xml


元記事を表示

今更 Amazon Corretto で Servlet を動かしてよう

このエントリでは表題にもある通りこの先は選定に難しくなる Oracle Java の代わりに Amazon Corretto を使って Servlet を動かしてみましょう、という内容になります。
まあ、すでにいくつ同じような記事があるんでしょうね!! でもそんなの気にせず書いていきますよ。

## アプリ類を用意する
今回用意したアプリの各バージョンとかは次のとおりです。細かいバージョンはあってなくても、まあ動くんじゃないかなって思う。

– amazon-corretto-11.0.3.7.1-1-windows-x64.msi
– apache-tomcat-9.0.27.exe
– httpd-2.4.41-win64-VC15.zip
– VC_redist.x64.exe

### まずは Apache をインストール

1. VC_redist.x64.exe をまずは実行します。これは C++ の再配布パッケージですね。Apache のWindowsバイナリを実行するには必要になるっぽいです。
1. httpd-2.4.41-win64-VC15.zip を展開します。

元記事を表示

Eclipseの動的webプロジェクトでコンテキストルートをプロジェクトフォルダにする

– `(プロジェクト名)\.settings\org.eclipse.wst.common.component`を開く。
– ``
の部分を
– ``に書き換える。

“`xml:org.eclipse.wst.common.component


元記事を表示

ProcessingとSQLiteを連携する

Processing3上からSQLiteを使ってデータベース操作する方法のまとめ。

以下のサイトを参考にしています。

SQLiteを使う(オープン・クローズ)

## sqlite-jdbcをスケッチフォルダ内に保存する。

まずはProcessingを開いて、ファイルを保存する。するとスケッチのフォルダが作成される。(今回は、DB_test_1.pdeとして保存してみる)

次に、ProcessingからSQLiteを操作するのに必要なJDBCをスケッチフォルダに保存する。

JDBCはSQL言語ごとに様々なものがあるが、SQLite用JDBCは以下のサイトから入手できる
https://gith

元記事を表示

powermock-mockito2-2.0.2を使ってみる

#はじめに
以前でJavaの[jmockit](https://qiita.com/mima_ita/items/4e48a24561960851e3fa)を調べてみたんですが、ちょっと合わないのでプランBとしてMockitoとPowermockを調べた際のメモになります。

**Mockito**
https://site.mockito.org/

**Mockito JavaDoc**
https://javadoc.io/doc/org.mockito/mockito-core/3.1.0/org/mockito/Mockito.html

**Powermock**
https://github.com/powermock/powermock/

**検証環境**
java version “1.8.0_202”
Eclipse IDE for Enterprise Java Developers.
Version: 2019-03 (4.11.0)
Build id: 20190314-1200
JUnit4
mockito-2.23
powermock-mockito2-

元記事を表示

n == 0がNullPointerExceptionをスローする。

# 問題

突然ですが、次のコードは`NullPointerException`になる可能性があります。どのような場合でしょうか?

“`java
boolean iszero = n == 0;
“`

# 答え

答えは、変数`n`の型が`Integer`で、値が`null`の場合に`NullPointerException`が発生します。たとえば以下のような`Main.java`があるとします。

“`java:Main.java
public class Main {
public static void main(String[] args) throws Exception {
Integer n = null;
boolean iszero = n == 0;
}
}
“`

これをコンパイルし、実行すると、確かに`NullPointerException`が発生することが確認できます。

“`
$ javac Main.java
$ java Main
Exception in thread “main” jav

元記事を表示

Protocol Buffersについてのメモ書き

# 前準備
**公式ページ**: https://github.com/protocolbuffers/protobuf/releases
– 各言語バインディングをダウンロードしておく
– `protoc`が入っているものを環境に合わせてダウンロードしておく

# やること
## スキーマを定義する
(以下の例は https://developers.google.com/protocol-buffers/docs/javatutorial より引用)

“`proto:example.proto
syntax = “proto2”;

package tutorial;

option java_package = “com.example.tutorial”;
option java_outer_classname = “AddressBookProtos”;

message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;

enum Ph

元記事を表示

可読性を高めるif文の書き方-java

研修メモ。(自分用)

チームで開発する場合プログラムの読みやすさつまり可読性は重要となる。
・積極的にコメントを入れる。
・if文の条件は必ずコメントを入れる癖をつけたほうがよい。

例えば以下のような条件の場合

“`java:sample
//aがbと等しい または cがdと等しいかつ eはfと等しくない かつ gはhと等しくない
if (a == b || (c == d && e != f) && g != h) {
//処理内容
}

“`
条件が複数ありややこしいので
条件を整理する。&& g != hは絶対条件なので以下のように書き換えることができる。

“`java:sample
if (g != h) { // ここでg != h でない場合はスルーされる  
if (a == b) {
//処理内容
} else if (c == d && e != f) {
//処理内容
}
“`

処理内容にもよるが、多少行数が増えたとしても
パッと見た簡潔

元記事を表示

HttpURLConnectionのdisconnect()について

# はじめに

最近自宅で以下の`Sample.java`のようなコードを書いていた。

“`java:Sample.java
HttpURLConnection urlconn = null;
PurchaseItemInfo itemInfo = null;
try {
URL url = new URL([URL]);
urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestMethod(“GET”);
urlconn.setInstanceFollowRedirects(false);
urlconn.connect();

try (InputStreamReader inReader = new InputStreamReader(urlconn.getInputStream());
BufferedReader reader = new BufferedReader(inReader);) {
do

元記事を表示

jmockit 1.48を使ってみる

# 目的
本記事の目的はjmockit 1.48について調査した際のメモです。

**ドキュメント**
http://jmockit.github.io/index.html

**ソースコード**
https://github.com/jmockit/jmockit1

**JavaDoc**
https://repo1.maven.org/maven2/org/jmockit/jmockit/1.48/jmockit-1.48-javadoc.jar

**検証環境**
java version “1.8.0_202”
Eclipse IDE for Enterprise Java Developers.
Version: 2019-03 (4.11.0)
Build id: 20190314-1200
JUnit4

# jmockitとは
xUnitを使用して単体テストを行う場合、依存する部品が問題になってテストが困難な場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

Custom Scalar実装(GraphQL-SpringBoot)

# はじめに
GraphQLには標準のスカラー(`Boolean`, `Int`, `Float`, `String`, `ID`)のほか、独自に定義した任意のスカラーを使用することができる。Javaでの実装について調査しデモを作成したものをまとめた。[^1]

[^1]: 本稿作成時点では公式のサンプルがdeprecatedなコンストラクタを使っていたのでそれを回避する方法を調べた

# 実装
## スキーマ定義
* カスタムスカラーを宣言する
* 標準スカラーと同様に変数の型として使用する

“`graphql
scalar ISODate

type Member {
memberId: ID!
name: String!
age: Int
birthday: ISODate
}
“`

## DTO作成

typeに対応するDTOクラスを作成する

“`java
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Data;

@AllArgsConstructor

元記事を表示

githubで最もやべー関数を発掘する

## はじめに
先日、職場で「自分が 改修したor 書いちゃった いちばんやべー関数」ネタで盛り上がりました。
みんないろいろ話してくれましたが、やっぱり僕の書いた「コマンドパターンのメインループ関数(1500行)」の圧勝でした。
なんであんなコード書いたんだろ。

そこで、今日は僕の傷ついたプライド癒すべくgithubから「世界でいちばんやべー関数」を発掘します。
つまり、「俺が書いた関数よりやべー関数に会いに行く」

## 結論
* マジでやべー関数は次の2つ
* **「opencvリポジトリの[cv::agast_cornerScore\](https://github.com/opencv/opencv/blob/master/modules/features2d/src/agast_score.cpp#L3383)関数」(複雑度1868)**
* **「SuiteCRMリポジトリの[OpenTag](https://raw.githubusercontent.com/salesagility

元記事を表示

OTHERカテゴリの最新記事