- 0.0.1. 文字⇔数字を扱う
- 0.0.2. Javaで想定しない小数点に悩まされるあなたへ
- 0.0.3. Eclipse MicroProfile Configについて
- 0.0.4. 【Java】乱数生成の方法(Random)
- 0.0.5. 【Java】配列から最大値・最小値を取得するプログラム例
- 0.0.6. Java Bronze 7/8 合格体験記!「ここをもっと勉強しておけばよかった…」と本番で後悔した箇所まとめ&オブジェクト指向ポイント解説
- 0.0.7. 【2019年10月版】Quarkus の REST API を KeyCloak で SSO するデモを docker-compose で動かしてみた。
- 0.0.8. 動画や画像ファイルのアップロード時に内容を表示する(Nuxt.js/Vuetify)
- 1. アップロードプレビューデモ
- 1.0.1. [3分で完結][備忘録]Micronautのインストールから実行まで
- 1.0.2. spring-securityのHttpSession生成・破棄イベントハンドラの作成
- 1.0.3. 【Kotlin/Android】カスタムビューを作成する
- 1.0.4. ULID生成順を保持する
- 1.0.5. JavaのStream APIはうまく使えば超速い
- 1.0.6. S3に完全に同じファイルが上がってるか確認するロジックでちょっとハマったのでメモ。
- 1.0.7. Eclipse MicroProfileとは
- 1.0.8. inteliJのブレークポイントで変数の値を変更する方法
- 1.0.9. NLP4J [005-1] Twitter4J と NLP4J でTwitter分析をしてみる(データ収集)
- 1.0.10. JUnitでMockWebServerを使ってリクエスト送受信ロジックのテスト
- 1.0.11. 【Java】JDBCをインストールして、servlet + MySQL で接続してみた。( DAO / Bean を使用バージョンあり)
- 1.0.12. WindowsでJavaを複数インストールしたらビルドできなくなった話
文字⇔数字を扱う
#はじめに
本記事は、char型文字を数字として扱うテクニックに慣れるのに良い問題を[CodeWars](https://www.codewars.com/dashboard)で発見したので、紹介させていただきます。
※CodeWarsは2019/10/30時点で日本語対応しておりません。ご了承ください。
#問題URL
[Reversing a Process](https://www.codewars.com/kata/5dad6e5264e25a001918a1fc)
要約:ある文字列を規則にのっとって変換するプロセスの逆操作をコーディングする問題です。(要約できているか怪しいですが…)
#ACコード
“`Decode.java
class Decode {
public static String decode(String r) {
int numkey = 0;
String subs = “”;
for(int i = 0;i < r.length();i++) { if(r.cha
Javaで想定しない小数点に悩まされるあなたへ
# はじめに
こんばんは。またたびです。
前回の投稿から大幅に期間が空いてしまいました。。。今回の記事ではJavaで小数点以下の計算も正確にしてくれるBigDecimalの使い方を記述していこうと思います。
なぜ小数点以下の計算を正確に行えるのかは今回触れませんので各自で調べていただければなと思います。
これから小数点以下の計算を正確に行いたい人の参考になれば幸いです。# BigDecimalを用いた四則演算(基礎)
それでは基本的なBigDecimalの記述方法について書いていきます。
BigDecimalを用いるには“`java:.java
import java.math.BigDecimal;
“`をインポートする必要があります。
標準ライブラリですので特に外部から持ってくる必要はなく、すぐに使用が可能です。
以下に記述方法と使用例を示していきます。| 四則演算| 記述方法 |
|:———–: | :————:|
| 加算| add |
| 減算| subtract |
| 乗算 | multiply |
| 除算 | d
Eclipse MicroProfile Configについて
# はじめに
前回の[Eclipse MicroProfileとは](https://qiita.com/omix222/items/50804e30e43085ceb912#eclipse-microprofile-config)で概要を紹介したEclipse MicroProfile Configについて説明したいと思います。## 始め方
前々回の[Eclipse MicroProfileの始め方](https://qiita.com/omix222/items/923d788d6ce76e179d6a)で紹介した、
[MicroProfile Starter](https://start.microprofile.io/)を使っていきます。こちらの設定でプロジェクトを作成、ダウ
【Java】乱数生成の方法(Random)
Javaで簡単に乱数を生成するプログラム例を紹介します。
##整数型(1~の数字)int r = new java.util.Random().nextInt(※発生させる乱数の上限値);ソースのはじめにimport java.util.*をしているなら以下のように書くことも可能です。
int r = new Random().nextInt(※発生させる乱数の上限値);##小数型(0~1の乱数を生成するパターン)
double r = Math.random();
【Java】配列から最大値・最小値を取得するプログラム例
import java.util.*; class Main{ public static void main(String[] args) { int[] data = {1,2,3,4,5,6,7,8,9,10}; int Max = data[0]; int Min = data[0]; for(int i = 1 ; i < a.length; i++){ if(Max < data[i]){ Max = data[i]; }else if(Min > data[i]{ Min = data[i]; } } System.out.println(Max); } }
Java Bronze 7/8 合格体験記!「ここをもっと勉強しておけばよかった…」と本番で後悔した箇所まとめ&オブジェクト指向ポイント解説
Java Bronze試験は最近できたばかりの試験ということもあり、ネットでの情報が少ないです。受験を考えている方の助けになれるよう、私が実際に受験して「ここをもっと勉強しておけばよかった!」と思った点などをまとめておきます。
#意外と出題される!「JVMの機能」「SE/EE/MEの違い」#
問題集だと「Javaの基本」などのタイトル名で、だいたい第一章で扱われる範囲です。
私はこの部分を後半のオブジェクト指向など難しい部分の勉強に追われて後回しにしてしまい本番で後悔しました。意外とたくさん出題されます。
「**GUIで操作できる独立系のアプリケーションを作るにはSE/ME/EEどれで開発しますか?**」や、「**JVMではどんなことができますか?**」などをしっかり答えられるようにしておきましょう。#オーバーライド・オーバーロードについて分かってないと合格は難しいかも#
本番の試験ではとにかくメソッドのオーバーライドとオーバーロードについて考えさせられます。この2つが関係する問題は非常に多く、合否を一番分ける要素だと思います。
「**このメソッドをオーバーライド(オーバーロード
【2019年10月版】Quarkus の REST API を KeyCloak で SSO するデモを docker-compose で動かしてみた。
# Quarkus + KeyCloakの SSO 連携が簡単らしい。
Quarkus は JBoss 御謹製のK8sネイティブなマイクロサービスが素早く作れるフレームワークでございまして GraalVM でのビルドが簡単にできるらしいのでちょっと注目をしておりましたところ、以下のような記事を見つけました。
– [Quarkus の採用は慎重に検討する](https://qiita.com/nakkspeed/items/6da5f84df41152fb1ff5)
> Quarkus は RedHat 社が開発しており、同社製または同社がスポンサーの OSS 製品(KeyCloak、Hibernate)との連携を前提としている。
あらそうなの?KeyCloakの代替になる SSO の OSS はほぼないのでKeyCloakと接続前提なのは全然、問題なしでございますよ~、ということで早速ググってみたところ、あっさり**ドンピシャ**なサンプルを発見いたしました。
– [https://github.com/thomasdarimont/quarkus-keycloak-demo
動画や画像ファイルのアップロード時に内容を表示する(Nuxt.js/Vuetify)
# 概要
Web アプリケーションでファイルアップロードを実装する際にファイルの内容を表示したい。# 適用イメージ
![uplaod-preview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517184/4383fb1c-9506-8353-f3e7-95115880cc50.gif)# サンプルソース
– Nuxt.js で Vuetify の File inputs コンポーネントを使っている
– ファイル選択時にファイルの内容をData URL としてバインディングしている
– アップロードするファイルのサイズが大きすぎるとダメかもしれない“`vuejs:demo.vue
アップロードプレビューデモ
[3分で完結][備忘録]Micronautのインストールから実行まで
JVMベースのフルスタックフレームワークであるMicronautで遊びたかったのでインストールから実行までの流れを簡単にまとめました。
## 環境
– macOS Catalina 10.15
## 環境構築
### sdkmanのインストール
sdkmanはパッケージマネージャー
sdkman経由でjdkとか他ツールを入れればバージョン管理が簡単になるちなみに筆者はこういうツールが大の苦手
自分でコツコツと入れたい派(そんな派閥はない?下記コマンドを実行
“`
$ curl -s https://get.sdkman.io | bash
“`“`
All done!Please open a new terminal, or run the following in the existing one:
source “/Users/tshk_dev/.sdkman/bin/sdkman-init.sh”
Then issue the following command:
sdk help
Enjoy!!!
“`
で、次に下記の
spring-securityのHttpSession生成・破棄イベントハンドラの作成
# 概要
spring-securityでHttpSession生成・破棄イベントのハンドラを作成する方法。
spring-securityには“`org.springframework.security.web.session“`パッケージに生成・破棄イベントに対応する“`HttpSessionCreatedEvent“`・“`HttpSessionDestroyedEvent“`が存在する。これらはspringの“`ApplicationEvent“`を拡張したイベントオブジェクトで、“`javax.servlet.http.HttpSessionListener“`実装の“`HttpSessionEventPublisher“`をbeanとして登録すると両イベントがpublishされる。あとは、リスナー(のbean)を登録するとそのイベントハンドラが適宜呼び出される。
# ソースコード
## pom.xml“`xml:pom.xml
org.springframework.boot
【Kotlin/Android】カスタムビューを作成する
## 書いてあること
– Kotlinでグリッドビューの中に入れる、カスタムビューを書いてみました。## 用意するもの
1. Fragment.java
2. Adapter.java
3. CustomView.java
4. fragment_main.xml
5. item_fragment.xml## 1. Fragment.java
“`Fragment.java
/**
* 温度調整Fragment画面クラス
*/
class AdjustTempFragment : Fragment() {
/**
* グリッドビュー
*/
private lateinit var gridView: GridView
/**
* なにかしらの情報保持配列
*/
private lateinit var values: Array
/**
* グリッドアダプター
*/
private lateinit var gridAdapter:
ULID生成順を保持する
# TL;DR;
https://github.com/ulid/spec#monotonicity
を参照
Kotlin or Javaの方法を求めてきた方はulid.nextValue().increment()を使用
# 前提
https://github.com/ulid/spec
Kotlin 1.3.50
[huxi ulid](https://github.com/huxi/sulky/tree/master/sulky-ulid)を使用
kotlin Scratchにて実験
## 失敗例
“`kotlin
import de.huxhorn.sulky.ulid.ULIDval ulid = ULID()
val pairs = (0..1000).map {
val now = System.currentTimeMillis()
Pair(now, Pair(it, ulid.nextULID(now)))
}
val sorted = pairs.sortedBy { it.second.second }
println(“\n\n\n” + sor
JavaのStream APIはうまく使えば超速い
# はじめに
Javaには並列ストリーム(ParallelStream)という並列処理を手軽に書ける機能があり、うまく使えば性能を大幅に上げることができます。
Java8で追加された機能なので今更ですが、最近並列ストリームの良さを実感することがあったので書いてみます。# 動作環境
* macOS Mojave
* 2.5 GHz Intel Core i7(8コア)
* JDK13# 内容
ここでは0から6億までの数値について、カプレカ数(定義2)[^1]であるかどうかを調べるコードを例にして、並列ストリームの効果を見てみます。
[^1]: カプレカ数が何なのかは知る必要はありません。とにかくCPUに負荷をかける何らかの処理です。それでも知りたい人という方はググってください。あと、6億という数字には特に意味はありません。いい感じに処理時間がかかる件数というだけです。## 並列ストリームを使わない例
まずは並列ストリームを使わない例を見てみます。(順次ストリーム)
だらだらと長いので、とりあえず下のmainメソッドを見てください。“`java
import java.u
S3に完全に同じファイルが上がってるか確認するロジックでちょっとハマったのでメモ。
いつもの如く、ブログからの転載です。
最近あんまり書いてないですが、そろそろ再開したい。S3上のファイルのチェックサムを取得する方法でハマりやすいとこと、下の方におまけでJavaでfileのチェックサムを計算する方法を書いておきました。
誰かの役に立てば幸いです。
(なおあまり)# S3のチェックサムを比較したい
数GBのファイルをS3に挙げるような処理を書いていて、後続処理の失敗などでリトライしたいというのがあった。この場合、ファイルをアップロードし直すのはムダだが、移行元ストレージ内の対象ファイルが変更にされている可能性もある。
したがって、すでにS3上に`完全に同じ`ファイルがあるときだけアップロードをリトライしたい。この場合、チェックサムを比較するのが楽なので、S3の`getObjectMetaData` APIを利用して以下のようにコードを書いた。
“`java
private boolean shouldSkip(String
Eclipse MicroProfileとは
# 概要
前回の[記事](https://qiita.com/omix222/items/923d788d6ce76e179d6a)では、Eclipse MicroProfileの始め方をご紹介しました。今記事では、そもそもEclipse MicroProfileとはなにか?を紹介します。## 生まれたきっかけ
もともとはJavaEEの仕様策定のプロセスが遅い、リソースを十分に供給できていないと危機感を持った複数のベンダーとJavaコミュニティによって生まれました。
特徴としては、JAX-RSやCDIなど、JavaEEの中で慣れ親しんだ仕様を一部取り込みつつ、マイクロサービスアーキテクチャで必要な機能を独自で取り込んでいくというものとなります。
※現在の[公式サイト](https:
inteliJのブレークポイントで変数の値を変更する方法
#環境
Intelij
Java(Java以外でもできるかもしれないけど未確認)#手順
下のようなコードを書くと、当然”Hello World”と表示されますが、
strに”ハローワールド!”という別の値をデバッグ中は入れたいとします。
そんなときはブレークポイントを設定
→右クリック
→More(command + shift + F8)
NLP4J [005-1] Twitter4J と NLP4J でTwitter分析をしてみる(データ収集)[Indexに戻る](https://qiita.com/oyahiroki/items/ba79a759c599d3459d29) : [[004]構文解析の統計処理](https://qiita.com/oyahiroki/items/257b2d730fc71366fbcc) > [005-1] NLP4J+Twitter4J(データ収集) > 次のページ
#データ収集
では次にNLP4JでTwitterのデータを分析してみましょう。
今のところNLP4Jは「お手軽分析」の位置づけですので、お手軽に分析してみます。
分析シナリオとしては自動車各社(トヨタ、日産、ホンダ)の公式Twitterがどのようなツイートをしているのかを分析してみる、というものにしてみます。
Tweets by TOYOTA_PR
Tweets by NissanJP
Tweets by HondaJP適当にクエリーを作り替えることで様々な切り口とデータでの分析ができそうな”気がします”。
まずはデータ収集から行いましょう。
Twit
JUnitでMockWebServerを使ってリクエスト送受信ロジックのテスト
Javaアプリケーションに外部APIを使った機能を実装する機会があったのでその時の話を。
# やりたいこと
リクエスト送受信処理を新たに実装した場合、固定レスポンスで期待した動作をするのか確かめたい気持ちになります。
そこで、MockWebServerというライブラリを使って固定レスポンスを返すことにしました。これにより、リクエスト送受信の部分のロジック検証を簡易化できます。![mockserver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13766/ab0c0c4f-a0f3-8c4c-a89f-36d980f37f28.png)
# 開発環境
今回試すJava環境は下記の通りです。
“`
$ java -version
java version “1.8.0_161”
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12,
【Java】JDBCをインストールして、servlet + MySQL で接続してみた。( DAO / Bean を使用バージョンあり)
# ◆ 目次
◇ ディレクトリ構成
◇ 【画像】出力内容 & DB内容1. JDBC ドライバ導入
2. context.xml を作成する
2. 実行(複数パターン)
1. 【実行】servlet(サーブレット)
2. 【実行】DAO ~Beanを使わない~
3. 【実行】DAO ~Beanを使用~# ◇ ディレクトリ構成
:file_folder: book
┣━ :file_folder: src
┃ ┣━ :file_folder: sample
┃ ┃ ┣━ :page_facing_up: All.java
┃ ┃ ┣━ :page_facing_up: ProductList.java
┃ ┃ ┗━ :page_facing_up: ProductList2.java
┃ ┃
┃ ┣━ :file_folder: dao
┃ ┃ ┣━ :page_facing_up: DAO.java
┃ ┃ ┗━ :page_facing_up: ProductDAO.java
┃ ┃
┃ ┗━ :fi
WindowsでJavaを複数インストールしたらビルドできなくなった話
# はじめに
kotlinの勉強をしようとして、java11をインストールしたところ、今まで通ってたjavaのbuildが通らなくなって焦った話
## JAVAの使い分け
環境変数のJAVA_HOMEによって使い分けることができます。
## VSCODEで環境変数の使い分け
プロジェクトの.vscodeフォルダに以下のファイルを置きましょう。
“`:settings.json
{
“terminal.integrated.env.windows”: {
“JAVA_HOME”: “C:\\Program Files\\Java\\jdk1.8.0_211”
}
}
“`これで、このプロジェクトはjava8専用になります。
タスクでも有効です。
Windows以外の場合には、末尾のwindowsをそれ以外にしましょう。
環境変数でうまくいかない場合は、dockerにしちゃうほうがいいかもしれません。