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

JAVA関連のことを調べてみた2021年11月10日
目次

【Scala】関数の引数にRefined値制約を付ける場合、その引数にリテラル値ではない「変数x」が渡された場合も正常に動作させる方法

Refinedで定義された値制約が付いたオブジェクトは、数値リテラル(1, 175など)や文字列リテラル(”abc”など)を与えると、オブジェクトを初期化宣言させることができます。

他方で、すでに定義済みの変数(x, y, customer_name, sales_volumeなど)で初期化宣言をしようとすると、「リテラル値でないと受付けられません」というエラーメッセージが吐かれてしまいます。

そのため、関数の引数にRefined値制約を付ける場合、その引数にリテラル値ではない「変数x」が渡された場合は、エラーが発生してしまうことになります。

そうした事例が、以下のウェブページで報告されています。

http://ja.uwenku.com/question/p-daphfiiv-gp.html

>“`Scala:
>package xxx
>
>import eu.timepit.refined._
>import eu.timepit.refined.api.{Refined, Validate}
>import eu.timepit.refined.auto._

元記事を表示

【個人開発】独学 + 職業訓練校でプログラミングを学び、ブックマークサービスを作りました。

# 1. はじめに
シンプルを追求したブックマークサービス「5Keeps」(ファイブキープス)を作りました。

|![5Keeps_ogp_jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1048052/ecccda94-9098-ca42-c67e-6eb9e5aa5a1f.png)|
|:–|

2020年11月に未経験からプログラミングの学習を開始して、あっという間に1年が過ぎ去り、ようやく自作アプリのリリースにこぎつけました。この記事では、前半に開発したサービスについて解説し、後半に1年間の学習の過程をまとめています。

– 5Keepsへのリンク
https://www.5keeps.com/

– ソースコード
https://github.com/daichihayasaka/five_keeps_ver01

# 2. サービスについて
### 2-1. サービス概要
#### 解決したい課題
プログラミング学習の環境は、時間や場所によって様々です。私の場合、家やカフェではMacb

元記事を表示

  Java PowerPointスライドに散点図を作成

はじめに

散点図とは、あるデータを元にして縦軸と横軸の2つの項目で量を計測し、分布を表現するために使うグラフのことです。には2つの軸があります。1つの水平軸(x軸)と1つの垂直軸(y軸)は、1つのデータ系列だけを受け入れます。今回はSpire.Presentation for Javaを利用してスライドに散布図を作成する方法を紹介します。

下準備

1.E-iceblueの公式サイトからSpire. Presentat

【AtCoder】JavaでABC226のA,B問題を解く!

ABC226のA,B問題をJavaで解きました。(C問題は難しくて解けませんでした)
備忘録としてまとめておきます。

#A問題『Round decimals』
問題ページ:[A – Round decimals](https://atcoder.jp/contests/abc226/tasks/abc226_a)

X:小数点第三位までの実数
X を小数第一位で四捨五入して得られる整数を出力する

小数点を持つ実数は、「Double型」で宣言します。
宣言(入力値を取得)した変数をroundメソッドを用いて、小数第一位で四捨五入します。

##コード
“`java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);

// 画面入力値を取得する
double scanD = sc.nextDouble();

//小

Gradle test でOutOfMemoryError

SpringBootのテストをJenkinsで行っていたんですが、
ある日OutOfMemoryErrorで落ちて如何ともし難くなりました。かなしみ。

![OOM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38628/6a1ecbd2-edc8-84b9-d3b4-871979d0ca8d.png)

一応、何度かトライして復旧できたので、ログを残しておきます。

## 環境

– Java8
– CentOS7
– Jenkins
– JUnit5

## ①ヒープを増やす

“`
java.lang.OutOfMemoryError: GC overhead limit exceeded
“`
とあり、[Jenkins-SlaveでUnitTestがOutOfMemory](https://qiita.com/fake-deli-ca/items/b2cadce085595c57636d) (@fake-deli-ca) の記事によるとtestタスクはプロセスが別になって実行される(へー知

Scalaの依存型制約を使って、優良顧客リストをクラスレベルの型安全性を担保して生成するコード

以下の2つのステップで、__課金額を格納する数値リスト__に、__「10,000円〜10,000,000円の範囲内の数値しか格納できない」という制約条件__を、データ型制約として付加してみます。

この記事の続編として、上記の条件に合致する顧客名だけを格納できる、タプル__(ユーザ名, 累積課金金額)__のListを作るコードを書く予定です。

##( 手順 )

__【 Step 1 】__
数値区間[10000, 10000000]の範囲内にある整数値を、データ型クラス__*HighLoyalityCustomerSalesCondition*__として定義する。

>“`Scala:sbtConsole
>scala> type HighLoyalityCustomerSalesCondition = Int Refined Interval.ClosedOpen[10000, 10000000]
type HighLoyalityCustomerSalesCondition
>“`

__【 Step 2 】__
データ型クラス__*HighLoyalityCustome

Android Studioでビルドエラーと格闘する

# はじめに
2016年頃まで自作のAndroidアプリを作って、[Google Play](https://play.google.com/store/apps/developer?id=hamham)に公開していました。
2021年の某日。突然Googleから**「ご対応のお願い: Google Play のポリシーをアプリが遵守していません」**とのメールがきて、アプリがストアから削除されてしまいました。
最後のアプリのアップデートをしてから5年も経って、突然こうなったということは、**Google Play側のデベロッパープログラムポリシーの変更に追随できておらず放置していたということが原因**と考えられます。
幸い、ポリシーに違反していた部分は軽微だったので修正自体は難しくなさそうです。
ポリシー違反部分を修正して再アップすればよいのですが、なんせ5年も前なので、開発環境を整えていたPCは手放してしまったし、アプリのビルドやストアへの公開方法も忘れてしまっている状態です。
残っているのはzipで固められた当時のソースコードのみ。

ということで、開発環境を構築して、アプリをビ

Scala:コンストラクタに「上限境界」制約をかけて、条件を充足しないインスタンスの生成を禁じる

###次のスクリプトファイルをコンパイルして実行する

####( クラス間の継承関係 )

HighLoyalityCustomerクラス –> NormalCustomerクラス –> Customerクラス –> Personクラス

####( 継承クラスのコンストラクタに付けた「上限境界」制約)

– CustomerContainerクラスのコンストラクタは、Customerクラスそれ自体か、Customerクラスのサブクラスのみ受け入れる。

>“`Scala:
>class CustomerContainer[C <: Customer](c: C) { ``` - GoodCustomerContainerクラスのコンストラクタは、HighLoyalityCustomerクラスそれ自体か、HighLoyalityCustomerクラスのサブクラスのみ受け入れる。 >“`Scala:
>class GoodCustomerContainer[H <: HighLoyalityCustomer](h: H) { >“`

“`Scala:bounde

HelloWorldまでの流れ

初投稿です。似たような記事はたくさんありますが、学習したことを備忘録や日記のような形でアウトプットしていきます。
間違った内容があればご指摘して頂けると幸いです。

環境はオンラインIDE(openjdk version “16.0.2”)を使用しております。特に用意することもなくお手軽なので。

今日のところはタイトルにもある通り、Hello Worldを表示するだけです。

以下のコードで表示できました。

“`java
public class Main{

public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
“`

“`text:実行結果
Hello World!
“`

ここに至るまでに分かったことは、mainメソッドはJavaのエントリーポイント(処理の始まり)だということ。
mainメソッドには単語がズラリと並んでいて「なんだこれは」と思いネットで調べたところ、

・アクセス修飾子はpublic
・stat

IntelliJ IDEA(日本語版)でserialVersionUIDを生成する方法

# はじめに
serialVersionUIDを生成する方法をまとめた。



# 発端
serialVersionUIDを生成するメッセージが表示されない
![スクリーンショット 2021-11-07 16.06.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615760/9a7db949-60c9-7eeb-1604-b6d797aaf6fb.png)


# 解決策
Preference -> エディター -> インスペクションにある「’serialVersionUID’のないSerializableクラス」をチェックする。
![スクリーンショット 2021-11-07 16

Sparkについて(Python,Java,JVM,RDD)

#Hadoop,Sparkの分散処理について
* 巨大データの取り扱いを目的とした分散処理のフレームワーク
* 分散処理によってビッグデータを高速に処理することが可能
* Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理が可能

##Hadoop上で稼動するデータベースマネージメントシステム(DBMS)
* Hive
* Impala

##Hadoop上で稼動するスクリプト環境
* Pig

Hadoop連携ソフトウェアの存在がビックデータ処理環境をより便利にしている。
**SparkもHadoopと同じく分散処理のフレームワーク**
adoopがJava言語で作られているのに対してSparkはJavaの派生言語であるScalaで作られています。

###Sparkの内部処理方式
* データをメモリに保存することで入出力の高速化を図り処理全体の実行速度を向上させようとする取り組みがある。
* 利用可能メモリが枯渇した場合にはデータをストレージに保存するケースも勘案
* 機械学習の計算処理に効果を発揮する

SpringBoot ✕ jQuery✕ DataTables・DataTables-pluginsの導入

#はじめに
SpringBootのRESTで検索機能を実装した際に、`Gradle`プロジェクトでの**DatTables**と**DataTables-plugins**の導入方法が見つからず、時間をロスしたので、同じように悩んでいる人などに向け備忘録として書いておきます。

#build.gradle
結論、参考文献に書いてあるようにすればいいだけですので、非常に簡単です。

“`java
dependencies {
implementation ‘org.webjars:datatables:1.10.21’
runtimeOnly ‘org.webjars:datatables-plugins:1.10.21’
}
“`

上記2行追加するだけでライブラリの導入は完了です。
お役経てば幸いです。

#参考文献
> [MavenRepository](https://mvnrepository.com/artifact/org.webjars/datatables-plugins/1.10.12)

Eclipseでjavafxを導入するときに詰まったこと

#はじめに

Eclipseにjavafxを導入する記事を見ながら環境を作っていたところ,下のようなエラーに遭遇してかなり困ったので,私の場合の解決策をメモしておきます.Qiitaもjavaも初心者なので詳しい話はなにもできませんが,よろしくお願いします.
動作環境はIntel搭載のMacBook AirでOSは BigSurです.

いきなりですが,エラー文です.javafxの環境を整え終わって,試しにMainクラスを実行してみるかという矢先のことで,非常に辛かったです.
>Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.

動的計画法をJavaでメモ化再帰で記述してみた。

以下のナップザック問題をメモ化再帰で記述してみました。
https://atcoder.jp/contests/dp/tasks/dp_d

残念ながら、0_00, 0_01, 0_02, 1_00, 1_01, はACでしたが、他がTLEになってしまいました。

こちらの記事を見て今度はforループで解いてみたいと思います。
https://qiita.com/drken/items/dc53c683d6de8aeacf5a#e-%E5%95%8F%E9%A1%8C—knapsack-2

“`Java:Main.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;

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

【2021年】Maven-Gradle【初心者メモ】

# 目次
– ビルドとは
– ビルドツールとは
– 依存関係とは
– ビルドの歴史
– Maven
– Gradle
– まとめ
– 参考

# Maven, Gradleとは
Maven, Gradleとはビルドツールである。

# ビルドとは
– 「要求された実行環境で動作できる形式にアプリケーションやライブラリを組み立てる」こと

– 本来ビルドには「決まりのある作業を行う」という意味があるが、エンジニア目線で言うと「要求された環境に合わせて適切に導入し動作を安定させる」という意味がある

– Javaの場合だと、「.java」→「.class」ファイルにコンパイル、「.jar」ファイルに固める+α、サーバーにデプロイする…など

# ビルドツールとは
– 要求された実行環境で動作できる形式にアプリケーションやライブラリを組み立てる(ビルド)するツール

– プロジェクトのビルド、テスト、ドキュメンテーション、成果物のデプロイなど、プロジェクトのライフサイクル全体を管理するもの

– プロジェクトの依存するライブラリの管理をする

# 依存関係とは
– ある要素が別の要素の存

Apache Beamで実装したバッチ処理をAmazon EMRで実行する

## はじめに

以下の記事では、Beamを使用して実装した1つのコードを、ストリーム処理が可能なマネージドサービスであるGCPのDataflowとAWSのKinesisDataAnalyticsそれぞれで実行することを試しました。

https://qiita.com/ynstkt/items/50d551f025d8612d69e1

Beamはバッチ処理とストリーム処理の両方に対応したプログラミングモデルなので、今回は、バッチ処理をGCPとAWSそれぞれのマネージドサービス上で実行してみました。

GCPの場合、Dataflowでそのままバッチ処理も実行できるため、既に上記の記事でGCSをファイル入出力先としたバッチ処理をお試し済なので割愛します。

AWSの場合、ETLサービスまたはサーバレスなSpark実行環境としてDataflowと比較されることのあるサービスとして、AWS Glueが挙げられます。ただ、個人的にGlueについて勉強不足で、作成済のJARをデプロイして実行する方法がよくわからなかったので、まずはAmazon EMR上で実行してみることにしました。

なお、本

JSF FaceletタグライブラリのXMLネームスペース一覧

JSF Faceletタグライブラリのxmlnm(XMLネームスペース)一覧

|Library|prefix|JSF2.1まで|JSF2.2以降|
|:-:|:-:|:-:|:-:|
|Composite Components|cc|http://java.sun.com/jsf/composite|http://xmlns.jcp.org/jsf/composite|
|Faces Core|f|http://java.sun.com/jsf/core|http://xmlns.jcp.org/jsf/core|
|HTML_BASIC|h|http://java.sun.com/jsf/html|http://xmlns.jcp.org/jsf/html|
|JSTL Core|c|http://java.sun.com/jsp/jstl/core|http://xmlns.jcp.org/jsp/jstl/core|
|JSTL Functions|fn|http://java.sun.com/jsp/jstl/functions|http://xmlns.jcp.org/js

【Java】BigDecimal

# BigDecimalとは
– 誤差が出ないように正確に計算するためのクラス
– 四捨五入などの丸め処理ができる
– 桁数の指定ができる

## BigDecimalを使わない場合にどのような誤差が出るのか
“`.java
import java.math.BigDecimal;

public class Main {
public static void main(String[] args) {
// BigDecimalを使わない場合
System.out.println(1 – 0.9); // 0.09999999999999998

// BigDecimalを使う場合
BigDecimal number1 = BigDecimal.valueOf(1);
BigDecimal number2 = BigDecimal.valueOf(0.9);
System.out.println(number1.subtract(number2)); // 0.1
}
}
“`

ドメイン駆動設計入門 Chapter 2 システム固有の値を表現する「値オブジェクト」のまとめと感想

[ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本](https://www.seshop.com/product/detail/20675)の輪読会に参加しています。筆者は「Chapter 2 システム固有の値を表現する『値オブジェクト』」の発表を担当することになったので、自分なりに解釈した内容と感想をまとめました。

https://www.seshop.com/product/detail/20675

本書で取り扱われているサンプルコードのプログラミング言語はすべてC#が採用されています。しかし、筆者はC#に触れた経験がないため、本記事内におけるソースコードはすべてJavaを採用しました。

# こんなコードはありませんか?

アプリケーションを開発していると、StringやList, Mapといった標準のクラスをそのままメソッドの返却値として利用してしまうことがあります。

“`java
public String getFullName();
“`

しかし、本章では、必要とされる処理にしたがって、そのシステムならではの値の表現があるはずだと説いてい

javaでダウンロードzipファイルを一時保存せず処理

javaでネットワーク上のzipファイルを取得する場合はローカルの適当なディレクトリに一時保存してから解凍して処理が多いと思われる。内部実装はともかく、java上でzipファイルのダウンロードから処理までを完結する方法について。

# 環境
* java 17

# ソースコード
例として郵便番号(いわゆるken_all.csv)のzipファイルを読み込む。

“`java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipDownload {
public static void main(String[] args) throws IOException {
URL ur