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

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

Java → Kotlinのチートシート

## はじめに
この記事は「**JavaからKotlinへの移行の際にこうすれば便利かな**」というものを軽く纏めてみたものです。
Qiitaで初めて記事を書くので至らない点もあると思いますが、温かい目で見てもらえればと思います。
また、「ここはどうなんだ?」って所があれば教えていただけると助かります。

### 環境
**Java**: 1.8.0_281
**Kotlin**: 1.4.20

## `Integer.parseInt`, `Long.parseLong` …
ユーザーから受け取った引数を数値型に変換したい時のアレです。
これにはエラー処理が含まれてないので[数値型かどうか検証](#数値型かどうか検証)も見てみると良いかもしれません。
### Java
“`java
String str = “123”;
Int i = Integer.parseInt(str);
Long l = Long.parseLong(str);
“`

### Kotlin
“`kotlin
val str = “123” // String
val i = str.toIn

元記事を表示

Javaでリサンプリングするだけ

PCマイクから8000Hz/16bitで取得し、線形補完による16000Hz/16bitにサンプリングする例です

“` java
import static java.lang.System.out;

import java.util.Arrays;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.TargetDataLine;
import javax.sound.sampled.DataLine.Info;

public class MicrophoneResamplingTest {

// SampleRate:8000Hz, SampleSizeInBits: 16, Number of channels: 1, Signed:true, bigEndian: false
public static final AudioFo

元記事を表示

【Java】ArrayListについて

#記述方法
ArrayListを使う記述方法は、以下の様に`<>`の中に格納したい型名を記述します。

“`Sample.java
import java.util.ArrayList;

public class Sample {
public void main(String[] args) {
ArrayList array = new ArrayList();
}
}
“`
#特徴
######宣言時のサイズ指定は不要
宣言時にサイズを指定しないため、データを追加しようとした時に自動的に追加されていく。

######インスタンスでないものは格納できない
例えば`int`型は使えないので、`Integer`を使用する。

元記事を表示

Java:「メインクラスを検出およびロードできませんでした」の解決法

#はじめに
当方はJavaの初学者で、今までは1つのソースコード内でクラスを作成しプログラミングを行ってきたが、学習が進むにつれてクラスの数が増えてきたため、パッケージを利用することにした。
しかし、パッケージを利用して同様の方法で実行しようとしたところ、少し手こずったため、備忘録として残しておく。
###現象
パッケージの利用で複数のソースコードをコンパイルし、実行しようとしたところ…
`・コンパイルはできるのに実行ができない!`
`・エラー: メインクラスを検出およびロードできませんでした`
`・原因: java.lang.NoClassDefFoundError: Sample2/Sample2 (wrong name: Sample2)`

#今までの実行方法

“`Sample1.java
class Student {
private String name;
public Student(String _name) {
this.name = _name;
System.out.println(this.name +

元記事を表示

kurento-group-callのサンプルにMCUを追加する

## 概要

Kurentoのインストールとサンプルアプリの起動を行った[前回](https://qiita.com/Otama75/items/7153607d3cde868aaf5c)からの続きです。

KurentoのTutorialには、kurento-group-callという多人数でビデオ会議を行うサンプルアプリケーションがあります。しかし、このサンプルの接続モデルはSFUで、MCUを実現したものがありません。そこで、オリジナルのkurento-group-callにMCUによる接続を追加し、合成後の映像ストリームもユーザに送るようにしたサンプルを作成してみます。

映像の合成は、Kurentoで提供されるCompositeMixerエレメントを使います。

今回作成したソースコードは[こちら](https://github.com/kozokomiya/kurento-group-call-mcu)です。

## パイプラインの構造

オリジナルのSFU版kurento-group-call (下の図左側)に、CompositeMixer(Compositeエレメン

元記事を表示

エラーハンドリング設計の鉄板4箇条と+α

#はじめに
自分自身、結構適当と言うか、
エラーハンドリング(例外処理)とログ出力(メッセージ)の設計を、
なんとな〜くやってたので、しっかりと調べてみやした。

本当だったら、
**どこでどんなエラーが起こって、どうやったら解決できるか**
っていう、
**エンジニアにヒントと希望を与えてくれるもの**なのに、

タスクが盛り盛りで、作ることだけに集中してしまうあまりに、
**運用と管理保守のことを軽視**してしまっておりました。

なんとも、Viciousスパイラル(悪循環)で、
後々自分が苦しまないように、しっかりと準備したいと思います。

(※もろもろ間違っておりましたらごめんなさい。勉強し直します。)

#1. エラー分類
大まかに分けるとエラーの種類は2つある。

###正常系エラー
例えば、トランザクション開始前のバリデーションチェックなど、
想定内として、入力エラー等を正常処理としてエラーハンドリングするケース

####正常系エラーは、例外は使わずに、ステータスコードを使うべし
なぜなら、例外処理は対応コストがかかるため、例外をthrowしない。
また、入力エラー

元記事を表示

M1 MAC × Docker × JAVA

#DockerでJAVA環境構築
Dockerfileを書いて、JAVAの環境を構築しようと思います。
Docker、JAVAともに初学者なので、ご教授お願いいたします。
#Dockerfile

“`Dockerfile
FROM ubuntu:latest
RUN apt update && apt install -y \
expect \
sudo \
wget \
unzip \
zip \
vim && \
printf “\
set timeout -1 \n\
spawn sudo apt install -y openjdk-14-jdk\n\
expect {\n\
\”Geographic area: \”{send\”6\”; exp_continue;}\n\
\”Time zone: \”{send\”79\”;}\n\
}\n\
exit\n\
” | expect
ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8
CMD [“/bin/bash”]
“`
#buildとrun
bu

元記事を表示

【Java】オブジェクトリスト (Collection) のプロパティ存在チェック

# オブジェクトリストのプロパティの値をチェックしたい
・毎回 For とかで回すのがめんどい
・汎用的に使えるようにジェネリクスを利用
・static にして jstl (jsp) でも手軽に使えるように

## チェック用関数
なんちゃらUtilsなどのクラスに作成(下記では ThisUtils)
・T1: リストに入ってるオブジェクトのクラス
・methodName: オブジェクトの値を取り出すためのメソッド名(例: getValue)
・T2 val: リストに入ってるオブジェクトの値をチェックするためのオブジェクト (例:getValue と比較する値)

“`java
@SuppressWarnings(“unchecked”)
public static boolean isCollectionPropertyContains(Collection list,
String methodName, T2 val) {

Logger logger = LoggerFactory.getLogger(ThisUtils.class);

元記事を表示

ポリモーフィズムって何?

# はじめに
現在、Rubyと並行してJavaの学習を行っています。
その中で、ポリモーフィズムという言葉がでてきたので学んだことを備忘録として残したいと思います。

# ポリモーフィズムとは

日本語では「多様性」という意味です。
1つの名前の複数のメソッドを対象に応じて定義できることなのです。

現状の私の知識では、「オーバーロード」「オーバーライド」の2点を学びましたので、
説明していきます。

## オーバーロードとは
同一のクラス内で同一名の複数のメソッドを定義すること。
区別の仕方は、メソッドの引数や、戻り値の型の違いで区別する。

下記のコードですが、同じクラス内に同名のメソッドがありますよね?
しかし、メソッドに引数があるかないかで呼び出すメソッドを区別しています。

“`java
class Parent{
//メソッド
void sample(){
System.out.println(“parent”);
}
// オーバーロードされたメソッド
void sample(String s){
System.out.println(“s

元記事を表示

Object→Map型変換

javaのオブジェクトクラスを変換するための処理です。(自分用メモ)

→Mapクラスへの変換

Object object = item.get(“obj”);
if (object instanceof Map) {
data = (Map) object;
}

どのクラスでも変換できるので、Stringに変換したい場合はStringに書き換えて使います。

元記事を表示

【VS Code】Spring Boot(Java 8)の開発環境を構築する

## はじめに
VSCodeの拡張機能が`Java 11(<= version)`じゃないと動作しない場面に遭遇したので、`Java 8`プロジェクトで開発されている方向けに手順を共有します。 ## 検証環境 - Windows 10 ## 1. VSCodeに拡張機能をインストール 適宜インストールしてください - [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) - [Spring Boot Extension Pack](https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack) - [Lombok Annotations Support for VS Code](https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok)

元記事を表示

Javaで学ぶアルゴリズム 第2弾:写像

# #Javaで学ぶアルゴリズム < 写像 >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第2弾として写像を扱う.

##写像
実は,中学校や高校の数学で見たことのある度数分布というのは,まさに写像である.以下にイメージ図を示す.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/5ca6609a-5ba9-6895-4f68-c4dbe4e3bdb1.png)
上図は,「0~100点までの特典を10点幅(0~9, 10~19, …, 90~99, 100の11ランク)で区切って,各ランクの度数分布(ヒストグラム)を求める」というものである.プログラムは後に示す.
つまり,**写像とは,スケーリングのように何か別の方法でそのものを表すといったもの**であるといえる.このことから,暗号化・暗号解読にも利用される.

#

元記事を表示

【Java】同一WindowsPCへの複数JDKの同居運用方法(我流)

# 1. 概要
Oracle社のJavaSEサポート有料化を受けて結構経つけど、**とりあえずOracleJDKを入れとけ**って流れは随分と変わったように思う。

その反面、Oracle一強から他ベンダーのOpenJDKを使い分ける必要なんかも出て来てしまい…。
そうすると、**初心者レベルが方々が割と環境をしっちゃかめっちゃ**にしがちなので、**打開策の一つとして自分の運用方法を晒してみる**事にした。
とはいえ、これは我流だからこの方法が絶対に正しいというつもりはないし、そこは鵜呑みにするんじゃなく、ちゃんと各自で判断して欲しいとは思う。

トラブルが起きて「ここを参考にやったんです!(僕は悪くありません)」
とか言われても気分が悪いので。

# 2. 目的
– 同PC内に複数のJDKを同居させる
– 開発に使うJDKを簡単に切り替える

# 3. やる事

## 3.1. 同PC内に複数のJDKを同居させる

### 3.1.1. JDKを入手してくる
とりあえず、JDKをダウンロードするのだが、インストーラタイプ(\*.msi等)は使わない。
**目的**を考えたら**当然

元記事を表示

JAVAのメリット3選

#JAVAのメリット3選
この記事ではプログラミング言語「JAVA」のメリットについて3つお伝えしたいと思います。

##1つ目のメリット どんなOSの上でも動かせる
JAVAには「**JVM(Java Virtual Machine:Java仮想マシン)**」というプログラムを実行するためのソフトウェアがあります。
JVMはプログラムをどんなOSでも実行可能な状態に変換してくれる便利な方です。

通常プログラミング言語はプラットフォームやOSごとにコンパイラが用意されていて動かせる環境に制限があるのですが。。。
なんと、JAVAならWindowsやMACなど環境に依存せず動かすことが可能になっています!
##2つ目のメリット オブジェクト指向
Javaはオブジェクト指向言語なので下記のようなメリットがあります。

* クラスを分けたり、パッケージを分けたりなどプログラムの開発・管理を細かく分割して行うことができる
* 機能ごとのメンテナンスがしやすい

こんな感じです。大人数で開発する大規模開発に向いている言語ですね。
##3つ目のメリット 求人数が多い
JAVAは求人数が多いです!

元記事を表示

MATLAB で PDF を分割する ~MATLAB 芸ができるまで~

**※この記事のコードは全て MATLAB R2020b で動作確認をしています。他のバージョンではうまく動かない可能性がありますのでご注意ください。**
 

つい先日、「MATLAB でPDF を分割する」というコードを書く機会があったので紹介します。

ついでに、せっかくなのでどういう流れで MATLAB のコードが完成したのか、についてもまとめてみました。

# 今回やったことの紹介
「複数の書類がまとまった PDF ファイルを読み込んで、書類に記載されている番号ごとにまとめて自動で分割したい」

と相談を受けたので、MATLAB でスクリプトを書きました。

イメージとしては、以下のように同じ形式の書類が 1 ページずつまとめられている PDF を、ID ごとに分割して保存するような感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482141/8ef0f257-ffef-4f58-4597-c8493aab6640

元記事を表示

いろいろリンク集

##### Jackson Date

Jackson Date

##### Jackson – Custom Serializer

Jackson – Custom Serializer

##### Pythonで階乗、順列・組み合わせを計算、生成
https://note.nkmk.me/python-math-factorial-permutations-combinations/

“`python
import itertools
l = [‘a’, ‘b’, ‘c’, ‘d’]
for v in itertools.permutations(l, 2):
print(v)
# (‘a’, ‘b’)
# (‘a’, ‘c’)
# (‘a’, ‘d’)
# (‘b’, ‘a’)
# (‘b’, ‘c’)
# (‘b’, ‘d’)
# (‘c’, ‘a’)
# (‘c’, ‘b’)
# (‘c’, ‘d’)
# (‘d’, ‘a’)
# (‘d’

元記事を表示

仮想マシンの目指してた未来とコンテナーの現在

# ここで書いていないこと(はじめの前に)

タイトルから、[VMWare](https://www.vmware.com/jp.html)/Hyper-V/KVMやクラウドの仮想マシンと、コンテナーの比較の記事に見えるかもしれないが、ここで書く仮想マシンはJava仮想マシン、.Net仮想マシン(CLR)を扱う。

# はじめに

現在はコンテナーのブームであることはご存知だと思う。それはコンテナー・オーケストレーションであるKubernetesの登場で決定的になった。
コンテナーが目指していたことは、他の仮想マシンでも目指していた思想と一致する部分がある。
本記事ではそういうコンテナーで実現できたものと、過去の仮想マシンとの比較を記事にする。

# コンテナーの目指しているもの

コンテナーはImmutable Infrastructureという考え方のもと、ポータビリティーのあるイメージを配布する仕組みをもつ。
このポータビリティーはコンテナが好まれる性質のひとつである。

過去の仮想マシンでもこのポータビリティーは大きな目標であったが、コンテナーほど大きなムーブメントにはならなか

元記事を表示

Lombokの設定方法

Springのアノテーションは使えるのに@Dataが使えない理由について調べたところ、Lombokをインストールする必要があると知りました。今回はpom.xmlに追加することで使えるように設定しました。

#前提#
・Spring starterプロジェクトで新規作成する
・ビルドツールにMavenを使用する

#設定手順#
1pom.xmlのdependencies内に下記を追加する。


org.projectlombok
lombok
1.18.8
provided

もし追加したのに動作しない!追加したのに認識してくれない!等があればMavenプロジェクトの更新を行ってみてください。
(プロジェクトを右クリック>Mavan>プロジェクトの更新)

あと、バージョンが古い!って怒られますが気になる方は最新のバージョンに書き換えてみてください。

元記事を表示

【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その③(最終回)

##初めに

[【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その①](https://qiita.com/AIM-Z/items/4848e061f21eacf0e815)
[【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その②](https://qiita.com/AIM-Z/items/4f94257bca30beec2cea)
の作業の続きの記事になるのでそちらを読んでからお越しください。

##STEP7 : jdbcドライバのダウンロードと配置
MySQLのjdbcドライバを以下からインストールする
https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.20
![スクリーンショット 2021-02-09 0.35.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/2a724acf-79b5-cbee-e551

元記事を表示

1時間以内にSpring bootでAPIを作る手順

#はじめに
Spring bootでのこういう系の記事はたくさんあるので、何番煎じになるかわからない内容ですが、
とにかく高速でAPIを作れるよう手順化しておきます。
昔話ですが、諸事情でAPIが緊急で必要になり、
固定値しか返さないAPI(今回紹介している手順)を20個ほど作って、テスト環境にデプロイしたところ
半日くらいで作ったのでとてもびっくりされたことがありました。
記事を読めばわかると思いますが、大した事はやっていないので、錯覚資産としてさらっと覚えておくとよいかもです。

#プロジェクト生成~起動確認

####Spring Initalizrでプロジェクトを作成
https://start.spring.io/

– Project → Gradle Project
– Language → Java
– Java → 2.4.2
– Packaging → Jar
– Java → 11

####ダウンロード・解凍したら、eclipseを開き、プロジェクトを読み込む。
– 「プロジェクト・エクスプローラー」上で右クリック → 「インポート」
– 「Gradle」の「

元記事を表示

OTHERカテゴリの最新記事