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

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

【Java】順列の生成方法

###【概要】
AtCoderの問題([Count Order](https://atcoder.jp/contests/abc150/tasks/abc150_c))が解けず、順列の生成方法ってどうやるのだろうと悩んでいました。
C++ではnext_permutationという関数で順列が生成できるようで、下記記事がとても参考になりました。
Javaで実装してみてAtCoderの問題も解けたので、備忘録も含めて本記事を書きました。

[next_permutationがイマイチよくわからなかったのでまとめてみた](https://qiita.com/Nikkely/items/0ddca51b3c0e60afbaab)

###【コード】

“`java
import java.util.Arrays;
import java.util.Scanner;

class Main {
public static void main(String[] $){
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();

元記事を表示

自分の為のJava環境設定まとめ[mac]

#OSの選択

Windowsで使う人のが多いと思うけど、個人的な趣味でmacを選択。
めんどいことも多いのでVRとかグラフィック系の処理をしない限りはmacを使ってる。

# Javaインストール

Javaって言っても色んなのあるけど、今回はopenJDKを使う。
Javaのオープンソース。

例えばjava11使いたいなら 「11.0.2 (build 11.0.2+9)」とか選択して入れる。
http://jdk.java.net/archive/

こんな感じで適当な場所に設置。

“`
mv ~/Downloads/jdk-11.0.2.jdk/ /Library/Java/JavaVirtualMachines/
“`

# 環境変数の設定

JAVA_HOMEとPATHを設定

“`:.bashrc
#java
#export JAVA_HOME=”/

元記事を表示

Spring Bootでwebアプリを開発、独立したTomcatサーバーへwarを配置する場合の注意点(個人的メモ)

####Spring Boot開発で、warのみ別APサーバーへ配置した経験がなかったので、調べた内容をメモしておきます。

以下、@TEBASAKIさん投稿の下記記事から抜粋させていただきました。
[Spring Boot解説第4回\(開発環境編:warファイル作成\)](https://qiita.com/TEBASAKI/items/7a22c8b6ac6eb5f1c304)
※Spring bootのバージョンにより、build.gradleの記述方法が異なる様なので注意ください。

####1. プログラム修正
– ApplicationクラスへのSpringBootServletInitializerの継承追加。
– SpringApplicationBuilderメソッドのオーバーライド。

####2. build.gradleの修正

– Spring bootでwebアプリを開発する際、単純にビルドしてできたwarには、組み込みTomcatが含まれてしまう。これを回避する定義を追加する。

####3. Gradleタスク(war)実行

– Gradleタスク(

元記事を表示

printfメソッド/変数に関して −Java

printfメソッド

printfメソッドは、引数を渡すことができる

<引数を渡すことができるとは?>
自らが作成した定型フォーマットに対して、設定した文字を自由に入れることができる。
JavaScriptで言うところのテンプレートリテラルに値することができる。

ーJavaのprintfメソッドの場合
int num = 5;
int num2 = 10;
System.out.printf(“%d + %d = %d”, num, num2, num + num2).println();


5+10=15

変数と型

変数とはデータを一時的に保管する箱のような物。何度でも変更がかけられる。
どの型で変数を指定するかによって、中に入れられるデータの種類、容量(文字数)が変わる。
また、変数名は基本的には自由に決めることが可能だが、いくつかのルールがある。

<変数の型の種類>
byte:より短い数字(大体2桁くらいまで)
short:4桁くらいまで
int:9桁くらいまでの数字
long:世界人口などの大きい桁数
float:浮

元記事を表示

リバースプロキシを設定しててもSpringでFlashAttributeしたい!(しない)

# 結論
アクセスするURLとSpringが受け取るリクエストURLが異なると、FlashAttributeしてもリダイレクト先にパラメータを渡せないぞ!!

# 事の始まり

例えば、`domain/~`のリクエストを`domain/hoge/~`に変更するプロキシが組まれていたとします。
きっとこんな感じ:kissing:(適当)

“`nginx.conf
location / {
proxy_pass http://tomcat:8080/hoge/;
}
“`

その中で、RedirectAttributesのaddFlashAttributeを実行したところ、リダイレクト先でマッピングされない事態に遭遇しました。
たぶんこんな感じ:kissing_heart:(さらに適当)

“`HogeController.java
@RequestMapping(value=”/hoge/save”, method = RequestMethod.POST)
public String save(@ModelAttribute(“form”) HogeForm f

元記事を表示

Java8でZIPからFileSystemを使おうとしててこずった話

Javaでは「ZIP」や「JAR」形式のファイルを「FileSystem」として開けます。
(Java上ではZIPも「JAR」として扱われます。)

ところがあるときどうやってもうまくいかなかった。
    原因というか結論:「実行環境次第で使えない時がある」

備忘録として記事にします。
(環境:Win10でJava8)

### FileSystems.newFileSystem の使い方
まず、前提となる使用法を記しときます。
FileSystems.newFileSystem()というメソッドを使います。
対象ファイルの指定は Path か URI が使えます。

#### 1. Path で指定する方法

“`java

final Path zipfilePath = Paths.get(“C:/a.zip”);

try{
FileSystem fs = FileSystems.newFileSystem(zipfilePath, null);
}catch(Exception e){
e.printStackT

元記事を表示

[Processing] GT Forceを使ってみる。

##はじめに
今回は、PCでGT Forceを接続してみたという話。Processingという言語を使うと簡単に使えるようになるので、ぜひお試しいただきたい。ゲーム用のコントローラが自由に使えるようになるとやれることが広がるのではないか。今回の内容は「自作のいろいろ」様のサイトの情報をもとに行った。筆者もはっきりこのライブラリを理解していないため、説明が不十分なところがある。筆者のメモ程度の内容であることをご了承いただきたい。

[自作のいろいろ様のサイト](https://garchiving.com/how-to-gamepad-in-processing/)

使用するGT ForceはPS2用のもので非常に古いものである。調べてみると、このハンドルコントローラーはWindows10に対応していないとの記述もあったが、GT Force Pro用のものを使用したところ、無事Windows10で使うことができた。ただし、logicoolのセットアップソフトでは、ペダルが反応しなかった。故障かと思ったが後のプログラムでは動作した。

##実行環境
・Windows10 64bit
・P

元記事を表示

Selenideのshould、shouldBe、shouldHaveの違い

[SelenideのQuick Start](https://selenide.org/quick-start.html)をやっていて、Assertionメソッドにshould、shouldBe、shouldHaveの3種類(と否定を表現するshouldNot、shouldNotBe、shouldNotHaveの3種類)があり、使い分けがよく分からなかったのでそれを整理したメモです。

## 違い
まず、自分の英語力が足りていませんでした。
以下のやりとりでもある通り、should、shouldBe、shouldHaveは同義語となるため違いはありません。

元記事を表示

【Kotlin】Enumを使用した処理の実例

#初めに
自分がコードを書く際にEnumをよく使うようになってきたので実際に使った実例をまとめていこうと思います。

コードはKotlinで記述します。記述方法が異なりますがJavaでも同じような仕組みで実装できると思います。(他の言語でもできるかも)

#コード値⇔名称の変換処理
「データ上コード値(01とか)で扱うが画面に出す場合は名称で出したい」のような仕様があった場合、コード値から名称へ名称からコード値への変換処理が必要になります。

以下では単純な条件分岐を使用した場合とEnumを使用した実装方法を挙げていきます。

####条件分岐を使用する方法

思いつくコードは以下が挙げられます。

“`kotlin
// コードを名称に変換
fun convert(code : String) : String {

if (“01” == code) {
return “名称1”
} else if (“02” == code) {
return “名称2”

元記事を表示

IntelliJ+Jersey+Spring FrameworkでRESTfulAPIのマルチモジュールサンプル

以下の記事の続きです。

Jersey+Spring FrameworkでRESTfulAPIの最小構成サンプル
https://qiita.com/kasa_le/items/59ebd6b5490945dd5580

Mavenでマルチモジュール構成にする(Jersey RESTful)
https://qiita.com/kasa_le/items/db0d84e3e868ff14bc2b

今回は上の2つの記事で作成したプロジェクトをマージするような作業です。
が、一応ゼロからプロジェクトを作るていで説明します。

# 目的
**Jsersey**と**Spring Framework**(not Boot)でRESTfulAPIを実装する。

# ゴール
– Jersey+Spring FrameworkでRESTfulAPIが一通り(CRUD)が動く。
– マルチモジュール構成でDIが出来る。

# 環境など

|ツールなど|バージョンなど|
|:–|:–|
| MacbookPro |macOS Mojave 10.14.5|
|IntelliJ IDEA |Ulti

元記事を表示

まいくろさーびすあーきてくちゃメモ

# 概要

とあるマイクロサービス開発に携わることになり、取り巻く技術要素について調査した内容から良TIPSをブックマーク。サマリを追記。

## とあるサービスの特徴
– Javaベースのマイクロサービス
– 今後別言語のサービスを追加する可能性もあるためREST APIベースのインターフェース
– Javaにおいては高速ながDI必須
– Dockerコンテナの利用
– Gradleによるマルチプロジェクトビルド
– 設計思想はドメイン駆動設計を採用

# ?マイクロサービス
– 複数の小さなサービスをAPIを介することで連結させたシステム
– サービス間の依存がないため、言語や基盤に関係なくサービスを追加・削除可能
– 代表的なAPIはREST APIで、http通信にてJsonを介したデータのやり取りを行う
– サービスが複数となるため、以下の課題をどう解決していくかが求められる
– サービスごとに参照する永続化層(DB、ファイルなど)をAPIを介してしか通信できないためスキーマ構成に悩む。もしそこを許容してしまうと、一番最下層で依存が発生し、マイクロサービスの意

元記事を表示

スッキリわかるサーブレット 第13章のdocotsubuがPostgreSQLに繋がらない問題

#起きた問題
スッキリわかるサーブレット 第13章 docotsubuがSQLに繋がらない
(一番下にエラーを書いておく)

エラー内容の冒頭
“`java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/docotsubu “`
から、ダウンロードしたはずのpostgresqlのドライバのパスが通っていない感じ。

#解決方法
postgresqlのドライバをダウンロードした後、そのjarファイルを
C:\pleiades-2020-03-java-win-64bit-jre_20200322\pleiades\tomcat\9\lib フォルダに、置く、というか移動させる。
その後、eclipseでビルドパスを通す。
**<方法>**
➡docotsubu3のパースペクティブ右クリック
➡ビルドパス
➡ビルドパスの構成
➡(左の)javaのビルドパス
➡(上の)ライブラリ
➡モジュールパス
~~➡(右の)クラス・フォルダの追加~~
~~➡WebContent/

元記事を表示

#1 世知辛い初心者エンジニアの壁 ~エンジニアになりたい君へ~

初投稿になります。あつぎです?

未経験新卒で入社したものの、初っ端から自宅学習を強いられております。
「あっ、これ前にやったやつだ!」みたいなこともなく、事前に自分で勉強していたjavaやマークアップ言語、Web系言語も意味をなしておりません。

まず初心者の方に伝えたいのは、入社する会社が
【SIer】なのか【Web系】なのか知っておきましょう。
なんとなく開発したいは、悪くもないですが、良くもないです。はい。

#■C言語めちゃくちゃムズイ
題名の通りです。
研修でC言語を学ぶのは「普通」なのでしょうか?
挫折率の高い言語を研修にするのは、なんとも言えない気持ちです。

開発環境はEclipse IDE(統合開発環境)で作業してたのですが、
Javaのようにサクサク実行ができず詰んでおります:scream:

##■詰んでるところ
プログラミングというのは、

❶コードを書いて
❷コンパイルして(PCが読める言葉に翻訳して)
❸実行結果(画面に表示される)
のですが、Eclipseの環境だと、なぜかコンパイルできずに死亡し

元記事を表示

ウイルス性肺炎と診断されたエンジニアの約2か月の在宅勤務記。

# 序:某渡辺さんの手記を読んだ。
 4月1日実名公開の『[これで「軽症」と言うのか。新型コロナ感染で入院中、渡辺一誠さんの手記](https://forbesjapan.com/articles/detail/33415/1/1/1)』を読んだ。もちろん存じ上げない方だが六本木勤務らしい。いろいろと辛そう。。緊急宣言が出されることで、IT業界の方々も、これからいろいろな影響を受けることがあることだろう。
 ということで、参考になればと、参考情報として、2月下旬に自室で悶絶(もんぜつ)しつつも保健所で門前払いされたのち3週間後に、自費で受けたCTスキャンでウイルス性肺炎と診断された私(中年♂)のこの二月ほどを振り返るポエムを書くことにした。恥ずかしいのだけれども。。
 状況としては、病状が悪かったはじめの1月は在宅でいろいろとやらかした。回復後の1月弱で、いくつかを取り戻せたと思っている。勤怠については、(理解ある勤務先のおかげで)2か月間皆勤とさせてもらっている。

## (付記) CTによる診断と血液検査
(その他の検査での陽性反応を経て別途の投薬を受けるも)発熱してから1月たって

元記事を表示

MySQL に UUID のデータを 16 byte で保存する

似たような話は各所にあるのですが、自分の理解向け、備忘録向けに書きます。

# UUID について
https://ja.wikipedia.org/wiki/UUID

もとの起こりはWikipediaなどを見るとして、実運用的には開発時にデータに一意なIDを割り振る際によく用いられる。

UUIDには複数のバージョンがあり、最も開発で用いられていると思われるのは **UUIDバージョン4(ランダム生成)** 、その他に **バージョン1(MacアドレスやTimestamp情報を用いて生成)** などがある。

ビット幅は **128ビット(16バイト)** で、文字列表現では16進法で以下のような形で表現する。
(32バイト+バウンダリ4バイト=36バイト。 “-” がバウンダリ文字列)
> 550e8400-e29b-41d4-a716-446655440000

# SQL を用いて 16バイトで MySQL に保存する (8.0 以前 )
MySQL に16バイトで保存する場合には、16進数の文字列表現のUUIDからバウンダリ文字列を取り除いたものを、Binary に変換して

元記事を表示

Jersey+Spring FrameworkでRESTfulAPIの最小構成サンプル

こちらの記事の続きです。

Mavenでマルチモジュール構成にする(Jersey RESTful)
https://qiita.com/kasa_le/items/db0d84e3e868ff14bc2b

# 目的
**Jsersey**と**Spring Framework**(not Boot)でRESTfulAPIを実装する。

`Java Spring`で調べると**Spring Boot**の例ばかりで、多分Boot使ったほうがいろいろ楽なんでしょうが、大人の事情で使えない(かもしれない)ので、**Spring Framework**の方を使ったサンプルを目指します。

# ゴール
Jersey+Spring Frameworkの最小構成のプログラムでHello World的なものが動く。

# 環境など

|ツールなど|バージョンなど|
|:–|:–|
| MacbookPro |macOS Mojave 10.14.5|
|IntelliJ IDEA |Ultimate 2019.3.3|
|Java |AdoptOpenJDK 11|
|apache maven

元記事を表示

mDNSでAndroidからRaspberryPiを探す

##Raspberry Pi

### avahi-daemonの設定

avahi-daemonのインストール(入っていなければ)

“`
sudo apt-get install avahi-daemon
“`

設定変更

“`
sudo vi /etc/avahi/avahi-daemon.conf
“`

noになっているとAndroid側で探索が出来なかった

“`avahi-daemon.conf
[publish]
publish-workstation=yes
“`

avahi-daemon.service再起動

“`bash
sudo systemctl restart avahi-daemon.service
“`

### host名確認

“`bash
cat /etc/hostname

“`

## Android

これをみた方が早いとは思う(参考)
https://developer.android.com/training/connect-devices-wirelessly/nsd.html

許可取り

元記事を表示

初心者がスッキリわかるシリーズでJavaを学んでみた

# はじめに
プログラミング初心者のスッキわかるシリーズのレビューです。
これからJavaの勉強をする方の参考になれば幸いです。

##読んだ本
スッキリわかるJava入門 第3版
スッキリわかるJava実践編 第2版
スッキリわかるSQL 第2版
スッキリわかるサーブレット&JSP入門 第2版

#スッキリわかるJava入門 
###**おすすめ度 ◎**

###良かった点
新入社員の男の子が先輩社員と一緒にRPGゲームを作っていくという流れで学習が進む。コンパイルや実行など、プログラミングのプの字も知らないような初心者向けに丁寧に書かれており、とても分かりやすかった。
ページ数は700ページを超えており、中々のボリュームだが、その分細かく、丁寧に解説してくれたのでスラスラと読むことができた。
理解が難しいと言われているオブジェクト指向を特に丁寧に解説しており、イメージを持ちながら学習することができた。
docojavaという開発環境を整えなくてもJavaを使える機能もあり、本を買っていきなりプログラミング学習を開始できるのも、この本の強みだと思う。
そもそもは、通販サイトやほとん

元記事を表示

Mavenの基本勉強メモ

ずっと Gradle 使ってたけど、お仕事で Maven をゴリゴリに使わないといけなくなったのでお勉強。

# Maven とは
Java のビルドツール。OSS。
Apache Ant に代わるものとして作られたらしい。

読み方は「メイヴン」または「メイヴェン」(自分はメイヴン派)。

結構昔からあるけど[^1]、現在も開発が続けられているし、 Maven を採用しているプロジェクトも多い印象。
2020年現在、Java のビルドツールといえば Maven か Gradle が選ばれることが多い(と思う)。

[^1]: Maven 1.0 が 2004 年、Maven 2.0 が 2005 年、Maven 3.0 が 2010 年([Maven – Maven Releases History](http://maven.apache.org/docs/history.html))

2020年現在のメジャーバージョンは3。
Maven 1 と 2 は互換性が無いが、2 と 3 は互換性が保たれている。

# 環境
“`
>mvn –version
Apache Maven

元記事を表示

【Java】カレントディレクトリの取得方法

#きっかけ#

Javaで同階層のファイルを開こうと相対パスを与えたのだが開いてくれなかった
そこで絶対パスを与えてやろうと検索してみたら記事が少なかったので覚書

#簡単#

あまりにも簡単だから誰も書かないのか
常識の範囲だから書かないのか
わからないけどとっても簡単でした

##それがこちら##

“`Dir.java
import java.io.File;

class Dir {
public static void main(String[] args) {
String path = new File(“.”).getAbsoluteFile().getParent();
System.out.println(path);
// 例:C:\Users\xxxxx\Documents\java
}
}
“`

もうひとつ

“`Dir.java
class Dir {
public static void main(String[] args) {
String path = S

元記事を表示

OTHERカテゴリの最新記事