- 1. VSCodeのMetalsプラグインでScala(sbt)環境をIDEっぽくする
- 2. SpringBoot(gradle)にOpenAPI(Swagger)の導入をしていろいろ設定してみた
- 3. 【Java】フォルダ内のファイルパスをListで取得
- 4. Spring Boot + Java でfileとStringデータを同時にform送信して処理する
- 5. 【Java】for文についてまとめ
- 6. 【Java】Optionalの使い方
- 7. (Java、JavaScript、Python)文字列処理の比較
- 8. SpringBootで作成したWebアプリをEC2にデプロイするときに躓いた話
- 9. JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021
- 10. EclipseのProject FacetsにJavaServer Faces(JSF)がない
- 11. The selected JRE does not support the current compliance level of 15
- 12. 【Java ~クラス~】勉強メモ6
- 13. 【Java】LinkedHashMapクラスの使い方
- 14. synchronizedとReentrantLockについて(Java&Kotlin実装例)
- 15. WindowsにzipでJavaをインストールする
- 16. gRPCにおけるエラーハンドリング(Kotlin版)
- 17. C#のラムダ式とLinqついて
- 18. 【Java ~メソッド~】勉強メモ5
- 19. 【Java】WindowsでJavaのアップデートを行う方法
- 20. Elasticsearch 7.7 を Java 11 で動作させるまでに参考にしたリンク集
VSCodeのMetalsプラグインでScala(sbt)環境をIDEっぽくする
# やること
– Scala用のビルドツールsbtを入れる
– VSCodeでIDEっぽくするためにMetalsプラグインを入れる# あらかじめ用意するもの
– JDK (versionは8か11が推奨)
– Scala
– VSCode# sbtの導入
### [sbt](https://www.scala-sbt.org/)とは
Scala用のコマンドラインビルドツールです。一応、GradleやMavenでもScalaのコンパイルを行うプラグインは提供されていますが、sbtはLightbend社(Scalaを提供している会社)に所属するエンジニアがScalaコアチームと連携しながら精力的に開発しているツールらしいです。
### インストール
[こちらの公式DLサイト](https://www.scala-sbt.org/download.html)からダウンロードできます。
– Windowsでインストール
上記のDLサイトにzip、tgz、msiインストーラが置いてあります。– MacOSでインストール
Homebrewを使って`brew in
SpringBoot(gradle)にOpenAPI(Swagger)の導入をしていろいろ設定してみた
## はじめに
昨年[精算くんという個人開発のアプリケーション](https://seisan-kun.netlify.app/#/)を作成したのですが、バックエンドAPIの仕様書を作成していなかったので、手っ取り早くOpenAPI(Swagger)を利用して作成していこうと思い利用するに至りました。
その際の導入方法や、個人的に気になった設定について触れていきます。## 環境
– Java 11.0.3 (Amazon Corretto)
– gradle 6.0.1
– SpringBoot 2.2.3
– Seisankun-api https://github.com/nooboolean/seisankun_api
– SwaggerUI 2.9.2## OpenAPI(Swagger)とは
>The OpenAPI Specification, originally known as the Swagger Specification, is a specification for machine-readable interface files for
【Java】フォルダ内のファイルパスをListで取得
引数のフォルダ内にあるファイルの一覧をStringのListにしてみるメソッド。
※再帰的に呼び出してListにaddAllしてみた
※Java8~15で動作検証済み(不具合あっても責任は取らない方向で“`java:FileUtils
import java.io.File;
import java.util.LinkedList;
import java.util.List;public class FileUtils {
/**
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
public static ListgetFileList(String root) {
return getFileList(new File(root));
}/**
*
* 引数のディレクトリ内にあるフォルダやファイルのPathを文字列のListで返す
*
* @param root
* @return
*/
publ
Spring Boot + Java でfileとStringデータを同時にform送信して処理する
File型とString型を一度にForm送信するやり方がわかったので備忘録として残しておきます。
##実現したいことのイメージ
こんな感じのフォームがあり、送信ボタンをクリックすると更新した情報にページが更新されてアラートが表示される![スクリーンショット 2021-01-01 19.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/8e781aa8-f0a9-18c2-642c-d43de7f66607.png)
![スクリーンショット 2021-01-01 19.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637360/ca0d50a1-2cfd-56cc-95d9-98c1a06743ab.png)“`html
【Java】Optionalの使い方
#プログラミング勉強日記
2020年1月1日
JavaのOptionalの使い方について簡単にまとめる。#Optionalとは
メソッドの戻り値としてnullを返す可能性があることを明示的に示したいときに使う。メソッドがnullを返す可能性があるということを示すことで、より安全に実装することができる。#Optionalの書き方
Optionalクラスを使うにはjava.util.Optionalをインポートする必要がある。一般的にはオブジェクトを定義して利用する。Optionalのオブジェクトはダイヤモンド演算子(‘<>‘)ないのType Parameterにnullの可能性があるオブジェクトの型を指定して宣言する。
ofNullableメソッドの引数にはnullの可能性があるオブジェクト名を指定する。“`java:基本的な書き方
Optionalオブジェクト名 = Optional.ofNullable(nullの可能性があるオブジェクト名);
“`“`java:サンプルコード
String str = null;
Optional
(Java、JavaScript、Python)文字列処理の比較
# Java、JavaScript、Pythonの処理比較
最近JavaScriptとPythonの勉強を始めました。
学んだことの整理として、Java、JavaScript、Pythonの3言語の処理比較を記事にしていこうと思います。
今回は文字列処理です。## 文字列処理の比較一覧
|処理内容|Java|JavaScript|Python|
|—|—|—|—|
|文字列長|length()|length|len(文字列)|
|一致比較|equals(比較文字)
equalsIgnoreCase(比較文字)|==比較演算子
===比較演算子|==比較演算子|
|検索|indexOf(検索文字列)
lastIndexOf(検索文字列)
contains(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列)
|indexOf(検索文字列)
lastIndexOf(検索文字列)
includes(検索文字列)
startsWith(検索文字列)
endsWith(検索文字列
SpringBootで作成したWebアプリをEC2にデプロイするときに躓いた話
###はじめに
自分用のメモです。###開発環境
・Windows10
・OpenJDK 1.8
・SpringBoot 2.2.4
・Gradle 6.3
・MySQL5.7
・AWS(EC2・RDS・VPC)###作業の流れ
1.デプロイ用のSpringBootアプリを用意
2.EC2・RDS・VPCを準備する
3.Amazon Linux2で必要ツールをインストール
4.Buildしてデプロイ####1.デプロイ用のSpringBootアプリを用意する
こちらは何でも構わないので自身で作成しているアプリで可####2.AWS(EC2・RDS・VPC)の用意
ここは後日投稿する予定です####3.Amazon Linux2で必要ツールをインストール
EC2にログインしyumを最新にします“`
# yum update
“`
Gitのバージョンを確認とインストール“`
# yum search git
# yum install git
“`
Gitがインストール終わったら一応確認“`
# git –version
“`
Java8をイ
JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021
https://github.com/sonota88/libreoffice-java-sample/tree/20210101
以前書いたこれ↓のアップデート版。細かい修正と「2021年初でも動きましたよ」という動作確認の報告です。
[JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2019](https://memo88.hatenablog.com/entry/2019/12/02/070925)
ちなみに上記は 2019年末の記事なのでだいたい1年ぶりのアップデートになります。
# 変更内容
– 使用範囲内での行インデックス・列インデックスの最大値を取得するサンプルコードを追加
– mvnw を使うように変更
– JUnit のバージョンアップ: 4.x => 5.7.0# 環境
“`
Ubuntu Linux 18.04
LibreOffice 6.0.7.3
OpenJDK 1.8.0_275
“`# 参考
– [Java LibreOffice Programming (Calc)](https://five
EclipseのProject FacetsにJavaServer Faces(JSF)がない
# 事象 : Project FacetsにJavaServer Facesがない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/0dd4f35b-68e9-adb2-3ffd-51d0a52bf957.png)## 原因 : Javaのプラグインがインストールされていないから
最近Pleiades All in One(https://mergedoc.osdn.jp/) ばかり使っていてたところ、久しぶりに普通のEclipse(https://www.eclipse.org/) を使ったら何がプラグインか分からなくなっていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/6cc31d97-3baf-649b-0adf-3779c6968161.png)### 対応 : Eclipse Enterprise Java Developer Toolsを
The selected JRE does not support the current compliance level of 15
# 事象 : Eclipseの設定を見たらなんか言われてた
– 環境
– Windows10 Pro バージョン1903
– openjdk version “11.0.2” 2019-01-15
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/1eb06a74-a4d6-7e33-9f22-f2c509b2c5c3.png)## 原因 : コンパイラに設定したJavaのバージョンとずれてるから
[Java] > [Complier]をみると「15」になっていた・・・
こっちでも`When selecting 15 compliance, make sure to have a compatible JRE installed and activated(currently 11).`って言われている・・・![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1
【Java ~クラス~】勉強メモ6
Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。クラス
–– クラスの定義
クラスの定義は、`「class クラス名」`とします。
クラス名の最初の文字は、大文字にする。
ファイル名は、`「クラス名.java」`としなければなりません。“`.java:person.java
class Person {
// ここのメソッドを定義
}“`
– 他クラスのメソッドを呼び出す
`クラス名.メソッド名()`とすることで、他のクラスのメソッドを呼び出すことができます。
下の例では、
MainクラスとPersonクラスの2つのクラスがあり、MainクラスのmainメソッドでPerson.hello()と
する事でPersonクラスのメソッドを呼び出している。“`.java:main.java
class Main {
public static void main(String[] args) {
Person.hello();
}
}
“``
【Java】LinkedHashMapクラスの使い方
#プログラミング勉強日記
2020年12月31日
LinkedHashMapクラスの使い方を簡単にまとめる。#LinkedHashMapクラスとは
HashMapクラスと同じように情報をキーとバリューのペアで格納して使う。LinkedHashMapクラスはHashMapクラスを継承しているので、HashMapクラスが持つ機能を持っている。HashMapクラスは要素の順番を保障しないが、LinkedHashMapクラスは格納された順番を保持している。特徴としては、キーとバリューのペアで要素を保持し、キーの重複を許可しない。nullをキーやバリューとすることができる。要素が格納された順番を保持する。
#使い方
要素の追加のメソッドは、java.util.HashMapクラスで実装されているメソッドで、サブクラスのLinkedHashMapクラスも同じメソッドで要素の追加を行う。
要素の取得のメソッドは、引数で指定したオブジェクトをキーに持つバリューを返す。キーがLinkedHashMap内になければnullを返す。“`java:基本的な書き方
// 要素の追加
pu
synchronizedとReentrantLockについて(Java&Kotlin実装例)
# synchronizedとは
そもそもJavaでは特定のオブジェクトに関する操作をスレッドセーフにするために`synchronized`という修飾子が用意されています。
例えば以下のように付与します。“`Data.java
public class Data {
int x = 0;
int y = 0;public synchronized void inc() { // synchronized method
x += 1;
y += 1;
}public void dec() {
synchronized (this) { // synchronized statement
x -= 1;
y -= 1;
}
}
}
“``synchronized`が付与されたメソッドを定義すると、メソッドの呼び出し元のスレッドがこのインスタンス(この場合Dataインスタンス)に対してロックを取ります。一度ロック
WindowsにzipでJavaをインストールする
– 環境 : Windows10 Pro バージョン1903
– [MacでHomebrewを使ってインストールする場合はこちら](https://qiita.com/ponsuke0531/items/9be8dee67a91c6c78d4f)# 1. zipファイルをダウンロードする
1. Oracleのサイト : `https://jdk.java.net/{バージョン}/`
– 今回はJDK11なのでhttps://jdk.java.net/11/
1. 「Older releases, which do not include the most….」と表示されている場合は[OpenJDK Archive]リンクからダウンロードサイト(https://jdk.java.net/archive/)を表示する
2. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/3ba19cd2-de99-1662-74fa-084ddb2f319e.png)
2
gRPCにおけるエラーハンドリング(Kotlin版)
gRPCサーバーでエラーとなった場合、どのようにハンドリングすれば良いのか調べましたので、まとめておこうと思います。なお、Unary RPCs(SimpleRPC)の場合についてのみ記載します。Streamingを利用する場合については考慮しません。
ポイントは、Googleが公式にオススメしているメッセージ構造を利用することです。
具体的には、[gRPCの公式サイト](https://grpc.io/docs/guides/error/#richer-error-model)でオススメされている[error_details.proto](https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto)のメッセージ構造を利用しましょう。このprotoファイルはproto-google-common-protos-{version}.jarに同梱されています。このprotoファイルには様々なメッセージタイプが定義されており、それらに対応するJavaクラスも同じJARに同梱されていま
C#のラムダ式とLinqついて
C#のラムダについて勉強したことをまとめる。
Java8での場合についても記載する。#1. C#のラムダまでの歴史
以下の例題でラムダへの経緯について記述する。
例題:Stringの配列に対して、文字列の長さでデータを抽出する。
“`cs:ラムダ無し
private void button2_Click(object sender, EventArgs e)
{
var values = new string[] { “a”, “bb”, “ccc”, “dddd”, “eeeee” };
var result = GetData(values);
Console.WriteLine(string.Join(“,”, result));
}private string[] GetData(string[] values)
{
var result = new List();
【Java ~メソッド~】勉強メモ5
Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。メソッド
–
メソッドとは、何らかの処理を割り当てた部品である。
Javaのファイルを実行すると、先ず自動的にmainメソッドが実行されます。
mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になります。– メソッドの流れ
“`.java
class Main {
public static void main(String[] args) { //①
hello(); //②
}public static void hello() {
System.out.println(“Hello World”); //③
}
}
“`① mainメソッドが呼ばれる
↓
② mainメソッドの中で、helloメソッドが呼ばれる
↓
③ helloメソッドの中で、
System.out.println(“Hello World”)が
【Java】WindowsでJavaのアップデートを行う方法
#プログラミング勉強日記
2020年12月30日
Javaのアップデート方法について簡単にまとめる。#Javaのアップデートとは
パソコンにインストールされているJavaを最新のバージョンにアップデートすることである。Javaの開発は日々行われているのでバージョンアップのたびに最新のJavaがリリースされている。
Javaは常に最新バージョンにしていた方がいい。セキュリティの面でも性質の向上の面でもJavaのアップデートは必要である。#アップデート方法
##1. Javaのコントロールパネルを開く。
Javaの設定を行うコントロールパネルを開く。Windowsマークを押して、`Javaの構成`をクリックするか、左側の検索欄でJavaと入力すると`javaの構成`が表示されるのでクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/a2c1fe8b-47e2-1127-522d-cb70a81deadd.png)
##2.更新タブから
Elasticsearch 7.7 を Java 11 で動作させるまでに参考にしたリンク集
## 動作確認環境
– CentOS7、CentOS8
– Java 11
– Elasticsearch 7.7
– Kibana 7.7## 参考URL
**環境構築関連**
yumでリポジトリ登録して環境ごとにバージョンを統一できるようにする(CentOS8では、dnfを使用する)
https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
https://qiita.com/inouet/items/6276c5a08c4fe5eecdb5https://qiita.com/tikeda0924/items/d9ffd43e18da3a64681d
https://gitya107.hatenablog.com/entry/2018