- 1. GeneratedValueについて
- 2. 【メモ】Javaのメソッドを共通化
- 3. Reactorのdeferの使い方
- 4. デザインパターンを蒸し返して個人開発に生かす
- 5. Spring Boot開発環境構築
- 6. Couchbase Lite機能解説:Androidアプリ開発におけるライブクエリ利用
- 7. Mavenで依存関係含めたJarを作成する
- 8. 米国上場企業の財務データを頑張って解析しようとした話 (XBRL)
- 9. 【 識別子(identifier)とそのルール 】
- 10. Java入門#1
- 11. FirebaseとHerokuでエセAndroidフルスタック開発をした話
- 12. Java SE8 Sliverの資格を取得して
- 13. SpringのDIとLombokってとても相性良くないですか・・・?
- 14. 【Java】なんとなくわかった気になれるラムダ式の解説
- 15. Java,Kotlin上からJDBCでSQLite接続しているときに、IDEA上でUnable to resolve tableと表示されてしまう時の対処法
- 16. 【これさえ読めばなんとなく違いがわかる】SpringBootの@〇〇Mappingとは?
- 17. 【 Javaで書いたソースコードが動作するまでの流れ 】
- 18. JEP 421: Deprecate Finalization for Removal
- 19. M1 Mac も速くないことがある
- 20. [IntelliJ IDEA] 静的セキュリティーチェックツール
GeneratedValueについて
最近、Spring Boot × Dockerで開発をしています。
本日のお題はGeneratedValueです。
## GeneratedValueとは
プライマリキー値を生成する方法を指定する属性である。GeneratedValueは4つの種類が存在する。
– AUTO : データベースごとに異なる方法を選択
– IDENTITY : テーブルのidentity列を利用
– SEQUENCE : シーケンスオブジェクトを使用
– TABLE : 主キー値を保持しておくためのテーブルを使用
である。それぞれはDMBSによって動向が変わってくる。
### IDENTITY
PostgreSQL : SERIAL
MySQL : AUTO_INCREMENT
Oracle : サポートなし### SEQUENCE
PostgreSQL : sequenceName
MySQL : サポートなし
Oracle : シーケンスオブジェクト### TABLE
何れも対応している。### AUTO
PostgreSQL : hibernate_sequence
MyS
【メモ】Javaのメソッドを共通化
## 共通メソッド分割前
“`java
//
Map> contractCodeResultMap =
queryResults
.stream()
.collect(Colletors.groupingBy(ContractSearchQueryResult::getContractCode));“`
## 共通メソッド分割後
“`java
// 契約書ごとにグループ化する処理を共通化したメソッドをprivateで定義
private Map> generateMapGroupedByContract(
ListqueryResults) {
return queryResults
.stream()
.collect(Collectors.groupingBy(ContractSearchQueryResult::getCont
Reactorのdeferの使い方
[reactor-core](https://github.com/reactor/reactor-core)のMonoやFluxを使う上で、よくやってしまうリソース解放に関する誤りを、`Mono#defer`の使い方とともに説明します。
reactor-coreのその他の使い方については、[Reactor 3 Reference Guid](https://projectreactor.io/docs/core/release/reference/)を参考にして下さい。## 前準備
[reactor-core](https://github.com/reactor/reactor-core)に従って、reactor-coreを使ったJavaプログラミングが出来る環境を準備します。## 問題のあるコード
`Mono`や`Flux`の処理は、`subscribe`や`block`等の終端処理が呼ばれた際に実行されます。このため、終端処理が呼ばれるたびに、`doOnTerminate`等のハンドラーが実行されます。以下のように、`Mono`の外側で作成したリソースを`doOnTer
デザインパターンを蒸し返して個人開発に生かす
#TL;DR
クラス型言語を使って自分で何か作る時、自分に言い聞かせる備忘録。
#GoFはいったん捨てろ
The Gang of Fourとかいう偉い4人組がデザインパターンの始祖を創造された。– 特定のロジックの実装に名前をつけたのがアルゴリズム
– 特定のインスタンスの連携に名前をつけたのがデザインパターンデザインパターンとはインスタンス間の連携の構造に名前をつけたものだ。
GoFの作ったデザインパターンは、思想の勉強としてはいい教材だがもう古い。
現代でも通用するものはあるが、不要なパターンのほうが多いと思う。
#具象と抽象を往復せよ
ある処理構造を設計する時に、最初のステップは具体的な事象のモデル化だ。
実現したい処理の構造を思い描いたら、そこから具体的な部分を削っていく。
抽象的な骨組みが残ったら、そこからまた具象部分を実装することを考える。
何度か具象と抽象を往復しているうちに、実装すべき内容が見えてくる。
#現代のパターンを使いまわす
典型的な要求とそれに適したパターンがあるのなら迷わずそれを使う。– パブリッシャー・サブスクライバーパターン
マスターインス
Spring Boot開発環境構築
##概要
先日Spring Bootを使ってWebサーバーを構境構築していたら、謎のエラーに苦しみ4時間程の時間を費やしてしまいました。(エラーの内容をメモし忘れるという致命的なミスをしてしまいました)
特にエラーなく環境を構築できたならいいのですが、僕と同じ謎のエラーに苦しんでいる人もいるかもしれないと思い、僕のやり方を書き残しておきます。
ちなみに未だに何が原因で何がエラーを解決したのかはよくわかっていません。####参考
##環境
言語:Java 17
OS:Windows 10 x64
IDE:Intellij Community Edition 2021.3.2
フレームワーク:Spring Boot 2.6.3
プロジェクト管理ツール:Maven##用語解説
**Spring Boot**:Java言語の環境下で使用することが出来るWebアプリケーションの開発をサポートするフレームワーク。
**Intellij**:Javaなど数多くのプログラミング言語に対応した統合開発環境(Wikipedia
Couchbase Lite機能解説:Androidアプリ開発におけるライブクエリ利用
# はじめに
以前にこちらの記事で、ライブクエリ、つまりデータベースの変更を監視するクエリについて、概要を記しました。
https://qiita.com/yoshiyuki_kono/items/8da15296e9a979fbff3d
今回は、以下の公式チュートリアルの内容をベースに、Androidアプリ開発におけるライブクエリの利用について、具体的なコードを交えて解説します。
https://docs.couchbase.com/tutorials/university-lister/android.html
Couchbase Liteについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。
https://techbookfest.org/product/5074954942939136?productVariantID=50
Mavenで依存関係含めたJarを作成する
# 概要
依存関係に設定しているJarファイルを含めてJarを作成する方法を記載
単純に作成すると、依存関係無いJarファイルが作成される#実行方法
## 作成するPOMファイル(一部)
以下記載を``タグの配下に記載する
で作成する内容の詳細を記載する “` xml
maven-assembly-plugin
2.2
make-assembly package
米国上場企業の財務データを頑張って解析しようとした話 (XBRL)
# はじめに
自分は数年前から米国株式投資をしており投資対象を絞る際にyahoo financeで業績情報を見るのですが、何千企業とあるのでなかなか比較が大変です。
そこでこのプロセスを一部でもよいので自動化できないかと思い、そのために業績データ(売上・売上総利益・営業利益など)のデータベースを作りたいなと思いました。必要となる株価や業績のデータはお金さえ払えば色々なベンダーが色々な形式(API, CSVダウンロード…)で提供しています。しかし、もちろんお金がかからないに越したことはないので無償で使えるものが無いかを調べたところ、業績データに関してはSEC(日本で言う証券取引委員会のような機関)がXMLベースのXBRLという形式で無償で公開していました。
今回は公開されているXBRL財務データを解析し、Yahoo financeに載っているような財務データの粒度でデータベースが構築できることを目指して取り組んだ結果を共有します。
# 前提知識 – XBRLとは
XBRLとはeXtensible Business Reporting Languageの略語で、訳すと「事業に
【 識別子(identifier)とそのルール 】
現在Javaを学習中なので、その備忘録としての投稿になります。
## 識別子とは
`変数名`、`関数名`、`プロパティ名`、`ファイル名`等を宣言・命名するときに使える、
`文字や数字の並び`のことです。
名前を何にするかは自由ですが、通常は、
`アルファベット`、`数字`、`アンダースコア(_)`、`ドルマーク($)`などを組み合わせて作ります。## ルール
名前を何にするかは自由とは言え、`ルールや慣習`があり、それを守らなければなりません。
### ①予約語を使わない
予約語とは、すでに使われている、`「int」`、`「void」`、`「static」`のような単語のことです。
宣言・命名にはこれらを利用することはできません。### ②既に使っている変数名の利用
例えば、既に変数nameを宣言しているのに、再び変数nameを宣言するようなことをしてはいけません。
同名の2つの変数の区別ができなくなるからです。### ③文字の大小の違いは区別される
大文字/小文字、全角/半角は完全に区別されます。
例えば、変数nameと変数Nameは全くの別物になります。###
Java入門#1
#Java入門その1
今回はJavaとはどんな言語なのかと、簡単なプログラムを書いてい見ます。##Javaとは
オブジェクト指向型のプログラミング言語です。
特に**業務用システムの構築**に適していると言われていて、世界で最も使われているプログラミング言語の一つです。###特徴
・まず、どんなコンピュータ上でも動作します。
このことを**プラットフォーム非依存**と呼んだりします。JavaはJava仮想マシンという擬似的に作り出されたマシン上で動作します。わかりづらいのでGoogle Chromeを考えて見てください。
Google Chromeも似ていて、仮想OS上で動作します。そのため、windowsでもMacでも使用することができます。Javaも同じで、Java仮想マシン上で動作します。そのため、windowsでもMacでも使用することができます。
・オブジェクト指向型プログラミング
これはC#やPythonのような、 クラスを作っていくプログラミングということです。
有名なオブジェクト指向型プログラミングに、Java,C++,Python,JavaScri
FirebaseとHerokuでエセAndroidフルスタック開発をした話
# まえがき
このたび、北海道札幌琴似工業高等学校 全日制 情報技術科を卒業することになりました。
今は学年末テストが終わって成績確定を待っている状況で、今後なにもなければ3/1日をもって卒業、進学することとなりました。弊校では三年時にすべての生徒が「課題研究」という名で、なにかしらものを作ります。
私の所属する班はAndroidアプリを作ることになりました。つまるところこの記事は、FirebaseとHerokuをバックエンドに持ったAndroidアプリを開発した話です。
主に成果物の概要と、振り返り、苦労をただただ書いていきます。技術的な内容は少ないかもしれませんが、Androidアプリ初学者の戯言と思っていただけると幸いです。# Contents
以下にこの記事内の記述内容について簡単にまとめます。
目次はハイパーリンクになっています。スマートフォンでご覧のかたや、Webブラウザのウィンドウサイズ等で右の目次が表示されていない方はご利用ください。– [作ったもの](#作ったもの)
– 実際の完成品について記述しています。
– [使った技術](#使った技術)
Java SE8 Sliverの資格を取得して
#Java SE8 Sliverとは
私は先日「Java SE8 Sliver」というOracle社が提供する、Javaの開発者向けの資格を取得した。このJava Silverとは、プログラミング言語Javaの技術レベルをOracle社が認定する資格で、正式名称は「Oracle Certified Java Programmer, Silver SE 8」である(ちなみにこのSE8はJavaのバージョンを指し、現在はSE8とSE11がある)。このJava Silverは中級者を対象としたものであるが、それ以外にも初級者向けのBronze、上級者向けのGoldなどがある。この「Oracle Certified Java Programmer」はJavaアプリケーション開発のためのプログラミング知識や、さまざまな状況への対応能力を有していることを客観的に証明できるものとなっている。つまり、このJava Silverと言う資格の取得にはプログラミングにおける「最低限動作可能な」コードだけでなく、「拡張性、可読性がともに高い」コーディング能力が求められるのである。
#取得までにかかっ
SpringのDIとLombokってとても相性良くないですか・・・?
SpringのDIとLombokって相性がいいよな、って今更になって思いました!
SpringのDIだけでなくて、探せば他にもLombokと相性が良い機能がありそうだなぁ・・・
どなたかご存知なら教えてください!# この記事はこちらに移管しましたmm
【Java】なんとなくわかった気になれるラムダ式の解説
## はじめに
よくわからず使っていたラムダ式ですが、JavaSilver取得を機に自分なりにまとめてみました!## そもそもラムダ式とは?
今まで**匿名クラス**でできた処理をより簡潔に記述できるようにしたもの(要は書き方のこと!)
## で、匿名クラスって何?
匿名クラスとはインタフェース実行のステップを簡潔にしたもの。
従来、インタフェースの実行は**①インタフェースの作成→②インタフェースの実装用のクラスを作成→③インタフェースの実行用クラスの作成**の3ステップを踏む必要があった。
“`java
// 1.インタフェースの作成
interface Car {
String carType(String typeName); // 車の種類(抽象メソッド)
}// 2.インタフェースの実装
public class CarImple implements Car {
@Override
public String carType(String typeName) { // 抽象メソッドのオーバーライド
return “carType:” + ty
Java,Kotlin上からJDBCでSQLite接続しているときに、IDEA上でUnable to resolve tableと表示されてしまう時の対処法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362835/09e8379b-c957-3cc2-bebb-8fe026409b46.png)
これをなおしたい。5分くらいハマったのでメモ。# 解決方法
File > Settings > Languages & Frameworks > SQL Dialects
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362835/71bb2aa0-5d1c-ef72-c7ab-e8b9b5c3f3a0.png)
ここを両方SQLiteにする
【これさえ読めばなんとなく違いがわかる】SpringBootの@〇〇Mappingとは?
## 今回比較する@〇〇Mapping
1.RequestMapping
2.PostMapping
3.GetMapping
4.DeleteMapping
5.PutMapping## 使い分けるメリット
一目見てどんな処理をしているメソッドが判断できるため、可読性が上がる
例)Getであれば登録データの取得のメソッドetc…詳細は以下をチェック!
## 各@〇〇Mappingの使い方
### 1.RequestMapping
サイト全体の入り口部分。
例)Qiitaにアクセスする### 2.PostMapping
新しいデータを登録する役割を果たす。(**INSERT処理**)
例)Qiitaにユーザー登録する/Qiitaに記事を投稿するetc…### 3.GetMapping
登録されているデータを取得する役割を果たす。
例)Qiitaのトレンドから1件の記事を開くetc…### 4.DeleteMapping
登録されている値を削除する役割を果たす。
例)Qiitaからユーザーを削除する/Qiitaへの投稿を削除するetc…##
【 Javaで書いたソースコードが動作するまでの流れ 】
最近Javaの学習を始めて、まずは`Javaのソースコードで指示した通りの動作`が行われるまでの流れを確認しています。
## ざっくりとした3つの流れ
1.まず、`ソースコード`を書きます。ソースコードが書いてあるファイルを`ソースファイル`と呼び、拡張子は`「.java」`です。
2.次に、そのソースファイルを`コンパイラ`というソフトウェアで`クラスファイル`に`コンパイル`します。クラスファイル内には`バイトコード`という`1と0が複雑にならんでいるもの`が詰まっていて、このファイルの拡張子は`「.class」`になります。
3.最後に、バイトコードを`マシンコード(機械語)`に変換します。変換には`インタプリタ`という内部に`JVM`というしくみをもったソフトウェアを用い、バイトコードを少しずつ読みながら翻訳をしして`CPU`に送って処理を実行します。このようにして`Javaのソースコードで指示した通りの動作`は行われます。
## 各用語の解説
ソースファイルとは….ソースコードを書き込んだファイルのこと
ソースコードとは….人が読める状態のプログラムのこと
クラ
JEP 421: Deprecate Finalization for Removal
動向キャッチアップ出来てなかったので纏め。
https://openjdk.java.net/jeps/421
## 概要
* タイトル通り、Finalizationを廃止する為に前準備するJEP。
* Java 1.0から存在してるprotected void finalize()を廃止。
* Finalizationに対する指摘自体は1998年から挙がってた、とのこと。
* Finalizationの問題点は、JEP本文ご参照。
* 経緯も纏まっていて非常に勉強になった。
* JDK18時点ではデフォルト有効で変わらず。
* 移行先は、try-with-resources(Java7以降)および、Cleaners(Java9以降)を想定。## 今後(JEP421で整備する範囲)
* 以下などfinalize()メソッドをDeprecated勧告。
“`java
java.lang.Object.finalize()
java.lang.Enum.finalize()java.util.concurrent.ThreadPoolExec
M1 Mac も速くないことがある
# これは何?
先日まで Mid 2015 の 15 inch MacBook Pro (Core i7 クアッド / 2.2 GHz) を使っていた。
先日 MacBook Pro 14 inch (M1 非Max) を手に入れたんだけど、あんまり速くないなと思うことがあったので、今日も楽しいマイクロベンチマーク。# 計算内容
ruby で書くと短くていいね。
“`ruby:ruby
N=10000
r=(1..N).max_by{ |x| ((N-x)**x/7) % 6074001001 }
p r
“`
こういう内容。なんの意味もない。出力は
“`text
8663
“`となれば正解。
これを、go, java, c++ with boost (clang, gcc), ruby, python3, node で試した。
以降、グラフで出てくる “m1”, “rosetta”, “amd64” の意味は下表のとおり。
|記号|実行ハードウェア|バイナリ|
|:–|:–|:–|
|m1|MacBook Pro 14 inch (M1 非Ma
[IntelliJ IDEA] 静的セキュリティーチェックツール
# 概要
ここ記事は下記のgithubを参考し、作成しました。
[immomoのgithub](https://github.com/momosecurity/momo-code-sec-inspector-java)### immomoとは
静的javaコード、sqlコードをチェックし、セキュリティー上の問題が発見すると、エラーをを表示し、改修案を提示してくれるIntelliJ IDEAのプラグインです。
# requirement
下記によって、IntelliJ IDEAのバージョンは` >= 2018.3`>https://github.com/momosecurity/momo-code-sec-inspector-java#%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81
# インストール
プラグインマーケットで`immomo`を検索すれば良い。
> https://github.com/momosecurity/momo-code-sec-inspector-java#%E5%AE%89%E8%A3%85%E4%BD%BF%E7