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

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

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しようと思ったのですが、
何故かこんなエラーが発生

“`
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

元記事を表示

test

Test

元記事を表示

ネストクラス(自分用)

#1. ネストクラスとは
クラス定義の中にさらにクラスを定義でき、その名称がネストクラスという。
##1-1. 特徴
シンプルで可読性に優れており、使用場所も限定されるため、その存在を外部から隠したいクラスに適用することが一般的。

##1-2. ネストクラスの種類
ネストクラスは以下の種類に分けられる。

– ネストクラス
– staticクラス
– インナークラス(非staticクラス)
– [ローカルクラス](#2-ローカルクラス)
– [匿名クラス](#3-匿名クラス)

##1-3. ネストクラスのルール
| static/非static共通 | ・外側のクラスと同じクラス名は使用できない
・アクセス修飾子を使用できる。
・abstract/final 修飾子を使用できる。 |
|:-:|:–|
| staticクラスのみ | ・非static/static メンバをもつことができる
・外側のクラスで定義したインスタンス変数にアクセスできない |
| 非staticクラスのみ | ・staticメンバをもつこ

元記事を表示

Java入門時のリンク集&メモ(超自分用)

Javaの学習をしたときに参考にしたサイト(超個人的な備忘メモです。。。)

## Samurai Blog様
– [【一通り理解しよう】UMLのクラス図の描き方を解説](https://www.sejuku.net/blog/86582)
– [【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)](https://www.sejuku.net/blog/24681)
– [【Java入門】thisとは? 意味や使い方のキホンを解説します!](https://www.sejuku.net/blog/19815)
– [【Java】superとは?意味や使い方について詳しく解説](https://www.sejuku.net/blog/20081)
– [【Java入門】継承とコンストラクタの呼び出し(super/this)](https://www.sejuku.net/blog/20896)

## デザインパターン(TECHSCORE様)
– [デザインパターン INDEX](https://www.techscore.com/tech/DesignPat

元記事を表示

Basic Java OOps concepts

OOP concepts allow us to create specific interactions between Java objects. They make it possible to reuse code without creating security risks or making a Java program less readable.
Here are the four main principles in more detail.
Abstraction
Abstraction aims to hide complexity from the users and show them only the relevant information. For example, if you want to drive a car, you don’t need to know about its internal workings. The same is true of Java classes. You can hide internal implement

元記事を表示

JasperReportでの日本語フォント、外字の利用

JasperReportsでのPDF出力で、日本語フォントや外字を利用する方法を紹介します。
# 前提条件
* JasperReport 6.x.x

# やりたいこと
* PDFを開く環境によって、使用されるフォントが変わるとレイアウト崩れや異なる字形で表示される等の問題が起きるので、PDFにフォントを埋め込みたい
* 今回使用するフォントは[IPAフォント](https://ipafont.ipa.go.jp/)
* ipaexg.ttf (IPAexゴシック)
* ipaexm.ttf (IPAex明朝)
* ただし、フォントが埋め込まれたPDFファイルのサイズは、そうでないものに比べ大きくなる
* 外字もPDFに出力したい
* 外字がインストールされていない端末やプリンターでも表示できるよう、外字もPDFに埋め込む。

# 準備
Mavenプロジェクトを作成し、dependencyにjasperreportsを追加します。

“`xml

net.sf.jasperreports

元記事を表示

Sourcetrail(macOS版)をJavaコードで使ってみる

Sourcetrail

Sourcetrailがオープンソース化されました。
ソースコードの全体像と詳細を提供する検索エンジンです。
Home Page
Git

対象言語

– C
– C++
– Java
– Python

他の言語は「SourcetrailDB」ツールで拡張出来るようです。

インストール

Download Page

– 使用したいOS・形式をダウンロードする
今回はmacOSのzip形式
「Sourcetrail_2019_4_61_macOS_64bit.zip」(2019/11/20時点最新)
– ファイルを解凍する
![alt](http://www.cloudsqua

元記事を表示

2020年ソフトウェア開発の7つのトレンド

以下はTiara Brown Neilさん ( [hackernoon](https://hackernoon.com/@theneil248) )による記事、[7 Software Development Trends 2020 Revealed](https://hackernoon.com/software-development-trends-2020-revealed-spi305m)の日本語訳です。

# 7 Software Development Trends 2020 Revealed

![表紙](https://hackernoon.com/drafts/6i17k30ki.png)

知ってますか? ITプロジェクトの半分以上が失敗しています。
ソフトウェア開発業界の複雑さと動的な性質を認識している私たちの多くにとっては、それほど衝撃的な事実ではありません。

絶え間ない革新と進歩が伴うこの予測不可能な業界で生き残るためには、そのペースに合わせることが必須です。
賢い者は、ソフトウェア開発のサービスを利用するだけでなく、すべてのテクノロジーの長所と短所を比較し検

元記事を表示

Spring FrameworkのResourceインターフェースのおさらいメモ

# 概要

Spring FrameworkのResourceインターフェースと実装クラスをを使ったリソースファイルのアクセス方法をおさらいしたときのメモです。

**環境**

* Windows 10 Professional 1909
* OpenJDK 13
* Spring Boot 2.2.1

**参考**

* [Core Technologies – 2. Resources] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/core.html#resources)
* [Package org.springframework.core.io] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/javadoc-api/)

# [Resource] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/javadoc-api/org/springframework/c

元記事を表示

用語解説:メンバ変数 / ローカル変数

# メンバ変数とは

* クラスの中にある変数
* オブジェクトの属性を定義したもの
* データを受け取るための変数
* オブジェクトが持つパラメータ

## 例

### 概念イメージ

オブジェクト:うちのうさぎ ・・・モノ
メンバ変数 :可愛い、怖がり、ドジ ・・・どんなものか
メソッド  :寝る、食べる、跳ねる、走る ・・・どう動けるか

### コードのイメージ

“`java

public class Rabbit{

Int age; //メンバ変数 年齢を格納
String personality; //メンバ変数 性格を格納

void setAge(int newAge){
age = newAge;
}

Int getAge(){
return age;
}
}
“`

# ローカル変数とは

* プログラム内の限定された範囲でしか参照できない変数
* メソッド内で宣言した変数はそのメソッドの外では参照不可
* if文、for文内で宣言した変数はその文節の外では利用不可
※文節:文を実際の言語として不自然でない程度に

元記事を表示

新しいソートアルゴリズム作ってみたけど、本当に新しいのか知識ないからわからない

#新しいソートアルゴリズム作ってみたよ!
ふとした瞬間に、ソートアルゴリズムを思いつきました。
「なんか、うまくいくんじゃね?」と思い、その辺の紙切れに少し流れを書いてみたところ、特におかしな点はなさそう。「じゃあ、実装するか!w」のノリで実装しました。

最近ネタ不足で、過去プログラムの紹介ばかりしていますが、これもその一つで、javaでの実装です。
これは大体1年前のものだった気がします。

#アルゴリズムの名前は”ハノイソート”
この命名の理由は、二つのスタックを使ってソートを実現するその動きがハノイの塔を解く様に似ていたからです。

ハノイの塔.png

以下に、ハノイソートでソートを行う様子を示します。

![hanoi.gif](https://qiita-image-store.s3.ap-north

元記事を表示

OTHERカテゴリの最新記事