- 1. Couchbase Lite機能解説:JSONデータ操作
- 2. Javaの例外処理を学んだのでメモを取る(自分用メモ)
- 3. リーダブルコードのまとめ。 2/2
- 4. textView.text = “文字列” はできるのに editText.text = “文字列” とできない理由とは
- 5. Commons emailで日本語添付ファイルの文字化け解消
- 6. Javaセキュリティ 10のベストプラクティス
- 7. Java オラクルAPIドキュメント
- 8. JARファイルとは
- 9. Mpo100
- 10. Thymeleafで独自UtilityObjectを作る
- 11. APIにGETリクエスト送付時のテストコードを書く
- 12. SQLServerの2100個問題のひとつの解決策として、テーブル値パラメーターを利用する
- 13. GeneratedValueについて
- 14. 【メモ】Javaのメソッドを共通化
- 15. Reactorのdeferの使い方
- 16. デザインパターンを蒸し返して個人開発に生かす
- 17. Spring Boot開発環境構築
- 18. Couchbase Lite機能解説:Androidアプリ開発におけるライブクエリ利用
- 19. Mavenで依存関係含めたJarを作成する
- 20. 米国上場企業の財務データを頑張って解析しようとした話 (XBRL)
Couchbase Lite機能解説:JSONデータ操作
## はじめに
以下のドキュメントの内容をベースに、ドキュメント指向NoSQL組み込みデータベースCouchbase Liteを用いたAndroidアプリ開発におけるライブクエリの利用について、具体的なコードを交えて解説します。
https://docs.couchbase.com/couchbase-lite/3.0/android/document.html
なお、Couchbase Liteについては、[Couchbase Mobileアプリケーション開発へのロードマップ](https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417)に記事をまとめている他、(これらの記事を元に構成した)以下の電子書籍を無償で頒布しています。
https://techbookfest.org/product/5074954942939136?productVariantID=5042865933647872
また、Couchbase Serverの存在意義、機能詳細、利用方法等については、拙著[NoSQLドキュメント指向データ
Javaの例外処理を学んだのでメモを取る(自分用メモ)
Javaの学習をしていて、例外処理が出てきたのでメモがてらつくってみようとおもいます。
#例外処理とは
例外処理がどういうところで役に立つのかというと、“`
・処理の最中にサーバーのメモリがオーバーフローした時
・何らかの原因で月末(営業日)にならないと操作してデータを送信できてしまった場合
“`このように、開発者が想定していないエラーが起きてしまった場合の処理は、書かなければならないのですがそのコードが動く頻度が高いわけではないと思います。
それをメインのコードがおいてあるところにおいておいては、うっかりいじってしまう可能性が高くなってしまいます。
なのでそういったことがないように、例外処理を書いておくクラスを作成しておきます。そうすることで、上記の例が起きたときに問題を回避することがしやすくなります。
##例外処理のための基礎文法
###try,catch,finallyを使った命令処理について
“`
try{
例外があるか確認したい文;
}
catch (例外クラス1 変数名1){
そして、例外が起きたときに実行する文(1つ目の例外処理が書い
リーダブルコードのまとめ。 2/2
前回のリーダブルコードまとめの続きです。
### 8章 巨大な式を分割する
– 式を保持する変数(説明変数)を使う
– ド・モルガンの法則を使う。複雑な論理条件はif(a
textView.text = “文字列” はできるのに editText.text = “文字列” とできない理由とは
# 経緯
俺「Javaを使っていたけど、これからはKotlinだ! まずは TextView での文字列の表示のあたりから。」
俺「`textView.setText(“文字列”)` っと。ほとんどJavaと変わらないけど、セミコロンが不要になったのはいいな」
Android Studio「セッターメソッドの呼び出しをプロパティ構文に置き換えられるよ!」
俺「なるほど!プロパティ構文で書けるのか、`textView.text = “文字列”` っと。いいね!」俺「さて、じゃあ TextView の派生クラスである EditText の方も書き換えよう。 `editText.text = “文字列”` っと」
Kotlin「`Type mismatch: inferred type is String but Editable! was expected`」
俺「え?」
Kotlin「`Editable`じゃないとダメです。`String` なら `setText()` を使って。」
俺「…」# 理由
`TextView#getText()` の戻り値の型は `CharS
Commons emailで日本語添付ファイルの文字化け解消
# Commons-emailで簡単メール送信
Javaでメール送信するとなるとJavaMailですが、結構設定が多くて面倒になります。
私が利用しているのはcommons-email (https://commons.apache.org/proper/commons-email/ ) 。
ただ、日本語の添付ファイルをどうやったら文字化けしないように送信できるかにはまりました。
# 解決案
“`java
package mailrectest;import javax.mail.internet.MimeUtility;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.MultiPartEmail;public class SendMailWithAttachFile {
public static void main(String[] args) {
try {
System.setProperty(“m
Javaセキュリティ 10のベストプラクティス
陽が少しづつ伸びてきましたが、寒い日が続きますね。
昔から、問題を抱えつつも幅ひろく使われているJava.
典型的なSQLインジェクションの問題など、今一度振り返り、Javaデベロッパなら知って損はない10のセキュリティプラクティスについてのこちらのブログ記事の翻訳をご紹介しますhttps://snyk.io/blog/10-java-security-best-practices/
#Javaセキュリティ 10のベストプラクティス
Brian Vermeer, Jim Manico
ブライアン・フェルメール、ジム・マニコ
2019年9月16日今回のチートシート編では、オープンソースのメンテナとデベロッパの両者に向けて、10のJavaセキュリティのベストプラクティスに焦点を当てました。本チートシートは、Snyk社のDeveloper AdvocateであるBrian Vermeer氏と、Java Championで[ManicodeSecurity社](https://manicode.com/)の創設者であるJim Manico氏のコラボレーションによるも
Java オラクルAPIドキュメント
JavaGold(SE11)学習の備忘録
黒本で解いた問題に関連して確認したAPIドキュメントのリンク集##オラクルのドキュメント
– [すべてのクラス(日本語版)](https://docs.oracle.com/javase/jp/11/docs/api/allclasses.html)
– [すべてのクラス(英語版)](https://docs.oracle.com/en/java/javase/11/docs/api/allclasses.html)####関数型インターフェース
| インターフェース名 |説明 | メソッド|戻り値 | 日本語 |英語|
|:————|:————|:————|:————|:————:|:———–:|
|Runnable|スレッドからインスタンスを実行する| **run**()|void|[■](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/Runnable
JARファイルとは
# 「JARファイル」という言葉
SprigでWebAPIを作ろうと参考サイトを見ながら作成を進めていくと
「JARファイル」という言葉が出てきた。# JARファイルとは
簡単に言うとJavaファイルをzip形式で圧縮したもの。
でも普通の圧縮ファイルが解凍して展開しなければ中身を使えないのに対し、
JARファイルは圧縮ファイルのまま中のJavaファイルを実行できる。
「JAR」の名前の由来は「Java Archive(記録、書庫)」から。# 使い方
JARファイルの作成から実行までは以下のサイトが参考になります。
https://www.tech-teacher.jp/blog/java-jar/# 実行までの流れ
適当なテキストエディタでJAVAを書いて、コマンドでクラスファイルにコンパイルします。
さらにjarコマンドでJARファイルに圧縮します。
事項にはマニフェストファイルが必要なのでこれを作成。
最後にjavaコマンドで実行します。# 調べてみて
1年以上javaに触れているが、実行方法については詳しく知らなかった。
他の言語でも実行方法についてあまり勉強で
Mpo100
https://www.jojo-effekt.info/wp-content/slot88/mpo100/
Thymeleafで独自UtilityObjectを作る
# 概要
Thymeleaf側で金額の数値(int)にカンマを入れたい。(例:1000→1,000)
もちろんThymeleafのデフォルトのUtilityメソッド`#numbers.formatInteger`で可能なので適用箇所が少なければ下記で十分だと思う。“`
${price < 1000 ? price : #numbers.formatInteger(price, 3, 'COMMA')} ``` ただ、適用箇所が多いとコピペするにしても各所でいちいち三項演算子を書きたくない。そこで金額専用の独自Utilityメソッドを作って下記のように書けば上記の三項演算子を書いたように出力したい。 ``` ${#customInt.price(price)} ``` ちなみに`price < 1000`をしないと、100未満の場合050みたいに0埋めされてしまう。なので条件式は`price < 100`でも良いと思う。 # 環境 - Java 1.8 - SpringBoot 2.2.1.RELEASE - Thymeleaf 3.0.11.RELEASE # サンプル
APIにGETリクエスト送付時のテストコードを書く
# やりたいこと
・APIにGETリクエストを送るプログラムのテストを書く
・API参照箇所をMockにする### 以下記事を参考にさせていただきました
Mockito 3 + JUnit 5 で基本的なモック化とテストをするサンプルコード
https://qiita.com/niwasawa/items/f8798c981b4d08ecfa55# 参照APIの構築
テスト用に参照用のAPIを構築する
参考 https://spring.pleiades.io/guides/gs/rest-service/# 2つのクラスを作ります
実行するクラスとリクエストを送るクラスを作成する**実行クラス**
“`Java:App.java
public class App {
public String send_request(int user_id) throws MalformedURLException, IOException {
return request.send(user_id);
}
}
“`**リクエスト送付クラス
SQLServerの2100個問題のひとつの解決策として、テーブル値パラメーターを利用する
useridを主キーとして、ユーザの情報を格納する、以下のようなテーブルがあるとします。
“`sql
CREATE TABLE users (
userid INT NOT NULL PRIMARY KEY,
username NVARCHAR(100) NOT NULL
);
“`複数のuseridがあたえられて、その情報をusersテーブルから取得したいという場合、以下のようなクエリになると思います。
“`sql
SELECT *
FROM users
WHERE userid IN (?, ?, ? …)
“`**問題は、SQLServerではこのプレイスホルダが2100個を超えるとエラーになることです。**たとえば、以下のようなコードで上記のようなクエリを動的に生成したとします。
“`java
int[] userids = …;// SELECT * FROM users WHERE userid IN (?, ?, ?) のようなクエリを構築する。
String sql = “SELECT * FROM
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の略語で、訳すと「事業に