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

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

PlayframeworkでHikariCPのコネクション数をDataDogでモニタリング

## アプリケーション側の設定

### hikariCPのMbeansの設定を有効にする

“`application.conf
play.db.prototype.hikaricp.registerMbeans = true
“`

### ConnectionPoolにPoolNameを設定する

デフォルトだと HikariCP-1, HikariCP-2 みたいになってしまうので、わかりやすい名前をつける

“`application.conf
db.default.hikaricp.poolName = default
db.default-ro.hikaricp.poolName = default-ro
db.accesslog.hikaricp.poolName = accesslog
“`

## DataDog-agentの設定

参考: https://docs.datadoghq.com/ja/integrations/java

### conf.d/jmx.d/conf.yaml を編集する

PoolごとにMBe

元記事を表示

Java(Jsoup)を使って株価チャートをスクレイピングをしてみた

#やったこと

Jsoupを使って、Yahoo! Financeの株価チャートをスクレイピングしてみました。
ちなみに、スクレイピングした株価チャートはアリババ(BABA)です。
アリババを選んだ理由は単純に伸びて欲しいからです。。。

#こんな感じ
スクリーンショット 2020-05-31 20.06.36.png

#コード

“`java
@Controller
public class YahooFinanceController {
private static final String YAHOO_FINANCE_URL = “https://stocks.finance.yahoo.co.jp/us/detail/BABA”;

@RequestMapping(“/”)
public Str

元記事を表示

[Java] Date 関連用語メモ

久々に サーバー側プロジェクトを担当することになりました。
しかも環境がdb & windows & Java など (T、T)
ですので、用語など勉強絡みでメモします。

#用語
##1。 ISO-8601暦体系
日付と時刻の表記に関するISOの国際規格

基本形式: YYYYMMDDThhmmss+0900
例)20200531T115959+0900

##2。 GMT(グリニッジ平均時:Greenwich mean solar time)
英国のグリニッジ(経度0度)の地方平均太陽時
(平均太陽が南中する時を正午とする)
Greenwich.png
グリニッジ天文台旧本館

##3。 UTC(協定世界時:Universal time coordinated)
セシウム原子を利用し

元記事を表示

Db2を利用したJavaアプリケーションでERRORCODE=-4471が発生する。

# 環境

本記事を書くにあたって利用した主なソフトウェアのバージョンは次の通りです。

– javac 11.0.4
– openjdk version “11.0.4” 2019-07-16
– IBM DB2 Developer-C Edition 11.5 (Docker/wsl2)
– IBM Data Server Driver for JDBC and SQLJ 4.26.14

# 事象

以下のコードは`EMP`というテーブルからすべての`EMPNO`を取得し、標準出力に出力するというものです。

“`java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

元記事を表示

多段階選抜 (Java/Groovy/Scala)

|多段階選抜|解答日|シリーズ:yieldの練習/ジェネレータを入れ子に/整数平方根・立方根の実装|
|:–|:–|:–|
|問題| |http://nabetani.sakura.ne.jp/hena/ord24eliseq/
https://qiita.com/Nabetani/items/1c83005a854d2c6cbb69|
|Ruby|2014/8/2(当日)|https://qiita.com/cielavenir/items/9f15e29b73ecf98968a5|
|C#/Python|2014/8/4|https://qiita.com/cielavenir/items/a1156e6a4f71ddbe5dcb|
| | |ここから上はdrop_prev_square/drop_prev_cubicをまとめる前の答案|
|Go/C#/Ruby/Python|2014/8/5|https://qiita.com/cielavenir/items/2a685d3080862f2c2c47|
|PHP/JavaScript|2014/9/9|https:

元記事を表示

覗き見可能なイテレータを作ってみる

## 前書き
イテレータのラッパークラスを作る際、hasNextの実装に困ることが多い。
ただラップするだけなら内部のイテレータに委譲すれば良いが、都合上そのような戦略を取れない場合だ。

次の要素を覗き見れれば便利なのに… というわけで、作ってみる。

## 本題
次のような動作をするクラス、PeekableIteratorを作ってみた。

“`Java
var src = java.util.List.of(3, 1, 4);

var peekIt = new PeekableIterator<>(src);
while(peekIt.hasNext()) {
System.out.printf(“次の要素は %d です。\n”, peekIt.peek());
System.out.printf(“もう一度言います。 %d です。\n”, peekIt.peek());
System.out.printf(“ほら、本当に %d だったでしょ?\n”, peekIt.next());
System.out.println();
}
Syste

元記事を表示

Apache Camel Spring Boot starters でDB上のデータをバッチ処理するサンプル

「[Apache Camel Spring Boot starters を使った単純なcamelアプリの作成手順](/HMMNRST/items/db9cb387ecfde0944496)」の続きで、**MySQLにためたタスクを処理するバッチ**を実装する。

本当は複数マシンで並行処理させる際の**排他制御を実験する**という目的があるのだが、SQLもcamelもJavaも中途半端な理解なのでまだそこまでできない。今回のアプリはそこへ繋がりそうなサンプルという位置付け。

前回の分は説明しないが、必要なファイルは全てこちらの記事に書くので見返さなくても動かせる。

“`text:ファイル一覧
path/to/app/
├── src/main/
│ ├── java/org/example/mycamelapp/
│ │ ├── db/
│ │ │ ├── TaskSql.java
│ │ │ └── TaskTable.java
│ │ ├── proces

元記事を表示

十数年前のJava使いが、今更ながらJava8 の機能を勉強してみた( ラムダ式編 )

# はじめに
最近お仕事の都合で、Java を使う機会に恵まれたので
太古のJava( 1.3 )知識をアップデートしてみました。

## ラムダ式 とは
関数的インターフェイスを簡単に実装するための機能です。

これだけでは何のことかさっぱりなので、例を出しつつ説明したいと思います。

## ラムダ式の違いをコードで比較
### ラムダ式を使わないコード
“`java
public static void main(String[] args) {

class Sample implements Runnable {
public void run() {
System.out.println(“I Love Pengin!”);
}
}

Runnable runner = new Sample();
times( 10, runner );
}

public static void times( int count, Runnable runner ) {
for( int i = 0; i < count; i++ )

元記事を表示

十数年前のJava使いが、今更ながらJava8 の機能を勉強してみた( Generics編 )

# はじめに
最近お仕事の都合で、Java を使う機会に恵まれたので
太古のJava( 1.3 )知識をアップデートしてみました。

## Generics とは
利用する型の処理を実装時に確定する機能です。

これだけでは何のことかさっぱりなので、例を出しつつ説明したいと思います。

## Generics 有無をコードで比較
### Java1.3の頃のコード
“`java
List list = new ArrayList();

// list に値を格納
// String -> Object への変換なので暗黙的に格納出来る
list.add(“1”);
list.add(“2”);
list.add(“3”);

for (Iterator it = list.iterator(); it.hasNext(); ) {
// list の値を取得して表示
// 取得時は Object -> String は明示的なキャストが必要
String str = (String) it.next();
System.out.println(str);
}
“`

##

元記事を表示

JavaのStringクラスのメソッドいろいろ

#文字列調査に関するメソッド
|メソッド|操作|引数型|戻り値型|
|——-|—|—–|——-|
|equals|内容が等しいかどうか調べる|String|boolean|
|equalsIgnoreCase|大文字、小文字の区別を無視して内容が等しいかどうか調べる|String|boolean|
|length|文字列の長さを調べる|String|int|
|isEmpty|空文字かどうか調べる|String|int|

#文字列検索に関するメソッド
|メソッド|操作|引数型|戻り値型|
|——-|—|—–|——-|
|contains|文字列が含まれるかどうか調べる|String|boolean|
|startsWith|指定された文字列で始まるかどうか調べる|String|boolean|
|endsWith|指定された文字列で終わるかどうか調べる|String|boolean|
|indexOf|指定された文字または文字列が最初に登場する位置を調べる|String|int|
|lastIndexOf|指定された文字または文字列

元記事を表示

OpenJAVA で Spring Boot

# はじめに
Spring Boot って便利ですよね!

Javaで少し規模が大きなWebアプリケーションを開発しようと思ったら、アプリケーションフレームワークが必要になると思いますが、EJBにしてもStrutsにしてもSpring Frameworkにしても、Javaのフレームワークはなかなか手ごわい。
そこへ行くと、Spring Tool Suiteの使いやすさもあって手軽に本格的なアプリケーションを構築できるSpring Bootは本当に便利だと思います。

ところが、Spring BootのデフォルトJDKって**Oracle Java SE 8**だったりします。
OracleのJDKはライセンス条項が変更されて、開発や個人の学習用途では無償利用できるけど会社の業務として利用する場合は注意が必要ですね。
そんなわけでOpenJDKで使えないものかと考えました。

# いきなり結論から
まず、できたのかできないのかが気になるところなので結論から。
できます。全然問題ありません。少なくとも私が作成した程度のWebアプリでは
今のところ問題は出ていません。
というわけで、私の環境

元記事を表示

Coursierで特定のmaven artifactの依存関係を確認する

Androidでの開発やJavaなどのJVM言語での開発で、あれ、このライブラリって何に依存しているんだっけ?って思うことよくありますよね?
皆さんはどのように確認しているでしょうか?
https://mvnrepository.com/ などのサイトを見たり、 `./gradlew dependencies`で確認するなどさまざまだと思います。

今日はScalaで書かれたCoursierというCLIツールが便利だったので紹介します。
https://get-coursier.io/

# 使い方
ターミナル上で `coursier resolve maven_artifact`という感じで確認できます

“`
$ coursier resolve io.circe:circe-core_2.12:0.10.0
io.circe:circe-core_2.12:0.10.0:default
io.circe:circe-numbers_2.12:0.10.0:default
org.scala-lang:scala-library:2.12.6:default
org.scala-

元記事を表示

【Kotlin】面積当たりの容量が大きいpngを生成したかった【Java】

# やりたかったこと
とある案件で大量の重めの`png`画像サンプルが必要になりました。
一方、単純に四角を`fill`するような形で画像を生成した場合、圧縮されてしまって高々数KB程度になってしまうなど、容量が確保できませんでした。
必要な画像のフォーマットも決まっていたため、単純に面積を増やして容量を稼ぐことも難しかったです。

# 方針
圧縮というものは大概以下2点に当てはまる場合強く作用します。

– 同じパターンが連続する
– 同じ色が連続する

よって、「ランダムな色のランダムな線を沢山引けば圧縮しにくいだろう」というノリでやりました。

目標は1940 x 500のサイズで1枚2MBです。
それを達成していれば一旦構わないため、更なる大容量化や処理時間に関しては気にせずにやっていきます。

# 実装
`${プロジェクトルート}/build/generated`ディレクトリに2000枚の画像を生成するサンプルです。
`lines`が100000有れば安定して2MBを超えてくれました。

`parallelStream()`しているのは「ちょっとは早くなるんじゃね」程度のノリ

元記事を表示

JDKの設定方法をまとめてみた【VSCode】

VSCodeでJDKのパスを設定する方法をまとめてみました。
今回使ったJDKはOracleJDKとAdoptOpenJDKです。
まだJDKをダウンロードしていない方は以下のサイトでダウンロードしましょう。
おすすめはAdoptOpenJDKです。

AdoptOpenJDKのダウンロードサイト
[https://adoptopenjdk.net/](https://adoptopenjdk.net/)
OracleJDKのダウンロードサイト
[https://www.oracle.com/java/technologies/javase-downloads.html](https://www.oracle.com/java/technologies/javase-downloads.html)

## JDKを設定する前に知っておきたいこと

### パスとは何か

パスとはファイルやフォルダを保存している場所のことです。
JDKのデフォルトのパスは
AdoptOpenJDK `C:\Program Files\AdoptOpenJDK\バージョン`
OracleJDK `C:\P

元記事を表示

java SE 11 Silver 合格体験記【現役理系大学生ver】

#概要
java SE 11 Silver のテストを受けてきたので体験記を残しとこうと思います。
Silverはたくさん体験記があるみたいなので、実務経験がなくプログラムを作ったことが無い人に向けたことに重点を置いて書こうと思います。
#使用した本
徹底攻略Java SE 11 Silver問題集
https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Silver%E5%95%8F%E9%A1%8C%E9%9B%86%EF%BC%BB1Z0-815%EF%BC%BD%E5%AF%BE%E5%BF%9C-%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-ebook/dp/B07YWKWBBD/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3AOWI1BXV0Y5G&dchild=1&keywords=java+se+11+

元記事を表示

【Java入門】配列の操作について(1次元配列、2次元配列の宣言、インスタンス化、初期化および使用)

#目的

Java言語を含めたプログラミングの学習を始めたばかりの方、既学習者の方は復習用に、
今回は**配列**について学ぶために書いています。

[【Java入門目次】](https://qiita.com/morioheisei/items/6c7fc063c26e63d890ac)
・[変数と型](https://qiita.com/morioheisei/items/3d27e82d6cd88068dded)
・[型変換](https://qiita.com/morioheisei/items/28ab5fd69570e01cd317)
・[変数のスコープ](https://qiita.com/morioheisei/items/c56ab32b68ce92d32206)
・文字列の操作(準備中)
・配列の操作 ←今ここ
・演算子(準備中)
・条件分岐(準備中)
・繰り返し処理(準備中)
・クラスについて(準備中)
・抽象クラス(準備中)
・インターフェース(準備中)
・カプセル化(準備中)
・モジュールについて(準備中)
・[例外処理について](https://qiit

元記事を表示

Stateパターンのメリットを映画のレイティング判定で説明する

ユーザが見ることができる作品を、映画のレイティングシステムに従って選別できるように実装します。

映画のレイティングシステムとは、年齢制限する規制のことです。
G:全年齢
PG12:12歳以上
R15+:15歳以上
R18+:18歳以上
といった区分があります。

# クラス図
赤枠内がStateパターンで、それをUserが使用するという形をとっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190809/e19b86ca-9761-721c-ec1a-ee9cc8b7de86.png)
RatingSystemをインターフェースとし、G/PG12/R15で各制限を実装します。
R18が無いのは、R18の映画を扱っていないという想定です。

# メリット
・年齢制限をRatingSystemの実装クラス(G/PG/R15)に限定できる。(実装の局所化)
・R18映画を扱うことになり、仕様追加になっても容易に対応できる。(変更容易性)

# ソースコード
## interface

元記事を表示

Spring Bootで問い合わせアプリ作成

今回もSpring Bootで、勉強も兼ねてアプリ作成しました。
随時機能追加する予定です。

#使用環境
・Windows10 (64bit)
・spring-boot:2.2.6
・Eclipse:4.9.0
・H2
・Bootstrap

#完成図
簡単な問い合わせアプリです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631044/29340e64-05ae-2432-6bbe-f03a70dbfcf7.png)

#Entity

“`java:Inquiry.java
import java.time.LocalDateTime;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.springframework.format.annotation.DateTimeFormat;

@Ent

元記事を表示

SpringframeworkのコントローラーをJunitでテスト

#対象読者
・SpringFramework初学者
・Junit初学者
・JunitでSpringframeworkのコントローラーをテストしたい!!!

#プロジェクトver
・Springframework 4.1.6
・Junit 4.1.2
・servlet 3.1.0
・hamcrest 2.2
・mockito 3.3.3

#ファイル構造
“`
//メイン層
src.main.java
|
+— jp.co.demo
+— controller
+— dto
+— form
+— entity
+— mapper
+— service

//テスト層
src.test.java
|
+— jp.co.demo
| +— controller
|
src.test.resources
|
+—

元記事を表示

NEM(現行バージョン)のノード(NIS1: NEM Infrastructure Server)の構築方法

NEMブロックチェーンでは、現在、次期バージョンSymbolのローンチに向けて、テストネット上で様々な準備が行われています。そういったタイミングのさなかでもあり、次期バージョンSymbolのテストネットのノードの構築方法については、ドキュメントや参考情報が非常に充実していると感じます。
しかし、意外にも現行バージョンのNEMブロックチェーンのノードの構築方法については、ドキュメントや参考情報を探すのに苦労しました。(私自身のググラビリティの問題もあるかもしれません…)
自身の備忘録のためにも、Google Cloud Ploatform上にNEMの現行バージョンのノード(=NIS1と呼ばれる… NEM Infrastructure Serverの略称)を構築した方法をこの記事にまとめておこうと思います。
何か間違いや、より良い方法等あれば、ぜひ教えて頂けると助かります。よろしくお願いします。

# 概要

1. ファイアーウォールルールを作成
1. GCEでVMを作成しSSHでログイン
1. Javaのインストール
1. NIS1の本体をダウンロードして解凍
1. ノードの起動

元記事を表示

OTHERカテゴリの最新記事