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

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

【初心者】Java 変数/論理演算子/拡張for文【備忘録22】

##12月中盤でしていたこと
###Webページ初作成
html/css,java script,jQueryの学習が一段落したので
一度自身のプロフィールや、今までの仕事の事、周りの事をまとめた
Webページを作成しました。簡単なページになるのですが
初めてということで3週間ほどゆっくり時間を使いました。

hoverやアコーディオンを使いながら、作成したが
アコーディオンに少し苦戦したので、また作成する際は必ず
使うようにし、慣れるよう心掛ける。

次はアプリを作れるよう、Javaの学習を進めていく。

##Java
###メソッド/出力

基本の書き方が決まっており、クラス部分の中にメソッド部分があり、その中で
出力を行う形となっている。

“`java

System.out.println(“出力したい数値”);

“`

上記が出力部分の書き方。
数値は数式には””は不要!!(付けてしまうと文字列として判断してしまう。)

###変数

基本的にデータ型+変数名で構成される。
変数=値(データ)を入れる箱のようなもの。
データ型というのは変数に入れる値によって変わるの

元記事を表示

R3 Corda : Token SDKを利用したトークン発行

【本文】

コンソーシアム型DLT(Distributed Ledger Techonology)
DLT(Distributed Ledger Techonology)の基盤を提供するR3 Cordaでは、Token SDKを通じてトークン発行が可能となっている。
Cordaでのトークンとは、端的にデジタルアセットとしての証券(など、コモディティ含めた金融商品、及び法定通貨にペッグしたステーブルコイン)を指す。

Token SDKでは、Ethreumでよく聞くfungible token(ERC20)とnon-fungible token(ERC721)の両タイプが発行可能であり、またEvolvable type(デジタルアセットのライフサイクルの中で、例えば株式分割や要綱変更によって発行時より何らかの変更が発生する。)、もしくはfixed type(法定通貨のように原則として変更が加わらない。)の2種類のタイプが存在する。

詳細は、以下参照。
**Corda State Hierarchy Design : Corda Token SDK**
https://githu

元記事を表示

JavaのsubstringとC#のSubstringの違い、移植方法を整理してみる

#はじめに
既存資産をJavaからC#へ移植をしているが、文字列の一部を切り出すメソッドの仕様の違いによりバグがでているため今後のためにメモ。

# 文字列の一部を切り出すメソッド
Java, C#ともに2種類ずつある。説明は参考文献の引用である。

#JavaのString#substringメソッド
| メソッド | 説明 |
|:——————————|:————————————|
| public String substring(int beginIndex) | この文字列の部分文字列である文字列を返します。部分文字列は指定されたインデックスで始まり、この文字列の最後までになります。 |
| public String substring(int beginIndex, int endIndex) | この文字列の部分文字列である文字列を返します。部分文字列は、指定されたbeginIndexから始まり、インデッ

元記事を表示

Spring BatchでBeanを入れ子にすると正常に処理されない問題の解決方法

# 概要

たとえば、Chunk指向Taskletを表すクラスを作成しようと `FlatFileItemReaderBuilder`, `ItemProcessor`, `JdbcBatchItemWriterBuilder` を保持するクラスを定義したくなるかもしれない。

しかしながら、このクラスを `Bean` として登録しても `JdbcBatchItemWriterBuilder` は下記のようなエラーが出て正常に動作しない。

“`:出力されるエラー
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります “INSERT INTO

元記事を表示

【要約】オブジェクト指向でなぜつくるのか

## 0. はじめに

名作の多い「なぜシリーズ」の書籍のひとつである、[**オブジェクト指向でなぜつくるのか**](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E5%B9%B3%E6%BE%A4-%E7%AB%A0/dp/4822284654/)を読みましたので、参考になった点や教育に使いたい点をまとめてみました。

## 1. オブジェクト指向でなぜつくる?
書籍のタイトルにもなっている疑問。

– プログラムの再利用性を高めるため。
– 変更に対して柔軟に対応するため。
– 理解しやすいプログラムにするため。…etc

色々ありますが、少し嚙み砕くと**ソフトウェアを楽に作るため**と言えます。

## 2. オブジェクト指向が難しい

元記事を表示

Javaのログ出力について

# ログファサードライブラリ

log4jの後に標準のjava.util.loggingが作られたが、log4jが使いやすかったため、完全には普及しなかった。
そのためログライブラリに依存しないようなインタフェースが必要とされた。
ライブラリ毎にログライブラリが異なると、1つのファイルにログをまとめるのが大変になるので、基本的にはSLF4Jを使用するのが良い。

## SLF4J(Simple Logging Facade For Java)
SLF4J + logbackまたは、SLF4J + Log4j2の構成が多いようだ。
Commons Loggingが使いにくいために作成されたみたいで、SLF4Jを使えない
理由が無ければ、これを使うのが良さそう。

### 必要なJAR
API(必須):slf4j-api-\*.jar
ログ実装へのハインディング(どれか1つ)
Log4j:slf4j-log4j12-\*.jar
Log4j2:log4j-slf4j-impl-\*.jar
Logback:logback-classic-\*.jar
java.util.logging:s

元記事を表示

Selenium で要素のテキストが取得できないときの対処法

# スクレイピングによくつかうSeleniumで、うまく要素のテキストが取得できないときの対策方法

ハマりやすいポイント
– クラス名にスペースが含まれている
– クラス名はあっているのにテキストが取得できない

今回は、この2つのポイントについて対処法をまとめます。
## クラス名にスペースが含まれている場合
JavaScriptであれば、スペースが含まれていても

“`javascript
document.getElementByClassName(“class name”).innerText;
“`
のように、そのままクラス名を記述するだけで、
指定したクラス名のテキスト要素は簡単に取得できます。
それをSeleniumで代替する場合は、

“`Java
WebDriver.findElement(By.cssSelector(“div[class=’class name’]”).getText().toString();
“`
のようにBy.cssSelectorを使って、
`WebDriver.findElement(By.cssSelector(“{タグ名}[

元記事を表示

各種 Web Application Framework メモリ使用量比較調査 (Go, Ruby, Python, Node.js, Java)

## 概要

– 「Hello World な HTML を返す程度の Web アプリケーション」または「それぞれの公式ドキュメントに載っているチュートリアルの初期状態に近いもの」を作成してメモリ使用量を比較する
– Web アプリケーションサーバは現時点でよく使われていると思われるものを使用する
– テンプレートエンジンはフレームワークのデフォルト設定またはフレームワークが推奨しているものを使用する
– macOS Catalina 上でメモリ使用量を計測
– メモリ使用量の計測には ps コマンドの RSS 値を使う (複数のプロセスを使うものはRSS値を単純に足したものをメモリ使用量とした。メモリ共有部分については考慮していないため、もう少しメモリ使用量が少ないかもしれない)

## 調査結果

メモリ使用量が少ない順に並べる。

– 7MB: Go 1.13 + Gin 1.5
– 10MB: Go 1.13 + Revel 0.21
– 24MB: Ruby 2.7 + Sinatra 2.0 + Puma 4.3
– 40MB: Python 3.8 + Flask 1.1

元記事を表示

アルゴリズム体操11

#Remove Duplicates from a Linked List
LinkedListのhead からスキャンしていき、重複するノードがあれば削除して重複がないLinkedListのheadを返します。

##説明
以下のLinkedListが与えられとします。
![Screen Shot 2020-01-04 at 12.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/07ae8790-5ace-e8dd-4bd2-ffc5f142032a.png)
データが重複する28 と 14 を削除すると、以下のLinkedListになります。
![Screen Shot 2020-01-04 at 12.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/00305d42-6540-f4fa-55fd-0237d5ab3d8a.png)
##Solution
###Runt

元記事を表示

はじめてのSpring Boot

#はじめてのSpring Boot

最近、スキルアップを狙った就職を考えているため、
フレームワーク未経験ではあるが、フレームワークを使用して
ポートフォリオを作成しようと考えいてる。

現在は、退職済みのため1ヶ月程でポートフォリオを作成する予定だが、
その際の備忘録として記事を投稿する。

ポートフォリオの内容として、Spring Bootを使用して簡単な在庫管理システムを構築する。
今後も、DBや画面の設計、AWSへのデプロイなどを行っていく予定であるが、
Spring Bootの仕様を把握する必要があるため、最初に入門書を何冊か読んだ。

ここでは、直近で読んだ書籍でSpring Boot未経験者からでもアプリケーションを
構築する知識を得られるであろう書籍を紹介する。

紹介する書籍を読む上で、必要となる前提知識は大まかに下記の内容である。
・Java8の言語仕様の知識(Oracle資格 Java8 Gold取得レベル)
 紹介する書籍がJava8での実装を行なっているため、
 Java8の知識は必須となる。
 中でも、StreamAPIは頻出するので、Java8 Gol

元記事を表示

JDK 14でPreview ReleaseされるRecordsが素敵なのでJShellで試そう

## はじめに

DZoneで [JDK 14 Rampdown: Build 27](https://dzone.com/articles/jdk-14-rampdown-build-27) を読むと

> One might say that JDK 14 Early Access Build 27 is the “records build.”

と書いており、とうとう試せるようになった **Records** をJShellで試してみました。

なお、 JDK14 のリリース時や、その後の Records の正式リリース時に内容は変わっているかもしれませんので、ご容赦ください。

## JEP 359: Records

[JEP 359: Records](https://openjdk.java.net/jeps/359)[^1] はJavaの文法改善を目的としたProject Amberの1つ [^2] です。

半年ごとにリリースされるようになった Java ですが、当初のもくろみどおり、いろいろモダンな言語も参考に改善が進んでいます。

そんな中で **Record

元記事を表示

AWS Cognitoで認証したユーザのID トークンを Java で検証する

## やりたいこと

[AWS Amplify の Authentication](https://aws-amplify.github.io/docs/js/authentication) で認証したクライアントが id_tokenをサーバに送信し、Javaで実装したサーバで id_token を検証します。

## TL;DR

– 発行者(ペイロードのiss) が対象にしている Cognitoのユーザプールであることを確認する。
– 署名の検証は https://github.com/auth0/java-jwt に丸投げ。
– com.auth0.jwt.JWTVerifier はスレッドセーフなのを前提にして、Cognitoが署名に使用した RSA鍵ペアを取得する回数を減らすために自前でキャッシュする。

## 実装

IdTokenValidator.java

“`Java:IdTokenValidator.java
package com.exampleawsCognito.jwt;

import j

元記事を表示

Windows上のOpenJDKな環境でJava Web Startを使う

\:information_source: この記事は別サイトで執筆した[Windows上のOpenJDKな環境でJava Web Startを使う – ひつじぶどう](https://blog.rumraisin.tokyo/?p=97)の内容を転載しています。

# はじめに
タイトルの通り, OpenJDKな環境でJava Web Startを使いたくなった(外発的動機)のでその時のめもです。

Oracleに頼ることなくJava Web Startを使うにはIcedTea-Webというのを使えば良いみたいですが, Linux環境で使う記事はたくさんあったもののWindows環境で使う記事はあんまり見かけなかったのでまとめました。

# 実行環境
| 項目 | 値 |
|:—–|:—–|
| OS | Windows 10 Pro |
| Build | 1809 |
| JDK Version | OpenJDK 1.12 |

# 導入手順
下記の手順を実施します。
## OpenJDK 12を準備する
そもそもJava Web StartをOpenJDKで使いた

元記事を表示

JavaとJacksonでJSON その③HTMLにJSONを埋め込んでJavaScript から利用する

#はじめに
JSONを使う場合、JavaScriptからAjax経由でデータの送受信を行うケースが多いと思う。しかしながら、サーバからHTMLを受信したタイミングで、JSONデータを受け取ってJavaScriptで利用したいケースもある。この場合、サーバから返却するHTMLの中にJSONデータを埋め込んで、それをJavaScriptのオブジェクトとして読み込むことになる。PHPを利用した場合は、[HTML に JSON データを埋め込んで JavaScript から利用する](https://qiita.com/hoto17296/items/197bdf91f97a33a69dfc)に記載の事例があったが、我らがJava(Servlet/JSP)による事例がなかったため、悪戦苦闘した結果をここに残しておく。
#環境
– Java 1.8
– Tomcat 8.0.53
– Jackson 2.10.1

#まずは何も考えずにやってみよう⇒失敗
## サーバ側
サーバ側は以下の通りとした。”<"や">“については、[前回](https://qiita.com/kimisyo/items

元記事を表示

51歳からのプログラミング 備忘 android ダイアログに複数のViewを表示

ダイアログに複数のViewを表示するには、Viewを配置したLinearLayoutを、ダイアログにインフレートする。後で使いたい機能なのでちょっと備忘メモ。

構成
1.MainActivity.java
2.MyDialog.java
3.dilog_my.xml

“`java:MainActivity
protected void onCreate(final Bundle savedInstanceState){

AppCompatDialogFragment dialog = new MyDialog();
dialog.show(getSupportFragmentManager(),null);
}
“`

“`java:MyDialog.java

public class MyDialog extends AppCompatDialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Bui

元記事を表示

JavaFXでルートノードから下位ノードに向かって辿る 〜道順は知ってるんだけど〜

現在、JavaFXを使用してアプリを作成しているのですが、動的にノード(コンポーネント)を削除や追加する必要が出てきました。
しかし、ルートノードから下位ノードに向かってノードを辿っていく情報がほとんど無く、試行錯誤した方法を記載します。(ひとまず、調べたコンポーネントのみ記します)

**環境**
OS : macOS X Catalina
統合開発環境 : Eclipse 2019-12
Java : AdoptOpenJDK 11.0.5
JavaFX : 11.0.2
SceneBuilder : 11.0

“`text:NodeTree
1: AnchorPane ←ルートノード ①
2: ┣━━━ MenuBar
3: ┣━┳━ AnchorPane ②
4: ┃ ┗━┳━ SplitPane ←Horizontal(左右分割) ③
5: ┃ ┣━━━ AnchorPane
6: ┃ ┗━━━ PieChart ④
7: ┗━━━ AnchorPane
“`

① ⇢ ② ⇢ ③ ⇢ ④ の順にノードを辿っていきます。

“`java:sample.java

元記事を表示

Javaの木構造ライブラリ

# はじめに
「Google Guavaに無いんだから仕方ない」?まさか。

# 背景
木構造はたしかにグラフなのだが、だからといってグラフを木構造として使おうとすると気をつけないと木構造ではなくなってしまう。

# ライブラリ紹介
さっさと本題に入ろう。

– Search on GitHub: https://github.com/search?l=Java&q=tree&type=Repositories
– Search on Google: https://www.google.com/search?q=java+木構造+ライブラリ
– Search on Bing: [https://www.bing.com/search?q=java 木構造 ライブラリ](https://www.bing.com/search?q=java 木構造 ライブラリ)

## GitHub: Scalified/tree
**URL**: https://github.com/Scalified/tree
使いやすさ: ★★★☆☆
充実度: ★★★★☆
二分木、多分木はもちろんのこと、式木があ

元記事を表示

JavaとJacksonでJSON その②XSS対策

#はじめに
前回の続きとして、XSS対策について触れてみたい。XSSといっても色々あるが、今回JSONの文字列の中にJava Scriptのコードを埋め込まれる場合の問題点にフォーカスしたい。

#環境
– Java 1.8
– Tomcat 8.0.53
– Jackson 2.10.1

#問題となる状況
前回サーバ側は、URLでGETでアクセスするとJSONを返却するサーブレットを作成したが、今回そのままそれを利用する。そして返却するJSONデータの中にJavaScriptのコードを埋め込んでみる。具体的には以下のJSONを返却するようにした。

“`
{“id”:1,”name”:”kimisyo”,”datas”:[“Programmer”,”Data Scientist“]}
“`

うまくサニタイジングされないと、“`“`の部分のJavaScriptのコードが実行されてしまう。

まずは、一般的な方法として、AjaxによりサーバのURLに

元記事を表示

JDKのあれこれ

###Java Development kit
JDKとはJava Development kitの略で、
要はJava開発キットのことである。

JDKには2つの機能が含まれる

– コンパイラー(コマンド javac)
– javaの実行環境(Java Virtual Machine)

###JDKパッケージ
– Java SE (Standard Edition 通常はこれ)
– Java EE (Enterprise Edition サーバー用)
– Java RE (Runtime Edition 実行環境だけ)
– Java ME (Micro edition 家電などの組み込み用)

今後追加予定

元記事を表示

Spring 案件ソルーション 3

#Spring画面系をどう乗り切るか(技術面)その3

##CSS/Jqueryを試してみる。
###趣旨
とんがった案件でなくてもSpring画面系で必要な技術 HTML CSS jQuery Bootstrap
が出てくるのが当たり前になっている状況がある。今回は公開しているページを改良しながら
電卓を作ってみることによりCSS/Jqueryの練習をしてみようと思う。
###参考にしたページ

【jQuery】かんたん・シンプルな電卓の作り方


###修正内容
・ 4則計算記号を変更した。
→ それに伴って正規表現を使用した。
・ gridを使用するようにした。
###モジュール一覧
・calc.html
・calc.css

##学習用アプリの画像貼り付け
![スクリーンショット 2020-01-03 18.28.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271383/2d9c083a-7b93-d300-a0b

元記事を表示

OTHERカテゴリの最新記事