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

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

TL;DR 2022年版macOSにJavaをインストールする方法

“`sh
brew install java

sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

echo ‘export PATH=”/opt/homebrew/opt/openjdk/bin:$PATH”‘ >> ~/.zshrc
source ~/.zshrc
“`

元記事を表示

マージしたチャートデータからテクニカル指標を計算する(パラボリック編)

# はじめに

前記事
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のテスト用モック

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのオブジェクト指向プログラミングの比較

Python JavaScript PHP Java Ruby

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

Python,Ruby,PHP,Java,JavaScript,Perlのオブジェクト指向プログラミングの比較

# Python

https://qiita.com/kaitolucifer/items/926ed9bc08426ad8e835

# Ruby

https://qiita.com/shogo-1988/items/e749208c0733bbe025c0

# PHP

https://qiita.com/mpyw/items/41230bec5c02142ae691

# Java

https://qiita.com/nao0725/items/aba8126c50bf85543c78

# JavaScript

https://qiita.com/shotets/items/e4b2ca36f5cbdc39

元記事を表示

OpenJDKとJDKディストリビューション

https://qiita.com/yoshioterada/items/38cc9e5e0c95f8be84e1

https://qiita.com/yoshioterada/items/2a54dfb60a02a26a2c35

JDKディストリビューション、なぜこんなに種類があるのか。
[OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava](https://qiita.com/yamadamn/items/2dd26a014791b9557199)
以下等がわかりやすかったので自分のためにまとめていたものの蔵出しです…
[JDK、Oracle JDK、OpenJDK、Java SEってなに?](https://qiita.com/nowokay/items/c1de127354cd1b0ddc5e)

## [Java SEとは](https://www.javadrive.jp/start/install/index5.html#section1)
– Java Platform, Standard Edition の略。
– Java

元記事を表示

時刻のみのtime_tを作ってみた

# はじめに

前記事
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のテスト用モック

元記事を表示

【ほぼメモ】Scalaの表現力の高さに恐れおののいたJavaエンジニア

トランプを表現するクラスを書いてみた。
こんな書き方できんのかよ…

“`scala:Hello.scala
package example

import example.Suits._
import example.ValueHolder._

object Hello {
def main(args: Array[String]) = {
println(Ace of Spades) // すごい
println(2 of Diamonds) // とてもすごい
}
}

sealed trait Suits {
def emoji: String
}

object Suits {
object Diamonds extends Suits {
override def emoji: String = “♦”
}
object Clubs extends Suits {
override def emoji: String = “♣”

元記事を表示

Lucene の Tokenizer で 「数字%」や「文字列&文字列」を許容する

備忘録

https://mikolajkania.com/2017/08/27/How-to-change-standard-tokenizer-rules/

を参考にしました。

コードは、

https://github.com/YmBIgo/JFlex_Test/blob/master/lucene_tokenizer.flex.java

https://github.com/YmBIgo/JFlex_Test/blob/master/Sample_Lucene.java

にあります。

## StandardTokenizer

Lucene の `StandartAnalyzer` では、`StandardTokenizer` という 絵文字など1文字なのに3バイト以上で認識されてしまうものを修正するなどの機能があります。つまり、Lucene で全文検索をする際の最初の前処理をしているところと言ってもいいでしょう。

この StandardTokeniser の初期の設定で、Lucene で 「20%」など「数字%」や「A&E」など「文字列&文字列」が弾かれてし

元記事を表示

【Java】覚えた用語一覧集 2 データ型

## データ型 使用頻度の高いもの
|種類|型名 |内容|
|:–|:–|:–|
|整数型 |int|-2147483648 ~ 2147483647 までの整数を取り扱える箱|
|文字列クラス|String| “java”、”勉強”、”Mac” などの複数の文字を扱える箱|

##
|種類|型名|内容|
|:–|:–|:–|
|整数型| byte| -128 ~ 127 までの整数を取り扱える箱|
|整数型| short| -32768 ~ 32767 までの整数を取り扱える箱|
整数型| long| -92223372036854775808 ~ 9223372036854775807 までの整数を取り扱える箱|
|浮動小数点型| float| ± 3.4 × 1039 ~ ± 1.4 × 10 – 45 細かい数字を扱える箱|
|浮動小数点型| double| ± 1.8 × 10308 ~ ± 3.4 × 10 – 324 さらに細かい数字を扱える箱|
|論理型| boolean true| ( 真 ) or false ( 偽 ) 真偽を測る箱|
|文字型| c

元記事を表示

【Java】覚えた用語一覧集 1

## 用語集

|用語|意味|
|:–|:–|
|クラス|データと処理のかたまりのことをクラスと呼ぶ|
|フィールド|クラス内でどのような情報を扱うかのデータのこと|
|メソッド|クラス内に書かれた処理のこと|
|引数|メソットを処理する際に設定できる条件 イメージは材料|
|戻り値|引数を渡して処理を実行した際に戻ってくる結果|
|インスタンス(化)|クラスから作られたオブジェクト、設計図 イメージはレシピ|
|コンストラクタ|インスタンスを呼び出すタイミングで呼び出される特別なメソットのこと|

元記事を表示

Docker-composeでSpringBoot×PostgreSQL環境構築

## 事前知識
https://qiita.com/ryome/items/240f36923f5cb989da27

https://qiita.com/ryome/items/4b6b934b1b2021acfa26

https://qiita.com/ryome/items/6e59dcbe4735d45d58a3

https://qiita.com/ryome/items/3d4de62b560aac31bede

https://qiita.com/ryome/items/56a3263f347a08bd860f

https://qiita.com/ryome/items/35df47a01a7fe3ac70ee

## 環境

| 環境 | バージョン |
| —————— | ———- |
| Docker | 20.10.17 |
| Docker-Compose | 1.29.2 |
| Java | 11 |

元記事を表示

IntelliJで「11は無効なソース・リリースです」

最近、Intellij を使用するようになりました。
しかし、Intellij を使用している際、「11は無効なソース・リリースです」というエラーが発生しました。
Java のバージョンに問題がある事までは、わかったのですが、具体的にどうしたらいいかという事が分かりませんでした。

このエラーの原因を調整していく中で、Intellij の以下部分を修正する必要が分りました。

– Project SDK
`プロジェクトを右クリック→Open Module Settings→Project→Project SDK`
上記の順に進んでいくと、Project SDK があります。
このProject SDK を該当のバージョンに修正する必要があります。

– Language level
`プロジェクトを右クリック→Open Module Settings→Module→Source→Language level`
Language level のバージョンを該当のバージョンに修正する必要があります。

– Module SDK
`Modules→Dependencies→Module S

元記事を表示

日付文字列を指定したフォーマットで整形する

Java 8から導入されたDate and Time APIで実装するとこんな感じです。

“`java:Qiita.java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.ResolverStyle;

public class Qiita {

public static void main(String[] args) {

String srcDateStr = “20221002”;
String srcPattern = “yyyyMMdd”;
String destDateStr = null;
String destPattern = “yyyy-MM-dd”;
try {
LocalDate date = LocalDate.parse(srcDateStr, DateTimeFormatter.ofPattern

元記事を表示

ABC271A~Eの解答[Java]

## はじめに
今回はEまで解けたのでEまで載せます。
なお、Cはコンテスト中のものも載せますがかなり汚いのでコンテスト後に解いたものも載せます。

では見ていきましょう。

## A – 484558
問題文は[こちら](https://atcoder.jp/contests/abc271/tasks/abc271_a)

printfでいけそうとは思ったのですが16進数の時の書式指定ってどう書くんだ・・・?ってなったのでif文で2文字にしました。
“`A.java
class Main{

static Library System = new Library(java.lang.System.in,java.lang.System.out);

public static void main(String[] args)throws IOException{

//Nの受け取り(16進数に変換して大文字に)
String N = Integer.toString(System.in.nextInt(),16).toUpperCase();

//1文字なら

元記事を表示

Jextract を使って、Java から libcurl を使ってみる

Jextract に libcurl を呼び出すサンプルがありました。これを試しに動かしてみました。
(まだ Preview の [Foreign Function & Memory API](https://openjdk.java.net/jeps/424) を使います)

ちなみに、ほかにも以下のライブラリを使うサンプルが置いてあります。
|ディレクトリ|実行するライブラリ|
|—|—|
|cblas|OpenBLAS(行列演算ライブラリ)|
|lapack|LAPACK (数値解析ソフトウェアライブラリ)|
|libclang|Clang の C インタフェースライブラリ|
|libcurl|cURL(データ転送ライブラリ)|
|libffmpeg|FFmpeg(動画・音声の記録・変換・再生ライブラリ)|
|libgit2|Git(バージョン管理)|
|libjimage|ImageJ(画像処理ライブラリ)|
|libproc|/proc インターフェイス|
|lp_solve|lp_solve(混合整数線形計画法のソルバー)|
|opengl|OpenGL(2次元/3

元記事を表示

JFlex のコンパイル後のファイルを読んでみた。

## JFlex とは?
今回は、Lucene というオープンソースの全文検索ライブラリを読もうと思ったら、意味不明な Javaファイルがあって、調べたら JFlex で書かれていたことが判明したのですが、その JFlex のファイルに関する 情報が無かったので記事にしました。どこかで同じように、JFlex の謎ファイルを見つけた人の一助になればと思います。

JFlex とは、パーサーで言うところの lexer を作ってくれるライブラリで、作った lexer で文字列をブロックに分けたりなどのことを自分でカスタマイズできます。
使い方は、flex ファイルという特別なファイルを作って、それを JFlex の jar にかませると、lexer が実装された Java ファイルが出力されるようになっている。
噛み砕いて説明すると、

1:[JFlex の jar をダウンロード](https://www.jflex.de/download.html)
2:flex ファイルを作成する。(今回は[作ってあるもの](https://inst.eecs.berkeley.edu/~cs164/

元記事を表示

Java の Charset のバイトオーダーとBOM

[Java のサポートされているエンコーディングの一覧](https://docs.oracle.com/javase/jp/18/intl/supported-encodings.htm)を見ていると、`UTF-16`, `UTF-16BE`, `UTF-16LE`, `x-UTF-16LE-BOM` とあって、なにが違うんだろうと思って調べてみました。

まとめると、読み・書き時のバイトオーダー (BO) [^bo] と書き込み時の BOM (Byte Order Mark) の違いでした。
* 読み込み時のバイトオーダー
* BE / LE が付かないものは、BOM から自動的に判定
* 書き込み時のバイトオーダー
* BE / LE が付かないものは、BIG バイトオーダー
* BOM の有無
* UTF-8 に「BOM あり」で書き込むものはない[^bom]

[^bo]: バイトオーダー = エンディアン
[^bom]: バイトオーダーに関わらず同じ内容になるので、本来は UTF-8 に BOM (Byte Order Mark) は不要

|名称|

元記事を表示

【Spring Security】WebSecurityConfigurerAdapterからの脱却

# はじめに
Spring bootでログイン機能を実装する方法を解説している記事を探した際、現在では非推奨になっているやり方でログイン機能を実装している記事ばかりが出てきて苦労したので、備忘録として書き残しておきます。

# WebSecurityConfigurerAdapterは現在非推奨に
Spring bootのログイン機能の実装方法を検索すると、多くはこれを継承してうんたらかんたらみたいな記事が出てくると思います。ですが、これは現在非推奨になっています。使っても深刻なエラーになったりはしませんが、非推奨にされたものを使い続けるのは将来のことを考えるとよくありません。

# Configクラスの書き方
ソースコードは以下のようになります。WebSecurityConfigurerAdapterを継承していないことに注目してください。これが現時点での新しい書き方です。URLなどは自身のWebサイトで使うものに応じて置き換えてください。

“`java
package dev.itboot.todo.config;

import org.springframework.bo

元記事を表示

不変なオブジェクトっておいしいの?

javaを勉強している方であれば一度は「不変なオブジェクト(immutableオブジェクト)」という言葉は聞いたことがあると思います。

単語の意味的に、変化しないのね…と容易に想像できますが、学習を進めていくうちに不変なのに変わってる??不変ってどういうこと?と疑問に思ったため、今回は私なりに不変オブジェクトってなんぞやを解説していきたいと思います。

## 目次
+ 不変オブジェクトとは?
+ 単語解説
+ 実際にコードを見てみよう
+ まとめ

# 不変なオブジェクトとは?
不変なオブジェクトとは、「データが変化しないオブジェクト」です!!
わかります…横文字嫌い…オブジェクトってなに?おいしいの?って思いますよね…
オブジェクトとは「物体、対象」と訳されます。
つまり、不変なオブジェクトとは「対象のデータが変化しない」ということになります。

単語の意味を理解できたところで実際にコードを見て学習を進めましょう。

# 単語解説
プログラミング学習をする上で大変なことの一つとして単

元記事を表示

Spring Cloud OpenFeign でサーバ間通信処理のサンプルを作ってみた。

## Spring Cloud OpenFeign とは
Springで簡単に通信処理を実現できるツール

## サンプルのシステム構成図
・サーバ情報
Server①:localhost:8080
Server②:localhost:8090
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951197/a98f44b7-0b39-47e3-c84e-6ef3d1b73085.png)
#### 実行内容
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951197/9a0966a2-ca32-a47c-6ccc-4373e0e4ca23.png)
「localhost:8080/api/hello」をブラウザーで表示すると「Hello, World」と表示。
Server①がServer②に「Hello,」という文字を渡して、Server②の処理内で「Hello, World」に加工。

元記事を表示

OpenJDK コミッターになれました

2022年9月20日付で OpenJDK のコミッターになることができました。
協力してくださった方々に感謝申し上げます。

これからコミッターを目指す方のために、私の例を記載します。

# OpenJDK での役割
OpenJDK では、Contributor, Author, Committer, Reviewer の役割があります。後者の方が権限が高いです。

Contributor 修正を提案するためには Oracle Contributor Agreement を承諾する必要があります。個人として、または会社として承諾が必要になります。個々のケースによって状況が異なるため、詳細は公式ページを確認してください。https://openjdk.org/guide/
Author 2件以上修正が採用された後プロジェクトリーダーにメールで依頼すると Authorとして登録されます。Author になると JDK Bug System のユーザーがもらえるので、自分で問題を登録す