- 1. Javaを使用してExcelでピボットテーブルを作成する方法
- 2. JNAでデスクトップフォルダのパスを取得してみた
- 3. 「はじめての Django アプリ作成」をSpring WebFluxでやってみた、その 2
- 4. 「マイクロサービスパターン」の復習 7章
- 5. 【メモ】DAOパターンのファイル一例【Java】
- 6. Tomcatを強制的に終了する方法
- 7. 【Java】enumでcontainsメソッドっぽく指定した値が存在するか判定する
- 8. 【 Java_さまざまな命令 】
- 9. ドメイン駆動設計入門 Chapter 12 ドメインのルールを守る「集約」 – 集約とは を読んで
- 10. Javaの基本的なデータ型の操作についてまとめてみた
- 11. Spring MVCのsuspendなControllerを実行するとInterceptorやContollerAdviceが複数回実行されてしまう
- 12. Javaのモジュールについてまとめてみた
- 13. 「マイクロサービスパターン」を読む会 第7回
- 14. Spring Data JPAでJPQLを書かずにJOINさせる
- 15. Firebaseのオフライン機能の記述場所によりマルチウィンドウ切り替え時にアプリが落ちてハマった件
- 16. Javaによる添付ファイル付きのメール処理
- 17. 【AndroidStudio】Intentで起動元に値を返す方法(ActivityResultLauncher)
- 18. ヒュベニの公式(Hybeny’s Distance Formula)を使って緯度経度間の距離を算出する
- 19. Geohashについて(Javaの変換サンプル付き)
- 20. Javaで重複した順位付けをする方法
Javaを使用してExcelでピボットテーブルを作成する方法
Excelシートで処理すべきデータが多すぎて、各セルのデータをまとめる必要がありながら、1つずつ計算するのが面倒くさい場合は、ピボットテーブルを使用してすばやくまとめできます。そしてこの記事の内容では、Javaプログラムを使用してExcelテーブルのデータに基づいてピボットテーブルを作成する方法を紹介します。
##環境への下準備
ExcelクラスライブラリツールであるFree Spire.XLS for Javaを使用する必要があります。ここでは無料バージョンを使用します。公式WebサイトからJarパッケージをダウンロードして解凍し、手動でSpire.Xls.jarをライブラリにインポートできます。フォルダをJavaプログラムに追加します。##Javaコード一覧
“`
import com.spire.xls.*;public class CreatePivotTable {
public static void main(String[] args) {
//Excelテストドキュメントを読み込む
Workbook wb = ne
JNAでデスクトップフォルダのパスを取得してみた
## これまでのあらすじ
いまさらJavaでGUIやらなきゃになったんだけれど、デスクトップフォルダのパスってどう取ればいいのん?## 失敗したやつ
“`java:
System.out.println(System.getProperty(“user.home”), “Desktop”);
“`ぐぐるとよく出てくるやつなんだけれど、OneDriveとか入ってるとこれじゃあダメなのね。やだめんどいー!
## ちょっともやっとするやつ
Runtime.exec()でレジストリ読む方法。このパスどのくらい汎用性あるのかわからないんですが。
“`java:
public static void regTest() throws IOException {
String cmd = “reg query \”HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\” /v Desktop”;
Process process = Runtime.getRuntime().exe
「はじめての Django アプリ作成」をSpring WebFluxでやってみた、その 2
# はじめに
この記事はDjangoの公式チュートリアル[「はじめての Django アプリ作成」](https://docs.djangoproject.com/ja/4.0/intro/tutorial02/)と同じものをSpring WebFluxで作成することでDjangoとSpring WebFluxの違いを理解することを目的としています。# 違い一覧
DjangoとSpringでは同じコンセプトでも用語が結構違います。|Django|Spring|
|:———–|:————|
|Model(モデル)|Model(モデル)|
|Template(テンプレート)|View(ビュー)|
|View(ビュー)|Controller(コントローラ)|# はじめてのアプリ作成、その 2
## Database の設定
### Django
`mysite/settings.py`の`ENGINE`に`django.db.backends.sqlite3`と定義されている通り、デフォルトでSQLite3を使います。データは`db.sqlite
「マイクロサービスパターン」の復習 7章
## 概要
– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく
http://www.javareading.com/bof/
## 7章 マイクロサービスアーキテクチャでのクエリーの実装
– テーマはマイクロサービスアーキテクチャでいかにしてクエリーを実現するか
## API Compositionパターン
– 各マイクロサービスの手前にComposerを立てて、ComposerがAPIをクライアントに公開しつつ、各マイクロサービスに必要なクエリーを発行する
– API GatewayにComposerを埋め込むなり、独立サービスにするなり、役割分担は色々選択肢がある
– 例)ComposerはクライアントにfindOrder()を提供するために、Order、Kitchen、Deliveryなどのマイクローサービスを呼び出して、得られた情報を結合した結果を返す
– 利点:直感的で分かりやすい
– 欠点:ComposerでJoinの処理をするので、大量データを扱うのは難しい## CQRS(Command Quer
【メモ】DAOパターンのファイル一例【Java】
##
“`java:TaskDaoImpl
@Repository
public class TaskDaoImpl implements TaskDao {private final JdbcTemplate jdbcTemplate;
public TaskDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}@Override
public ListfindAll() { String sql = “SELECT task.id, user_id, type_id, title, detail, deadline, ”
+ “type, comment FROM task ”
+ “INNER JOIN task_type ON task.type_id = task_type.id”;//削除してください
//タスク一覧をMapのListで取得
List
Tomcatを強制的に終了する方法
./shutdown.sh を実行してもTomcatが終了できない場合は、
“`ps -A | grep java“`
または
“`lsof -i -P | grep 8080“`
を実行する。
表示されたプロセスIDを指定してkillする。
“`kill -9 プロセスID“`
または
“`kill -15 プロセスID“`
これでTomcatを終了できます。
【Java】enumでcontainsメソッドっぽく指定した値が存在するか判定する
# はじめに
Javaで`enum`を利用する際、メンバ変数を宣言することが可能ですが、
**指定した文字列や値、インスタンスがenum内に含まれているか?** という* **Collectionクラスのcontainsメソッド**
* **MapクラスのcontainsKey/containsValueメソッド**のようなメソッドに関しては自前で実装する必要があります。
実装自体は難しくないですが、調べても意外と出てこなかったため備忘録として残します。# 今回利用するenum
“`Java:enum
public static enum Department {
SALES(“1″,”営業部”),
PERSONNAL(“2″,”人事部”),
DEVELOPMENT(“3″,”開発部”);private final String departmentCode;
private final String departmentName;Department(String depar
【 Java_さまざまな命令 】
Javaを学習中の初学者です。
備忘録としての投稿になります。#Javaのさまざまな命令7種
Javaにはさまざまな種類の命令があり、今回はその中でも代表的なものをピックアップしました。
####①System.out.println(引数)
画面に文字を表示させる命令
例えば、“`java
String name = “龍一”;
System.out.println(name);
“`
の実行結果は「`龍一`」になります。####②System.out.print(引数)
改行をせずに画面に文字を表示させる命令
例えば、“`java
System.out.print(“私は”);
System.out.print (“龍一です”);
“`
の実行結果は「`私は龍一です`」になります。#### ③int a = Math.max(a, b)
引数①・②の二つを比較して大きい方の数値を代入する命令。
例えば、“`java
int a = 5;
int b = 10;
int x = Math.max(a, b);
System.out.println(
ドメイン駆動設計入門 Chapter 12 ドメインのルールを守る「集約」 – 集約とは を読んで
4ヶ月ほど前から、[ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本](https://www.seshop.com/product/detail/20675)の輪読会に参加しています。[昨年11月にChapter 2を担当した](https://qiita.com/flyaway/items/305df0382d9a284820b6)のに続き、「Chapter 12 ドメインのルールを守る『集約』」を担当することになりました。このため、自分なりに理解した内容と感想をまとめました。
**注意:本記事は、あくまでも筆者の理解をまとめたものです。**正確な解説を知りたい場合は、書籍や別の記事などをご参照ください。
https://www.seshop.com/product/detail/20675
本書で取り扱われているサンプルコードのプログラミング言語はすべてC#が採用されています。しかし、筆者はC#に触れた経験がないため、本記事内におけるソースコードはすべてJavaを採用しました。
# こんなコードはありませんか?
新しいクラスを作成したときに、「フィール
Javaの基本的なデータ型の操作についてまとめてみた
Javaシルバーの勉強をしていて、Javaの基本的なデータ型の操作で詰まったので、ここで解決していきたいと思います。
問題を解いていたら本当に正解率が悪かった。。なのでまとめて見ようと思います。
# Javaの基本的なデータ型の操作
##ラッパークラス
Javaの型には参照型と基本型があるのですが、基本型では主に数値を用いた計算や数値や文字を格納する働きがあります。
しかし、Javaでは格納した値を操作するやり方がありません。
そんな時に使うのがラッパークラスです。ラッパークラスをつかうことで、基本型をオブジェクトとして扱うことができるようになり、操作をすることができます。
|基本型 |ラッパークラス |
|—|—|
|boolean |Boolean |
| byte |Byte |
| char |Character |
| short |Short |
| int |Integer |
| long |Long |
| float |Float |
| double |Double |上記に挙げられている型の基本型は、
Spring MVCのsuspendなControllerを実行するとInterceptorやContollerAdviceが複数回実行されてしまう
バージョン情報
* Spring Boot: 2.6.3
Spring MVCではKotlinのコルーチンがサポートされています。
Controllerのhandler関数にsuspendをつけると、Springがコルーチンを起動してhandler関数を実行してくれます。
“`kotlin
@RestController
class DemoController {
@GetMapping(“suspend”)
suspend fun indexSuspend(): String {
return “suspend handler is executed.”
}
}
“`このようにhandler関数にsuspendをつけると、Controllerの前段にあるInterceptorやControllerAdviceが複数回呼び出されてしまいます。
シーケンスは以下のような感じです。
: [Order]
order(orderId : Int): Order
consumer(consumerId : Int): Consumer
}type Order {
orderId: ID,
consumerId : Int,
consumer: Consumer
restaurant: Res
Spring Data JPAでJPQLを書かずにJOINさせる
## 概要
Spring Data JPAで`findAll()`、`findById(id)`実行時にJOINさせるようにし、N+1問題が起きないようにする。
JPQLは使わないで実現する。## Service
以下のようにそれぞれを呼び出す。以下の例ではpagingを実装しているが、していない場合でも同じ。“`java:UserService
@Service
@RequiredArgsConstructor
public class UserService {private final UserRepository UserRepository;
public Page
findAll() {
// paging
Pageable limit = PageRequest.of(0, 10);
return UserRepository.findAll(limit);
}public Optional
findById(Long id) {
Firebaseのオフライン機能の記述場所によりマルチウィンドウ切り替え時にアプリが落ちてハマった件
加速度センサーのデータを長時間記録するアプリを作っており、データ保存先はrealtime databaseです。掲題の通りなのですが、realtime databaseを利用すると、一旦スマホのwifi接続がきれても、アプリがオフラインでデータを保存してくれていて、次にwifiが繋がった時にサーバーに送信してくれるという、1行書くだけでお任せの超ありがたい機能です。
https://firebase.google.com/docs/database/android/offline-capabilities?hl=ja
そこでそいつを実装するために例えばアクティビティの「recording.java」あたりにFireBase非同期処理のお願いとして
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
などと記述するのですが、こいつのせいでマルチウィンドウ切り替え次にアプリが落ちることが判明。
■対応:計測前にセンサーをペアリングするための設定画面の段階で非同期処理を設定したら、解決でした。非同期処理も作動し
Javaによる添付ファイル付きのメール処理
# ビジネスシーンでは電子メール処理は現役
前回の記事 https://qiita.com/sev01/items/6c8ea0c1a82324341fdd ではメールの送信をしましたが、受信したメールを保存し、そこからデータを抽出することは日常業務の中でよく使われます。
# マルチパートって色々あります
マルチパートの中に、さらにマルチパートとなっていることがあります。
つまり、入れ子になっていることがあるため、ある種の再起処理が必要になります。# 添付ファイルの名前が文字化けする問題に遭遇
JavaMailのMimeUtility.decodeText を利用します。
# 例
“`java
package mailreceivetest;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import j
【AndroidStudio】Intentで起動元に値を返す方法(ActivityResultLauncher)
#はじめに
AndroidでIntentを扱っていると、MainActivityから何かしらのActivityを呼び出して、呼び出したActivityが終了したら戻り値を受け取ってMainActivityで処理したい場面が良く登場します。ActivityResultLauncherというクラスを利用すれば可能のようですが、公式ドキュメントもQiitaの記事も優しくなかったりして意外と手間取ってしまったので、めちゃくちゃ優しく書いていきます。例のごとく、Javaしか書けないのでJavaで、、、#戻り値のないIntentのプログラム
まずはベースとなるプログラムを確認していきます。MainActivityで個数を指定して、SubActivityで個数を受け取って表示し、戻るボタンを押したら何もせずにMainActivityに戻り、確定ボタンを押したら個数を返してトーストで表示し、個数をリセットするというプログラムにします。もちろん戻り値なしのものを作るため、SubActivityからMainActivityに値を渡せずに、どっちのボタンを押してもただMainActivityに戻るだけに
ヒュベニの公式(Hybeny’s Distance Formula)を使って緯度経度間の距離を算出する
緯度経度間の直線距離は、地球が楕円型の所為でそれほど平面上の座標の距離ほど簡単に算出できない。
そのため、緯度軽度間の距離を計算するにはいくつかの方法があるらしいが、
最初に見つけた以下のJavaのサンプルコードが私の用途に削ぐわない結果が出たので、
別の方法を調べた。https://qiita.com/niwasawa/items/5128101ef93a56e8a6af#java
それがヒュベニの公式(Hybeny’s Distance Formula)を使った方法である。
こちらの実装例を紹介するページは多かったが、Javaはぱっと見つからなかったので、
書いてみた。
尚、ヒュベニの公式を使った距離の精度は近い位置だとそれらしい結果だったが、
距離が離れていると誤差が大きそうだった。
とはいえ、私の用途だと大きな問題なさそうだ。“`java
double distance(final double latitude1,
final double longitude1,
final double lati
Geohashについて(Javaの変換サンプル付き)
# Geohash とは
Geohash は、Gustavo Niemeyer が geohash.org というWebサービスを作成中に発明した、
ジオコーディング方法の一つ。
Geohash を使うと地球を矩形単位で分割して、それをBase32のハッシュで表すことができる。## geohash は何が便利?
* 矩形のサイズは桁数に比例して変わり、10桁になると0.59m × 0.97mなので、実質的に位置として扱える。
* 矩形単位で位置情報を管理できる。
* 一定範囲ごとのグループ化などがし易い。例えば上位5桁なら4872.66m × 3955.08mの、上位4桁なら19490.62m × 31640.62mの範囲でグループ化できる。
* 上位の桁が同じ場所は近い位置にある。
* 前方一致検索ができる。
* 曖昧な検索ができる。# Geohashの仕組み
緯度軽度はそれぞれ-90〜+90、-180〜+180の範囲がある。
geohashでは、それを交互に分割していく。
例えば緯度経度が `35.68, 139.70` の場合1. `139.70`
Javaで重複した順位付けをする方法
# Javaで順位付けする方法
どうやって順位付けを行うのか、考えたことはありますか?
結構コードを書いていて、最初はぐちゃぐちゃしたものになってしまっていたので、自分で試してみた方法を上げてみたいと思います。# 環境
– java14# 使用させていただいたデータ
[ワインの評価データ](https://domohelp.domo.com/hc/ja/articles/360043931814-%E6%A5%BD%E3%81%97%E3%81%BF%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88)今回はワインの評価データのポイントが高い上位30番以内のデータを出力します。
同率順位も可能性としてはあるので、この場合は30個を超えることもあります。
例えば、ポイントが2,2,3,3,5,5,8,8,8,9,12であり、この上位3位まで出力する場合、
“`