- 1. テクニカル指標計算ツールとリアルタイム監視ツールに売買高を対象にする
- 2. 【IntelliJ】Jarファイルの生成方法
- 3. マージツールに売買高を対象にする
- 4. Javaでの擬似自分型(Simulated self type)
- 5. 実務未経験者がJavaとSpringBootを使用しWebアプリを制作
- 6. Java: PDFに画像透かしを追加する
- 7. Javaを始めました
- 8. Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較
- 9. 累乗(Java
- 10. Java 記録 1日目
- 11. 単体テストのコード設計を考える
- 12. jlinkでカスタムJREを作成しコンテナ・サイズを65%削減 – Spring Boot
- 13. Java 19新機能まとめ
- 14. Oracle なぜセーブポイントは削除されるのか
- 15. Javaでメソッドをオーバーライドしたとき、オーバーライドされたメソッドを使用する親クラスで定義されたメソッドの挙動
- 16. Springで@Transactionalを付与したメソッドを別のメソッドから呼んでみる。ロールバックされるか?されないか?
- 17. MultipartFileについてメモ
- 18. auカブコム証券のkabuステーションPUSH APIを受信してCSVファイルへ保存する(フラッシュ間隔を調整)
- 19. try-with-resourceについて
- 20. Struts2のOGNL式について
テクニカル指標計算ツールとリアルタイム監視ツールに売買高を対象にする
# はじめに
前記事
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/98d36c3bae2f5e119bd7Eclipseの押すボタンから詳しく書かれていて、とても助かりました。有難や…
Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較
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