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

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

ApachePOIを導入する話

ApachePOIにかなり躓いたので備忘録的に
導入の手順を残しておくことにする

まず、ApachePOI通称ぽい
(海外の方がYoutubeで説明している動画を閲覧すると
「ぽぉぉい」と何度もいうのでだんだんじわじわ来る)

使用している開発環境に導入することで
Excelとの連携が取れ
【Xlsx】や【Xls】といったエクセルファイルの
操作が行えるというものである

今回の使用環境
===================================
Eclipse
ApachePOI5.0.0
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

まずは
ApachPOIをDL(https://poi.apache.org/)
よりdownloadのリンクをクリック
binaryとsourceの両方があるが
迷ったらsourceをDLしろというのは個人的鉄則

(開発者用などの機能がふんだんにある可能性もあるが
必要なファイルの漏れなどはなくなる可能性が高くなる)

その後解凍すると
poi-*.*

元記事を表示

docker+opcua+griddbで簡単なシステムを考えてみる

## はじめに
docker環境で設備から取得した値をopcuaに集約し、定周期でGridDBに蓄積する超簡単なシステムを考えてみます。
(設備はないので適当な値をopcタグに書き込みます)
イメージは↓の感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168779/b945c7ac-1a6f-0d64-b654-1ceb2f267b8d.png)
[GridDB プログラミングチュートリアル](https://www.toshiba-sol.co.jp/pro/griddb/docs-jp/v4/GridDB_ProgrammingTutorial.html)を自分なりにアレンジ加えた感じです。
家でお勉強用にちゃちゃっとやったやつなので全体的に適当です。
またもや自分の備忘録ですね。

## sample
[mototoke/opc-ua-griddb-docker](https://github.com/mototoke/opc-ua-griddb-docker)にソース

元記事を表示

【Java発展学習12日目】テストの分類とその品質保証、リファクタリングについて

# 品質段階
プログラムの開発品質を判定する段階は、以下の通り。

| 段階 | 状態 | 内容 | 判定方法 |
|:-:|:–|:–|:–|
| 1 | コンパイルエラー | 文法上の誤り | コンパイル |
| 2 | ランタイムエラー・異常終了 | プログラム実行中に異常終了が発生 | テスト |
| 3 | 仕様非準拠 | 正常終了するものの仕様通りでない | テスト |
| 4 | 完成 | 全機能が仕様通りに正常終了 | テスト |

# 4段階のテスト
`テスト`を**段階別**に分類すると、以下のようになる。

| テスト | テスト対象 |
|:–|:–|
| `単体テスト(UT; Unit Test)` | ある一つの「クラス」または「機能」 |
| `結合テスト(IT; Integration Test)` | 単体テストが完了した複数の「クラス」・「機能」 |
| `総合テスト(ST; System Test)` | 結合テストが完了した全ての「クラス」・「機能」 |
| `受け入れテスト(UAT; User Acceptance Test)` |

元記事を表示

Couchbase Java SDK解説:分散トランザクションプログラミング入門

## 概要

分散トランザクションによって、複数のドキュメントにまたがるドキュメントの変更(ミューテーション )、つまりインサート、リプレース、およびデリートに対して、一つトランザクションスコープ内で実行することができるようになります。トランザクションがコミットされるまで、これらのミューテーションは、他のトランザクション(Couchbaseデータプラットフォームの他の部分のどこにも)に反映されません。

Couchbaseの分散トランザクションは、次のような特徴を持ちます。

– 開発者がトランザクションをロジックのブロックとして表現できる、高レベルで使いやすいAPI。
– 高いパフォーマンスとスケーラビリティをサポートするための、リードコミットの分離レベル。
– エラー処理(他のトランザクションとの競合に関するものを含む)

## 要件
### 製品バージョン
– Couchbase Server6.6.1以降
– Couchbase Javaクライアント3.1.5以降

### 前提
– Couchbaseクラスターの全てのノードが同期するようにNTPが構成されている
– アプ

元記事を表示

JEP 400: UTF-8 by Default

動きがあったので備忘。

https://openjdk.java.net/jeps/400

* file.encodingやnative.encoding(SE 17以降)で
Java SE API default文字セットに一律:UTF-8が指定される仕様変更。
従来はplatform defaultでした。
* JEPで提唱の通り、主にアジアロケール設定のWindowsユーザに影響あり。
つまり日本っすね。。。

>In other environments, the risk of changing the default charset to UTF-8 after more than twenty years may be significant.
We expect the main impact will be to users of Windows in Asian locales, and possibly some server environments in Asian and other locales.
Possible scen

元記事を表示

Java Stream API を無頓着に使うのはやめよう

# はじめに
Java 8で導入されたStream APIはとても便利なので、筆者もふだんから開発で活用しています。
ところが、Stream APIを使うことで逆に可読性が落ちたり、見通しが悪くなっているコードというのもしばしば目にします。
本稿では、可読性が高く見通しの良いコード(クリーンコード)を書くためのテクニックを紹介します。

なお、本稿のソースコードはAdoptOpenJDK 16で動作確認をしました。

# こんなコード書いてませんか?
簡単なサンプルとして、以下のレシピ検索サービスの実装を題材にします。

“`java:RecipeService.java
// レシピ検索サービス
public class RecipeService {

private Recipes recipes;

public RecipeService(Recipes recipes) {
this.recipes = recipes;
}

// 指定した材料を含み、指定した時間(分)内に作れるレシピを、評価の高い順に3つ推薦する

元記事を表示

[Processing] 筒を描く

#こんな
![Tubeクラス.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554244/6fc97e26-2d8d-806d-d7e0-7c341c76bee2.gif)

#プログラム

コンストラクタの引数はとりあえず2種類
`Tube(半径,淵の厚さ,長さ,角度)`
`Tube(半径,淵の厚さ,角度)`

使う時は
`tube.draw(角度);`
`tube.draw();`

難点はインスタンス生成時にstrokeとfillが決まること

“`Tube.java
Tube t;

void setup() {
size(800, 800, P3D);
frameRate(30);
t = new Tube(200, 50, 500, 360);
}

void draw() {
background(50);
translate(width/2, height/2);
rotateY(frameCount * 0.016f);
t.draw(frameCount

元記事を表示

デザインパターン勉強会⑤Singleton

はじめに

ZOOM勉強会の議事録です。
「増補改訂版Java言語で学ぶデザインパターン入門」を読んで、プログラム作成・パターンの理解を行います。
第5回はSingletonです。

Singleton

インスタンスが1つしか無いことを保証するパターンです。
Singletonクラスの役割は以下です。

  • Singleton
  • 唯一のインスタンスを提供するクラス

また、コードは以下です

元記事を表示

【Java】【Kotlin/JVM】整数へのキャストでの丸め

https://qiita.com/neonemo/items/0e27cccd845630e02edc

↑この記事を見て、そういえばよく忘れるなぁと思ったのでまとめておく。

Java と Kotlin/JVM で浮動小数点数を整数にキャストすると
端数は `0` に近づける方向に切り捨てられる。

“`Java:Java
System.out.println((int) -0.75); // > 0
System.out.println((int) -0.25); // > 0
System.out.println((int) +0.25); // > 0
System.out.println((int) +0.75); // > 0
“`

“`Kotlin:Kotlin/JVM
println((-0.75).toInt()) // > 0
println((-0.25).toInt()) // > 0
println((+0.25).toInt()) // > 0
println((+0.75).toInt()) // > 0
“`

The J

元記事を表示

【Java発展学習11日目】標準的な開発ツール

# Javadoc
`ソースコード → プログラム仕様書`の自動生成を行う開発ツール。

## Javadocコマンド・オプション
[参考: javadocコマンド](https://java-code.jp/49)
`ターミナル`等のコマンドラインツールで`Javadoc`を出力するコマンド・オプションは、以下の通り。

“`zsh:Javadocの出力
% javadoc <オプション> <.javaファイル>
“`

| オプション | 内容 |
|:–|:–|
| `-d <出力先パス>` | `Javadoc`ドキュメントの出力先を指定 |
| `-private` | `private`メンバを出力対象に加える |
| `-encoding` | `ソースコード`の文字コード |
| `-docencoding` | `Javadoc`ドキュメントの文字コード |
| `-charset` | `Javadoc`ドキュメント閲覧時の文字コード |
| `-author` | `@author`タグが付与されるクラスの**実装者**を出力 |
| `-version`

元記事を表示

Javaの環境構築(EclipseとSQLServer)

# はじめに

# 目次

– Eclipse
– SQLServer

# Eclipseの環境構築

下記からEclipseをインストールします。

https://mergedoc.osdn.jp/

ダウンロードしたdmgファイルを開いてドラッグ&ドロップします。

![スクリーンショット 2021-07-14 16.35.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663458/3c808a88-c39f-6579-9d56-11d1cad449eb.png)

アプリケーションフォルダ内のEclipseを右クリックして起動
ワークスペースのためのディレクトリ選択はそのまま起動

![スクリーンショット 2021-07-14 16.38.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663458/ac593834-7538-bbe0-2447-9e63fcd035e8.png)

# Eclips

元記事を表示

【備忘録】java基礎のおさらい① 形式編

java基礎のおさらい

はじめに

何かの間違いで、この記事を見つけてしまった初学者の方へ
これは私が私のためにわかりやすくまとめたものであって,
当方、生後1か月未満のエンジニアのため、もしかしたら違う解釈をしている可能性があるので、あまり本気で参考にするのは控えたほうがよろしいかと思いますっていう忠告です。
あと大体理解したつもりだったのですが、どうやらまだまだ全然くそったれだったのでシリーズ化とします。

java 基本的なルール

命名のルール

  • 変数名:例) sampleApple

    最初は小文字、二単語の組み合わせなら単語の初めから大文字

  • クラス:例)SampleApple

    最初とつなぎ目だけ大文字

  • 定数:例)SAMPLE_APPLE

    全部大文字

修飾子のルール

  • public:どこから
元記事を表示

未経験入社1ヶ月でJava silver11に合格した話【合格体験記】

##はじめに
IT業界未経験で4月に入社して、1ヶ月ほどでJava silverに合格できたので、勉強方法や過程など書き残していきます。
##勉強期間
勉強開始:2021年3月上旬
合格:2021年4月下旬
入社前から勉強はしていたので、2ヶ月弱ほどで合格できました。
##勉強前の自分のレベル
Javaとか勉強したことがない。
HTMLとかCSSなどのフロントの言語を書いたことあるくらい。

Javaど素人の状態で挑戦がスタートしました。
##使った参考書
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-1Z0-815/dp/4295007625/ref=asc_df_4295007625/?tag=jpgo-22&linkCode=df0&hvadid=342700130622&hvpos=&hvnetw=g&hvrand=10359434607073053707&hvpone=&hvptwo=&hvqmt=&hvdev=

元記事を表示

【Java発展学習10日目】MySQLを用いたデータベースアクセス

# MySQLのインストール(Mac)
[参考: MacでMySQLを扱う方法](https://qiita.com/fuwamaki/items/194c2a82bd6865f26045)
Mac環境で`MySQL`を利用する場合は、`Homebrew`を通じてインストールを行う。

“`shell:MySQLのインストール(Mac)
# Homebrewを用いたMySQLのインストール
% brew install mysql

# MySQLのバージョン情報
% mysql –version
> mysql Ver 8.0.25 for macos11.3 on x86_64 (Homebrew)
“`

# JVM ⇔ データベースの連携
[参考1: JDBCドライバのインストール](https://style.potepan.com/articles/19389.html)
[参考2: MySQLでのデータベース作成](https://prog-8.com/docs/mysql-database-setup)
[参考3: Kotlin研修7日目](https://qi

元記事を表示

オブジェクト指向(Part2)

#クラスメソッド

インスタンスに属する情報はインスタンスフィールドでしたが、クラスに属するのは
クラスフィールドと言います。
クラスフィールドはpublic static データ型 変数で表します。
クラスフィールドを呼ぶ時はクラス名.クラスフィールド名で表します。

同様にクラスに属するメソッドをクラスメソッドと言います。
クラスメソッドの時はpublic staticのようにstaticを付けます。
クラスメソッドはインスタンスを生成する前でも呼び出すことができます。

#コンストラクトのオーバーロード

コンストラクタはオーバーロードすることができます。
引数の数が違えば、どちらのメソッドをとっていいかが分かるようになります。

コンストラクタの中で、他のコンストラクタも呼び出すことができます。
呼ぶ時はthis()を使って呼ぶことができます。その時はコンストラクタの先頭に置くようにして下さい。

もし、データが入ってない時はnullを使って表しましょう。

#カプセル化

カプセル化とは使い手に必要のないモノは隠しておきましょうという考え方です。

具体的にはフィールドとメソ

元記事を表示

【Java発展学習9日目】Java標準ライブラリを用いたネットワークアクセス

# ネットワーク通信における低水準(low-level)と高水準(high-level)
[参考: java.netパッケージ](https://docs.oracle.com/javase/jp/16/docs/api/java.base/java/net/package-summary.html)
`ネットワーク通信`を行う`java.net`パッケージの`API`は、以下の2つに分類される。

| API水準 | 内容 | クラス |
|:-:|:–|:–|
| `低水準API` | IPアドレス | ・`Inet4Address`
・`Inet6Address` |
| | ソケット | ・`Socket`
・`ServerSocket`
・`DatagramSocket`
・`MulticastSocket` |
| | インタフェース | `NetworkInterface` |
| | プロキシ | `Proxy` |
| `高水準API` | URI | `URI` |
| | URL | `URL` |
| | 接続 | ・`UR

元記事を表示

【Java】意外と忘れていた小数の切り捨て処理

# 0. INDEX
– 概要
– 意外と忘れていた小数の切り捨て処理
– あとがき

# 1. 概要
ふと、そういえば負の値の切り捨てってどうだったっけと思い立って検証してみました。

# 2. 意外と忘れていた小数の切り捨て処理

## 2.1. まずはJIS規格に当たってみる
切り捨ての規格は見つからなかったので、それに近い数値の丸め方(JISZ8401 : 数値の丸め方)によると、整数に丸めた場合(四捨五入とする)はこんな感じになる模様。
まあ、**絶対値で処理をする**と言えば分かりやすいか。

[経済産業省産業標準調査室(JIS検索ツール : 要アカウント)](https://www.jisc.go.jp/app/jis/general/GnrJISSearch.html)
https://www.jisc.go.jp/app/jis/general/GnrJISSearch.html

| 投入値 | 丸め後 | 備考 |
|——–:|——-:|:———|
| 100 | 100 | – |
| 100.12 |

元記事を表示

ポートフォリオの説明書

# ポートフォリオの説明書
## 目的
プログラミング学習の成果物として、前職の課題をテーマにポートフォリオを製作しました。
テーマは、”計測器の持出管理を一元化すること”になります。

## テーマ選定理由と前職の課題
テーマを前職の課題にしたのは、お世話になった職場に恩返しがしたかったという思いがあるのと、当時自身が
困っていた事をプログラミングでどう解決する事ができるのかを確認したかった為です。
前職では、計測器がどこにあるのか把握できていないという課題がありました。計測器には定期検査があるのですが、
その際に対象の計測器を探すロスが発生していました。1ヶ月に1回の作業になるのですが、慢性的に忙しい職場だったので、
このロスをどうにか改善したいと悩んでいました。

## 機能
* 計測器の登録
* ユーザの登録
* 計測器履歴の登録
* 計測器履歴のExcel出力
* 天気予報の表示
* 鉄道遅延情報の表示

## 使用方法
### 一般ユーザ
#### 使用の流れ
1. ログイン画面
1-1. 割り当て

元記事を表示

Java SE11 Gold 対策メモ –並列処理編

# 概要

– Java SE11 Gold 試験用にまとめていた自分用メモ
– [こちらの記事](https://qiita.com/leonis_sk/items/a378fc03e79c74d4727c)を参考にSE11版として作成しています。

>[Java SE11 Gold 試験範囲はこちら](https://www.oracle.com/jp/education/certification/1z0-816-jpn-31705-ja.html)

##スレッド
**スレッド**とは、プログラムを実行した場合の処理の最小単位のことです

+ javaでは指定したクラスのmain()メソッドを実行する際、新しくスレッドを生成している
+ プログラムの実行単位を複数のスレッドに分割して実行することを**マルチスレッド**と呼ぶ
+ スレッドの制御には**Threadクラス**と**Runnableインターフェース**を用いる
+ [**java.lang.Thread**](https://docs.oracle.com/javase/jp/7/api/java/la

元記事を表示

Java: QuartzScheduler やタスク定期実行

スケジューラ実行ができるライブラリ、Quartz。

http://www.quartz-scheduler.org/

http://www.quartz-scheduler.org/documentation/quartz-2.2.2/examples/ にサンプルがあります。

## Hello World

https://github.com/Flipkart/quartz/blob/master/distribution/examples/src/main/java/org/quartz/examples/example1/HelloJob.java
https://github.com/Flipkart/quartz/blob/master/distribution/examples/src/main/java/org/quartz/examples/example1/SimpleExample.java

を参照のこと。以下抜粋

“`SimpleExample.java
public void run() throws Exception {
Logge

元記事を表示

OTHERカテゴリの最新記事