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

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

初心に帰ってJava入門②制御文、ループ文

#はじめに

本記事は、Javaの基礎を復習するアウトプットが目的の記事です。
お暇なときに読んでいただければ嬉しいです。

#色々な書き方ができる制御文
Javaでの制御文は大きく分けて、
・if文
・三項演算子
・Stream(ちょっと違うけど・・・)
・switch文
・booleanを返すメソッド
で行います。
今回は、上3つを解説していきます。

#if文
著名な言語では大体存在する文法です。
もちろんJavaにも存在します。

“`java:Control.java
public long secondCheck(List checkTarget) {
long count = 0L;
for(String target : checkTarget) {
if(target.length() > 3) {
count++;
} else if(target.length() > 5) {
count++;

元記事を表示

OpenTripPlannerとGTFSを利用して独自の乗り換え案内を作ってみた

#はじめに
OpenTripPlanner(以下、OTP)を経路探索エンジンとして利用して、独自の乗り換え案内サイト([欧亜大陸鉄道](https://ter.fun))を作成したのだが、OTPを経路探索エンジンとしてのみ利用する方法の日本語情報があまり書かれていなさそうなので(英語の情報もあまりないけど…)、記事としてまとめてみた。
また地図データを登録せず時刻表データだけを登録しているので、そういった使い方の参考にもどうぞ。
## OpenTripPlanner とは
[OpenTripPlanner](https://www.opentripplanner.org/) はオープンソースの統合経路探索アプリケーション。
[OpenStreetMap](https://www.openstreetmap.org/)やGTFS(後述)データを取り込んで徒歩や乗り物を含めた経路探索、いわゆる乗換案内を行うことができる。
## GTFSとは
[GTFS](https://developers.google.com/transit/gtfs)は、Googleさんが作った公共交通機関の経路

元記事を表示

StringUtils#containsAnyメソッドの注意

`org.apache.commons.lang3.StringUtils`クラスの`containsAny`はオーバーロードされたいくつかのメソッドがあるが、ハマりやすい挙動があるため注意。

第2引数が`CharSequence`の

“`java
public static boolean containsAny(final CharSequence cs, final CharSequence searchChars)
“`
の方のメソッドは、第2引数の文字列に含まれるいずれかの`文字`が含まれていた場合にtrueとなってしまう。

“`java
// 例
StringUtils.containsAny(“abcde”, “aaa”); // true

StringUtils.containsAny(“abcde”, “efghi”); // true
“`

第2引数が`CharSequence…`の

“`java
public static boolean containsAny(final CharSequence cs, final CharSequ

元記事を表示

JMeterで独自サンプラーを作る

# 背景
JmeterでGMailに来ているURLを手当たり次第踏んでいく。というツールを作成中の事。
MailReaderSamplerの挙動がよくわからない・・・・
imapはリファレンス通りやってもつながらない。
pop3は繋がる。でも本文どうやって抽出するんだ?みたいなことに。
具体的には、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238561/d4461010-90b9-7358-0348-5fa34830b30e.png)

こんな感じでネストしていて、この本文を後処理の正規表現抽出とかで取る方法がわからない
(最下層の1個目のリザルトにフォーカスを合わす方法がわからない)

結局、昔サンプラーを自作したことがあるので、サンプラー自作しよ。
ということに。

サンプラー自作方法もかなり忘れてたのでどうせなら記事に。

# バージョン
apache-jmeter : 5.2.1
JRE : 1.8

# サンプラーのコード
“`DemoSampler.java
pac

元記事を表示

JSONを使用してJava ServletからiPhoneアプリへ値を受け渡してみる

 会社の同期に誘われてiPhoneアプリを作成している最中、WebサーバーとiPhoneアプリ間の値の受渡しをどうするか悩んでいました。その時、どうやらJSONを使用して、値を受け渡すらしい!ということを知りました。
 そこで、色々調べた結果、無事にJSONを使用した値の受渡しができたので、まとめます。

 新人研修&自己学習で得た知識で書いてるので、間違っている箇所やより良い方法があれば、コメントください、、、、

#作成するアプリ
 画面としては、こんなかんじです。
![スクリーンショット 2020-05-12 22.47.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632247/36f105b4-04bd-7d6f-3949-4d7562109f32.png)

 流れとしてはこんな感じです。
 ① 「JSONを取得する」ボタンを押し、JavaServletへランダムな数値を渡す。
 ② JavaServletは、受け取った数値に応じたJSONをレスポンスする。
 ③ Swiftは、受け取

元記事を表示

javaでアルゴリズム入門 – 探索編(深さ優先探索)

# 記事の概要
自分の勉強兼メモでまとめている記事シリーズです。
こちらの記事の続きです。
[javaでアルゴリズム入門 – 探索編(全探索、二分探索)](https://qiita.com/aja_min/items/2dd5abba8ebb9f8977a5)
今回の記事では

– 深さ優先探索

について勉強します。前回の記事の続きのノリで書いています。

## 深さ優先探索
ここからもうなんですかこれって感じですが進めましょう。学びつつまとめつつ。
深さ優先探索です。
DFS(depth-first-search)とも呼ばれるらしいですね。そういえば良くこの単語見ますね。
深さ優先探索、幅優先探索は木やグラフの探索に有用らしいですね。木やグラフの説明は割愛でいきます。
以下に図を載せます。(wikipediaより)
こんな順番で木を深さ優先で探索していくのがDFSみたいですね。
![DFS](https://upload.wikimedia.org/wikipedia/commons/5/5d/Depth-first-tree.png)

「なにが深さ優先なのかわからないよ!」と

元記事を表示

java.security.InvalidKeyException: Illegal key size or default parametersとなった時の対応方法

– 環境
– Red Hat Enterprise Linux Server release 6.3 (Santiago)
– java version “1.7.0_79”

# 事象 : 複合化する処理が動いたらInvalidKeyExceptionが発生した
ほかのサーバから送られてきたパラメータを複合化する処理が動いたらInvalidKeyExceptionが発生した

“`bash
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.in

元記事を表示

Javaのインストールディレクトリがわからなくなった時の探し方

サーバでいろいろな事情によりインストールディレクトリを見失ってしまった。

# 方法1 : 環境変数の`JAVA_HOME`を見る
今使っているバージョン(javaコマンドで動くバージョン)ならこれでOK。

“`bash
$ printenv JAVA_HOME
/usr/java/default
“`

# 方法2 : 環境変数の`PATH`を見る
今使っているバージョン(javaコマンドで動くバージョン)で`JAVA_HOME`がない時はこれでOK。

“`bash
$ printenv PATH | sed -e ‘s/:/:\n/g’ | grep java
/usr/java/default/bin:
“`

# 方法3 : `yum`でインストールしたパッケージ名で探す
いくつもバージョンをインストールしていることはよくあること。
`JAVA_HOME`に設定していないバージョンのJavaを探したいとき。

参考 : [yumでインストールしたパッケージのインストール場所を調べる – 学生時代に頑張ったことが何もない](https://muupan.hatenad

元記事を表示

【Windows】Javaのコードが文字化け

JavaのコードをWindowsのコマンドプロンプトで実行すると文字化けしてしまう問題。
やり方が2通りあるので紹介します!!
![471c1995a62dc4b007e3ab8e72e6e08c[1].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610089/a8a496a8-3420-a975-ba27-5a006d163917.png)

# なぜ起こるのか
テキストエディタとコマンドプロンプトの文字設定が食い違ってるからみたいです。

コマンドプロンプトのプロパティの「オプション」タグの下部に、
現在のコードページが`932 Shift-JIS`となっていますね。
けど、VScodeの設定からEncodingを見ると`urf8`となってるので合わないから化けちゃったのかもです。
なので今回はVScodeに合わせて設定していきます。

## 前提
– Windowsでプログラミングしている人
– Java初学者
– VScode使ってます。

# 解決法1 CHCPコマンドを使う
CHCPコマン

元記事を表示

Stringクラスのメソッド

Stringクラスにはたくさんのメソッドが用意されており、自分自身漏れていたり、知らなかったものもあったので、この際にまとまることにしました。

#charAt(int index)
指定されたインデックスのchar値を返す。

“`java:
String test = “あいうえおかきくけこ”;

//指定されたインデックスのchar値を返します。
System.out.println(test.charAt(0));
System.out.println(test.charAt(2));
System.out.println(test.charAt(5));
“`
“`java:



“`

#codePointAt(int index)
指定されたインデックス位置の文字(Unicodeコード・ポイント)を返す。

“`java:
String test = “あいうえおかきくけこ”;

//指定されたインデックス位置の文字(Unicodeコード・ポイント)を返します。
System.out.println(test.codePointAt(0));
Syste

元記事を表示

【言語別】ジェネリクスの型パラメータを書く場所

言語によって型パラメータを書く場所が異なり混乱するためまとめてみた。
(編集リクエストをいただければ他の言語も追加します。)

## Java

### 型定義

“`Java
class MyType { }
“`

### 変数の型指定

“`Java
MyType myVariable
“`

### 関数定義

“`Java
public static void myFunction() { }
“`

### 関数呼び出し

“`Java
this.myFunction()
“`

## Kotlin

### 型定義

“`Kotlin
class MyType { }
“`

### 変数の型指定

“`Kotlin
val myVariable: MyType
“`

### 関数定義

“`Kotlin
fun myFunction() { }
“`

### 関数呼び出し

“`Kotlin
myFunction()
“`

## TypeScri

元記事を表示

Camunda DMN Engineを使ってDMNを実行する

## DMN(Decision Modeling and Notation)とは

OMG(Object Managemnt Group)で規定されている意思決定のモデリング記法です。近年RPAのナレッジ部分における意思決定自動化手法として注目されています。

https://www.omg.org/spec/DMN/About-DMN/

DMNの最大の特長は人間が理解しやすいように記述した意思決定モデルをそのままコードで実行できることです。Camunda社の[DMNシミュレータ](https://camunda.com/dmn/simulator/)でDMNの動作をテストできます。このサンプルでは季節(Season)とゲスト数(Number of Guests)をもとに最適な料理(Dish)を決定し、さらにその料理と子連れの有無(Guests with children)から最適な飲み物(Beverages)を決定します。ここでいう「最適」とは、あらかじめ定められたロジック(企業や個人のナレッジ)にもとづくという意味です。DMNではこのロジックをディシジョンテーブルという表で与え

元記事を表示

【Javaの基礎知識】型や変数について

#はじめに

こちらの記事は、
– Javaをこれから学習し始める
– 基本的なことをおさらいしたい

という方向けです。

#基本型(プリミティブ型)
Javaで予め用意されている型で、
メモリ領域に決められた分のサイズを使って、情報を保持します。

**整数のデータ型**

| データ型名 |   サイズ    | 値の範囲 |
|:——————|——————:|:——————:|
| byte | 8ビット  | -128~127 |
| short | 16ビット  | -32768~32767 |
| int | 32ビット  | -2147483648~2147483647|
| long   | 64ビット | -9223372036854775808~922337

元記事を表示

Java 変数のスコープ(有効範囲)

この記事は、他の言語でプログラミングしていた人が、Javaでプログラムを組んでみると言う人に向けて書いた記事です。

### スコープとは
スコープとは使える範囲のことです。変数に限らず有効範囲をスコープと言います。今回は変数のスコープについての実例を記載します。
例1)
スクリーンショット_2020-05-14_11_33_19.png
このように、mainからchainの変数を直接持ってくることはできません。
つまり、chainのiのスコープはchain内、mainのiのスコープはmain内ということです。
例2)
スクリーンショット_2020-05-14_11_49_55.pngApache Camel Spring Boot starters を使った単純なcamelアプリの作成手順

[**Apache Camel**](https://camel.apache.org/) で作られたアプリの動作検証のため、新たに単純なアプリを作りたかったが、Java系は1から作ったことがほとんど無くて勝手がわからない。

ひとまず公式ページの説明に従って、1秒毎にログを出すrouteが存在するcamelアプリを作ってみた。camelの起動などに関しては検証しないので、簡単に作れそうな [**Camel Spring Boot starters**](https://camel.apache.org/camel-spring-boot/latest/index.html) を使った。

## 環境

* Java: 1.8.0_191
* Maven: 3.6.3
* Camel: 3.2.0
* Spring: 5.2.5.RELEASE
* Spring Boot: 2.2.6.RELEASE

* OS: Ubuntu 18.04
* IDE: IntelliJ IDEA

## プロジェクトの用意
mavenの場合 `pom.xml` が必要なことは何となく知

元記事を表示

Eclipseで保存時に未使用のimportが勝手に削除されるのを防止する

#なぜ不便なのか

Eclipseで、ソースコードを一時的にコメントアウトして保存をした時に、そこで使用されているクラスのimport文が消えてしまう。

コメントアウトから戻したときにimport文を書くのが面倒ということも勿論あるが、それよりimportミスが怖い。
importするときには、Eclipseの優秀な提案機能によって一覧から選ぶだけでimport文が自動入力されるが、
importするクラス名の中には、同名のクラス名が異なるパッケージに入っているものもあり、コメントアウトから戻したときに選び間違えることもなくはない。

#環境

Eclipse Java EE IDE for Web Developers.

Version: Neon Release (4.6.0)
Build id: 20160613-1800

#改善前

![改善前の設定(import文が消える).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619869/7f70df1a-8cb0-923b-fac5-030

元記事を表示

java(ソースファイル分割)

##元のソースファイル
“`java
public class Calc {
public static void main(String[] args) {
int a = 10; int b = 2;
int total = tasu(a, b);
int delta = hiku(a, b);
System.out.println(“足すと” + total + “、引くと” + delta);
}
public static int tasu(int a, int b) {
return (a + b);
}
public static int hiku(int a, int b) {
return (a – b);
}
}

“`

##複数のクラスに分割

main() と tase(),haiku()でファイルを分割

“`java
public class Calc {
public static void main(String[] args) {

元記事を表示

初心に帰ってJava入門①データ型とアクセス修飾子

#始めに
本記事は、自分が初心に帰りJavaを勉強しなおす記事です。
何回かに分けて投稿します。お暇であれば見ていただければと思います。

環境:
jdk:JavaSE8
エディタ:VSCode

#今回扱うもの
・よく使うJavaのデータ型
・アクセス修飾子

#よく使うJavaのデータ型

以下が良く使うものです。
それぞれ解説していきます。

“`java:Literal.java

public class Literal {

public byte byteValue = 1;
protected short shortValue = 1;
int intValue = 1;
private long longValue = 1L;
public float floatValue = 1.0F;
public double doubleValue = 1.0;
public char charValue = ‘1’;
public boolean booleanValue = true;
publi

元記事を表示

【アーキテクチャー設計】JavaアプリでSQLの実行方法どうする? 2WaySql vs ORM

# 【アーキテクチャー設計】JavaアプリでSQLの実行方法どうする? 2WaySql vs ORM

Javaアプリで、SQLを実行する時って、何を使うか迷いますよね。
そんな方の為に記事を書いてみました。

結論から言うと、2WaySql(DBFlute,uroboroSQL,Doma等)が個人的には、お勧めです。
※前提:中規模以上の業務アプリ開発で、開発者が数十名ぐらいいる場合

2WaySqlの特徴は以下。

* SQLは外部ファイルに記載
* アプリからでもSQLクライアントからでも動作する

何が良いかというと、、、

* 柔軟性があること。
外部ファイル化してあるし、SQLクライアントでそのままSQL実行できるので開発しやすい。
あと、Java以外の言語に移行しやすいし、他のプラットフォームにも移行しやすい。
※Javaに直接クエリ(Criteria API、JPQL、SQLとか)が記載されていると、Javaと依存しまくりで、移行性が低い。

* 開発面
ぶっちゃけただのSQL書くだけなので簡単に開発できる。開発者のレベルが低くてもOK。
※Criteria API、

元記事を表示

AtCoder 茶diff 一覧

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Difficulty Status を利用して、プログラミングの勉強をしています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 茶埋完了
20200513.png

茶diff`(Excluding)`埋め完了しましたので、~~コピペ資料として~~まとめたいと思います。
# 茶diff 一覧
|Contest|Problem|Diffculty|記事|コメント|
|:–:|:–:|:–:|:–:|:–:|
|abc073|

  • OTHERカテゴリの最新記事