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

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

spring-batchでreaderの値に応じてwriterを動的に切り替える

たとえば、readerが整数を読み込み、偶数・奇数で異なるwriterを呼び出す、という例を考える。

“`java
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemWriter;
im

元記事を表示

JConsoleがlocalで接続できないとき

知りたい情報をドストレートに射抜いてくれる日本語記事は検索してもなかなか出てこなかったので記します。

**解決の助けになった記事(英語)**
https://community.oracle.com/thread/1177644
#現象
jconsoleなるJavaのプロセスを監視するものを使う必要が生じたので、常駐してるJavaプロセスにローカルでアクセスしにいったところ、4つあるうち1つのプロセスだけアクセスできなかった。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571578/54dcb4a7-3ac9-f892-2ce0-7a9f640a2d2f.png)
ローカルなのになんで失敗するの?接続が成功しませんでした?

#対処法
目的の*jar*ファイルに監視するオプションを付与してあげるとJconsoleで監視できるようになった。
例)コマンドプロンプトでJMXで監視するオプションを付与して実行するとアクセスすることができた。

“`console:コマンド(win10)

元記事を表示

Java基本文法メモ

## 変数と定数
#### **宣言**

“`java

/* 変数宣言 */
boolean varA; // boolean型/宣言のみ
varA = true; // 代入のみ
byte varB; // 8bit(-128~127)
short varC; // 16bit(-32768~32767)
int varD; // 32bit(約-21億~約 21億)
long varE; // 64bit(なんかいっぱい)
float varF; // 32bit浮動小数点数
double varG; // 64bit浮動小数点数
char varH; // 16ビットUnicode文字
String varI // 文字列型(参照型)

/* 定数宣言 */
static final data_type varJ = valA; // static + final修飾子

“`

## 配列

#### **固定長配列**
“`java
/* 宣言 */
data_typeA[] arrayA = new data_typeA[index_max_value];
dat

元記事を表示

アルゴリズム 体操17

#Rotate a Linked List

##説明
単一リンクリストのヘッドノードと整数 nを指定すると、リンクリストを n回転させるアルゴリズム体操。

以下、2つの例があります。引数として渡されたリンクリストと整数 n = 2回転後の出力です。

n の値は、リンクリストの長さよりも大きくなる可能性があることに注意してください。
![Screen Shot 2020-01-22 at 5.20.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/f0730925-38e5-32db-c8b8-cd6a51a0576f.png)

n = -2の時、
![Screen Shot 2020-01-22 at 5.20.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/e5303455-94e7-6413-30ef-289a348ef097.png)

##Solution
### Ru

元記事を表示

【eclipse/github】eclipseで作ったプロジェクトをgithubで共有しよう 初学者用

#eclipseって?
統合開発環境(IDE)のひとつ
エディタとしてソースコードを記述できるのはもちろんのこと、サーバーソフトを内包していてより本番に近い形でプログラムを実行したりと、とてもすごいヤツ

#githubって?
[githubはこちら](https://github.co.jp/)
ここでは説明しないので、各自調べましょう(出だしから投げやり)

###この記事の前提
– githubで空のリポジトリを作っている([作り方はこちら](https://qiita.com/programiblis/items/f60c9d38fc996871adbc))
– eclipseをインストールしている(この記事ではJava用のeclipseを使います)

では、この記事の目的であるeclipseで作ったプロジェクトをgithubにアップロードしていきましょう

#eclipseで作ったプロジェクトをgithubで共有しよう
まずは、アップロードするためのプロジェクトを作成していく
1. ファイル→新規→その他をクリック

|![git_eclipse00.png](https

元記事を表示

JavaでNumer0nの対戦ゲームを作ってみた(AIも作ったよ)

#JavaでNumer0nの対戦ゲームを作ってみた

##はじめに
今回、大学の授業でJavaでサーバ・クライアント間の通信を介した何かを作るという課題が出たので、高校生の頃、授業中によくやっていたNumer0nのゲームを作ってみようと思った。
高校生の頃、Numer0nのゲームにはまりすぎて、1手目で〇EAT〇BITEになる確率を手計算で求めて楽しんでた気がする...

この記事を読んでくださっている方は、Numer0nの基本的なルールは知っていると思うのでそこのところは割愛させていただきます。
[ヌメロンWikipedia](https://ja.wikipedia.org/wiki/Numer0n)

##開発環境
Java:version 7
Eclipse: Juno 4.2
OS: windows10

##開発方針
今回のシステムで実装したいことは、
1. サーバ・クライアント間の通信を行い、複数のクライアントが同時にアクセスでき、ルームを作成し、対戦ができる
2. それなりに強いコンピュータ対戦もできるようにする(アルゴリズムの実装)
3. 入力ミスや数値の重複などに

元記事を表示

spring-batchのpartitioning使用時のReader must be open before it can be readの原因と対策

# 現象
以下のようなbean定義をしたところエラーになり実行できなかった。

やろうとした事としては https://docs.spring.io/spring-batch/docs/current/reference/html/scalability.html#partitioning の、spring-batchのPartitioningを試している。partitioningの情報(“`fileName“`)が“`stepExecutionContext“`に入るため、beanを“`@StepScope“`にしている。

“`java
@StepScope
@Bean
public ItemReader itemReader(@Value(“#{stepExecutionContext[‘fileName’]}”)
Resource resource) throws IOException {
“`

エラー内容は以下のとおり。

“`java
org.springframework.batch.item.ReaderNotOpenEx

元記事を表示

[Java]eclipseでJerjey(Jax-rs)を利用したAPI作成

##はじめに
mavenとかgradleを使わないで実装する方法があんまりなかったので書こうと思います。

##Jerjeyの導入
* [Jerjey](https://eclipse-ee4j.github.io/jersey/download.html”Jerjey”)から最新版をDL。
* jaxrs-ri-(version).zipを解凍し、中の[lib]ファイルの中身をEclipceで使うTomcatの[lib]内に入れる。

##プロジェクトの作成
Eclipseで動的Webプロジェクトを作成し、
パッケージ[com.sample.api]とその下にクラス[SampleApi.java]を作成する。

##web.xmlの作成
WebContent/WEB-INFに[web.xml]を作成し、以下をコピペ。

“`xml:filename.xml

jarファイルに画像リソースを含める

## IntelliJからjarファイルを出力すると、画像が表示されなくなる問題
Swingを用いたGUIツールを作製したとき、IntelliJ上で実行した場合は画像ファイルがきちんと表示されるが、jarファイルとして出力すると画像ファイルうまく表示できなくなるという問題に直面した。
ググったところ、よく知られた現象らしく、解決策もすぐに出てきた。以下はその解決策を自分用のメモとしてまとめたものである。

## 状況説明
JavaのGUIツールキットであるSwingを練習するため、砂時計アイコンが表示されるだけの簡単なプログラムを作製していた。
![スクリーンショット 2020-01-22 10.42.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329378/cac66c4d-1e5d-879f-87a8-29d9f3e86279.png)
こんなの

アイコンはhourglass.pngファイルという名前で、srcフォルダ直下に保存した。また、アイコンファイルの読み込みは以下のように記した。

元記事を表示

[Android]端末からサーバへ画像のアップロード

##はじめに
Androidで画像をPOSTし、サーバに保存する機能でてこずったため自分の備忘録兼、アウトプットとして書きます。プログラムのお仕事半年もしてないからいろいろおかしいかもしれないけど許してね。
##環境
AndroidStudioでOkHttpを利用しています。
##OkHttp導入
* AndroidStudio画面左上の「Android」を「プロジェクト」に切り替え。
* [app]内のbuild.gradleを開く。
* dependencies内に
“`
implementation ‘com.squareup.okhttp:okhttp:2.7.5’
“`を追記。(2.7.5はvarsionによって変えてください。)

“`gradle:build.gradle
//~~省略~~
dependencies{
//~~省略~~
implementation ‘com.squareup.okhttp:okhttp:2.7.5’//追記
}
“`
完了。

##AsyncTask
Http通信で送るので非同期で行う。

“`java:OkHttpTa

元記事を表示

バッチファイル入門(for文、配列、遅延環境変数)

# 動機
「○○系の機能の呼び出し元を知りたいから、一覧化して」
と言われて数えてみたら

* ○○系の機能は150弱
* Javaファイルは15000個

あったので、IDE使って150回検索するのも辛そうだったのでバッチファイルで何とかしてみた。
何故bashじゃないのかとか何故そんなことしないといけないのかは聞かないでほしい。

# 作った `bat` ファイルと実行結果

“`grepCallHierarchy.bat
@echo off

setlocal enabledelayedexpansion
set i=0
for /f %%a in (targetList.txt) do (
set /a i+=1
echo !i! %%a
call set Arr[!i!]=%%a
)

pause

for /r %%a in (*.java) do (
for /f “tokens=1,2,3 delims= ” %%b in (%%a) do (
for /l %%j in (1,1,%i%) do (
if !Arr[%%j]!==

元記事を表示

VSCodeでLombok

#何の記事?
VS CodeでSpring Bootアプリケーション作成時、Lombokが仕事を放棄しているのではと感じたときのこと。

#どんな状態?
DTOやEntityに「`@Data`」をつけても`getter`,`setter`でコンパイルエラーになるし、補完にも出てこない。

#結論
放棄していない。

VS CodeでLombokを使用するにはSpring Bootの依存関係だけでなく、拡張を入れてあげる必要があるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287607/7d59e9f3-fd3d-8a4e-4aa5-56841f5f5e04.png)

これをインストールするとVS Codeの再起動が求められます。
再起動し、ビルドが完了するとコンパイルエラーが消えています。

あともちろん補完にも出るようになります。

元記事を表示

Cassandra×SpringBoot 奮闘記録

# この記事の概要
– Cassandraに触れたことがなかったので、構築〜SpringBootのアプリケーションから参照・更新をすることろまでをやってみたときの記録
– 環境はローカルPC(Mac)

# 参考
Cassandra: http://cassandra.apache.org/doc/latest/
SpringDataCassandra: https://spring.io/projects/spring-data-cassandra

# Cassandraの構築

インストール

“`bash
# Cassandra本体
brew install cassandra
# CQL(Cassandra Query Language)
brew install cql
“`

起動

“`bash
cassandra -f
“`

> Connection error: (‘Unable to connect to any servers’, {‘127.0.0.1’: error(61, “Tried connecting to [(‘127.0.0.1’, 9

元記事を表示

[Java] GlassFish 5トラブルシュート記録

GlassFish 5を動かそうとして、意外にすんなりいかなかったのでトラブルシュートの記録です。

# 環境

OS: Azure上のWindows Server 2008 R2
JDK: Zulu

# トラブルシュート記録

## [解決] `asadmin`コマンドを実行するとNullPointerException

JDK 11 (Zulu 11.31.11)ではだめでした。
JDK 8 (Zulu 8.44.0.9)を使うとOKでした。

## [解決] `asadmin start-domain`するとNoClassDefFoundError例外

`asadmin start-domain`とすると、こんなエラーになりました。

“`
Exception in thread “main” MultiException stack 1 of 2
java.lang.NoClassDefFoundError: com/sun/enterprise/admin/launcher/GFLauncherException
at java.lang.Class.

元記事を表示

SpringBoot で起動引数による環境切替を行う

## はじめに

SpringBoot でバックエンドを開発しているときにある話。

昨今、Dockerが出てきてから結合から本番までワンモジュール、ワンソースで最後まで管理する傾向にある。

各環境の区別は、環境引数を外から渡すだけ、という設計方針にした際に、
では、中身のSpringBootで作ったアプリケーションのモジュールはどういう風にすればよいのかをまとめる

## 環境の数が少ないなら

#### SpringBootのProfileで切替すればよい。

下記に公式情報があるため、こちらで実現できます。
[公式](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-profiles)

起動引数に下記を含めれば、
“`-Dspring.profiles.active=dev1
“`
下記ファイルが読み込まれる仕様である。
“`src/main/resource/application-dev1.properti

元記事を表示

GradleプラグインのSpotlessでGoogle Java style guideを適用する

Google Java style guideをgradleを使って導入してみました。

**ただしインデントの空白文字数は2文字ではなく4文字!!!!**

## Spltlessを使う
gradleのプラグインでGoogle Java styleを導入する場合、以下のものが便利そうでした。
[spotless/plugin-gradle at master · diffplug/spotless · GitHub](https://github.com/diffplug/spotless/tree/master/plugin-gradle#applying-to-java-source-google-java-format)

## 適用する
さっそくgradleを書いて、プラグインを適用します。
インデントは4文字の空白文字にしたいので、設定を上書きします。

“`groovy
plugins {
id “com.diffplug.gradle.spotless” version “3.27.1”
}

spotless {
java {
goo

元記事を表示

【#1】PythonでMinecraftを作る。~下調べと設計~

Part of pictures, articles, images on this page are copyrighted by Mojang AB.

![minecraft.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/4c03684c-1ee7-4b2f-01b7-92836d12a930.png)

#概要
世界的に超有名なサンドボックスゲーム「Minecraft」をプログラミング言語「Python」で再現するプロジェクトです。

##きっかけ
僕がプログラミングに初めて触れたのは、「Minecraft」がきっかけでした。

4年以上前の事です。
Minecraftにおける「MOD」と呼ばれる所謂改造コンテンツに興味があり、「自分でも作ってみたい!」とプログラミングの世界に足を踏み入れました。
総プレイ時間は数万時間を超えており、色々と思い出深いゲームの一つです。

小学校低学年の頃からウェブサイトを制作したりと、多少はクリエ

元記事を表示

良いコードの書き方

# 概要

チームによる継続的開発を前提としたコーディングのガイドライン。
特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。
サンプルコードは別段の定めがなければSwiftで記載。

### ガイドラインの目的

– 生産性を高め、メンテナンスコストを下げる
– バグが生まれづらくする
– 開発メンバー(特に新規参加者)がコードを理解しやすくする
– 初心者プログラマーの教育

### 内容の説明
タイトルの頭についた【:star:数字】は重要度。
高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。

# 【:star:5】変数を少なくする

変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。
プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。

また、変数はスコープや寿命が大きいほど悪影響が大きいため、変数を使う場合はスコープと寿命を最小にするよう心がける。
基本的には以下の上のもの程スコープが広くなるので使用

元記事を表示

Twitter4Jの使いかた

Twitter4Jを使ってみました。
流れは、
アカウント申請をする。3~4時間で許可出ます。(Botにするとか、簡単なものに使うとすれば。)
アクセスtokenをメモする。
mavenのpom.xmlにTwitter4Jに必要なビルドを統合する。
Javaでコード書いて、メモしたtokenを入力する。
実行してタイムラインを確認する。です!
コードやmavenの設定はGithubのreadme.mdにあります。
詳しくは[Github](https://github.com/hatsuki0111/Twitter4J)にあげています。

元記事を表示

新卒1年目でJavaGold合格できたので勉強法について語っていく

#はじめに
Javaの資格で最も難しい試験は?
と聞かれた時に**JavaGold**と答えるエンジニアは多いと思います。

その最難関の資格であるJavaGoldを**1年目で合格できました**ので、

– 勉強内容
– 1年目で合格できてどうだったか

についてお話したいと思います。

#勉強開始時のスペック
###業務経験
– 新卒1年目(学生時代は文系でプログラミングとは無縁)
– 3ヶ月間の研修(Java/SQL/JDBC/Servlet/JSPなど)を経て、Javaの案件に配属
→ただし、当時コードを書くことは殆ど無かった

###保有資格
– 基本情報技術者(1年目の4月に受験し合格)
– JavaSilver(1年目の8月に受験し合格)

####合格体験記は以下参照
– 基本情報技術者:[【未経験】基本情報技術者試験に合格できる勉強法【合格体験記】]
(https://qiita.com/ebichan_88/items/8409c9b99bf5a2977cc7)
– JavaSilver:[【JavaSilver】Java SE8 Silverに合格した勉強

元記事を表示

OTHERカテゴリの最新記事