- 1. 【v44】auカブコム証券のkabuステーションPUSH APIを受信してCSVファイルへ保存する(先頭カラムにタイムスタンプを追加)
- 2. Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較
- 3. Bランクレベルアップメニュー 文字と整数の組のソート 解答
- 4. VSCodeのポータブルモードでJavaをビルドする方法
- 5. KeyCloakについて
- 6. Bean バリデーションが効かなかった話(1 errorsField error in object validation)
- 7. Azure FunctionsからMySQLに接続する~Java編~
- 8. 【Java】拡張for文を入れ子的に2度使用する際の挙動を調べました。
- 9. なぜ書こうと思ったか
- 10. コード内でやること
- 11. 固定文字列を返すAPIをDockerでデプロイする
- 12. Bランクレベルアップメニュー 文字列の重複カウント 解答
- 13. Lombokでgetterのプレフィクスを削除する方法!(maven)
- 14. 【初心者専用】Java8のStreamについて
- 15. ラムダ式とStreamAPI
- 16. Re:ゼロから始める開発環境構築①
- 17. 【Thymeleaf】共通部品内でフィールド名をもとに値を扱う
- 18. Bランクレベルアップメニュー 文字の重複カウント 解答
- 19. ABC273A~Eの解答[Java]
- 20. Bランクレベルアップメニュー 指定範囲だけ大文字 解答
- 21. Java: Spring APIのバリデーション実装について
- 22. Javaの隠された (しかも、ちょっと面白い) 文法 3選
【v44】auカブコム証券のkabuステーションPUSH APIを受信してCSVファイルへ保存する(先頭カラムにタイムスタンプを追加)
# はじめに
過去記事は「[auカブコム証券のkabuステーションREST APIに関する記事一覧](https://qiita.com/hiuchida/items/611ba237dc1d1f6e3dca)」。
PUSH APIを受信して保存したCSVファイルは、売買高やOPのGreeksを対応してから変更されていないが、第1カラムが日付をまたがったときに、前日となる場合がある。
“`
2022-08-09 23:59:58,27860.0,181351.0
2022-08-09 00:00:00,27855.0,181357.0
2022-08-10 00:00:03,27855.0,181510.0
“`そこで、後から補正を加えたが、生データをソートすることもできないので、保存するときのクライアント側のタイムスタンプを追加する。
# 実装
カラム数が変わってしまうが、とりあえず第1カラムに追加する。
“`java
// 日付をまたぐ時間帯で日付が前日となる問題があるため、クライアントのタイムスタンプを先頭カラムに追加する。
String now =
Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較
Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較
# Python
https://qiita.com/pocokhc/items/836a3596df5facd00824https://qiita.com/nabion/items/594fb3316583130a636e
# Ruby
https://qiita.com/suketa/items/ab6b88093de4a54b3b06
# PHP
https://qiita.com/takeyoshi-k/items/2a993eefbe06be047eff
# Java
https://qiita.com/tobita_yoshiki/items/0400f7e393fc0ba2d0cb
# JavaScript
https://qiita.com/mokomium/items/57
Bランクレベルアップメニュー 文字と整数の組のソート 解答
# STEP: 36 インクリメント
## 問題
https://paiza.jp/works/mondai/prob60/sort_asc_0## 解答
“`java:step36.java
import java.util.*;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int result = addUp(n, 1);
System.out.println(result);
}/**
* nとmの足し算する関数
* 流用性を高める為に足し算する数字は任意で決めれるようにする
*
* @param n 標準入力
* @param m nに足したい数字
*
* @return 足し算結果
* */
VSCodeのポータブルモードでJavaをビルドする方法
# VSCodeのポータブルモードでJavaをビルドする方法
Javaでは、EclipseやNetBeansが有名ですが、もちろんVSCodeでもJavaを使えます。
本記事では、VSCodeでJavaをビルドする方法についてご紹介します。また、ポータブルモードでセットアップするため環境変数の設定はしていません。
ユーザー名は**mazok**にしているので読み替えてください。## 環境
私は、以下の表に示す環境で記事を書いています。| 名前 | バージョン |
| —- | —- |
| Visual Studio Code Portable x64 | 1.72.2 |
| Java SE Development Kit 19 | jdk-19 |:::note info
本記事で使用する、VSCodeの拡張機能である、Language Support for Java(TM) by Red Hatでは、[About the Java 17 requirement](https://github.com/redhat-develope
KeyCloakについて
業務でAPIサーバーをJava, SpringBootで作成した時、認証・認可サーバーとしてKeyCloakを使用しました。その際、学んだことを備忘録としてここに残しておきます。
【KeyCloakとは何なのか?】
1.KeyCloakとは、シングルサインオンやAPIアクセスの認証・認可制御を実現する、Javaベースのアイデンティティ・アクセス管理ソフトウェアです。【KeyCloakをなぜ使うのか?】
1.ユーザーのデータを利用したいクライアントアプリケーションと、ユーザーデータを管理するリソースサーバーがあったとします。イメージとしては、フロントエンドがクライアントアプリケーション、バックエンドがリソースサーバーに該当します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919458/c84e1f16-c447-adb9-ea23-61bd54a95981.png)2.クライアントアプリケーションは、エンドポイントにアクセスしてAPIと必要なデータをやり取りします。し
Bean バリデーションが効かなかった話(1 errorsField error in object validation)
JavaのフレームワークSpring bootでBean バリデーションを実行した際にバリデーションが効かなかったのでいろいろと調べました。
## やりたいこと
フロントで入力した値をList型のformでバインドして指定したフォーマット(@DateTimeFormat(pattern = “yyyy/MM/dd HH:mm :ss”))の通りに値が入らなかったらエラーを出すという処理です。
## コード
“`java:workUser.java
@Data
public class WorkUser {
private int id;
private String userName;@DateTimeFormat(pattern = “yyyy/MM/dd HH:mm:ss”)
private LocalDateTime startTime;@DateTimeFormat(pattern = “yyyy/MM/dd HH:mm:ss”)
private LocalDateTime finishTime;
private int workF
Azure FunctionsからMySQLに接続する~Java編~
# 対象者
– Azure FunctionsからAzure Database for MySQLに接続してみたい方
– Javaで開発したい方
– コマンドベースで操作したい方# 概要
この記事では以下の内容について扱っています。
基本的にコマンドベースで進めていきます。– Azure Database for MySQLフレキシブル サーバー のリソース作成
– Azure FunctionsからMySQLに接続
– 【おまけ】Azure FunctionsでAPIキーを使用する## 前提
前回投稿した記事「[Azure FunctionsでAPIを作る~Java編~](https://qiita.com/fsdg-nagumo/items/5eec1e9b66d33e3f4687)」の続きとなります。
Azure Functionsの開発環境構築、デプロイ方法については記事をご参照ください。<前回のあらすじ>
1. Azure Functionsのローカル開発環境構築(Java)
2. 適当なダミーJSONデータを返すAPIを
【Java】拡張for文を入れ子的に2度使用する際の挙動を調べました。
paizaラーニングで2、3日前からJava入門編を始めた完全初心者が書いておりますゆえ、お手柔らかにお願いします。
なぜ書こうと思ったか
Java入門編:5の2次元配列を学習していたところ、いきなり拡張for文を2回使う手法がさらっと出てきてびっくりしたからです。
コード内でやること
①teamsと名付けた二次元配列に、それぞれ{a,b,c}、{d,e,f}、{g,h,i}を入れ、
②拡張for文を使って、それらの中身を全部printlnにて出力するということをします。
③その際に、拡張for文の中で、配列がどこからどれだけ取り出され、どう動くのかを出力結果を解釈して、知ろうと思います。~~~Java:拡張for文
public class Main {
public static void main(String[] args) {//2次元配列に中身を入れる
String[][] teams = {{“a”,”b”,”c”},{“d”,”e”,”f”},{“
固定文字列を返すAPIをDockerでデプロイする
前回仮想マシンを作ったので、今回は固定文字列を返すAPIを作り、AppServiceにデプロイします。色々と設定や制約があるかもしれないのでDockerをデプロイする形が一番ハマる要素がないかと思っています。
## APIを作る
SpringBootの公式に手順があったのでVisualStudioCodeで作るhttps://spring.io/guides/gs/spring-boot-docker/
“`java:Application.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestControl
Bランクレベルアップメニュー 文字列の重複カウント 解答
# STEP: 30 文字列の長さ
## 問題
https://paiza.jp/works/mondai/prob60/count_string_0## 解答
“`java:step.java
import java.util.*;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();// 文字数を取得
int length = line.length();
System.out.println(length);sc.close();
}
}
“`
## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/60
Lombokでgetterのプレフィクスを削除する方法!(maven)
## やりたいこと
↓ このようなクラスがあった場合…
“`java:Boo.java
@AllArgsConstructor
@Getter
public Boo {
private int id;
}
“`
↓ 以下コードでIDが取得可能ですよね!
“`java
new Boo(1).getId(); // 1
“`
↓ それをこうじゃ!
“`java
new Boo(1).id(); // 1
// ↑ getプレフィクスがない! 出力は上のコードと一緒
“`## やり方
src > main > java下にlombok.configを作成し、下記1文を追加するのみです!
“`config:lombok.config
lombok.accessors.fluent = true
“`## 注意
また、上記を行うとsetterもプレフィクスがなくなることにご注意ください!
“`java:Boo.java
@AllArgsConstructor
@Getter
@Setter
public Boo {
【初心者専用】Java8のStreamについて
## 0. 最初に
開発経験のない新入社員が、Javaを研修で学んだはずなのに見たこともない関数インターフェースに悩まされ、さらには上司の開発陣はもれなくムキムキで泣いているので、自己研鑽と同郷のために記事を投稿する## 0.5 APIとは
そもそも、APIは言葉はよく聞きますが、意味をしっかり理解している新人はいますか?私もそこまでしていなかったので、調べました。
「API」とは、「Application Programming Interface」の頭文字です。
アプリケーションをプログラムするうえでのインターフェースと言われれば、多少ピンとくるかもしれませんが、
わかりやすくいうと、ソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるもので、外部とのやり取りを行い、よりシステム構築を簡易的に汎用的にしているみたいです。
要するに我々の味方です。ですから、ここから先に説明するStreamもコードの可読性を上昇させたりと、いいことしかないというわけです
## 1. Stream API
St
ラムダ式とStreamAPI
# ラムダ式とは
ラムダ式とはjava8から使用できるようになったコーディングの文法のことである。
関数型インターフェイスを実装したクラスのインスタンスを短い記述で作成することが可能になっている。# 関数型インターフェイスとは
関数型インターフェイスとは抽象メソッドを1つだけ持つインターフェイスのことである。
抽象メソッドを1つだけ持つという特徴がラムダ式での記述を可能にしている。(型推論)関数型インターフェイスは標準APIでいくつか用意されているが自作することもできる。
詳しくは後半で記載する。# ラムダ式の構文
まずはラムダ式で書いたコードと書いていないコードを見て、どのような構文か確認していく。
“` ラムダじゃないよ.java
public interface InterfaceSample {
public String method(String str);
}public class Sample {
public static void main(String[] args) {
InterfaceSample ifs = n
Re:ゼロから始める開発環境構築①
ふと、個人の開発環境を作りたいと思ったので備忘録として載せます。
# 背景
普段仕事開発してるけど、「そういえば自分で開発環境作ったことなくね?」と思い、異動とか転職したときに何もできなくなりそうな予感がしたので「ゼロから環境構築ができる」人になりたいと思った。# やりたいこと
①GitHubのアカウント作成(リモートリポジトリ作成まで)
②IntelliJとのGitHub連携
=============とりあえずここまで===============
③諸々の設定
④ビルドサーバ構築
⑤コンテナ環境構築※多分④⑤はAWS使う
# ①GitHubのアカウント作成
1. [GitHub](https://github.co.jp/)にアクセス
![スクリーンショット 2022-10-16 12.24.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/a2a93092-a7d7-7e71-d14b-5e3f712e04ed.png)2. 必要情報の入力![スクリーンショット
【Thymeleaf】共通部品内でフィールド名をもとに値を扱う
# 結論
共通部品で「フィールド名」と「値」を必要とした場合、呼び出し元でその2つを渡せば機能するが、共通部品内でフィールド名をもとに値を扱うようにすれば引数は1つですむ。
※場合によっては工夫が必要なことがある“`html
“`
“`html
“`
# 経緯
[Thymeleaf](https://www.thymeleaf.org/index.html)を使った画面実装において、入力項目や表示項目についてデザインが共通している部分を共通部品にしたくなった。
例えばテキストボックスをThymeleafの記法を気にせず実装するとこう
Bランクレベルアップメニュー 文字の重複カウント 解答
# STEP: 25 文字列の長さ
## 問題
https://paiza.jp/works/mondai/prob60/string_count_0
## 解答
“`java:step25.java
import java.util.*;public class Main {
public static void main(String[] args) {Scanner sc = new Scanner(System.in);
String line = sc.nextLine();// 文字数を取得
int length = line.length();System.out.println(length);
sc.close();
}
}“`
## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.
ABC273A~Eの解答[Java]
## はじめに
今回もA~Dはコンテスト中、Eはコンテスト後に解いたものを載せようと思います。では、見ていきましょう。
## A – A Recursive Function
問題文は[こちら](https://atcoder.jp/contests/abc273/tasks/abc273_a)定義通り再帰しても良いですが、これは1~Nの総乗なのでfor文で回してやれば良いです。
“`A.java
class Main{static Library System = new Library(java.lang.System.in,java.lang.System.out);
public static void main(String[] args){
//Nの受け取り
int N = System.in.nextInt();//初期解
int answer = 1;
//f(0)=1、f(1)=1なので2から
for(int i=2;i<=N;i++) answer *= i; //答えの出力 System.ou
Bランクレベルアップメニュー 指定範囲だけ大文字 解答
# STEP: 18 文字列の分割
## 問題
https://paiza.jp/works/mondai/prob60/substring_upper_0
## 解答
“`java:step18.java
import java.util.*;public class Main {
public static void main(String[] args) {Scanner sc = new Scanner(System.in);
doAStringBreak(sc);
sc.close();
}/**
* 文字列改行をする関数
*
* @param sc 標準入力
*/
public static void doAStringBreak(Scanner sc){while(sc.hasNext()){
System.out.println(sc.
Java: Spring APIのバリデーション実装について
## はじめに
– とあるプロジェクトでJava × SpringでAPIを製造したのですが、その際にバリデーションについて調査したので、備忘録として内容をまとめてみました
– Java × Spring でAPIを作成した際にリクエスト段階でバリデーションチェックをしたいときに有効## 環境
– Java 11
– Spring Boot 2系
– Lombok## 前提
– Java × Spring でWeb APIを実装
– APIリクエスト時に、RequestDTOを用いて**送信されるJSONリクエストをRequestDTOにマッピングする想定**## Spring / APIのバリデーション実装
– Springは、Java標準であるJSR-303のBean Validationをサポートしています。Spring MVCでの開発においては、Bean Validationを利用してバリデーションをする方法が推奨されています。※ **JSR-303:Bean Validation**は「**JavaBeansのプロパティが取り得る値や条件を、制約のアノテーショ
Javaの隠された (しかも、ちょっと面白い) 文法 3選
# この記事は?
この記事は**知名度がかなり低そうなJavaの文法**を、独断で3つ選んで紹介するものです。動作確認したJavaのバージョンは OpenJDK19 ですが、Java8 の時にはこれらの文法が既にありました。
では、早速行ってみましょう。
# 1. ラベル
https://docs.oracle.com/javase/specs/jls/se19/html/jls-14.html#jls-14.7文(といっても専らforやwhile文)には、 **ラベル** をつけることができます。
for文の中のbreakやcontinueで参照することで、ラベルがついたループを抜けたり、もう一回やり直すことができます。“`java
var list = new ArrayList>();
// マス目を x + y で埋めていくが、 x + y が6以上になった時点でやめる
label:
for(int x=0; x<5; x++){ list.add(new ArrayList());
fo