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

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

初心者がVSCodeでSpringToolsSuite環境を作成する

## 目的

業務でSpringBootを使ったWEBAPIとお友達になりそうなので勉強のため
windows10環境にSpring tool suite 4の開発環境を作成。
とりあえずサンプルサイトを作ってみる。

| 種類 | 名前 | バージョン |
| :-: | :-: | :-: |
| IDE | [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) | 1.14.1 |
| プラグイン | [Spring Boot Extension Pack](https:\\/marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack) | 0.0.8 |
| プラグイン | [Java Extension Pack](https:\\/marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) |

元記事を表示

Javaのスレッドの数や状態を確認するコマンド

Javaアプリケーションサーバの保守運用をしていると、現在起動しているスレッドの数や状況を知りたいということがあります。一般的なJavaアプリケーションサーバであれば、何らかのヘルスチェック機能が付属していると思いますが、状況によってはそのような機能が利用できないこともあると思います。そのような状況で、どのようにすればスレッドの数や状況を知ることができるでしょうか?

# 例

以下の`Server.java`はJavaアプリケーションサーバを模したプログラムで、3つの子スレッドをforkします。

“`java:Server.java
import java.util.ArrayList;
import java.util.List;

public class Server{
public static void main(String[] args) throws InterruptedException {
// 3個の子スレッドをforkする。
List threads = new ArrayList<>();

元記事を表示

java クラス、インスタンス、オブジェクト

今日はざっくりと書いて行きます。
クラス、インスタンス、オブジェクトについて簡単に書きます。

# プログラムの状態
プログラミングに置いて
データは一塊の状態で考えるものとします。
そこでよく使われ、よく混乱しやすい三つの用語について説明します。

* オブジェクト→紙
* クラス   →記入フォーマットが書かれた紙 (身体測定用紙など)
* インスタンス→記入フォーマットにデータが書き込まれた紙 (個人情報が書かれた身体測定用紙)

ざっくり書くとこんな感じです。

## オブジェクト

世の中にある状態と振る舞いを持つひとまとまりもの。

クラスとインスタンスは両方とも
オブジェクトになります。

例:紙を想像して下さい。

## クラス

オブジェクトの共通の状態と振る舞いを集めた一つの型。設計書。

例:記入フォーマットが書かれた紙を想像してください。
  身長、体重、視力などの身体測定用紙がわかりやすいかと

## インスタンス
クラスから生成される実態。設計書から生成される実態。

例:身体測定用紙に個人情報が書かれた状態

元記事を表示

JMockit StringのコンストラクタでUnsupportedEncodingExceptionをmockする

# はじめに

カバレッジ100%達成しろというお達しを受けた底辺IT作業員が様々な制約から一つの答えを導き出した記録です。

# まとめ

そもそも引数にStringを渡しているせいなので、可能な限りCharsetを使うようにしよう。

# テスト対象コード

“`Java
try {
String foo = new String(“あいう”.getBytes(“Shift_JIS”), “Shift_JIS”);
} catch (UnsupportedEncodingException e) {
// ここを通したい
throw HogeException(e);
}
“`

# テストコード

“`Java
new MockUp() {
@Mock
void $init(Invocation invocation, byte[] bytes, String charsetName) {
if (Arrays.equals(“あいう”.getBytes(“Shift_JIS”), bytes && c

元記事を表示

【Kotlin】日時(Date)を安全に送信する/解釈する【JavaScript】

この記事は、[Java Advent Calendar 2019](https://qiita.com/advent-calendar/2019/java) 22日目の記事になりました。

`Java`とか言いつつ`JavaScript`や`Kotlin`の話が出てきますが、分量的には`DateTime API`の話が主なので大体`Java`です。

# 解決したい問題
以下の記事の通り、`JavaScript`の`Date`型には多くの罠があります。
日本人であれば「日時を送信したら1日巻き戻って届いた」的な状況は経験された方も多いのではないでしょうか?

– [JavaScript の Date は罠が多すぎる \- Qiita](https://qiita.com/labocho/items/5fbaa0491b67221419b4)

そんな罠だらけの`Date`型を安全に送信/解釈します。

# 解決方法
ものすごくざっくり言うと、規格に則って文字列として送信し、規格に則って文字列から解釈すれば安全に取り扱えます。
今回は例として、`ISO 8601`規格に則って処理を行いま

元記事を表示

やれるかも?Java EE

学校の課題で**Java Servletを使ってなんか作ろう!**みたいなお話が舞い込んできたので、それのお話。

僕はLaravelをよく使っていて、それのように使えるなぁと感じたので対応させながら紹介します。

# Servletがコントローラのような立ち位置
“`java
package servlets;

import models.Room;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(“/”)
publi

元記事を表示

Kotlinの開発環境構築とJavaからKotlinに移行する時のメモ

JavaからKotlinにシステム開発をシフトしていこうと思い、色々と調べた時のメモを残していこうと思います。
自分はサーバサイド寄りの人間でして、Kotlinのサーバ寄りの内容をまとめています。

# Kotlin(読み方「コトリン」)とは
Kotlinは、Javaの統合開発環境であるIntelliJ IDEAで有名なJetBrainsが開発したオブジェクト指向プログラミング言語です。言語構文自体はJavaとは互換性がない独自方式ですが、コンパイルされたコードはJava VM(仮想マシン)上で動作するため、**これまでのJava資産の多くを流用できる**という特徴を持っています。

「これまでのJava資産の多くを流用できるこれまでのJava資産の多くを流用できる」という点について、いままで、Javaを使ってきた人からすると過去の資産も流用できたり、環境も共存できるので、これからKotlinに移行していこうって思いになりました。

# 開発環境構築について
KotlinはIntelliJを使うのが主流的な流れになっていますが、自分はEclipse派なので、Eclipseを中心に開発環

元記事を表示

RecyclerView上のボタンを押した時の処理をリストごとに変化させる

#はじめに
Androidアプリ開発でリスト表示を作るためにRecyclerViewを利用しますよね。
RecyclerView上にボタンを設置して、リストから他の画面に遷移する時、**何番目のリストのボタンが押されたか**を知りたい時ありますよね。
RecyclerView.Adapter上で「何番目のボタンが押されたか」は割とすぐ取得できるのですが、それをMainActivityで使う時に少しハマったのでメモ。

#RecyclerViewについて
概要についてはこちらの記事が分かりやすかったのでこちらを参照ください。
[RecyclerViewの基本](https://qiita.com/naoi/items/f8a19d6278147e98bbc2)

#やりたいこと
– RecyclerView上にボタンを配置し、ボタンを押した時に画面遷移させたい。
– ボタンを押したリストの行数によって遷移先での挙動を変化させたい。

画面遷移する時のボタンを押した時の処理のイメージはこんな感じ。
遷移先の画面に対して、何番目のリストのボタンが押されたかを教えてあげたい

ちなみにRecy

元記事を表示

Webシステム構築(超基礎)②:APサーバ構築と基本動作

#目的
Webシステム構築を目的として、超基礎的なAPサーバの構築と動作を確認する。
(APサーバとしてはTomcatを利用する。)

#環境条件
– 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

セキュリティグループの設定等はいい感じに。

#構築手順
“`
ec2-userでログイン

rootユーザにスイッチ
$ sudo su –

openjdkパッケージの存在確認
# yum info java-*-openjdk

openjdkパッケージのインストール
# yum install -y java-1.8.0-openjdk
Complete!の出力を確認する。

javaのインストール確認
# java -version
openjdk version “1.8.0_232”
OpenJDK Ru

元記事を表示

SpringBoot + RedisでAPIへアクセス回数の制限機能を実装してみよう

### はじめに
いまのところはAPIインターフェースを使う場合はめっちゃ多いと思います。ところが、APIを呼び出すの回数は多すぎたら、サーバー側の処理は遅延になるかもしれません。何か悪い影響が起こるということです。
 今回はAPIへアクセス回数を制限するために、よく調べたり、深く考えたりしたうえでこの記事を書いていました。

### 環境
SpringBootの知識もRedisの知識も持っている必要です。

– Java
– SpringBoot
– Redis

### 方法
実装方針としては、主にSpringBootとRedisを用いてアノテイションの形で実装する。
細かいところはコメントアウトを見れば、分かると思います。

#### 1. アノテイションクラスを作成

“`java:AccessLimit.java
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.MET

元記事を表示

ImageJの基本的な機能まとめ

ImageJはNIHで開発されたJavaベースの画像処理ソフトウェアです。
生物学研究では標準的に使われています。

ImageJはオープンソースのため、多数のディストリビューションが存在し、特にFijiがよくつかわれます(Fiji is just ImageJといわれる)。
画像解析で「こういう処理がしたい」と思ったとき、Fijiにはその機能が大体は入っています。(ただし高度なものは除く。高度なことはMATLABかPythonで実装しましょう。)

以下ImageJを使っていくうえで基本的な機能をまとめます。

###Stack(スタック)
例えば動画を撮った場合には、imageJには複数の画像の集まりとして読み込まれます。保存の場合もtif形式であれば、複数の画像を一つの集まり(スタック)として1つのファイルに保存することができます。
スタックとしては動画のような時間軸方向のつながりもありますが、他にも深さ(z方向)を変化させた場合のスタック(つまり3次元データをスライスしてできたスタック)や、RGBのような波長の違いによるつながり(チャンネル)があります。
ImageJではこれ

元記事を表示

Minecraft Moddingのすゝめ「Moddingをしてよかったことと役立つサイト集」

#はじめに
私が初めてMinecraftを買ってもらったのが小学6年生、Modding― プログラムを書こうとしたのが
中学2年生の時だったと思います。当時は「Modってなんやねん!?」みたいな感じでしたので、
ひたすら適当なModで遊んで、次第に自分で作ってみたいと思うようになりました。
正直、めっちゃ高度なことはまだ全然できませんが、**挑戦してみてめちゃくちゃ良かったと思います**。

今回は私がModdingをやってみたことでマイクラのModdingだから良かったと思うこと、初めてModdingする上で参考になりそうなサイトをいくつか紹介したいと思います。

#ここがええ!

– **MinecraftやModdingをしている人とのつながりができた**
同じ趣味でできた人のつながりって案外強いもので、ひっさびさにお話したら、いろいろアドバイスを頂きました!
その人は高専出身なんですが、ちゃんとした専門知識を持っている人がいると本当に心強いです。

– **思うようにコードがかけた時の達成感が半端ない**
Minecraftってバージョン変わるごとにForgeの仕様だったりバニ

元記事を表示

ユニットテストの自動作成ツールを調べてみた(2019年末版)

# ユニットテストの自動作成ツールを調べてみた(2019年末版)

こんにちは。もうすぐ2019年も終わりですね。この記事は[ソフトウェアテスト Advent Calendar 2019](https://qiita.com/advent-calendar/2019/softwaretesting) の25日目の記事です。

前日の記事は、同僚の@ozhiro sanの[あなたが自動テストを行う目的は何ですか?](https://qiita.com/ozhiro/items/5aa95c6360a8930df325)でした。__感動した!__
さて、今日はユニットテストの自動作成ツールの現状について調べてみました。

## なぜ、調べようと思ったのか?

ユニットテストって大切ですよね?
ソフトウェアを日々開発、修正していく中で、ユニットテストは開発したソフトウェアの品質を確保するテストツールです。また、テスト実行は自動化できるので、テスト工数も削減できます。

しかし、ユニットテストを実行するためにはテストコードの開発が必要で、それなりに開発工数を必要とします。より網羅性などを求める

元記事を表示

sql oracle icuライブラリを使用した半角⇔全角変換ファンクション

# まえがき

java言語拡張機能を用いたユーザー定義ファンクションを作成した。名寄せに使えるとおもう。

# 参考文献

[Javaにおける文字列の全角⇔半角変換について](https://qiita.com/makimaki913/items/df745b85b802099a6e32)

[6.3.1 Javaクラスの作成または再利用](https://docs.oracle.com/cd/F19136_01/jjdev/running-Java-stored-procedures.html#GUID-525F68AB-415F-4AB1-A5ED-119820A6D985)

[DBMS_LOCK.SLEEPの代替SQLをいろいろ考えてみよう(Oracle)](https://qiita.com/tlokweng/items/475ab69d83ea72d80f8c#java%E8%A8%80%E8%AA%9E%E6%8B%A1%E5%BC%B5)

[6.3.2 Javaクラスのロードおよび解決](https://docs.oracle.com/cd/F19136_01/jj

元記事を表示

[Java] Observer Pattern

#緒言
[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/dp/4797327030/)を自分なりにアウトプットしていく記事になります.
書籍は古いので一部イジったりしています.今回はObserver Patternです.

#Observer #とは
書籍には「観察者」と訳されていますが,
ボクはシュタゲが好きなので,「観測者」と呼びます.
Observer Patternでは,観測対象,つまり被験者(Subject)の状態が変化すると,
観測者(Observer)に対して通知されます.**状態変化に応じた処理を記述するときに有効**です.
**Subjectは状態を持っている役**で,**Observerは状態変化を通知してもらう役**です.

Subject-Observerの関係はTwitterで例えると,
アイドル(Subject)の日常生活の呟きをフォロワー(Observer)であるボクらが見ている感じ.
![observerex.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

GCViewerの使い方メモ

久しぶりにJVMのGCログを確認するためにGCViewerを使ったのでメモを残しておく。

## 環境
– OS: Windows 8.1
– Java: java version “1.8.0_231”
– Gcviewer: gcviewer-1.36-SNAPSHOT.jar

## ダウンロード

以下のページでなるべく最新バージョンの「download | download mac version」のリンクをクリックし、ダウンロードする。
https://github.com/chewiebug/GCViewer/wiki/Changelog

Windowsの場合はjarファイルがダウンロードされるので、任意のフォルダに配置する。

## 起動

1. gcviewerのjarをダブルクリックする
![021.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556297/54f2fd29-b20c-5a51-95fa-449594d5e9c2.png)
→以下の画面が表示される

元記事を表示

JavaはExcel文書を作成します

Spire.XLS for Java機能が豊富なエクセルのセットです,JavaアプリケーションでExcelファイルの作成、編集、変換、印刷をサポートします。本論文では、Spire.XLS for Javaを使ってExcelファイルを作成し、データを追加する方法を紹介します。

使用ツール: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-insta

元記事を表示

VSCodeでJava開発環境を整える

# はじめに

VSCodeでJavaの開発を行う際、何も設定を行わないと使い物になりません。ネットとかで調べてもJavaが使えるようになるところまでしか紹介していない記事が多いので、ガチでJavaの開発をしたい人のために、設定すべき内容を紹介したいと思います。

# 前提
– [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)がインストールされていること

# プラグインのインストール

VSCodeでJavaを開発するためのインストーラーがありますが、これだけだと足りません。
他に便利なものがあるので紹介します。

– [Java IDE](https://marketplace.visualstudio.com/items?itemName=YouMayCallMeV.vscode-java-saber)
ClassやInterfaceなど、Javaに関連したファイルがクラス定義やパッケージが定義された状態で作成されます。

– [L

元記事を表示

今さらjavaのアノテーションについて理解した

##はじめに
業務でjavaのコードを書いているときに、@~~~という文字を何度も目にしてはいましたが、
「なんじゃこれ?まあいいや」って思って無視してました。
でもある時、「javadocとはなんぞや?」と思って調べて理解したら、一緒にアノテーション
も理解できたので、自分メモ用として投稿します。

##参考にしたサイト
以下のサイトが私を救ってくれました。ありがとうございます。
https://www.atmarkit.co.jp/ait/articles/1105/19/news127.html

元記事を表示

java 配列変数

今回は配列変数について書きます。

# 配列変数とは
配列が複数の値がまとまったものですが。
配列変数はそれを変数に入れて使用する方式です。

例はこちら

“`java:配列変数の例
public class Sample {

public static void main(String[] args) {
double[] d = new double[3];
double sum,avg; // 合計値、平均値を入れる変数
// 値を代入
d[0] = 1.2;
d[1] = 3.7;
d[2] = 4.1;
sum = 0.0;
for(int i = 0; i < d.length; i++){ System.out.print(d[i] + " "); sum += d[i]; //繰り返し構文で値を総ていれる。 } System

元記事を表示

OTHERカテゴリの最新記事