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

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

SpringSecurityとSpringBootでログイン認証と投稿機能を実装する

#概要
SpringSecurityでDBログイン認証後にユーザーの情報を取得し、投稿した際にユーザー情報も投稿用のテーブルに保存するアプリケーションです。

###環境
– SpringBoot 2.5.6
– Java11
– SpringSecurity
– MySQL
– SpringDataJPA
– Gradle

###作成する機能
– ユーザー登録
– ログイン
– ログアウト
– 投稿

#実装

##データベース
###usersテーブル
| id | email | name | password | created_at |
| ———– | ——————- | ——– | ——– | ———- |
| int | varchar | varchar | varchar | datetime |
| NOT NULL | NOT NULL, UNIQUNESS | NOT NULL |

元記事を表示

maven-shade-pluginを使おうとしたら「Unsupported class file major version ○○」って言われてビルドできなくなった話

# コトの発端
`Java 16`で`Maven`使いながらコードを書いていて依存関係を追加する必要があることに気が付いた私は`pom.xml`を開いて`dependency`を書き加えていた。
その依存関係は`relocation`する事を前提としていたので、いつも通り`maven-shade-plugin`のバージョン`3.2.4`を使って`relocate`の処理を書いた。
暫くしてコードを書き終え、ビルドしてみるとなんとエラーが発生!コンソールには

“`console
Unsupported class file major version 60
“`

とかいうわけのわからないエラーが出ていた。

# 結局何が原因だったのさ

使用していた依存関係が`Java 16`を使用していて、かつ`maven-shade-plugin`のバージョン`3.2.4`を使っていたこと、そしてその状態で`relocation`をしようとしていたことが原因だと私の中で結論付けた。(そのままやんけ)

# 解決方法は?

①`pom.xml`の`java.version`を`16`にしておく

元記事を表示

【Java】アノテーション

# @￰JsonProperty
– Javaインスタンスのシリアライズ時のプロパティ名を指定する

# @￰JsonIgnore
– Jsonに含めたくないプロパティを指定する

# サンプルコード
### Javaクラス
“`User.java
package annotations.naming;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
private Long id;

@JsonProperty(“firstName”)
private String name;

@JsonIgnore
private String password;

public Long getId() {
return this.id;
}

public void setId(Long id) {
this.

元記事を表示

[Unity] AndroidのSpeechRecognizer APIレベル30以上で実装する

# はじめに

音声テキスト認識を実装するにあたり、2021年11月からGoogleの規約の方で新規・既存とターゲット API レベル 30(Android 11)以上が必須となってますので、API30での実装のテストをしました。

https://android-developers-jp.googleblog.com/2020/12/new-android-app-bundle-and-target-api.html

過去の実装記事は下記
[[Unity] AndroidのSpeechRecognizer(音声テキスト認識)を実装する](https://qiita.com/atsutama/items/fd8dca4a1e621f4c855b)

## 環境
macOS Catalina: 10.15.7
Unity 2018.4.19f
Android Studio 4.0.1

## APIレベルの引き上げ時にやること
– aarの`targetSdkVersion`を30に変更
– Unityプロジェクトの`AndroidManifest.xml`に`queries`の設定

元記事を表示

JJUG CCC 2021 Fallを聴講した感想文

# 目的

このページはJJUG CCC 2021 Fallを聴講したレポートです。感想文なのでお気に召さなかったらごめんなさい

# タイムテーブル

https://fortee.jp/jjug-ccc-2021-fall/timetable

# 聴講したもの

– 最新のJavaのバージョンごとの変更やコーディングスタイルに追従する
– ケーススタディを聞きたい

目的で参加しました。ひとりでは足りないのでもっと聞きたかった。。。

# 印象的なセッション
TiDBさんのお話もとても丁寧でよかったのですが、復習がかなり必要なので一回ここからは省略しました。

## エキサイトブログ刷新に向けて序章 – APIを一つに

エキサイトさんがJavaを採用されているのが初耳だったので、興味を持って参加しました。

大量のリポジトリ、数珠繋ぎのデータベース構成、大量のストアードプロシージャ、DBのフェイルオーバー中にAPIがエラーになる…
など課題が色々あって大変そうだなと思いました。

『超一流のエンジニアはドキュメントが残っていなくても、コードがドキュメントになっているはず』とおっ

元記事を表示

ITコンサル備忘録 その1

こんにちは!
外資ITコンサルの早2年目のMr.Tachibanaです。

今後の私の記事は主に3点を重点的に書きたいと思っています。
①ITコンサルの現実
②サイバーセキュリティ・AI系の知識
③エンジニアにとって有益な情報

①に関しては、就活や転職の方々に少しでも有益な情報があるように提供したいと思っています。
②に関しては、主に技術的な内容を備忘録のためにみなさんにも共有したいなと思いました。
③に関しては、エンジニア(エンジニアに限らず)にとって有益だなと思った情報があれば共有したいなと思っています。

## 今日は①の「ITコンサルの現実」について
みなさんITコンサルと聞くとキラキラしたイメージだと思いませんか?
実は、結論から言うとめちゃくちゃ地味な仕事が9割をしめます!残りの1割がプレゼンや提案のところで、これがあるからキラキラしているようなイメージがもたれているのだと思います。
私の1日の仕事を書きますと、
9:00-9:30 雑務(メールチェックなど)
9:30-10:30 朝会
10:30-12:00 業務
12:00-13:00 ランチ
13:00-15:0

元記事を表示

JavaでExcelファイルに簡単な表を作る

現在、参画している案件でJavaを用いて開発を行っています。
その際Java上でExcelのセルに色を付ける・セルに線を引く・セルを結合する、といったことを行いました。
復習として自身の勉強のために記録として残しておきます。(数時間クオリティですので、その点はご容赦ください:bow:)

メインメソッド

public static void main(String[] args)throws IOException {
// 指定のExcelへアクセス
Workbook workbook = WorkbookFactory.create(new File(“C:\\pleiades\\workspace\\excelSample.xlsx”));
// メソッドを呼び出す
writeExcelSheet(workbook);
// 出力後のファイルを指定
FileOutputStream output = new FileOutputStream(“C:\\pleiades\\workspace\\excelFormat.xlsx”);
// ファイ

元記事を表示

クラスの定義はインターフェースと実装から成り立つ

# オブジェクト指向プログラミングとインターフェース
## インターフェースは入門書の後半に学ぶ
オブジェクト指向プログラミングをソフトウェア工学的に学ぶとすると、クラス、インスタンス、継承、カプセル化、多態性、オーバーロード、オーバーライド、コンストラクタ等を学ぶことになります。そのうちの一つにインターフェースがあります。しかし、いきなり学ぶことはあまりありません。入門書であれば後半の章に書かれることになるでしょう。

## 初期のオブジェクト指向プログラミングにはインターフェースはない
オブジェクト指向プログラミングの歴史をさかのぼるとSimulaそしてSmalltalkまでさかのぼることができます。Simulaにオブジェクトという考えがあり、Smalltalkでパロアルト研究所のアラン・ケイ的な知と結びつきここまで展開されたと言えるでしょう。とはいえ、この段階においてはクラスや継承という考えは生まれていますが、インターフェースはまだ生まれていません。

## インターフェースはObjective-Cから生まれた
初期のオブジェクト指向のプログラミング言語がSimulaやSmall

元記事を表示

Apache Beamで実装したアプリのユニットテストを試す

## はじめに

下記ドキュメントを参考に、Beamで実装したアプリのユニットテストを試しました。

https://beam.apache.org/documentation/pipelines/test-your-pipeline/

## 準備

ドキュメントに従って以下のライブラリを追加しました。

“`xml:pom.xml抜粋

org.hamcrest
hamcrest-all
1.3
test

“`

## Transformのテスト

### テストコードの流れ

詳細は上記ドキュメントを見ていただいた方が早いですが、テストコードの流れをざっくり書くと、以下となる認識です。

– 通常の`Pipeline.create`の代わりに、`TestPipeline.create`でテスト用パイプラインを作成
– `Create.of`

元記事を表示

曖昧検索

//名前の曖昧検索

//Repositoryクラス

public List searchByNameContaining(String name) {
String sql = “SELECT * FROM employees WHERE name LIKE :name ORDER BY hire_date DESC”;
SqlParameterSource param = new MapSqlParameterSource().addValue(“name”, “%” + name + “%”);
List list = template.query(sql, param, EMPLOYEE_ROW_MAPPER);
return list;
}

//Serviceクラス

public List searchByNameContainig(String name){
return employeeRepository.searchByNameContaining(name);
}

//

元記事を表示

結城本「Java言語で学ぶデザインパターン入門」第1章IteratorパターンのBookShelfを配列からVector(可変長配列)に書き換えてみた

#1.概要
 結城本[「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_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=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%

元記事を表示

mavenの依存関係ではまった話

## Missing artifact xxxのエラーが発生した
自分向け備忘録。

次の案件でspringbootを使うらしいという話を聞いたので、おべんきょのためSTSと参考図書をゲットして最初の一歩を踏み出した瞬間であった。
とりあえず本のサンプル写経→動作確認で流れを確認しようとしました。
ほんでもってjquery、bootstrap、webjars-locationをpom.xmlに追加したところで

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2305337/9c6b6b30-73e4-2dfd-1130-7e74917f6194.png)このざま

~~こんなに色々自動化が進んでる時代なのに環境構築は落とし穴だらけだし毎回しっかりはまるので泣きそう。~~

### 現状を把握
ちなみにpom.xmlに追加したのは以下の部分。
jqueryやbootstrapの箇所は問題なく動いている。

“`xml:pom.xml(抜粋)

元記事を表示

オブジェクト思考どうやって理解した?

# 参考にした書籍

これを読んでFlutterを1ヶ月やると非同期処理やメンバー変数が理解できるようになっていた。
他の言語でのオブジェクト思考の概念さえ理解すればSwiftも久しぶりにコードを書いたのだがすぐに理解できた。

# Swiftのクラスのような文法の構造体の例

“`
struct Article {
let id: Int
let title: String
let body: String

init(id: Int, title: String, body: String) {
se

元記事を表示

私がJPAよりMybatisを薦める理由

JavaでRDBにアクセスするなら、
大きくこの二つの選択肢があるでしょう。

– JPA
– ORMの仕組み
– Javaのオブジェクトを使って情報の永続化(データ保存)や情報の取得をするもの
– 複雑な情報取得のためにJPQLというSQLに似た書き方もできる
– JPA自体は仕様で実装物としてはHibernateが有名(Hibernateの機能をJavaが仕様として取り込んだ)
– Mybatis
– ORMというよりSQLマッピングの仕組み
– SQLをJavaではない外部ファイルに書くことができる
– SQLの結果やバインドパラメータ ⇔ JavaのBeanの間で自動詰替えをしてくれる

私は初学者やほとんどの開発プロジェクトでMybatisの採用を薦めています。
その理由について個人的な意見を記載します。

ただ、JPAは正直あまり使ってないので見当違いがあるかもしれません。

# JPAのいいところ

### 単一テーブルへのアクセスが簡単

単一テーブルや単純な親子関係のテーブルの結合ぐらいなら、とてもシンプル書けるので使いやすいです。
単純な

元記事を表示

Apache BeamでS3のデータをElastiCacheにロードする

## はじめに

S3上のファイルからデータを読み込み、ElastiCache(Redis)にロードする処理を行います。
アプリケーションはApacheBeamを使用して実装し、EMRでSparkアプリとして実行します。

Beamで実装したアプリをEMRで実行する手順については、以下の記事に記載しているため、
本記事では、主にElastiCache(Redis)を出力先とする際に行った対応について記載します。

https://qiita.com/ynstkt/items/66122643e3f48c99fa64

## アプリ実装

Redisへの出力には、Beam提供のI/O Transformsの1つであるRedisIOを使用しました。

[https://beam.apache.org/documentation/io/built-in/](https://beam.apache.org/documentation/io/built-in/)
[https://beam.apache.org/releases/javadoc/2.34.0/org/apache/beam/s

元記事を表示

Javaを用いて1人麻雀ゲームもどきを作ってみた。

# はじめに
この記事は、Java(8以上)を学習するにあたって試しに作成した麻雀ゲーム(未完成)の内容に関する説明となっています。コードの方はgithub([https://github.com/watcher041/mahjong](https://github.com/watcher041/mahjong))に配置しておりますので、ご参考にどうぞ…。

# ゲームの動作

以降では、コードをご覧いただいている前提で話をしております。

ゲームは「javac Main.java」とコンパイルしていただいて「java Main」とすると遊べます。役が揃うまで牌を捨てるだけのものとなっています。(七対子だとあがれない、点数計算もないです)おおまかな流れといたしましては、

– 卓(卓の画像、壁牌)を作成する
– プレイヤー(手牌、手配の画像)を作成する。このとき、牌をクリックすると手牌が捨てられて壁牌から一枚引いて理牌されるように手牌一つ一つにMouseClickCheckクラスを仕込む。

– 作成したものをもとに画像を表示する

– 手牌をクリックすると、その手牌のMouseCli

元記事を表示

log warnへスタックトレース出力

やりたかったものはタイトル通りだった。
e.printStackTrace()から出力されているものを、Stringに変換して使いたい時に呼ばれるように。。したかった。
## 解決
方法は本当に簡単で

“`java
log.warn(“### メッセージ後、スタックトレース出力されたらいいな”, e);

結果)
2021-11-18 10:52:19.409 [] [] ERROR ### メッセージ後、スタックトレース出力されたらいいな
java.lang.NullPointerException: null
原因発生地だらだら
“`
# 時間かかった理由
検索をHow do I get e printStackTrace as string?にした。
結果)
https://www.baeldung.com/java-stacktrace-to-string#:~:text=The%20function%20printStackTrace()%20of,printStackTrace(pw)%3B
https://stackoverflow.com/questions/11

元記事を表示

MLKitで顔のパーツのポジションを取るには(Android)

まず公式サイトを貼ります:

https://developers.google.com/ml-kit/vision/face-detection/android#1.-configure-the-face-detector

setLandmarkModeに入ります:

https://developers.google.com/android/reference/com/google/mlkit/vision/face/FaceDetectorOptions.Builder#setLandmarkMode(int)

二択しかないのでパーツを取りたい時には以下の設定にしてください:

“`
// 特徴を取るかどうか
.setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL)
“`
これをオンにすることで、全部の顔のパーツが読み取れるようになる。

その後

例えば左目のxポジションを取りたい時に以下のコードを

“`
x = face.getLandmark(FaceLandmark.LEFT_EYE).getPositio

元記事を表示

[Unity] AndroidのSpeechRecognizer(音声テキスト認識)を実装する

# はじめに
Unityで音声テキスト認識のサンプルを作成しました。
ポップアップが出て認識するものではなく、ポップアップなしのものになります。
実装方法などの忘却録。

https://developer.android.com/reference/android/speech/SpeechRecognizer?hl=ja

## 環境
macOS Catalina: 10.15.7
Unity 2018.4.19f
Android Studio 4.0.1

## Android Native Pluginの作り方
以前、Android Pluginのmodule作成の基本的な作り方をまとめていますので、参考までに。

https://qiita.com/atsutama/items/28744b1a29e79184c3fc

## Android Plugin側のコード
UnitySendMessageを使う際には「jar」ファイルをインポートする必要がありますので、下記で確認出来ます。
この設定をしておかないとコードを書いた時にimportエラーが出ます。

https://q

元記事を表示

初投稿

はじめまして。

今回が初めての投稿となります。
初心者エンジニアです。

初心者エンジニアとしての日々の日記をてきと~~に書こうと思っているので、

暖かい目で見ていただけたらHappyです!

よろしくお願いしやす。

元記事を表示

OTHERカテゴリの最新記事