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

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

テクニカル指標計算ツールとリアルタイム監視ツールに売買高を対象にする

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

【IntelliJ】Jarファイルの生成方法

# はじめに
コーディングしたJavaソースを別環境に持っていったり、実行可能形式にしたい場合にJarにする必要がありました。
ネットで調べてみると、依存ライブラリを含める形の方法ばかり出てきました。
依存ライブラリを含めるとかなり膨大なJarファイルになってしまうので、依存ライブラリを含めない形にしたいと想い、調べてみたのでまとめてみます。

# 依存ライブラリを含める場合
1. IntelliJの[ファイル] > [プロジェクト構造] > [プロジェクト設定] > [アーティファクト]に移動します。
2. 追加ボタンから[JAR] > [依存関係を持つモジュールから…]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/d2073e81-7027-af74-9fb7-20fea729cc3d.png)

3. 対象のモジュールを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

マージツールに売買高を対象にする

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Javaでの擬似自分型(Simulated self type)

Javaで自分型、つまり自分自身の型を表現する方法について紹介します。
メリットを実感してもらうためにメソッドチェーンを使って説明していきます。
メソッドチェーンというのは

“`java
Person person = new Person().setFirstName(“太郎”).setLastName(“日本橋”);
“`

のようにSetterのように状態を更新するメソッドの返り値を典型的なSetterのように`void`にするのではなく、自分自身を返すことによってメソッドを連鎖させて記述する手法です。
先程のコードはメソッドチェーンを使わないと以下のように書くのではないでしょうか。
Javaのコードなので仕方ないですが、なんだか冗長に感じますね。

“`java
Person person = new Person();
person.setFirstName(“太郎”);
person.setLastName(“日本橋”);
“`

ただ、Javaの場合、「自分自身」を表す型がないのでメソッドチェーンと継承を組み合わせると少し複雑なことをしないといけません。
それが

元記事を表示

実務未経験者がJavaとSpringBootを使用しWebアプリを制作

# 目次
– 0.9/23追記
– 1.はじめに
– 2.制作期間
– 3.成果物のリンク・ソースコード
– 4.作成に至った経緯
– 5.実装した機能・使用した技術
– 6.アプリケーションの概要
– 7.制作過程
– 8.振り返り
– 9.まとめ
# 0.9/23追記
無事Javaエンジニアとして内定をいただいたため、限定公開していたこの投稿を全体公開いたします。これからシステムエンジニアを目指す方やスクールに通わず独学で勉強している方などの参考材料にしていただければ幸いです。質問や要望等がありましたら、コメント欄にてお願いいたします。

# 1.はじめに
 2021年12月頃からJavaの勉強をし始め、2022年4月からWebアプリケーションの制作を通してJavaのフレームワークであるSpringBootの学習しておりました。今回の投稿ではその中で学んだことや振り返り、今後の課題をまとめていきます。
 製作期間の都合上、実装できなかった機能や勉強不足な点も多々あり不完全でありますがリリースすることを目標に制作したためherokuで一旦公開しております。採用担当の方、同じエンジニア

元記事を表示

Java: PDFに画像透かしを追加する

PDFは製品説明、会社契約などの重要な内容を保存するのによく使われています。文書の著作権を保護し、他人が勝手に修正しないようにしたい場合や、文書の権威性を高めたい場合は、透かしを追加することができます。そのため、PDFに画像透かしを追加するのも非常に実用的な機能です。[Free Spire.PDF for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)は、この機能を簡単に実装するのに役立ちます。以下は具体的な操作手順です。

## Spire.PDF.Jarのインストール
方法1:
mavenを使用している場合は、次のコードをプロジェクトのpom.xmlファイルに追加することで、JARファイルをアプリケーションにインポートできます。
“`ruby:qiita.rb


com.e-iceblue
e-iceblue
https://

元記事を表示

Javaを始めました

Eclipseを使用して、「Hello, World」のプログラムを実行した。
上手くいって嬉しかったが、まだ何が何だかよく分からないので、発展したプログラムが動かせるように練習していきたい。

kintoneでJavaで書いたプログラムを走らせるのが目的なので、
使い方をもう少し調べて、連休中に試してみようと思う。

▼参照した記事
@koukonko さん
https://qiita.com/koukonko/items/98d36c3bae2f5e119bd7

Eclipseの押すボタンから詳しく書かれていて、とても助かりました。有難や…

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

# Python

https://qiita.com/msssgur/items/12992fc816e6adf32cff

# Ruby

https://qiita.com/EZ_Denta/items/6489039212e21d4fc49f

# PHP

https://qiita.com/hikaru_/items/4cc7b616aa61868cdcdd

# Java

https://qiita.com/gatchan03/items/e8eecf468b7dab960198

# JavaScript

https://qiita.com/higa02/items/a7a0a1d96d1d67a7c88b

# Perl

https://perlzemi.com/blog/2011012

元記事を表示

累乗(Java

# 累乗

“`calc.java
public static void main(String[] args){
int floor = 5;
int exponent = 3;
int answer = 1;
for(int i=1;i <= exponent;i++){ answer *= floor; } System.out.println("answer:"+answer); } ``` ```calc.py print(f'answer:{5**3}') ``` :relaxed:

元記事を表示

Java 記録 1日目

Java 1日目

equals/toString/hashCodeのオーバーライドが大事

“` Java:toString method
public String toString(){
return “勇者(名前”+this.name+”)/HP=”+this.hp;
}

“`
“`Java:equal method
public boolean equals(Object o){
if(o==this)return true;
if(o==null)return false;
if(!(o instanceof Hero)) return false;
Hero hs=(Hero)o;
if(!this.name.trim().equals(hs.name.trim())){
return false;
}
return true;
}
“`
“`Java:hashCode method
publi

元記事を表示

単体テストのコード設計を考える

# 背景
テストコードはあってもどのようなケースを想定しているのかわからない。
少しでも頑張らなくて良くなるテストコードとなる様にはどうすれば良いかを検討している。
※これは検討中のメモです
※コードは適当です(動きません)

# 課題
1. どんなケースを想定したテストなのかがわからない
2. 十分なケースかわからない
3. 愚直過ぎて解析が辛い

# 解消案検討

## 1. どんなケースを想定したテストなのかがわからない

### 詳細
– テストケースの説明がない or 情報が不十分
– コードを解析しないといけない

### 検討案
– docにケースの説明を記載する
“`java
/**
* 説明: xxx
* 設定値: yyy
* 期待値: zzz
*/
@Test
public void testXXX() {}
“`

## 2. 十分なケースかわからない

### 詳細
– テストケースの全量がない
– 全てのケースを解析するしかない

### 検討案
– テストコード設計しましょう
**※方針は検討中**
– コード中にテストケー

元記事を表示

jlinkでカスタムJREを作成しコンテナ・サイズを65%削減 – Spring Boot

Spring Boot で作成したアプリケーションをコンテナ化する際、jlink コマンドを利用してカスタム JRE を作成し、軽量なベース・イメージを利用する事で、349MB から 122MB と大幅にコンテナのイメージ・サイズを削減する事ができます。今回はその方法を詳細に紹介します。

## 作成方法の手順

### サンプルプロジェクトの作成

Spring Starter を利用してサンプルのプロジェクトを作成します。

[Create Spring Boot App](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.3&packaging=jar&jvmVersion=17&groupId=com.yoshio3&artifactId=hello-sample&name=hello-sample&description=Demo%20project%20for%20Spring%20Boot&packageName=com.yoshio3&dependencies=w

元記事を表示

Java 19新機能まとめ

Java 19が2022/9/20にリリースされました。

https://mail.openjdk.org/pipermail/jdk-dev/2022-September/006933.html
今回、正式導入された機能がほとんどありませんが、Record PatternsやVirtual Threadは注目すべき機能です。

こちらの配信で解説しています。
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228058/1601b660-d2f8-36f7-1cba-f852930261e1.png)](https://www.youtube.com/watch?v=-5zlmBnxmCU)

詳細はこちら
[JDK 19 Release Notes](https://jdk.java.net/19/release-notes)
[Java SE 19 Platform JSR 394](https://openjdk.java.net/projects/jdk/19/spec/)

元記事を表示

Oracle なぜセーブポイントは削除されるのか

# 疑問
>「ROLLBACK TO」文を使って特定のセーブポイントにロールバックした場合、そのセーブポイント以降に作成されたセーブポイントは削除される

というところで、

削除するって物理的に行が削除されるの?
なんで削除されるの?
削除されないとどうなるの?

とたくさんの疑問がわいてきたので、調べた内容を共有します

### どのように削除されるのか
「物理的にファイルからその行が削除される」のではなく、発行されたSQLによって設定された SAVEPOINT が論理消去されます。

### なんで削除されるのか?
SAVEPOINT まで ROLLBACK すると トランザクションが終了ます。すなわち、そこまでの処理は正常終了しているということです。したがってROLLBACK した SAVEPOINT 以降に設定された SAVEPOINT は不要になるためで消去されます。
削除されないと何か良くないというより、いらないものなので仕様上削除される。という認識です。(間違っていたら修正お願いします)

## まとめ
SQLって意外と奥が深いです。。。

Rails使っていた時

元記事を表示

Javaでメソッドをオーバーライドしたとき、オーバーライドされたメソッドを使用する親クラスで定義されたメソッドの挙動

確かめたかったことは以下のコードと結果が全てです。
`Parent`クラスの`greet()`メソッドでは内部で`say()`メソッドを呼び出しています。
`Child`クラスでは`say()`メソッドをオーバーライドしています。その結果`Child`クラスの`greet()`メソッドでは`Child`クラスの`say()`メソッドが使用されています。

これは`Parent childParent = child;`のようにして`Parent`クラスのインスタンスとして扱って` childParent.greet();`のように呼び出した場合も`Child`クラスの`say()`メソッドが使われます。(こっちは参照の流れを考えると当然な気もしてきた。)

`Parent`クラスのインスタンスだと思って`greet()`メソッドを呼び出したら、実は`Child`クラスの`say()`メソッドが裏で使われていたとなるとコードリーディングしづらくなりそうですね。

“`java
public class Main {
public static void main(String[]

元記事を表示

Springで@Transactionalを付与したメソッドを別のメソッドから呼んでみる。ロールバックされるか?されないか?

## 疑問
`@Transactional`アノテーションをつけたメソッドを同じクラス内の別のメソッドから呼び出した時に、途中で例外が発生した場合ロールバックされるのか?されないのか?気になったので調べてみました。

結論から言えという方はこちら

@Transactionalアノテーションをつけたとしても、同じクラスの別のメソッドからの呼び出された場合、@Transactionalアノテーションがない場合と全く同じ挙動になる。

## 手を動かしてみる

まず、公式チュートリアルからコードを拝借してきましょう。
チュートリアル完了後のコードをVSCodeで開いてみます。

“`
# コードをクローンしてくる
git clone https://github.com/spring-guides/gs-managing-transactions.git
# VSCodeでプロジェクトを開く
code ./gs-managing-transactions/co

元記事を表示

MultipartFileについてメモ

## はじめに
`MultipartFIle`について整理しておきたいので、自分用にメモ。

## about
・`form`から「`multipart/form-data形式`で送られてきたファイル」を受信した際の表現。

・データ内容は、メモリかディスクに保存される。

## チェーンできるメソッド一覧

・`getBytes()`
バイトの配列に変換できる

・`getContentType()`
ファイルのタイプを返してくれる

・`getInputStream()`
ファイルの内容を読み取る

・`getOriginalFileName()`
ファイル名を返してくれる

まだまだ色々とある。

[参考](https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/web/multipart/MultipartFile.html)

元記事を表示

auカブコム証券のkabuステーションPUSH APIを受信してCSVファイルへ保存する(フラッシュ間隔を調整)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

try-with-resourceについて

try-with-resources 文は、1 つ以上のリソースを宣言する try 文である。
ここで言うリソースはプログラムで読み込みや書き込みなどを行った後に、閉じなければならないオブジェクトを指す。

try()の()の中に使用するオブジェクトを宣言することで書くことができる。
書き方の例として以下、オラクルのドキュメントの例を引用

“`例.java
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
“`

ちなみにオブジェクトは複数宣言可能みたいで、宣言する際は;で区切ることが必要である。
try文の()の中にリソース宣言して処理を書いていくことができ、処理終了後はリソースは自動的に閉じられる。

例を見ただけではなんなので、通常のtry文と比較してみた。

以下は、5分に1

元記事を表示

Struts2のOGNL式について

# Struts2のOGNL式について

## 概要
Struts2ではJSPやvalidation.xmlにOGNL式が記述できる。OGNL式は他にもstruts.xmlのresultにも記述できたり、JSPではJakartaEEのEL式、スクリプトレットと組み合わせて使用できる。
OGNL式、スクリプトレット、EL式の違い、組み合わせ、OGNL式のstrutsタグ以外での使用について述べる。

### 調査環境
– Ubuntu 22.04.1 LTS
– openjdk version “11.0.12” 2021-07-20 LTS
– struts-2.5.26
– Tomcat 9.0.64

## JSPにおけるOGNL式、スクリプトレット、EL式の解析タイミング
JPSではOGNL式、スクリプトレット、EL式が記述可能だが、それぞれ解析のタイミングが異なる。
### スクリプトレット
スクリプトレットはJSPの初回呼び出し時にJasperコンパイラによってJavaクラスにコンパイルされる。そしてJavaクラスのメソッド、コードの一部として実装される。
いつ解析する? J

元記事を表示

OTHERカテゴリの最新記事