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

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

シンプルになぜinterfaceを使うのかを考察

#それは実装をシンプルにして部品化を促すため
interfaceはカオスな**現実世界**と**実装**をつなぐ、あるいは分離する役割を担っています。
部品化しやすくするために、実装はできるだけシンプルに

#interfaceでは多重継承を許し、一般クラスでは許さない理由
interfaceはカオスな現実世界に近い業務や機能の**仕様**を記述するため、多重継承を許容することで、実装レベルの一般クラスの複雑化を代替します。

元記事を表示

GraphiteとStatsDを使用して、インフラ監視

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/94be852e-dc19-b0f2-a19e-eedacbe0cdb3.png)

#はじめに

サーバー、アプリケーション、およびトラフィックに関するメトリックを収集することは、アプリケーション開発プロジェクトの重要な部分となります。 本番システムでは問題が発生する可能性のある多くの問題があり、データの収集と整理は、インフラストラクチャのボトルネックと問題を特定するのに役立ちます。

この記事では、GraphiteとStatsD、およびそれらがモニタリングインフラストラクチャの基礎を形成するのにどのように役立つかについて説明していきます。 MetricFireの[無料デモ](https://www.metricfire.com/demo/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Monitoring%20your%20infrastruc

元記事を表示

{Java} String型配列の要素一つをInt型に型変換する方法

例えば従業員の情報を、名前、年齢と入力されそれを一つの配列にScannerを使って代入すると
yamada 20

Scanner sc = new Scanner( System.in);
String[] employee = sc.nextLine();

となるが、年齢を変えたいのにInt型にキャストしなくてはならない
そこでInteger.parseIntメソッドを使う

 int age = Integer.parseInt( employee[1]);

これでString型からInt型へのキャストは終了
たとえば1歳年を増やしたければ

 int addAge = Integer.parseInt( employee[1] ) + 1;

となる。
()内は引数なのでもちろん普通の変数でも問題ありません。

元記事を表示

JSFで文字列のリストをカンマ区切りの文字列で出力する方法

– 環境
– CentOS Linux release 7.8.2003 (Core)
– openjdk version “11.0.7” 2020-04-14 LTS
– JSF 2.3.9

![スクリーンショット 2020-09-24 22.48.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/08f66c13-a894-b679-d827-870e591bf70a.png)

# 方法1 : Beabでカンマ区切りの文字列用にGettrを作る
参考 : [Javaでカンマ区切りで文字列連結するいくつかの方法 – Qiita](https://qiita.com/shisama/items/b27d16b3aeb1baf055b1)

“`xml:xhtml

文字列のリストをカンマ区切りの文字列で出力する

Oracleの機械学習OSS「Tribuo」を試してみた

# はじめに

先日、OracleがJavaによる機械学習ライブラリーをオープンソースで公開したというニュースを目にしたので、軽く触ってみました。

– [CodeZineニュース – Oracle、Javaによる機械学習ライブラリ「Tribuo」をオープンソースで公開](https://codezine.jp/article/detail/12911)
– [マイナビニュース – Oracle、Java機械学習ライブラリ「Tribuo」を発表 ](https://news.mynavi.jp/article/20200916-1309101/)

これを見ると、機械学習の一般的なアルゴリズムに加えてXGBoostなども使えるようです。

![HeroAnimation_V2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43869/aec7ab21-355f-f4ba-f037-d8dbcc62dae5.gif)

# 特徴

公式サイトのトップページには以下の3つの特徴が挙げられています。

– 来

元記事を表示

SpigotをVSCodeで書く

#SpigotをVSCodeで書く
マイクラのプラグインを作りたい。でもEclipseは使いたくない、VSCodeを使わせろって人向けに[SpigotMC公式wiki](https://www.spigotmc.org/wiki/creating-a-blank-spigot-plugin-in-vs-code/) を雑に日本語訳したものです。
多少の意訳および自分の環境[^1]でうまくいかなかった部分を動くように変更が入っていることをご了承ください。

##前提条件
1. VSCodeに [java Extension pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)がインストールされていること。
2. [OpenJDK](https://openjdk.java.net/)が入っていること。(java Extension packがOpenJDKを必要としています。)
3. [Apache Maven](https://maven.apache.org/)も必要

元記事を表示

2020年で最も需要のあるプログラミング言語

本記事は[Most in-demand programming languages in 2020](https://lampstudy.net/most-in-demand-programming-languages-in-2020/)の日本語訳です。翻訳元に報告していますが、もし苦情が来たら消します。
翻訳は不慣れなので変なところもあると思いますが、ご容赦ください。


![Most-in-demand-programming-languages-in-2020.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321705/bf03a2a8-203a-0198-e24d-8019b794c52d.jpeg)

ソフトウェア開発業界は絶えず変化しており、それは開発者の能力に対する企業のニーズも変化していることを意味します。そのため、あなたが想像できるように、Webアプリケーション、ゲーム、アルゴリズムなどのあらゆる側面の開発をカバーするために、選択できるプログラミング言語はたくさんあります。その

元記事を表示

【Java】二次元配列を拡張for文で回す方法

#拡張for文

“`java
for(型 変数名: 配列){
}
“`
:の右の配列を左の変数に代入しながらループを回すという手法を組み合わせて二次元配列を展開するにはどうしたら良いか、一瞬迷ったのと、PHPのように

“`PHP
foreach($datas as $key => $value){
 for($i = 0; $i < count($value); i++){ $value[i] = 0; } } ``` foreachを使うことも思い浮かべたけど、javaでは別のオブジェクトを生成しないといけないみたいなので、なんとかしたいなと思いました。 #拡張forを2回書けば済む話 ```java public class Control { public static void main(String[] args) { int[][] datas = { {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,0}, {0,0,0,0,0,0,1,1,1,1,0}, {0,0

元記事を表示

[Java] PDF閲覧設定

日頃PDFファイルを閲覧する場合、「フルスクリーンモードにするか、メニューバー/ツールバーを非表示にするか、またドキュメントのページレイアウトをどうのように設定するかなど・・・」という個人的な習慣によってプリファレンスを設定しますよね。今日、本文ではFree Spire.PDF for Javaを通してこれらのプリファレンス設定を実現させる方法を紹介します。

**JARパッケージのインポート**
**方法1:** [Free Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java-free.html)をダウンロードして解凍したら、libフォルダーのSpire.Pdf.jarパッケージを依存関係としてJavaアプリケーションにインポートします。

**方法2:** Mavenリポジトリから直接にJARパッケージをインストールしたら、pom.xmlファイルを次のように構成します。

“`xml


com.e-iceblue

元記事を表示

Dagger Hiltを踏まえたテストのプラクティス

Dagger HiltというGoogleがAndroid開発において推奨するDIライブラリ(JVM言語であれば使える)のこちらのドキュメントについてです。
https://dagger.dev/hilt/testing-philosophy
結構良いテストについて個人的に刺さる概念があったので、書いておきます。
またシンプルな部分以外のHiltの良いところが分かる気がします。

Dagger Hiltを踏まえたテストのプラクティスについて書かれている。
Dagger HiltのAPIや機能は何が良いテストを作るかの暗黙の哲学に基づいて作られている。ただ、良いテストというのが万人に受け入れられているわけではいので、Hiltチームにおいてのテストの哲学を明らかにするためのドキュメントとなる。

### 何をテストするのか
Hiltは外部の”**ユーザーからの観点でテスト**する”ことを推奨する。外部のユーザーとはたくさんの意味がある。本当のユーザーも指すし、クラスやAPIの利用者も指す。
大切なところは”実装の詳細を表現してはいけない”ということ。内部の実装に依存したテスト、例え

元記事を表示

【Eclipse使用】作成中のワークスペースを他のPCに移す際の注意

#備忘録と共有
プログラミング初心者の私が、Eclipseを使用してJavaでWebアプリケーションを作っていた時の事。
ワークスペース→プロジェクトを作成し、色々コードを書いていたのですが、違うPCで作業をしなくてはならなくなったため、ワークスペースごとコピーして別の端末に移して作業をしようとした際に起こった困った事。

###次のようなエラーが出てしまいました
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674523/36ecabc6-033e-75cd-21c7-753946474ecd.jpeg)

下部のマーカータブで、①javaのビルドパスの問題、②ファセット・プロジェクトの問題が出ています。

##前提・考察
Eclipseでは、ワークスペースの設定はワークスペースごとに.metadataファイルに保存される。
ワークスペースごとコピーして違う環境にデータを移した時に、移動先のEclipseと設定ファイルとの間で、上手く設定の受け渡しが出来なかったのか、上記のエラーがでてしまった

元記事を表示

Javaの配列について

## Java 配列
Javaの配列について学習しましたので、配列のメリットや使用例などアウトプットしていきます。

## 変数が持つ不便さと配列のメリット
今回は、点数管理プログラムを用いて変数と配列の使い方の比較をし、配列を使うメリットを解説します。

### 変数を使ったプログラム
“`java:test
public class Main {
public static void main(String[] args) {
int sansu = 20;
int kokugo = 30;
int rika = 40;
int eigo = 50;
int syakai = 80;
int sum = sansu + kokugo + rika + eigo + syakai;
int avg = sum / 5;
System.out.println(“合計点:” + sum);
System.out.println(“平均点:” + avg);
}
}
“`
### 実行結果
“`
合計点

元記事を表示

アリババのオープンソースのトラブルシューティングツール 「Archas 」

この記事では、**アリババ**のオープンソースの**トラブルシューティングツール「Archas」**の概要と主な機能、そして今日から使い始められる方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/troubleshooting-production-issues-with-alibabas-arthas_595426)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#Arthasの全機能とは
この記事を書いている時点では[バージョン3.1.1](https://alibaba.github.io/arthas/en/release-notes.html?spm=a2c65.11461447.0.0.26773774iloTj8)ですが、現在のバージョンのArthasの主要な機能を見てみましょう。Arthasは以下のことができます。

– クラスがロードされているかどうかのチェック
– クラスを逆コンパイルしてコードが期待

元記事を表示

AnsibleとJenkinsを使用してTomcat、Java、MySQLからなるイメージをデプロイ

このチュートリアルでは、**Ansible**と**Jenkins**を使用して、Tomcat、**Java**、MySQLで構成されたイメージを**Alibaba Cloud**上にデプロイします。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploy-an-image-using-ansible-and-jenkins_595440)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
1. 最低でも1台の[Jenkinsサーバ](https://www.alibabacloud.com/blog/ci%2Fcd-with-jenkins—part-1%3A-install-jenkins-on-ubuntu_593717?spm=a2c65.11461447.0.0.53a46c64aNElRK)が必要です(マスターのみまたはマスター/スレーブ設定の場合)。

そして、Jenkinsサーバのマスター/スレーブ(エ

元記事を表示

Ubuntu 18.04にWildFlyをインストールする方法

**WildFly** は、**Java** で書かれ、Red Hat によって開発されたフリーのオープンソースでクロスプラットフォームなアプリケーションです。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-wildfly-jboss-on-ubuntu-18-04_595554)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#必要条件
– Ubuntu 18.04デスクトップがインストールされた新鮮なAlibaba Cloudインスタンス。
– インスタンスにrootパスワードが設定されています。

#Alibaba Cloud ECSインスタンスを起動
[新しいECSインスタンスを作成](https://www.alibabacloud.com/help/ja/doc-detail/25424.htm)し、少なくとも4GB RAMを搭載したオペレーティングシステムとしてUbuntu 18.04を選択し

元記事を表示

【自分用メモ】BufferedReaderを使用したファイルの読み込み

FileReaderは一文字ずつ読み込むメソッド。
これをBufferingFilterを使用して、処理効率を上げよう!

“`java

package practice1;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Read {

public static void main(String[] args) {

//FileReader=1文字ずつ読み込む動き
//BufferedReader=一定数読んでため込んで、たまったら放出(普通は一行ずつ)

FileReader fr=null;
BufferedReader br=null;

//finallyメソッドでclose処理ができるように、tryメソッドの外側で宣言。
//もしtryメソッド内で宣言してfinallyメソッドでclose()しようとするとローカル変数重複になる。

try {
fr=new FileRe

元記事を表示

GCPのDataFlowを簡単に触ってみた記録

# Intro
Google Cloud Dataflowを触ることがあったので、備忘も兼ねてどんな感じだったか記録を残す。

# Google Cloud Dataflowって?
簡単に言うと、ストリーミングデータやらの操作・管理を取り持ってくれる[GCPのサービス](https://cloud.google.com/dataflow)です。
今回はPubSubで受けたデータをDataFlowを介してCloudStrageに配置しようと思います。
ログやトラッキングデータのような物が不特定多数postされ、それを保持したり後の分析に利用するようなケースを想定しています。

# 1.Pub/Subにトピックを作成
Pub/Subってまたストレートな名前ですが、こちらもGCPのサービスです。所謂メッセージングというかキューというか。
今回のデータの始点、ある意味トリガーとなります。
とりあえず普通にGUIのコンソールから名前をつけるだけです。

# 2.CloudStorageにバケット用意
今回の終点となる場所を用意しておきます。
新たにバケットを作るか、既存であれば任意のフォルダを用

元記事を表示

【自分用メモ】BufferedWriterを使用したファイルの書き込み

FileWriterは一文字ずつ書き込むメソッド。
これをBufferingFilterを使用して、処理効率を上げよう!

“`java

package practice1;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Write {

public static void main(String[] args) {

FileWriter fw=null;
BufferedWriter bw=null;

try {

//cドライブには事前にworkファイル作成しておく

fw=new FileWriter(“c:\\work\\filetest.txt”,true);
//workフォルダにfiletestファイルを生成。もしあればそれを使用する

bw=new BufferedWriter(fw);
/*行ごとに書き込むために、「ため込んで一定量ずつ放出する」

元記事を表示

【JavaとSQLをつなぐJDBCについて】

# はじめに
JavaとSQLをつなぐJDBC(Java Database Connectivity)の実装が難しかったので備忘録として残します。

##開発環境
・OS  
 Windows10
・エディタ
 Ecripse
・Java
 OpenJDK 8
・SQL
 MySQL

##1,JDBCとは
JDBC(Java Database Connectivity) はJavaとRDを接続しJavaから操作するためのAPIです。
JDBCという概念を利用してJavaからSQLへデータを登録、更新、削除したり、SQLからデータを取り出したり出来ます。
DBにはOracle、MySQL、SQLServer等様々な種類がありそれぞれDBへ接続する方法も、DBの種類によって
変わってきますが、JDBC経由でDBに接続するとDB毎の個性をほとんど気にせずアクセスできるようになります。

JDBCの歴史等わかりやすい記事があったので載せておきます。

今さら聞けないIT用語:やたらと耳にするけど「API」って何?

##2,実装
実装にあたり下記手順でJDBCを実装して

元記事を表示

【Java】JSON 通信 with jackson

# java で json の通信を行う (jackson を利用)
### 環境
– windows10
– eclipse:2020-06 (4.16.0)
– jackson
– java 1.8

例によって忘備録です・・・

## 順序
1. Dto 生成
2. jackson を使って Dto -> json に変換
3. HttpURLConnection を使って通信
4. 結果取得

## Dto 生成
“`java
public class SampleDto implements Serializable {
private static final long serialVersionUID = 1L;  // ちゃんと生成した方が良さげ

private int id;
private String mail;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMail() {

元記事を表示

OTHERカテゴリの最新記事