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

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

Webシステム構築(超基礎)④:Webシステムの構築

#目的
[Webシステム構築(超基礎)②:APサーバ構築と基本動作](https://qiita.com/MARTOON/items/f685b4ea7cbfe4033839)と[Webシステム構築(超基礎)③:DBサーバ構築と基本動作](https://qiita.com/MARTOON/items/b037ba8161790c874e94)で構築したWeb/APサーバとDBサーバを用い、Webシステムを構築する。

#環境条件
– APサーバ
– EC2:t2.micro
– OS:Red Hat Enterprise Linux 8 (HVM), SSD Volume Type
– Disk:汎用SSD(GP2) 10GB
– Tomcat:Apache Tomcat 9
– Java:JDK 1.8
– DBサーバ
– EC2:t2.micro
– OS:Red Hat Enterprise Linux 8 (HVM), SSD Volume Type
– Disk:汎用SSD(GP2) 10GB
– My

元記事を表示

JavaはExcelをPDFに変えます

本論文では、JavaプログラムでExcelブックをPDF文書に変更する方法を紹介します, 含む

*Workbook全体をPDFに変更します。
*指定されたシートをPDFに変更します。

使用ツール:Free Spire.XLS for Java (無料版)
https://www.e-iceblue.com/Introduce/free-xls-for-java.html

Jarファイルの取得と導入:
Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下のSpire.xls.jarファイルをJavaプログラムに導入します。
https://www.e-iceblue.com/Download/xls-for-java-free.html

Method 2:maven倉庫設置による導入:
https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html

元記事を表示

WEBサーバを作りながら学ぶ 基礎からのWEBアプリケーション開発入門

https://teratail.com/questions/65967
まったく同じ嵌まり方をした。

> HTTPのリクエストヘッダーは改行コードのみの空行で終了します。

元記事を表示

言語別int64素因数分解(試し割り法)処理時間比較

言語、C#, Java8, Golang, Python3 で、
int64の範囲内の値を素因数分解したときの処理時間の比較してみました。

先に結果を見たい方はこちらへ。
[処理時間一覧](https://qiita.com/gx3n-inue/items/7b63a2101ea26d3d1a29#処理時間一覧)

JavaとGolangについては、bigintでも計算してみました。

# 利用した素因数分解のアルゴリズム

素因数分解のアルゴリズムについては、最も単純な試し割り法を利用しました。
2,3,5,7,13,17, … (以下、+2, +4を交互に繰り返した値)で割れるかどうか試していきます。

処理の高速化のために、あらかじめ求めておいた素数を用意しておく方法もありますが、
(63ビット程度のループ処理も10秒程度で終わったため、)今回は用意していません。

“`Java:
private long[] trial_division(long n) {
List prime_list = new ArrayList<>();
long

元記事を表示

java フレームワーク

今日は疎かになっていた
javaフレームワークについて投稿します。

# 選び方
前提としてどう選んでいくかというと

* 何を作るか
* 開発スケジュール
* 技術者の人数および技術力
* 保守性

などが挙げられますが
以下2点は抑えておきたいものです。

## 必要な機能を備えているか
例えば
Spring Frameworkは汎用性が高く、機能が充実していますが
Play Frameworkは軽量で機能が絞り込まれているという違いがあります。
したがって、大規模開発のために機能重視でフレームワークを選ぶ場合は
Spring Frameworkを採用することも1つの考え方です。

## 実績あるフレームワークであるか
次々と新しいフレームワークが生まれていますが
マイナーなフレームワークを選んでしまうと、対応できるエンジニアが少なく
学習コストや開発コスト、メンテナンスコストが余計にかかります。
そのため実績あるフレームワークを選ぶことをおすすめします。
有名なフレームワークであれば、開発コミュニティや日本語ドキュメントが充実してお
情報を入手しやすいというメリットもあります。

元記事を表示

Google App Engine (Java 8) + Servlet API 3.1 + Gradle で Hello World

## 概要

– Google App Engine Java 8 スタンダード環境 + Servlet API 3.1 の構成でシンプルなサーブレットと JSP (Java Server Pages) をデプロイする

## 環境

– Google App Engine Java 8 スタンダード環境
– Java 8
– Servlet API 3.1
– Gradle 6.0

## Google App Engine Java 8 スタンダード環境

Jetty 9 + Servlet API 3.1 (or 2.5) を使用可能。
開発する側としては war ファイルを作ってデプロイするように作れば OK なので Jetty のことは気にしなくても良い。

[Migrating from Java 7 to Java 8 Runtime  \|  App Engine standard environment for Java 8  \|  Google Cloud](https://cloud.google.com/appengine/docs/standard/java

元記事を表示

Java で -Xmx や -XX:MaxRAM オプションを指定した際の最大ヒープ・サイズを調べる

## JVM の使用するメモリはヒープだけではない

[メモリ管理の概要](http://otndnld.oracle.co.jp/document/products/jrockit/geninfo/diagnos/garbage_collect.html)

> Java オブジェクトは、ヒープと呼ばれる領域に格納されています。ヒープは、JVM が起動したときに作成され、そのサイズはアプリケーションの実行中に増減することもあります。ヒープが一杯になると、ガベージ (不要なメモリ) がコレクト (収集) されます。ガベージ コレクションは、現在使用していないオブジェクトをクリアし、新しいオブジェクトのための領域を確保します。
>
> ただし、JVM はヒープ以外にもメモリを使用します。Java メソッド、スレッド スタック、ネイティブ ハンドルはヒープ以外のメモリに割り当てられます。JVM の内部データ構造も同様です。

[Understanding Memory Management](https://docs.oracle.com/cd/E13150_01/jrockit_jvm

元記事を表示

Spring Boot + Docker の Java 開発環境構築

# 概要
Spring Boot での Java 開発環境を Docker で構築します。
Java 11 と gradle を使います。

Hello World! を表示させるところまで。
(更新 : リモートデバッグの方法を追記)

# 完成品
https://github.com/tomoyuki-mikami/spring-boot-docker

実行方法

“`
$ cd docker
$ docker-compose up -d
“`

# 環境
MacOS Catalina 10.15.2
Docker for Mac 2.1.0.5
IntelliJ IDEA Ultimate 2019.3.1
OpenJDK 11(homebrew でインストール済み)

# ローカルでの手順
### プロジェクトの作成

##### IntelliJ がない場合
https://start.spring.io/
こちらで同様の選択をして Generate すると zip でダウンロードされるので、それを使います。

##### IntelliJ がある場合
※ 最近の In

元記事を表示

Springのプロファイル機能、そしてSpring Bootのapplication.properties

# Springのプロファイル機能
プロファイルとは、DIコンテナ内のBeanのグループです。任意のグループ名を指定できます。

Beanにプロファイルを指定するには、 `@Profile` アノテーションを利用します。

“`java:DevBean.java
@Profile(“dev”)
@Component
public class DevBean {
}
“`

“`java:ProductionBean.java
@Profile(“production”)
@Component
public class ProductionBean {
}
“`

`@Profile` が付加されていないBeanは、特定のプロファイルに所属しません(デフォルトプロファイルとも呼ばれます)。**プロファイル無しのBeanは、実行時にどんなプロファイルを指定しても常に有効化されます。**

“`java:DefaultBean.java
@Component
public class DefaultBean {
}
“`

## 複数プロファイルの指定
`@Profile` の

元記事を表示

VSCodeでJavaの開発環境構築する方法

# 意外と簡単VSCodeでサクッと環境構築♪と思いきや少しハマった点。でも結果簡単だった件
ハマった点と対処法については最後に少しまとめています。

###開発環境
OS : Windows10
VSCode : Version 1.41.1

###手順
– JDKインストール
– Java Extension Packインストール
– Java.homeでJDKへパスを通す

##まずはJDK(Java SE Development Kit)をインストール
[JDKダウンロードページ](https://www.oracle.com/technetwork/java/javaee/downloads/jdk8-downloads-2133151.html) へアクセス

Java SE Development Kit ~
○ Accept License Agreement をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/cff2a9fd-5457-f4

元記事を表示

Androidによる加速度センサの値を用いた制御とUDP通信のアプリケーション

#前回との変更点
前回まではLEDを模した画像の表示で加速度センサの制御をしていましたが、今回はラジオボタンとスピナーを用いて加速度センサの制御を行えるように変更しました。

#アプリケーションのGUI
このアプリケーションでは、三軸(X,Y,Z)の加速度センサの値をUDP通信で送る。端末内で加速度センサを用いた制御をラジオボタンとスピナーを用いて行えるようにしました。なお、ラジオボタンで制御項目を設定しているので、軸を一つずつしか制御できません。

#アプリケーションのGUI
ASUSTab K013の場合

#ソースコード

ソケット通信を行うので、Androidmanifest.xmlに下記を追加する。

“`xml:Androidmanifest.xml
javaにおけるcharの扱い方まとめ

javaで競技プログラミングをする時に、char型の扱い方がややこしいと感じたので、まとめようと思った。

### char型はint型にキャストできる
char型には16進数のUnicode文字が格納されている。
このとき、char型はそのUnicode文字を10進数に直した際の数値を持つ。
例えば、int型の変数にchar型の’1’を代入すれば、49という数値としてとして扱うことができる。

“`java
int c = ‘a’;
System.out.println(c);
//49が出力される
“`

### 対応する数値からcharに変換する
(char)(数値)でその数値に対応するcharになる。

“`java
char c = (char)97;
System.out.println(c);
//’a’が出力される
“`

### char型の数字をint型に変換する
数字を羅列した文字列からString.charAt(index)で数字をchar型として取得した時など、char型の数字をint型に変換したい場合がある。
前述のように、char型をそのままint

元記事を表示

さくらのVPSにTomcatをインストール

#前提
筆者自身よくわからないまま2日粘ってやっと動いただけのレベル。難しい。
レンタルサーバーでphpを動かせる程度のLinuxとvimの操作ができる。
さくらでVPSの契約は完了している。
さくらのwebコンソールでCentOS7をインストール済み
apacheをインストール済み
ここまでがまだの場合、
[ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!](https://knowledge.sakura.ad.jp/8218/)
を読んでその通りにする。ここまでは簡単。

そのあとは主に
[Apache Tomcat 9 を CentOS 7 にインストールする手順](https://weblabo.oscasierra.net/installing-tomcat9-centos7-1/)
を参考に進めていく
ここでは筆者が詰まったことしか追記しないので上記できなかった場合のみ戻ってきてください。

#大きくやること(依存関係があるので上から順番にやらないと失敗するかも)
Javaをインストール
TomCatをインストール
ターミナルからfirewallを

元記事を表示

Excelファイルの内容をJUnitでテスト

POIライブラリを用いてHttpServletResponseに出力したExcelファイルの内容をJUnitでテストする方法。
responseからの読込にハマったので備忘として残します。

testクラスではMockHttpServletResponseを用いてresponseを生成する。

“`
//テスト対象クラスへ渡すresponse
MockHttpServletResponse response = new MockHttpServletResponse();

//テスト対象クラスで処理したresponseから出力するExcelファイルをInputStreamで読込
InputStream inputStream = new ByteArrayInputStream(response.getContentAsByteArray());
“`

xlsx形式はバイナリファイルなので、
`HttpServletResponse`の`getContentAsByteArray()`を用いて`InputStream`で読み込む事ができる。

後は

“`
Workbook

元記事を表示

スペースあるパスのJAVA_HOMEの設定

#はじめに
JAVAは広く使っており、JAVA_HOMEの設定も開発者としてよくある作業です。
Windows上の設定手順はいっぱい記事があります。今回はスペースあるパスの設定を説明します。

#JAVA_HOMEの設定手順
##コントロールパネルを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346425/f51551b0-96ab-1297-2d9e-9771dc4ac4a4.png)

##システムとセキュリティを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346425/db62419b-ddcb-374c-1295-1888b1b97080.png)

##システムを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346425/ffe49ae7-5947-6874

元記事を表示

【Teeda】do~() メソッド→自画面遷移時のinitialize処理で変数の値を保持させる

業務でTeedaを使うことになりまして、タイトルの件で少し詰まったので、今後のための覚え書きです。

## やりたいこと
前画面から引き継いだ特定の変数の値をdo~() メソッドによる処理時、その後の自画面遷移時のinitialize処理でも保持させる(使用できるようにする)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/817c95e6-e15f-1f7e-fc7c-7331bfc8c1c9.png)

## 環境
* Java:バージョン1.8.0
* Teeda:バージョンXX(後ほど確認して記載)
* OS:Windows10

## Teedaの仕様
公式サイトより、関連のありそうなTeedaの仕様は以下の通り。
### ページスコープ
* ポストバック (自画面表示) や ポストバック (リダイレクト) ~ リダイレクト表示 で同じページを表示している間維持されるスコープ
* 初期表示 や リダイレクト表示 で開始され、他のページがリクエストされると破棄さ

元記事を表示

Minecraft Forge 1.15.1でModdingをしてみる① 【開発環境の構築】【複数バージョン対応】【IntelliJ IDEA】

#はじめに
最近はバニラのアップデートが頻繁で、それに伴い仕様変更も多いですが、
環境の構築は今までとさほどやり方は変わりませんのでそんなに難しくはありません。
1.15のForgeは解説がめちゃくちゃ少ない上、まだベータ版で安定した動作が保証されていないので自己責任でお願いします。

なお、この記事の内容のほとんどは、**多くのバージョン、環境で共通です。**違うことはIDEやバージョンによって、叩くコマンドが違うだとかそんなくらいです。

とりあえず、この記事は1.15.1がメインなのでその解説から始めます。

#開発環境
– Windows 10
– JDK 8u161
– Minecraft 1.15.1
– Minecraft Forge 1.15.1-30.0.16
– IntelliJ IDEA 2019.2.4

#JDKをインストールしよう

[こちら](https://www.oracle.com/technetwork/java/javase/downloads/index.html)からJDKをダウンロードしましょう。
Oracleプロファイルにログインする必要

元記事を表示

Javaからの監視入門 Prometheusに触れる

### Prometheusって何?

Pull型の監視システム。OSS。
メモリ、CPUの使用量などが監視できるシステム。

### プル型の監視システムって何?

通常の監視システム(Meckerel,Sensuなど)は、
監視する側にエージェントをインストールして、監視サーバーへ情報を送る。

反対にPull型は、監視サーバーが監視する側から情報を取得する。

#### メリット・デメリット

Push型

[メリット]
・監視対象にアプリをインストールだけで簡単
・監視対象が増えてもサーバーの設定変更が少ない

[デメリット]
・監視量が増えると、監視サーバーの負荷が多い

Pull型

[メリット]
・監視対象がダウンしていることがPush型より簡単に分かる
・監視サーバーの負荷がPushより低負荷

[デメリット]
・監視対象のエンドポイントを設定しないといけない。単純インストールだけではない。
・監視対象が増えると、都度設定が必要

#### 今回のゴール

Springのアプリケーションで、Promethusにデータを連携して、
Grafana(グラファナ)でいい感じに

元記事を表示

乱数の作成(Math.random();)

# 乱数の作成

Javaの勉強の一環として「Hit & Blow」を作成するにあたって答えを作成するのに乱数が必要になったのでその時得た知識を少々アウトプットします。

### 【とりあえずの乱数が必要な時】

私が作成した「Hit & Blow」は、0〜9までの数が必要だったので以下の**「Mathクラス」**を使用しました。

“` java:qiita.java

Math.random();
“`

このように**「Mathクラス」**を使用することで0.0〜1.0未満のdouble型の乱数を取得できます。

例えば、

“`java:qiita.java

(int)(Math.random() * 10);
“`
といったようにすれば0〜9の乱数が得られる。(ちなみに最初の(int)でintにキャストしています)

##まとめ

いかがでしたでしょうか。

今回の記事では**「Mathクラス」**の使用でとりあえず乱数を取得するというものを紹介いたしました。

もちろん乱数の取得には他にもあるのでもっと詳しく知りたい方は調べてみてください。

またまだまだ初心者な

元記事を表示

GraphQLでMutation

本記事では「[Spring BootでGraphQLを実装する](https://qiita.com/NagaokaKenichi/items/2770b151e86fb65ea11d)」で使ったサンプルアプリを例に記述します。

## Mutationのスキーマ定義
まずMutationの命名はアプリケーションと紐づく動詞が望ましいです。今回は、id、name、pageCountの3つを引数に取り戻り値はBook型のスキーマを定義してみます。
※この後の説明の都合上、nameフィールドは必須、それ以外は非必須となる引数としています。
※「!」の詳細は「[GraphQLのスキーマと型定義のエクスクラメーションマークの意味](https://qiita.com/NagaokaKenichi/items/d341dc092012e05d6606#%E3%82%A8%E3%82%AF%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%

元記事を表示

OTHERカテゴリの最新記事