JAVA関連のことを調べてみた2022年11月25日

JAVA関連のことを調べてみた2022年11月25日

Twitter 画像付き自動投稿つくってみた【AWS Lambda】

## あらまし
素数の日(=yy/mm/dd のdd 部が素数)[^1]にその素数にちなんだ画像を自動ツイートする機能をAWS Lambda で作成しました。

[^1]:yyyymmdd の8桁が素数の場合を「素数の日」と呼ぶ流派もあるようです。

元記事を表示

[Java 入門] コンソールアプリのメニュー選択で、Switch文などを使わずに分岐させる

## 概要
Java入門で開発するコンソールアプリでは、メニューを表示し、標準入力で受け取った番号の操作を実行するものがあります。
“`
[メニューを選択してください]
1 表示
2 追加
3 戻る
input > 1
“`
みたいなやつです。
これをSwitch文で分岐させる、というのがよくある設計ですが、抽象メソッドと列挙子を活用して実装してみましょう。

## 実装
まずはメニューを記述する列挙子です。
“`java:MemberMenu.java
public enum MemberMenu {
SHOW(“1”, “表示”) {
@Override
public void execute() {
MemberList.getMember()
.stream()
.sorted(Comparator.comparing(Member::getId))
.forEach(m -> System.out.println(m.show()));
}
},
ADD(“2”, “追加”)

元記事を表示

リストの初期化とnull代入

# 目次
[1.リスト初期化](#1-リスト初期化)
[2.null代入](#2-null代入)
[3.おまけ](#3-おまけ)

## 1. リスト初期化
参照型の変数は「参照」を保持しています。
「参照」とはメモリ上(一時的にデータを保管しておく場所)の、値が格納されている場所のことで、
オブジェクト(変数)の生成はnew演算子を使っておこないます。

ではまずはじめに、さかなリストを作成します。

“`java
// さかなリスト
List fishLsit = new ArrayList();
fishLsit.add(“あじ”);
fishLsit.add(“ししゃも”);
// 出力
System.out.println(“①さかなリスト:” + fishLsit.toString());
“`
出力結果は以下の様になります。
①さかなリスト:[あじ, ししゃも]

つぎに、リストの初期化をおこないます。

“`java
// リスト初期化
fishLsit = new

元記事を表示

JavaでWord文書の既存のテキストから箇条書きや番号付きリストを作成する方法

箇条書きリストと番号付きリストは、一般的に使用されるリスト形式であり、どちらもテキストコンテンツの構造を明確にし、読者が主旨を得やすいようにすることができます。Word文書でこの2つのリスト形式を使用すると、文書の内容をより簡潔かつ効率的に表示することができます。この記事では、無料の[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)を使って、**Word文書内の既存のテキストから箇条書きリストと番号付きリストをコードで作成する方法**を紹介します。

## 【依存関係の追加】

> **この方法は、無料のFree Spire.Doc for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

“`XML

元記事を表示

曖昧な単語を使って欲しくない

# はじめに
ここ数年保守を担当しており、色々な人の書いたコードを目にします。
最近以下のようなコードを目にしました。

“`java
public void sample() {
// 何かしら処理
if (checkCommon(dto)) {
// 何かしら処理
if (checkDate(date)) {
// 何かしら処理
}
}
}
“`

(前後の処理をぼかしているのもありますが)ifの中で何をチェックしているのか、`check`の意味が広く曖昧であることによって理解できませんでした。
これを例に、なぜ曖昧な単語を使うことがよくないのか、どのように修正すればよいのか、個人的な意見を書きます。

# どのようにチェックしているのかわからない
細かい理由はいくつかありますが、個人的にはこれが大きすぎると感じています。
前述のとおり`check`の意味が広すぎて曖昧であることによって、関数の意味も曖昧になってしまいます。故にこの章のタイトルの通り**どのようにチェックしているのか

元記事を表示

いくつかの言語での全角スペースの挙動

## 最初に

言語によって、全角スペースが混入したときの挙動が違います。

各言語によって、どのような違いがあるのだろうかと思い、簡単に調べてみました。

### Python・Javaは、検知してエラー

全角スペースが混じってるだけで、それを検知しエラーとして教えてくれました。

– Python(3.8.2)は、`SyntaxError: invalid character in identifier`と表示。
– Java(openjdk 15)は、`error: illegal character: ‘\u3000’`と表示。

Javaは文字コードまで教えてくれるので、親切ですね。

### Rubyは、変数名に扱えてしまう

Rubyでは、日本語も変数名に使うことができ、全角スペースも変数名に使えてしまいます。

“`fullwidth_space.ruby
  = “Hello, world!”
p   # “Hello, world!”
“`

上記のコードは、全角スペースに文字列を代入して出力してます。

そういうわけで、もし全角スペースが混じってもそれを検知

元記事を表示

Javaで何か作ってみる(2022/11/22 Day33)

## 今日やった事
– Javaの動画教材の演習問題である、ケーキ屋プログラムの作成を行った。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/4e891f4fedc4fbed3bb844dd47bb3fff3ff84d3e)
## 参考にしたもの
– [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ!絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
→今回取り組んだのは、この動画教材の中の、**J1-EX1_総合演習(アルゴリズム)** の**総合演習(ケーキ屋プログラムの作成)** になる。
## 所感
– 例外処理も含めて、ケーキ屋プログラムを完成させる事が出来た。
## 明日の予定
– 動画教材の続きから進めていく。

元記事を表示

Javaで何か作ってみる(2022/11/21 Day32)

## 今日やった事
– Udemyの動画教材を少し見た。(**J1-16_パッケージ** まで見た。)
## 参考にしたもの
– [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ!絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
→ Javaの勉強に使用しているUdemyの動画教材。
## 所感
– 内容理解は完璧。
– springそろそろ着手したいな。
→動画教材探しておくか。
## 明日の予定
– 引き続き、動画教材を進めていく。

元記事を表示

Stack Memory vs Heap Memory in Java

Stack Memory vs Heap Memory in Java. We all know Java doesn’t require programmers’ intervention to manage the memory. Its Garbage Collector frees up the memory when not used. So, why does a Java programmer need to understand memory management then?

Although you don’t have to worry about destroying objects, thanks to Garbag

元記事を表示

Mac×OpenCV×JavaでWEBカメラに映る顔を認識してみた。

はじめに

こんにちは。ちゃむじです。
前回OpenCVの環境構築をしてから、OpenCVが自分の中でちょっとしたマイブームになっていましたので、
今回はWEBカメラに映る顔を認識してみました。
備忘録がてら投稿します。

環境構築は前回の投稿にあるので割愛します。
詳しくは[こちら](https://qiita.com/Chamuji/items/dacf3aa0de17aa6cc883)

完成ファイル

“`
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Mat

元記事を表示

#17 Spring バリデーションの実行順序の変更

# #17 Spring バリデーションの実行順序の変更
前回は自分で設定したエラーメッセージが表示されるよう設定しました。
しかし、それだけでは不要なエラーメッセージも同時に表示されてしまうので、今回はエラーメッセージの表示順を設定します。

# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため所々説明は省略します。

# 前回まで
前回の記事は以下になります。

https://qiita.com/Jackoguro/items/ddd68a48b1b99206b68c

# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
jquery ver 3.6.1
bootstrap ver 5.2.2
webjars-locator ver 0.46

2. 依存関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/f55dc9b5-e7b

元記事を表示

Spring boot + Ajax 簡易掲示板作成 (削除機能)

# 最初に
今回の記事は前回投稿した[Spring boot + Ajax 簡易掲示板作成 (編集機能)](https://qiita.com/Sesoniso/items/bd40bf9b55790f3f917a)に削除機能を追加するための記事となります。
主のプロジェクト、環境構築など記事に記載していますので先にそちらをご覧ください。
[Spring boot + Ajax 簡易掲示板作成 (投稿機能)](https://qiita.com/Sesoniso/items/a3c2b2c32bff09bfbbd5)

・本記事の完成ページ

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2645309/d9bf3783-0951-4462-8157-1ae5e6bcb62d.png)

# 1. サンプルコード
## 1.1 HTMLファイル
“`html:/src/main/resources/templates/top.html

Java: Ant で war ファイルを作成

こちらのページを参考にしました。
[Antの動作確認](http://msugai.fc2web.com/java/servlet/build_ant02.html)

## ソースコード

ツリー

“`text
$ tree
.
├── helloworld.xml
└── src
└── HelloWorld.java
“`

“`java:src/HelloWorld.java
import java.util.Date;
import java.text.SimpleDateFormat;

class HelloWorld {
public static void main(String str[]) {
System.out.println(“Hello, World”);
System.out.println(“これはテストです。”);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SZ”);
Sys

元記事を表示

Leetcode 279. Perfect Squares

# 279. Perfect Squares

https://leetcode.com/problems/perfect-squares/

## アプローチ 1
### DP

“`java
package com.leetcode.midium;

import java.util.Arrays;

public class PerfectSquares279 {
public static void main(String[] args) {

}

public static int numSquares(int n) {
int[] dp = new int[n + 1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[0] = 0;
for (int i = 1; i <= n; i++) { for (int j = 1; j * j <= i; j++) { dp[i] = Math.min(

元記事を表示

#16 Spring バリデーションのエラーメッセージの変更

# #16 Spring バリデーションのエラーメッセージの変更
今回はバリデーションにより発生するエラーメッセージを自分で作成したエラーメッセージに変更していきます。

# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。

# 前回まで
Formクラスにバリデーション用のアノテーションを付与し、バリデーションによる入力チェックを行いました。

https://qiita.com/Jackoguro/items/f5a958dd03cf4f23562f

# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
jquery ver 3.6.1
bootstrap ver 5.2.2
webjars-locator ver 0.46

2. 依存関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/a3670e62-9

元記事を表示

Javaで暗号化

# はじめに
最近なら AES256/GCM 使っておけば大丈夫な気がするので、その使い方。
バイト列を入力して暗号化されたバイト列を取得、復号してバイト列を得るまで。
JavaでCipherを使う場合、GCMのtagは暗号文に含まれる模様。このため、.NETなど、別のライブラリで復号する時はtagを分離しないといけないっぽい。

# 暗号鍵
AES256にするので、鍵長は当然256bitにする必要がある。
パスワードを入力して復号するなら、パスワードのSHA256を鍵に使えば良いかも。自動生成することもできる。

文字列からSHA256を取得して、鍵にするならこんな感じ。(例外処理は適当なので、使うときはちゃんと作る)

“`Java
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

.
.
.

public

元記事を表示

機械学習、Java、GridDBを用いた大学院入試の予測

ランダムフォレストは分類予測に使用できる強力なモジュールで、決定木よりも良い性能を発揮します。この記事では、ランダムフォレストモジュールとクリーンなデータセットを組み合わせて、ある大学院への大学生の入学可能性を予測することに焦点を当てます。この問題は、業界でよく知られた予測セットです。機械学習アルゴリズムを実装するために、Javaプログラミングを使用する予定です。この記事では、データマイニングのプロセスについて、業界標準のプロセスに従います。最初に、データを取得し、それを準備し、予測のためのモジュールを作成し、それを実行し、最後に結果を評価することによってそれをテストします。

ソースコードとデータはこちら:

## 必要条件

ランダムフォレストモジュールを作成するにあたり、二次記憶装置として**GridDB**データベースを使用します。**GridDB**をダウンロードおよび設定し、**GridDB**があなたのシステムで稼働していることを確認することが重要です。

必ず以下の

元記事を表示

【static java】静的メンバ

“`java
public static void main(String[] args)
“`
この「static」とはなんだろう。

#### staticとは静的メンバである。
ざっくり簡単に言えば

**「インスタンスを生成しなくてもフィールドやメソッドを利用できる」**

オブジェクト指向の基本原則として「インスタンスの独立性」というものがありインスタンスを生成することにより”独立性を担保”できるので
**今まではインスタンスを生成するごとに違う値を入れられていた**と思う。

“`java:インスタンス生成(例)
Man m1 = new Man();
Man m2 = new Man();
Man m3 = new Man();

//それぞれnameフィールドが用意されていた場合
m1.name = “m1”;
m2.name = “m2”;
m3.name = “m3”;
“`

#### staticを使った利用
大きく分けて 「staticメソッド」「staticフィールド」 の2つ。

“`ja

元記事を表示

#15 Spring バリデーションの実行[正規表現]

# #15 Spring バリデーションの実行
今回はバリデーションを用いて入力可能文字や文字数の制限などを設定していきます。

# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。

# 前回まで
前回は型変換に対応するエラーメッセージの処理を行いました。

https://qiita.com/Jackoguro/items/eb04336438522b14dec5

# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5

2. 依存関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/1389d101-2f33-f675-9441-37e004cf0a43.png)

今回はバリデーションを使用するため、依存関係に“検証“を設定していない人はMavenの場合はpom.xml、gradleの場合はbuild.g

元記事を表示

#14 Spring JavaScript 生年月日から年齢を自動計算[間違いがあったので編集中]

# #14 Spring 生年月日から年齢を自動計算[間違いがあったので編集中]
今回はJavaScriptを用いて生年月日から年齢を自動で求めるようなプログラムを記述していきます。
最初に書いておきますが、入力フォーム内に“/,-“のような数字以外の文字が含まれていても問題なく動作することができました。

# 前回まで
前回は新規登録画面を作成しました。

https://qiita.com/Jackoguro/items/db35aa456341a484254b

入力フォームに誕生日1,2という項目があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/3309863c-63ce-537e-5560-f33f61f454bf.png)

誕生日1は“type=”date”“を用いて入力する形式で、誕生日2は“type=”text”“を用いて“yyyy/MM/dd“形式を用いて入力します。

# 構築環境
1. 各バージョン
Spring Boot

元記事を表示

OTHERカテゴリの最新記事