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

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

Gradle を完全に理解した人が、何も分からなくなるための第一歩

## 自己紹介

– opengl-8080
– 主に Qiita で技術メモを書いたり
– 関西の SIer 勤務


## タイトルの元ネタ

java学習1日目

progateにてjava学習

javaコース「コードの書き方,データの型,変数」.
コース、演算子やプログラミングの論理の組み方.
コース、メソッドとクラス、別のクラスからメソッドを呼び出す方法.
そして、それらの総復習として(道場コース)まで学習した。

初投稿でいまいちqiitaの使い方がわからないのでとりあえずここまで:frowning2:

元記事を表示

IntelliJ IDEAとGradleでのJavaFXアプリケーション開発 〜環境構築からサンプルコードまで〜

#0.はじめに
いま、私は絶賛GUIツールを使ったソフトウェアを作る必要に迫られています。
~~ずっと放置していて~~最近着手したのですが、思いの外環境構築に手間取ったので備忘録を兼ねてここに書いておきます。

#1.JavaFXって何ぞ?
「JavaでGUIと言ったらAWT!Swing!」と思っている方はいませんか?
実は最近、JavaFXというフレームワークが出てきてかなりGUIツール開発のハードルが下がったと聞いています(聞いているだけ)。

筆者はたまたま、「あー、GUIかー、どうやって作るんだろうなー」とネットをさまよっていたら見つけました。
今日はそんな便利~~そう~~なJavaFXの入り口を少しだけご紹介します。

#2.筆者の環境
– MacBook Pro (Early 2015)
– macOS Mojave (10.14.6)
– IntelliJ IDEA Community Edition (2018.3.1)
– OpenJDK (13.0.1)

#3.環境構築
##3.1.OpenJDKのインストール
###3.1.1.ダウンロード
[OpenJDKのサ

元記事を表示

java初級編 4

こちらを読んでいただく前にまずjava初級編3がありますのでそちらを拝見ください⬇️⬇︎^^

https://qiita.com/shinpachix/items/6f6f972e7980f4c59d3d

##continueとbreak
continue – 繰り返しの最初に戻って次の周回へ行く
break – 繰り返しを終了して次へ

“`
int x = o;
while(true) {
//xが1の時ここへ戻る(printlnは実行されない)
x++;
if(x==1)continue;
System.out.println(x);
if(x==10)break;
}
//breakするとここへ
“`

##配列

“`
String[] a = new String[3];
a[0] = “こんにちは”;
a[1] = “おはよう”;
a[2] = “さよなら”;

for(int i = 0; i < 2; i++) { System.out.pintln(a[i]); ``` 一つの変数を複数の変数の列のように扱える []の中を添字と言う。 0から始まる。

元記事を表示

Streamの終端処理

[Streamの生成処理](https://qiita.com/key_sleep/items/758067cde4f054d61010)および[Streamの中間処理](https://qiita.com/key_sleep/items/e1684f2e12532f37f507)
で処理をあたえたあとのStreamをどのような要素として終えるのか処理する

## find系
検索および要素がのこっているかどうかの確認に使用

“`java
List list = Arrays.asList(“a”,”b”,”c”,”d”,”e”);

// findFirst
String a = list.stream().filter(s -> s.equals(“a”)).findFirst().orElse(null);

// findAny
String any = list.stream().filter(s -> s.equals(“a”)).findAny().orElse(null);
“`

## match系
指定した条件式にあてはまるものがあるかどうかを

元記事を表示

Streamの中間処理

[Streamの生成処理](https://qiita.com/key_sleep/items/758067cde4f054d61010)
で生成したStreamの対して様々処理を与える部分。

ここではまだListを生成したり、文字列として出力したりなどは行わない。
この記事では例として、すべての終端処理にListを再生成させておく

## map
ラムダ式や関数を用いて要素を変換したい場合に用いる。

“`java
// ラムダ式
List actual = list.stream().map(s->s.length()).collect(Collectors.toList());

// メソッド参照
List actual = list.stream().map(String::length).collect(Collectors.toList());
“`

## filter
条件式によってStreamの要素の絞りこみを行いたいときに用いる

“`java
List actual = list.stream().fi

元記事を表示

if文の書き方のまとめ(Scala、Java、Rust、C言語、C++、Go言語、PHP、Perl、Python、Ruby)

いろんな言語を触っていると、言語の重要な特徴はともかく、細かい文法や記号の使い方などがだんだんごっちゃになってきてしまいます。あれ、これってこの言語だとどう書くんだっけ?ってなることがよくあります。前はよく使っていた言語なのに、ちょっと離れただけでもう忘れてしまった、とショックに感じることもあります。なので、こういうメモを作っていこうと思います。

# Scala

“`scala
if (x >= 30) {
…;
} else if (x >= 0) {
…;
} else {
…;
}

// 文ではなく式
val max = if (a > b) a else b;
“`

– 条件式は論理値であることが必要
– C言語と同様に`{ }`の中の式が1つの場合は`{ }`を省略可能
– 文ではなく式

[Conditional Expressions – Expressions | Scala 2.13](https://scala-lang.org/files/archive/spec/2.13/06-expressions.html#c

元記事を表示

Watson SDK for Javaでサービスの呼び方を調査した

##元ネタはこれ
https://github.com/watson-developer-cloud/java-sdk

##なにがはまったのか
ぱっとみて、「はいはい、API_Keyを渡すんでしょ」っていうこのコード部分に誘導された・・

“`Sample.java
// letting the SDK manage the IAM token
Authenticator authenticator = new IamAuthenticator(““);
Discovery service = new Discovery(“2019-04-30”, authenticator);
“`

##基本的な考え方
IBM CloudにDeployするなら、VCAP変数が使えるから、Authenticatorを指定せずにサービスのインスタンスを作ればいい。
(難しいことを考えた方が負け)

##単体テストをするとき
Credential Fileをとってきて読み込ませるのが楽(VCAP変数がないけど、あるのに近い感じでできる)

>Credential fil

元記事を表示

1000000007の書き方(Java)

# 1000000007の書き方

競技プログラミングでよくあるのが、以下の指定
**”$10^9+7$で割った余りを答えてください。”**

$10^9+7$の書き方として、4種類紹介します。
自分は科学表記法が短くて、間違いにくくて好きです。

 1. 普通に書く

“`java
int mod = 1000000007; //0の数がややこしい
“`

 2. “_”を利用して書く

“`java
int mod = 1_000_000_007; //分かりやすい
“`

 3. 科学表記法

“`java
int mod = (int)1e9+7; //デフォルトではdoubleなので必要に応じてキャスト
“`

 4. Mathクラスのpowメソッドを利用する

“`java
int mod = (int)Math.pow(10,9)+7; //ちょっと長い。デフォルトはdouble

元記事を表示

herokuCLIを通したherokuの開始(入門者用)

# Herokuとは?
`Herokuは はアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。`–[公式フォムページ](https://jp.heroku.com/home)から抜粋

補足するとHerokuはPaaS(Platform as a Service)として開発者はアプリケーション開発のみ集中すれば、アプリケーションの配布と運用が出来るということです。[GitHub](https://github.com)と連動されているのでgitにpushだけでデプロイが可能なのでCI/CDに適切なプラットフォームです。現在`Node.js`,`Java`,`PHP`,`Go`などの言語を対応しています。

# Heroku-CLIのダウンロード
Heroku-CLIはターミナル上でHerokuアプリをよりやすく扱えるツールです。
[こちら](https://devcenter.heroku.com/articles/heroku-

元記事を表示

【AndroidStudio】ERROR: Failed to install the following Android SDK packages as some licences have not been accepted.

Windows10にAndroidStudio(3.5.2)をインストール。
gitからプロジェクトをclone。
Make Projectしたら以下のエラー。

“`bat
ERROR: Failed to install the following Android SDK packages as some licences have not been accepted.
platforms;android-27 Android SDK Platform 27
build-tools;28.0.3 Android SDK Build-Tools 28.0.3
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to anoth

元記事を表示

MyBatisのforeachエラーに悩まされた

# MyBatisのforeachでハマった件

MyBatisの``を利用して、複数データのバルクINSERTしようと思ったのですが
何故かこんなエラーが発生。
MyBatisのバージョンは3.2です。

“`
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘__frch_item_0’ not found. Available parameters are [addItems, param1]
“`

# 実装

“`ItemMasterMapper.java
void addItems(@Param(“addItems”) List addItems);
“`

“`ItemMasterMapper.xml

INSERT INTO item_master(name, price, option) VALUES

元記事を表示

Spring Boot + Spring Security で BASIC 認証を実現する

## 概要
– Spring Boot と Spring Security を使って BASIC 認証を実現する
– 今回の環境: Java 11 + Spring Boot 2.2.1 + Spring Security 5.2.1 + Gradle 6.0.1

## BASIC 認証とは

[Basic認証 \- Wikipedia](https://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC)

> Basic認証では、ユーザ名とパスワードの組みをコロン “:” でつなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。

[HTTP 認証 \- HTTP \| MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/Authentication)

> ユーザーIDとパスワードはネットワークを介してクリアテキスト (base64 でエンコードされていますが、base6

元記事を表示

Java HTTP ClientでHTTP Keep Alive Timeoutを設定する

# はじめに
Open JDK 11から導入されたHTTP ClientでHTTP Keep Alive Timeoutを設定するサンプルです。

サーバー側からのコネクションクローズとクライアントからのリクエストが同時処理されたタイミングでの通信エラーを防止するため、クライアント側のKeep Alive Timeout値をサーバー側より短くするのは鉄則です。

そのため、クライアント側の設定方法を押さえておくことは、重要です。

# 利用するJDK Version
執筆時点で最新のOpen JDK 13を利用します。
また、コードの実行にはjshellを利用します。
余談ですが、jshellはまじで便利ですね。

“`shell-session
~ $ java –version
openjdk 13.0.1 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
“`

# 設定方法

HTTP

元記事を表示

new interface

接口可以通过直接new来实例化?先说结论:

接口、抽象类,不可以被new!
接口、抽象类可以理解成是模糊不定的东西,要使用它的特质必须要实例化,实例化不能直接通过new,而是通过实现接口方法、继承抽象类等。
上面的代码,与Object A = new Object(); 不同,因为还忽略了一个重要的地方:大括号!!!

new__接口__大括号{ 。。。};

后面加花括号这种写法,实际是new了一个实现接口的匿名类,开发人员需要在匿名类内部(花括号内)实现你那个接口。

元記事を表示

数値のキーボード入力について質問です

以下のコードの文字入力部分をBufferedReaderにすると正常に入力できないのですがなぜでしょうか
Scannerだと正常に動きます
“`

BufferedReader br = new
BufferedReader(newInputStreamReader(System.in));

double max = Double.NEGATIVE_INFINITY;
double min = Double.POSITIVE_INFINITY;
double dat = 0;

System.out.println(max + ” ” + min);

for(int i = 0;i < 4;i++) { System.out.println("数値入力"); dat = br.read(); //ここ if(dat > max) {
max = dat;
}
if(dat < min) { min = dat; } } System.out.println

元記事を表示

JavaのBigDecimalでハマらないために

同僚がBigDecimalの扱いでハマったのでメモ。

# イミュータブル(Immutable)とは

~~変数の値~~オブジェクトを操作するとき、その~~変数~~オブジェクト自身の値を書き換えれることを「ミュータブル」、書き換えれないことを「イミュータブル」といいます。Javaの場合、~~intやdouble~~Calendarはミュータブル、Stringはイミュータブルになります。

# BigDecimalはどっち?

BigDecimalのAPIドキュメント
https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html

足し算をする add メソッドについて見てみましょう。

“`java
/**
値が(this+augend)でスケールがmax(this.scale(), augend.scale())であるBigDecimalを返します。
パラメータ: augend – このBigDecimalに加算する値。
戻り値: this + augend
*/
public BigDecimal a

元記事を表示

【Android/Kotlin】UIまとめ

## 目次
1. パスワード非表示
2. addTextChangedListenerの書き換え
3. enum書き換え

## 1. パスワード非表示
![undefined]()

– java

“`MainActivity.java
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
“`
– kotlin

“`activity_main.xml

“`
## 2. addTextChangedListenerの書き換え
– java

“`MainActivity.ja

元記事を表示

Spring Security OAuth2はあと数年でサポート終了、その代替策

# Spring Projectからの発表
https://spring.io/blog/2019/11/14/spring-security-oauth-2-0-roadmap-update

重要な点は下記2点です

– 世の中に認可サーバー製品がたくさんあるので、Spring Securityではサポートしないことを決定しました
– Spring Security OAuth2は、2.3.xは2020年3月でEOL、2.4.xはFeature Parityに達してから(?)1年はサポートします

ということで、Spring Security OAuth2を使っている方は、なるべく早く移行することをおすすめします(下記)。

# クライアントおよびリソースサーバーの移行
Spring Security 5.x本体のOAuth2機能を使いましょう。

# 認可サーバーの移行
Keycloakなど、他の製品に移行しましょう。

# 参考資料
– [基礎からのOAuth 2.0とSpring Security 5.1による実装](https://www.slideshare.net/ma

元記事を表示

OTHERカテゴリの最新記事