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

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

Doma入門 – Criteria APIの紹介

## はじめに

[Doma](https://github.com/domaframework/doma)はJava 8以上で動作するデータベースアクセスフレームワークです。JDBCドライバが提供されるデータベース、主なものでいえば、MySQL、PosgreSQL、Microsoft SQL Sever、H2 Databaseのようなデータベースにアクセスできます。

Domaの最近のバージョンで型安全にSQLを組み立てるための新しいAPI、[Criteira API](https://doma.readthedocs.io/en/2.43.0/criteria-api/)が追加されました。この記事では、執筆時点で最新のバージョン2.43.0に基づいてCriteria APIを紹介します。

## エンティティクラスの定義

次のようなデータベーススキーマがあるとします。

“`sql
create table employee (
id integer not null primary key,
name varchar(255) not null,
ag

元記事を表示

【Java】ループ処理と九九の表

#forループで九九の表を作る

“`java
public class Enshu0112 {

public static void main(String[] args) {
System.out.println(“九九の表”);
System.out.println(“\t| 1 2 3 4 5 6 7 8 9”); // 最初の見出しの行
System.out.println(“—-+————————————“);
for (int i = 1; i < 10; i++) { // 縦のループ System.out.printf("%3d |", i); for (int j = 1; j < 10; j++) { // 横のループ System.out.printf("%3d", (j*i)); // 表示桁を合わせて縦が揃うようにする } System.out.println(); // 改行を挿入 } } } ``` #\tで縦を合わせようと

元記事を表示

Spring BootでRESTなサービスを作ったときの備忘録

## 概要
STSを使ってSpring WebでRESTなサービスを使ったときの備忘録を残しておきます。
主に自分用。
Spring Webとは、Spring Frameworkをベースにした
Webアプリケーションフレームワークです。

開発環境は次の通りです。
OS : Windows 7 Home Edition 64bit
Java : JavaSE 8 update 181
Spring Boot : 2.3.4
STS : 4.6.1

## STSのセットアップ
STSのセットアップは[自分の備忘録](https://qiita.com/harayoshi/items/fca60e68087640b26292)を参考にしました。

## プロジェクトの作成
Create new Spring Starter Projectでプロジェクト作成、
参照したライブラリは以下の通りです。

– Spring Web
– Spring Data JPA
– Oracle Driver
– Lombok

## アプリケーションの作成
作成したクラス、設定ファイル、用意したデ

元記事を表示

SpringでJsonデータを送受信するAPI作成

– Java 8
– Eclipse Version: 2020-09
– Windows 10

久しぶりにSpringでのお仕事でした。
Springにて、APIをひとつ作成するというもの。

備忘のために、ひな形作成までをまとめます。
ちなみに、Spring Boot は初めてでした。

## 仕様
Jsonでポストされたデータを受け取り、いろいろやってJsonデータを返します。

## 開発環境

– Pleiades All in One Eclipse を選択
https://mergedoc.osdn.jp/#pleiades.html からダウンロード
Eclipse 2020 > Windows 64bit > Java Full Edition を選択

– 7-Zipが必要らしいので、それもダウンロード・インストール
https://sevenzip.osdn.jp/

## プロジェクト作成

– 「ファイル > 新規 > プロジェクト」で新規プロジェクトウィザーとを開く
Spring Boot > Spring スターター・プロジェクトを選択

![creat

元記事を表示

thymeleafで共通部分のcssが適用されない

##はじめに
thymeleaf layout dialect機能を使用したサイトにおいて、共通部分のcssが適用されない事案が発生したので、その対処法について紹介します。

##環境
OS: macOS Catalina 10.15.6
JDK:14.0.1
Spring Boot 2.3.3
jquery 3.3.1-1
bootstrap 4.2.1

##エラー概要
共通部分にcssが正常に適用されると下図のように画面上部に深緑のヘッダー、ロゴ、検索窓が表示されます。
![スクリーンショット 2020-09-28 15.01.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639462/5c54a7c6-c450-8137-0673-8c18fabb87e5.png)

今回、他のページより深い階層にhtmlファイルを作成、格納し実行したところ下記のようになりました。

共通部分に含まれているナビゲーションバー、ロゴ、検索窓は表示されているので、thymeleaf layout dialec

元記事を表示

【AndroidStudio】SQLiteDatabaseで連続入力できる記述【Java】

##はじめに
Android初心者です。
テキストやWebページを見ながら EditText の値をデータベースに登録できるようになったのですが、連続入力しようとすると落ちてしまう。
**アプリを1回開く度1回しかデータを登録できない!**
これはアプリとして致命的だと思いどうしたら良いのか調べました。
要因は2つあると思います。
➀try-catch-finally 文が書けていない
➁データベースを開く場所が誤っている
もし、同じ状況で悩んでいる方の参考になればと思い記事にすることにしました。
##➀try-catch-finally 文が書けていない について
この後のコードを見るとわかるかと思いますが、私のコードは必要な try-catch が書けていません、、そもそも catch文を書いていないコードだったのでとても不安定なコードです。try-catch の重要性はわかるのですが、難しい。。まだまだ勉強が必要だと思いました。
複雑な try-catch を考えるより後述の「**try-with-resources**」を使ったほうがいいと思います。

##➁データベースを開く

元記事を表示

Red Hat Decision Manager 計画最適化の性能検証

著者: 株式会社 日立ソリューションズ 柳村 明宏
監修: 株式会社 日立製作所

# はじめに
計画最適化とは、限られたリソースの中で、守るべき制約や効率を考慮しながら、最も良い計画(組合せ計画)を立案することです。

ここで、対象となる計画の規模(例:人員のシフト計画の場合、対象となる人員数や割り当てるシフト枠数)が増加すると、その組合せ数も増加し、良い計画を立案できるまでの時間も増加します。
そのため、計画最適化を行う場合は、以下の内容を検討する必要があります。

– どれくらいの規模の最適化を行うのか
– どれくらいの計算時間をかけられるのか
– どれくらいのマシンスペックが必要か

本稿では、人員の日次シフト計画のモデルケースについてRed Hat Decision Managerを利⽤して計画を最適化する性能検証を紹介します。
本稿が以下のような点でお役に立てれば幸いです。

– 計画最適化が、規模の大きいケースでも現実的な計算時間で対応できることを確認する
– 計算時間やマシンスペックの概算見積時の参考値として利用する
– 設計開発時に調整する最適化アルゴリズム

元記事を表示

拡張しやすいStream APIの代替を作ってみる

# はじめに

Stream APIとはJava SE 8から追加されたデータの列を処理するAPIです。今までコレクションに対して行っていた煩雑な処理をわかりやすいコードで記述することが可能になります。しかし実際に使ってみるといくつか気になる点があります。

* 終端処理で配列化するときは`.toArray()`でいいのに、リスト化するときは`.collect(Collectors.toList())`とする必要があります。
* `.collect()`がわかりにくいです。(特に`Collectors.groupingBy()`など)終端処理を自分で追加できるように、このような実装になったと思いますが、わかりやすさを犠牲にしていると思います。
* `IntStream`や`LongStream`はありますが、`ByteStream`や`CharStream`はありません。Collection APIにはプリミティブ型を直接格納するコレクションはないのに、なぜStream APIにはそれらを追加したのでしょうか。しかも中途半端に。
* 中間処理はすべてインスタンスメソッドなので新たな中間

元記事を表示

【AndroidStudio】EditText に登録する値に制限を設けたい【Java】

##はじめに
画像3枚は私が作った血圧をメモするアプリです。
EditText に入力した値をデータベースに保存しています。
その際、範囲外の値や null を避けたかったのでいろいろ調べ、if文と論理演算子で書きました。
ちなみにですが、このコードだと連続でデータ登録しようとするとアプリが落ちます。
[連続登録落ちについての記事はこちら(私の書いた別記事に飛びます)](https://qiita.com/yukino555/items/e86d9dfcaefb46ee54a3)。

元記事を表示

MS932 CP943C 変換問題

Shift_JIS の文字を Unicode に変換する際、文字エンコーディング(=変換テーブル)が異なると問題になることがある。

#Shift_JIS
Shift_JIS では「あ」を「0x82A0」、「い」を「0x82A2」、「う」を「0x82A4」で表すように決められている。
Shift_JIS のテキストファイルで「あいう」と書いて、バイナリエディタで開くと確認できる。

あ 0x82A0 (Shift_JIS)
い 0x82A2 (Shift_JIS)
う 0x02A4 (Shift_JIS)

図.バイナリエディタでShift_JISのテキストファイルを開いたところ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/4aa3237f-a948-cbc9-615d-13836b388218.png)

#Shift_JIS -> Unicode 変換 (MS932)

Shift_JIS と Unicode では文字(上の例では「あ」)とコード(上の例では「0x

元記事を表示

super-csvを使用したcsv出力処理

##### 1.目的
scheduleの内容をCSV出力したい

>Top画面で表示しているscheduleテーブルの内容を結果DLボタンを押下してCSV出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497973/3249b3a8-2a86-9353-257d-04447f088b00.png)

##### 2.事前準備
build.gradleにsuper-csvを追加

“`build.gradle
plugins {
id ‘org.springframework.boot’ version ‘2.3.3.RELEASE’
id ‘io.spring.dependency-management’ version ‘1.0.10.RELEASE’
id ‘java’
}

group = ‘com.example’
version = ‘0.0.1-SNAPSHOT’
sourceCompatibility = ’11’

configurations {
comp

元記事を表示

Spring Batchを試してみた

## 概要
STSを使ってSpring Batchを使ったときの備忘録を残しておきます。
主に自分用。
Spring Batchとは、Spring Frameworkをベースにしたバッチアプリケーションフレームワークです。

開発環境は次の通りです。
OS : Windows 7 Home Edition 64bit
Java : JavaSE 8 update 181
Spring Boot : 2.3.4
STS : 4.6.1

## STSのセットアップ
STSのセットアップは[自分の備忘録](https://qiita.com/harayoshi/items/fca60e68087640b26292)を参考にしました。

## プロジェクトの作成
下記のCreate new Spring Starter Projectをクリックします。
![createProject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533981/0ff83636-3af2-9431-0e17-76b953568

元記事を表示

Javaラムダ式についてまとめてみた

## ラムダ式とは
Java8で導入された新しい文法。
ローカルクラスと無名クラスを利用して記述する内容を省略して処理記述を簡潔にする。
代表的な例としてCollections.sortやStreamAPIのメソッドが恩恵を受けた。

## ラムダ式について分解
ラムダ式はローカルクラスと無名クラスという仕組みを利用しています。

1.ローカルクラス
>ローカルクラスとはメソッドの処理中でクラスを宣言して利用できる仕組みです。

“`java
public static void main(String[] args) {

class Local {
public void sayHello() {
System.out.println(“Hello!”);
}
}

Local local = new Local();
local.sayHello(); // Hello!
}
“`

インターフェースを実装したローカルクラスを定義することもできます。

“`java
public static void main(String[]

元記事を表示

LINEの通知から色々な情報をスクレイピングする

# はじめに
2011年6月23日にLINEサービスが開始され今年で9年目になりますが、国内の月間アクティブユーザー数が約8,700万人ということで、身近でもLINEを使っているという方はほとんどだと思います。
普段のやり取りは主にLINEで行うと思いますが、頻繁に使うLINEからデータが取れれば色々活用できると思い、どうにかやりとりの情報を取得できないかと考えました。

私はこの方法を使って、LINEの通知音・着信音を個別に鳴り分けるようにする「ピックアップ通知音」というアプリをGoogle Playに公開しています!
https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409628/e48b6416-da86-2db1-0c9a-0c1a5c4be66e.pngインタフェースと抽象クラスの使い分け

#インタフェースと抽象クラスをどう使い分ける?
初心者が、インタフェースと抽象クラスがどんなものかを理解して、次に疑問に思うのは
__それぞれ、どう使い分ければ良いの?__
ということではないかと思います。

#インタフェースは使用者のため、抽象クラスは実装者のため

– インタフェースは__呼び出す人のため__にメソッドのAPIを定義する
– 抽象クラスは__子クラスを実装する人のため__に一部を実装する

端的に言えば、これだけです。

#具体的には
ポリモーフィズムを使用して呼び出してもらいたいクラスは、インタフェースを実装しましょう。

使う側は、抽象クラス型の変数は宣言するべきではないです。
インタフェース型で変数を宣言しましょう。

“`java
AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK
“`

抽象クラスを仮引数の型とするメソッドも定義するべきではありません。
インタフェース型を指定しましょう。

“`java
void fooMethod(AbstractFooBar fo

元記事を表示

【Springframework】プロキシサーバー利用時のRestTemplateによるHTTPリクエストのエラー対応

# 概要
プロキシサーバーを利用してインターネットにアクセスするネットワーク環境下でSpringのRestTemplateを利用して、外部のAPIにリクエストを送信しようとしたところエラーが発生しました。

普段開発する環境ではプロキシサーバーを利用しておらず調査に時間がかかったので、今回対応した方法をメモしておきます。

# 発生した事象
プロキシサーバーを利用してインターネットにアクセスするネットワーク環境下で`RestTemplate.exchange`を利用して外部APIを利用してGETリクエストをしたところ下記のエラーが発生。

ただし、同じAPIをブラウザ(Chrome)でアクセスした際にはレスポンスがきちんと返ってきている状況でした。

### エラーメッセージ
“`java

org.springframework.web.client.ResourceAccessException: I/O error on GET request for “{targetURL}”:
Connection refused: connect;
nested exception

元記事を表示

Eclipse を使って Tomcat プロジェクトを作成する

## はじめに
* Eclipse を使って Tomcat プロジェクト(Java Servlet)を作成する方法についてまとめました。

## 概要
* Java Servlet とは、Java で実装された WEB アプリケーションにおいて、動的 WEB ページを生成するプログラムです。WEB アプリケーションは、サーバ・クライアントシステムになっており、以下の図のように、クライアントがサーバにリクエストを送信し、サーバがクライアントにレスポンスを返して動作します。

* Java Servlet は単体で動作するのではなく、サーブレットコンテナと呼ばれるソフトウェアと一緒に動作します。Tomcat とは、このサーブレットコンテナに該当します。WEB ブラウザから WEB サーバにリクエストを送信すると、Tomcat

元記事を表示

Eclipse を使って Jetty プロジェクトを作成する

## はじめに
* Eclipse を使って Jetty プロジェクト(Java Servlet)を作成する方法についてまとめました。

## 概要
* Java Servlet とは、Java で実装された WEB アプリケーションにおいて、動的 WEB ページを生成するプログラムです。WEB アプリケーションは、サーバ・クライアントシステムになっており、以下の図のように、クライアントがサーバにリクエストを送信し、サーバがクライアントにレスポンスを返して動作します。

* Java Servlet は単体で動作するのではなく、サーブレットコンテナと呼ばれるソフトウェアと一緒に動作します。Jetty とは、このサーブレットコンテナに該当します。Jetty は軽量で組み込みやすいのが特徴です。WEB ブラウザから WEB サ

元記事を表示

JavaでTODOアプリを制作しよう9 TODOの表示を作成日時が新しい順にソートする + 期日のデフォルトを当日の日付にする

こんにちは。
今回の記事では今まで作ってきたTODOの微調整を行います。

## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機能] TODOの表示を切り替える] (https://qiit

元記事を表示

JavaでTODOアプリを制作しよう8 編集機能の実装

こんにちは。
今回はJava Springで投稿されたTODOの編集機能部分を実装していきたいと思います。

## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機能] TODOの表示を切り

元記事を表示

OTHERカテゴリの最新記事