JAVA関連のことを調べてみた2021年08月21日

JAVA関連のことを調べてみた2021年08月21日

enum class の使用例

## はじめに
今まで enum はただ定数を保管しておくためのクラスだと思っていたが、業務の中で自分が知らなかった方法で enum を使用していたし、便利だなと思ったのでメモとして残す。

Java Silver の試験には出てこなかった。

## enum class

(1) enum でもコンストラクタの定義ができる。
・ ここでは引数で受け取った名前と血液型を決定

(2) メソッド `getPesonInfo` で `PesonInfo` を初期化して返す。
・ この enum クラスにセットされた名前と血液型を使用して初期化した`PesonInfo`を返す。

“`
package enumTest;

public enum Persons {
// (3)
TARO(“田中太郎”,”AB型”),
YUKA(“佐々木優花”, “O型”);

// (1)
Persons(String name, String bloodType){
this.name = name;
this.bloodType

元記事を表示

【Java】【Ruby】配列内の偶数を数える

 とても簡単ですが、RubyとJavaで、配列内の偶数を数えるプログラムを作りました。「配列を引数として渡すにはどうしたら良いのだろう」という疑問からひとまず作ったものです。

## Ruby

“`ruby
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end

count_evens([2, 1, 7, 8, 2, 3, 4])
count_evens([2, 2, 6, 5, 0])
count_evens([1, 3, 11, 5])
“`

## Java

– メソッドを定義したクラス

“`java
package example;

public class CountNums {
void countEvens(int[] nums) {
int count = 0;
for(int num : nums) {
if (num % 2 == 0) {

元記事を表示

デザインパターン 一言で表現してみた ~GoF本輪読会まとめ~

初投稿です

#はじめに
以前から、[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88-Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9-ebook/dp/B00I8ATHGW/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Java+%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&qid=1629379519&sr=8-1)の輪読会を実施していましたが、最近完遂すること

元記事を表示

Fn (OCI Functions) の Function を FDK を使わずに作成する

# はじめに

掲題に関するコードをGitHubに公開していますが、そもそも素直にFDKを使っておけばいいのに、何でこんな一見無駄に思えることをやってみたのかという動機から、実際にやってみて分かった Fn コンテナの通信の仕組みなどについて、諸々お話をしたいと思います。

https://github.com/tkote/fn-netty

https://github.com/tkote/fn-fastapi

# 動機

Fn には各種言語用の FDK (Function Development Kit) があって、これを使えばあまり難しいことを考える必要もなく、シンプルに入力を受け取って処理をして出力を返すことだけを実装すれば済みます。単純な処理であれば実際 FDK だけで十分でしょう。
しかしなから逆に、何で実装が FDK に縛られないといけないのかという疑問の方が強くなってきました。世の中には様々な言語の優れたフレームワークがあるので、それを流用できた方がいいことが多くあるのではないか? 例えば (Javaの例ですいません…) JAX-RS 準拠のフレームワークで F

元記事を表示

Javaのlibrosa的ライブラリjlibrosaをandroid sturioで使う

最近アンドロイドアプリを作ろうとしているので備忘録

#Javaでサクッと音の特徴量求めたいけどどうしよう
pythonだったらLibrosaに頼るところですが、Javaにも似たようなライブラリがないか探してみたところありました!
その名も[jlibrosa](https://github.com/Subtitle-Synchronizer/jlibrosa)!!!
Java版Librosa作ろうぜ、みたいなところがモチベーションで開発されているようです。
androidでどうやって使うかも、[神記事](https://heartbeat.fritz.ai/a-definitive-guide-for-audio-processing-in-android-with-tensorflow-lite-models-d90de896f0c4)にちょいと書かれており、非常に助かりました。
ただライブラリのインストールのところでちょっと躓いたので記事に残しておきます。

#jlibrosaをandroid studioにライブラリとしてインポートする手順
1. githubからjlibrosa

元記事を表示

Spring MVCで、Filterでリクエストボディとレスポンスボディをログ出力するときの落とし穴と対策

# やりたいこと
リクエストボディとレスポンスボディの内容を、Filterでログ出力したい。

“`bash:ログ出力例
… リクエストボディ = param1=value1&param2=value2
… レスポンスボディ = This is reponse body
“`

> 本来は秘匿情報のマスクなどが必要になりますが、この記事ではその説明を省いています。

# 問題
`HttpServletRequest` や `HttpServletResponse` には、ボディを `String` で取得するようなメソッドは存在しません。前者には `getInputStream()` 、後者には `getOutputStream()` というメソッドがあり、これを使えばボディを取得することはできます( `String` にするにはゴニョゴニョ処理が必要なのですが)。

しかし、 `getXxxStream()` メソッドを使ってしまうとボディが消費されてしまい、その後はボディが取得できなくなってしまいます。

なので `HttpServletRequestWrapper`

元記事を表示

paizaテスト環境(Java編)

paiza( https://paiza.jp/ )で問題を解いていると、「自分の好きな値で試したい」となるときがありませんか?
そんな時にはpaiza.IOがあるじゃないか、と言われるかもしれませんが、自分の開発環境で作ってる場合修正の度いったりきたりで煩わしいと思います(思いました)。
そこで私は自分のローカル環境でテキストファイルを標準入力にもってきて、対象ファイル(クラス)のmainメソッドを呼び出す、簡単な処理を一つ作りました。

それがこれです↓

“`java

package skillCheck;

import java.io.FileInputStream;
import java.io.InputStream;

import skillCheck.rankS.S002;

public class CallMethod {

public static void main(String[] args) throws Exception {

InputStream fileStream = new FileInputStream(

元記事を表示

Java 11 (OpenJDK: Eclipse Temurin) を Homebrew で macOS にインストールする

## 概要

– AdoptOpenJDK の後継である Eclipse Temurin を Homebrew で macOS にインストールする。

[Good\-bye AdoptOpenJDK\. Hello Adoptium\! \| AdoptOpenJDK Blog](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/)

> The move from AdoptOpenJDK to Eclipse Adoptium is now complete. The same great community that brought you high quality Java binaries for the last four years at AdoptOpenJDK is now fully productive at Adoptium.

[Adoptium Celebrates First Release \| Adoptium Blog](https://blog.ado

元記事を表示

SpringBootアプリをService(デーモン)として起動する方法

# はじめに
SpringBootアプリは「java -jar」コマンドで実行できますが、ログアウトするとアプリが停止します。
起動し続けるためにはサービスとして起動させる必要があります。
今回はSpringBootアプリケーションをService(デーモン)として起動する手順を記載します。
※デーモンとは常駐プログラムのUNIX系OSにおける呼び名です。

# 環境
OS:CentOS7

# 手順
1. Fully Executable Jarの作成
2. confファイルの作成
3. Service(デーモン)の登録
4. Service(デーモン)の自動起動設定

# 1. Fully Executable Jarの作成
SpringBootアプリを常駐させるために通常のjarファイルは起動スクリプトを書く必要があるが、
Fully Executable Jarは起動スクリプトが組み込まれています。

作成方法は、pom.xmlに次のようなのタグを追加します。

“`xml:pom.xml

元記事を表示

Eclipse 2021-06(4.20.0)でlombok 1.18.20適用時のエラー

# 環境
* java version “16” 2021-03-16

# 現象と対処方法
以下のエラーが発生してjavaのエディタが開けなくなる。

“`java
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang” to unnamed module @2b8bb184
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.Access

元記事を表示

SpringBootアプリケーション(Jar)をCentOS7にデプロイ

# はじめに
SpringBootは実行可能ファイルとして jar 形式と war 形式の2種類のファイルを作成できます。
jar 形式はTomcatが組み込まれており、単体で実行可能です。
war 形式はTomcatがインストールされた環境にデプロイし、実行する必要があります。
今回はjarファイルをCentOS7にデプロイする手順を記載します。

# 前提

### 開発環境
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

### サーバー環境
OS:CentOS7(仮想マシン)
Java:11
Apache:2.4.6

# Jarファイル作成
プロジェクト上で右クリック > [実行] > [Maven install] を選択します。
完了後、[プロジェクトフォルダ] > [target]に「XXX.jar」ファイルが作成されます。
※ここではプロジェクト名「demo」のjarファイル作成
![jar作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798

元記事を表示

SpringBootでHello World プロジェクト作成~実行

# はじめに
SpringBoot + Thymeleaf + Mavenで「Hello World」を表示させる手順を記載します。

# 開発環境
OS:windows10
IDE:eclipse(4.15.0)
Java:11
ビルドツール:Maven

# 手順
「Hello World」を表示させるまでの手順は下記です。
1. プロジェクトの作成
2. pom.xmlの編集
3. 画面の作成
4. Controllerの作成
5. 実行

# 1. プロジェクト作成
eclipseを起動します。
eclipseの[ファイル]→[新規]→[プロジェクト]を選択します。
![プロジェクト選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798422/7f9d50b7-2165-81b4-263f-f07224f2c729.png)
「Spring スターター・プロジェクト」を選択し、「次へ」ボタンを押下します。
![Springスタータープロジェクト選択.png](https://qiita-i

元記事を表示

Javaで単語学習アプリを作ろう

こんにちは。プログラミングを勉強していると、一刻も早く単語学習アプリを作りたくなりますよね。え、ならないんですか???

単語学習アプリを作ってみたい同志たちの願いを叶えるべく、今回はJavaで、フラッシュカード式の単語学習ができる機能を作ってみました。アプリというほど整った形ではありませんが、ひとまずコンソールで使えるレベルになりました。

例によって、正しく動きはするものの最適な書き方であるか自信がない部分もありますので、何かお気づきになりましたらご指摘いただければと思います。

今回扱う項目は以下です。

– tsvファイルを作り、ソースコードで内容を読み込む。
– 読み込んだ情報をもとに、ランダムで単語を表示させる。

前提条件

– IntelliJ IDEA: 2021.1.2 (Community Edition)
– JDK:16.0.1
– MacOS:Version 11.1

## 1.今回やることの整理

今回は以下のような要件を満たした機能を作ります。

– 起動すると、日→英か英→日どちらかの学習モードを選べる
– スタートすると無作為に選ばれた単語が表示

元記事を表示

[Java]  エクセルで数式を追加・読み取る

Excelで、セルに数式や関数を入力して計算などの作業を自動的に行わせることができます。数式や関数を使いこなせれば、Excelでの文書作成がぐっと楽になると思いますので、今回は、free Spire.XLS for Javaという無料のライブラリを活用して、Excelで数式を追加・読み取る方法を紹介していきます。

下準備

1.E-iceblueの公式サイトからFree Spire. XLS for Java無料版をダウンロードしてください。

f:id:lendoris:202108181216</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>数式</div>
<div class='tag-cloud-link'>エクセル</div>
<div class='tag-cloud-link'>追加</div>
<div class='tag-cloud-link'>読み取る</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/ddb74e05c65004624b42'>元記事を表示</a></div>
<h3 id=Thymeleafの日付比較

#Thymeleafの日付比較が賢い!
と感動したので、簡潔ですが投稿させていただきます。

#コード例
ControllerからModelに値を渡し、Thymeleafで表示する例です。

“`java:○○Controller.java

@GetMapping(“/index”)
public String index(Model model) {
model.addattribute(“today”, “2021-8-18”);
model.addattribute(“tomorrow”, “2021-8-19”);
return “index.html”;


“`

“`html:index.html

falseなので表示されない
trueなので表示される


“`
比較演算子で「>」とか使いたくなりますが、
Thymeleafでは以下のように書き換える必要があります。

元記事を表示

Java入門[インターフェース]

前回は抽象クラスについてまとめました。

https://qiita.com/tomorun/items/8c210446b586d343ef53

階層の上には`Human`クラス
その下には具体化された`Teacher`や`Engineer`、`Unployed`などが生まれました。

しかし、`Human`クラスを更に抽象化することもできますね。
どんどん抽象化していくことで、抽象クラスのフィールドやメソッドが減っていきます。

抽象クラスの中でも、更に抽象化されたクラスを`インターフェース`として特別に扱うことが可能になります。

`インターフェース`の条件は以下の2つ
1 すべてのメソッドは抽象メソッドであること
2 基本的にフィールドを1つも持たない

では、作成してみましょう。

`アクセス修飾子 interface クラス名`

“`java:Animal.java
public interface Animal{
// public abstract void run();
// public abstract void eat();
// public

元記事を表示

全く役に立たない小ネタ(Java)

変数定義時に自身を参照できる

“`java
static String foo = foo = “ABCD”;
String bar = bar = “ABCD”;
void hoge() {
String baz = baz = “ABCD”;
}
“`

実行結果(IDEONE)
https://ideone.com/48OXMp

元記事を表示

【画像処理解説】ポスタリゼーション(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#ポスタリゼーションとは?
階調変更アルゴリズムであり、色の階調を変更する画像処理です。
一般的な画像は0から255の256階調で成立しています。
これをルックアップテーブル(LUT)を用いて、任意の階調数に変更します。

似たような処理として減色処理があります。
減色処理では、階調を減らすというよりも、画像情報を残しつつ情報量を減らすことが目的となります。
ポスタリゼーションは画像を加工してアートみたいにできるのが特徴ですね。

#LUTとは?
画素値変換用の参照テーブルのことです。
ポスタリゼーションの場合、階調数を$t$とするとLUTは以下の式で定義されます

“`math
lut(i) = \left[\left[\frac{i\times t}{256}\right]\times\frac{255}{t-1}\right]
“`

階調数が4の時、画素値100は85に、画素値200は255に変換されます。

元記事を表示

ただただ公式ドキュメントのリンクを並べただけ

タイトルの通り、ただ公式ドキュメントのリンクを並べました。
私が勉強した or 勉強に使いたいな、と思っている範囲のものです。
読んだ感想なども記しました。
適宜、更新するかもしれません。

# Java関係

### Java
|タイトル |リンク |その他 |
|—|—|—|
|ドキュメント |https://docs.oracle.com/javase/jp/11/ |Java 11 |

Javaに関しては、公式を見るよりも市販の本とかの方がいい気がしています。

### Spring Boot

|タイトル |リンク |その他 |
|—|—|—|
|チュートリアル |https://spring.io/guides |英語 |
|チュートリアル |https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html |日本語|

日本語だと、最近こちらの本が出たようです。amazon prime会員だとタダで読めるようです。
https

元記事を表示

【画像処理解説】メディアンフィルタ(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#メディアンとは?
日本語では中間値といい、名前の通り数集合の中間に位置する数のことです。

簡単な例ですが、あるテストを受けた人が7人いて、点数分布は以下の通りでした。
$\begin{matrix}
34 & 36 & 39 & 42 & 44 & 48 & 100
\end{matrix}$

この例において平均点を計算すると、49点となります。
直感的には49点が真ん中というのは高いように感じませんか?
2位ですら平均点以下となってしまっています。
これは一人だけ100点という高得点を取っている人がいるため、平均点が高めに出ているのです。

次に、メディアンを計算してみましょう。
7人の中間なので、4位の点数である42点が採用されます。
この点は4位の点数そのままなので、1位の100点には引っ張られていません。
メディアンのほうが「真ん中」という感じがしますよね?

以上、説明した通りメディアンには外れ値(極端

元記事を表示

OTHERカテゴリの最新記事