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

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

#20 Spring Mybatisを利用したデータベース操作[1. 環境構築、テーブル作成]

# #20 Spring Mybatisを利用したデータベース操作[1. 環境構築、テーブル作成]
この記事ではMybatisの環境構築とOracleDBを用いたテーブルの作成を行います。

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

# 前回まで
前回の記事ではOracleデータベースの接続設定を行いました。

https://qiita.com/Jackoguro/items/808d9fff90f39962c3cd

# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
mybatis-spring-boot-starter ver 2.2.2
Model Mapper ver 3.1.0
jquery ver 3.6.1
bootstrap ver 5.2.2
webjars-locator ver 0.46
thymeleaf-layout-dialect ver 3.0.0

2. 依存関係
![imag

元記事を表示

Javaで何か作ってみる(2022/11/26 Day37)

## 今日やった事
– Twitterで、ビンゴゲームの課題があったので、やってみた。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/8c72460de8d9c9d6c7e3ad6343e65552046b834d)
## 参考にしたもの
– [Javaでビンゴゲームのコードを作成したい](https://teratail.com/questions/kav3aoefaf30b6)
→ここに答えが書いてあるようなものだが、見てやっても意味ないので、極力見ないようにしている。
– [【Java】ビンゴカード作成問題を解く – Qiita](https://qiita.com/kim-shun/items/fee32cf0cb3cc009756a)
→こちらも同様。

## 所感
– 今日はカードの準備まで作ってみた。
## 明日の予定
– ビンゴゲーム作成を進めていく。

元記事を表示

Javaで何か作ってみる(2022/11/25 Day36)

## 今日やった事
– Twitterで、ビンゴゲームの課題があったので、やってみた。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/8d7e37c6f041810d3773df0f13592d5511ef075d)
## 参考にしたもの
– [Javaでビンゴゲームのコードを作成したい](https://teratail.com/questions/kav3aoefaf30b6)
→ここに答えが書いてあるようなものだが、見てやっても意味ないので、極力見ないようにしている。
– [【Java】ビンゴカード作成問題を解く – Qiita](https://qiita.com/kim-shun/items/fee32cf0cb3cc009756a)
→こちらも同様。

## 所感
– 今日はとりあえず、ファイル作成のみ。
## 明日の予定
– ビンゴゲーム作成を進めていく。

元記事を表示

javaのAtomicInteger型

アトミックな増分カウンター

元記事を表示

Twitter API v2 Volume streams(sampleStream)の(Javaでの)使用方法

Twitter APIがv2に切り替わったことで全ツイート(の1%)を取得できるStreaming APIもVolume streamsに変更され、公式ドキュメントにも誤りがあるなど対応が大変だったので使用方法の解説です。

# Twitter API v2の登録方法
以下のページで解説されてます。APIの使用目的など英語で書かなければいけないところが少しあるので注意してください。
[【2022年】TwitterAPI v2 の仕様まとめ・セットアップ方法](https://zenn.dev/mamushi/articles/twitter_api_v2_setup)

# 公式Java SDKの使用
TwitterのJava SDKは[Twitter4J](https://github.com/Twitter4J/Twitter4J)が有名で、現在もツイートの投稿などは行えるのですがVolume streamsは使えず、[今後も対応予定はなく](https://github.com/takke/twitter4j-v2/issues/1)、また現在はTwitter自ら公式Java S

元記事を表示

#19 Spring layoutを用いて画面パーツを共通化する

# #19 Spring layoutを用いて画面パーツを共通化する
今回はThymeleafでレイアウトを作成できるライブラリ(layout)を用いて画面のパーツを共通化します。
header, footer, sidebarなど、どの画面でも用いる部分はページ毎に書いていると面倒くさいので別で作り、各画面でそれらと紐付け呼び出します。

# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。
さらに、今回は“Bootstrap“というレイアウトのフレームワークを使用しているため、分からない箇所はBootstrapの公式サイトを参考にしてください。

https://getbootstrap.jp/

参考にしたサイト

https://qiita.com/nakanishi03/items/c80a16b9b9796c25f890

以前自分が書いた“Bootstrap“の機能まとめ

https://qiita.com/Jackoguro/

元記事を表示

#18 Bootstrapの各機能まとめ2

# #18 Bootstrapの各機能まとめ2
Bootstrapを機能毎にまとめて行きます。
今回は第2弾として今回はNavbar, Dropdown, Containersの3つをまとめます。

# 前回まで
前回はBackground、Visually hidden、Form controlsの機能を中心にまとめました。

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

## 1. Navbar
https://getbootstrap.jp/docs/5.0/components/navbar/

### 1. navbar-expand{-sm|md|-lg|-xl|-xxl}
自動でレスポンシブ対応してくれる。“expand“の後ろに“{-sm|md|-lg|-xl|-xxl}“のどれかを指定することでどの画面幅でnavbarを折りたたむかを指定できる。

例)
“`html

元記事を表示

Selenium3とSelenium4どちらでも動くよう作ったJavaクラスをひとつのGradleタスクでテストする方法

## 解決すべき問題

Webブラウザに表示されるHTMLベースのUIを自動化テストするコードをわたしは[Selenium](https://www.selenium.dev/documentation/overview/)をベースにたくさん作ってきました。ずっとSelenium3を使ってきたが、2021年10月にSelenium4が正式リリースされた。WebUI自動化テストを作る仕事を今後も続けるつもりだが、Selenium3と4に共通する基本的な使い方をすることが大半だろう。だから新しく作る自動化テストがSelenium3と4どちらでも動くようにしたいと考えた。いざ着手したらけっこう面倒だった。技術的問題と解決方法をここにメモします。

公式ドキュメントにSelenium3とSelenium4の違いについて説明がある。

https://www.selenium.dev/documentation/webdriver/getting_started/upgrade_to_selenium_4/

APIが非互換的に変更された一つの例として`WebDriverWait`クラスのコンス

元記事を表示

不変(immutable)コレクションを使おう

![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/c8f26a07-ddec-6483-f8be-2b30ac93a08e.png)

エスプリフォートではただ言語を学ぶだけでなく、積極的に新しい事を取り入れ、保守性、可読性なども考慮したプログラミングを心がけています。
これら磨きあげた技術力が、お客様に高いクオリティでシステムを提供する一助になっています。

## はじめに
JAVAでコーディングをする上で、リスト(List)や連想配列(Map)等のコレクションは切り離せないものになっています。
このコレクションの一つに「**不変(immutable)コレクション**」が追加されました。
こちらは、Java8以降からサポートされています。

この「**不変(immutable)コレクション**」の特徴をしっかりおさえて効果的な使い方をすれば、コーディング時の間違いや想定外の使われ方などが入り込む余地を少なくでき、エンジニアとしての技術力が一段高くなることも間違いなし!
ということ

元記事を表示

【gradle + Spring Boot】サンプルAPI作成&Cloud Native Buildpacksでコンテナ起動

## 目的
この記事は
– gradleとspring bootの機能を使ったらほぼコーディングなしでAPIのコンテナ起動までいけそう。やってみたい。
– 勉強用にREST APIの型が欲しい。この世で一番楽ちんにREST APIのサンプル作ってコンテナにのっけてローカルで動かし、開発の流れを復習したい。

という目的で筆者が作成した手順をまとめたものです。「業務でAPI作ってって言われたけど記事をいくつか読んでもわからん! とりあえず動かしたい!」「復習したいけど色々混乱してて手が動かない!」という方向けです。

## 前提条件

– オンライン接続可の環境
– git bash、Windows Terminalなどのコマンドラインツール(筆者はWindows Terminalからgit bashを使用)
– VS code、eclipseなどのIDE(筆者はVS codeを使用)
– gradle 7.1
– Docker Desktop

それぞれ初めて使う際にはダウンロード、gradleはそれに加えてパス設定などが必要です。
「○○ インストール」「○○ 導入」などで検索

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事