- 1. 【Java Silver11】合格体験記
- 2. JavaでWebアプリのE2Eテストを自動化する〜その1 Selenideを使ったブラウザ操作
- 3. JSON-B使い方メモ
- 4. Tomcatで永遠に404が出て困った(解決せず)
- 5. Javaの変数とは(初学者向け)
- 6. messages.propertiesから日本語メッセージが取得されない
- 7. 【脱ぬるぽ】代数的データ型のすすめ
- 8. 【完全版】3ヶ月でAndroidエンジニアを目指すためのロードマップ
- 9. SpringBootでシンプルなCRUDアプリを作ったときの備忘録
- 10. Java の同期制御(Semaphore、CountDownLatch)
- 11. Spring FrameWorkのJava Config
- 12. \\だとバグるが、\\\\だとバグらないプログラム(正規表現)
- 13. SpringBoot で TiDB Cloud Serverless に接続する
- 14. Clean Code – Chapter 5: フォーマットを整える (Formatting)
- 15. ユニットテストの価値を高めるリファクタリング
- 16. ChronoUnitをimportで読み込めない時の対処法【IntelliJ・SDK】
- 17. スッキリわかるJava入門
- 18. JPA Thymeleaf でstatus=500エラーが出た時にエラー解消した備忘録
- 19. javaでログをマージする
- 20. PowerMockito を Eclipse に設定するための手順
【Java Silver11】合格体験記
# ⓪はじめに
先日、Java Silver11に合格しました!今回は、①申込方法、②試験当日の流れ、③意識したことを残します。
※全て2024年9月現在の情報になりますので、ご了承ください。# ①申し込み方法
初めての受験でしたので、以下のサイトを参考に、
– Oracle社のサイト
– CertViewのサイト
– PearsonVUEのサイトに登録しました。
なぜ3つも登録が必要なの?!と思いますが、それぞれ、
– Oracle社の資格を受けるため
– 保有資格や受験予定の資格を管理・確認するため
– どの資格をどの会場で受験するかを選択するためという理由だと思います。
# ②試験当日の流れ
会場によって異なる部分もあると思いますので参考程度になさっ
JavaでWebアプリのE2Eテストを自動化する〜その1 Selenideを使ったブラウザ操作
## 記事の対象読者
– 最低限Javaの知識がある
– WebアプリケーションのE2Eテスト自動化に興味がある人## 動機
前職で関わっていた案件で本格的なTDD(テスト駆動開発)を経験し、その時にテストを自動化することのメリットやTDDのノウハウを学んだ。
現在関わっている案件は進め方がウォーターフォール的で、工程ごとにスケジュールが区切られている。
製造工程終了後にテスト期間がスケジュールされているため、テスト自動化が必須ではなかったが、ウォーターフォール型の開発スタイルでもTDDを実践するメリットはありそうだと感じたので、私が担当する機能においては部分的にTDDを取り入れて進めることにした。私が以前関わっていたTDDの案件では、WebのテストをSelenideというJavaのフレームワークで実現していた。
今回の開発案件も言語がJavaだったので、環境構築が楽にできそうという理由からSelenideを使用することにした。
自分1人で何もない状態からE2Eテストの実行基盤を作ったのは初めてだったが、思ったよりも簡単にテスト自動化の環境を構築できたので、環境構築や基礎
JSON-B使い方メモ
# JSON-B とは
– Java EE 8 で追加された仕様で、 JSON と Java オブジェクトの相互変換を行う API を定義している
– Jakarta EE での正式名称は Jakarta JSON Binding
– JAXB の JSON 版みたいなの
– B は Binding の B
– 読み方は、たぶん「じぇいそんびー」# 環境
“`
>gradle –version————————————————————
Gradle 8.8
————————————————————Build time: 2024-05-31 21:46:56 UTC
Revision: 4bd1b3d3fc3f31db5a26eecb416a165b8cc36082Kotlin: 1.9.22
Groovy: 3.0.21
Ant: Apache Ant(T
Tomcatで永遠に404が出て困った(解決せず)
新米も新米のJava練習生です。
結果が単純なものなので、読むほどのものでもないかと思いますのでご容赦ください。
解決せずプロジェクトを最初から作り直しています。それまでのいきさつとなります。EclipsからTomcatを使用してウェルカムファイルを作成しようとしていました。
ところがコピペしたはずのweb.xmlファイルと、index.htmlファイルを設定しても
ウェルカムファイルを開けず。。。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3892844/430de436-6a89-bc1c-60cc-8988faa9fe90.png)
web.xmlファイルのコードはこの通りです。(htmlファイルは割愛します。)
“`java:web.xml
Javaの変数とは(初学者向け) # 変数とは
プログラミングをしたことのない人にとってまず変数とはなんなんだってところから説明しないとわからないと思うので、まずは変数の説明から。
変数とは、数値を保存するメモリーの場所のことです。
コンピューター言語を用いて、プログラミングをするにあたって、コンピューターは数値しか扱えないということを理解しておかないといけません。ただ、かってに数値がおけるわけではありません。OSなどのコンピュータを動かすメモリの場所に自分が勝手に数値をおいてしまうとOSの挙動に問題を起こしてしまいます。(C言語で作られているWindowsやMacでポインターの場所をちょっとずついじると実はOS領域の内容を見ることも書き換えることも実際にはできますが。)# 変数の種類
変数の種類はじつはいろいろとある。メモリーの確保する長さとかで変わるが、基本的にはintを使用することが多い。
以下の表に変数とその変数で扱える数値の幅を記載する。|データ型の種類|名称|消費メモリ|範囲|
|—|—|—|—|
|byte|バイト型|1バイト|-128~127|
|short|短整数型|2バイト|
messages.propertiesから日本語メッセージが取得されない
「Spring 解体新書 第2版」という書籍で学習しています。
6章を実施中に以下エラーが発生しました。“`java
There was an unexpected error (type=Internal Server Error, status=500).
No message found under code ‘male’ for locale ‘ja_JP’.
org.springframework.context.NoSuchMessageException: No message found under code ‘male’ for locale ‘ja_JP’.
at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.java:76)
at com.example.demo.application.service.UserApplicationService.getGendermap(UserApplicationServ
【脱ぬるぽ】代数的データ型のすすめ
# はじめに
最近学んだ代数的データ型が有用だったのでまとめます!
参考にした記事は以下の通りです
> [Java21とKotlinの代数的データ型 & パターンマッチの紹介と本当に嬉しい使い方](https://speakerdeck.com/yuitosato/algebraic-data-type-in-java-and-kotlin-happy-use-of-pattern-match)# 代数的データ型とは
代数的データ型とは、複数の型を組み合わせることで表現されるデータ型のことで、主に直積集合と直和集合によって表されます。## 直積集合
直積集合は代数学における**AND**(かつ)と同義の集合です。いわば集合Aと集合Bの掛け算です。
“`math
A\times B = \lbrace (a,b) | a \in A, b\in B\rbrace
“`
要するに構造体のことです。
よく使われる具体的な例として「名前」と「年齢」のデータ型があります。
“`Java:cap.java
class Person{
String name; //名
【完全版】3ヶ月でAndroidエンジニアを目指すためのロードマップ
# はじめに
ご覧いただきありがとうございます。[Gon](https://x.com/engineer_gon)です!
Androidアプリ開発の世界へようこそ!今回は、友人がAndroidエンジニアを目指すと聞いて実践的なロードマップを作ってみることにしました。
僕自身、Javaのレガシーなシステム開発からキャリアをスタートしましたが、働き方の自由度や仕事の楽しさを求めて、独学でKotlinを学び、Androidアプリ開発へとスキルチェンジしました。
フリーランスのAndroidエンジニアとしては3年以上働いていますが、基本的にフルリモートで働けるためすごく自由度が高いですし、単価も上がりやすく、何より楽しんで仕事できてます。
「**どこから始めればいいのか分からない**」という方も多いと思うので、今回のロードマップが皆さんの参考になれば嬉しいです。
# ロードマップ
![](https://storage.googleapis.com/zenn-user-upload/034d54a65890-20240908.png)
## 2024年にAndroid開発者に
SpringBootでシンプルなCRUDアプリを作ったときの備忘録
# はじめに
SpringBootによるシンプルなCRUDアプリケーション作成を学んだ際に、特に記憶しておきたいと思ったことを備忘録として残します。# アプリの概要
– シンプルなユーザ管理アプリ
– ユーザ登録、一覧、検索、更新、削除、管理者専用ページ遷移、認証、認可機能を持つ# 開発環境
– Eclipse(Pleiades) Version: 2023-12 (4.30.0)
– Java SE 21
– MacBook air# 依存ライブラリ
“`xml:pom.xmlの内容抜粋
org.springframework.boot
spring-boot-starter-data-jdbc
org.springframework.boot
spring-boot-starter-jdbc
Java の同期制御(Semaphore、CountDownLatch)
CountDownLatch と Semaphore はどちらも Java の同期制御 を行うためのツールですが、用途や動作は異なります。ここでは、それぞれの違いと使い方について説明します。
## 1. Semaphore とは
Semaphore は、指定した数の「許可(permits)」を管理し、スレッドが許可の数を超えて同時にリソースにアクセスできないようにするために使います。例えば、Semaphore(3) であれば、同時に3つのスレッドまでしかリソースにアクセスできません。ある意味で「スレッドの同時アクセス制限」に適したクラスです。特徴
許可を取得する (acquire) と、許可の数が減少します。
許可を解放する (release) と、許可の数が増加します。
同時にアクセスできるスレッド数を制御するために使われます。
使用例
“`java
import java.util.concurrent.Semaphore;public class SemaphoreExample {
private static final Semaphore semapho
Spring FrameWorkのJava Config
DIコンテナに、Java Configクラスを使用してコンポーネントを登録する方法を書いてみました!
## Java Configクラス
DIコンテナに対してコンポーネントを登録するための、設定クラス。ここで設定したコンポーネントが、DIコンテナに登録される。“`java
@Configuration
public class AppConfig {@Bean
UserRepository userRepository() {
return new UserRepositoryImpl();
}
}
“`
## ルックアップ
ルックアップとはDIコンテナからBeanを取得すること。**取得方法**
1つ目はBeanの型(UserRepository)を指定する方法。指定した型を持つBeanが1つだけ存在する場合に使用する。今回は、Java Configクラスで設定したUserRepository型は1つだけなので、これで取得できる。“`java
UserRepository userRepository = context.getBean(U
\\だとバグるが、\\\\だとバグらないプログラム(正規表現)
# 話のはじまり
こんにちは、来年度までに就職をしたい甘いレモン市場と言います。
皆さんはよき正規表現ライフを送っているでしょうか?正規表現を使いこなしたいですよね。
正規表現で文字列パターンを指定する際に、「\」(バックスラッシュ記号もしくは半角¥記号。区別のため、この1文字を「」付きで記述します)という文字列が含まれているか調べたくなることがあると思います。
たとえば[『スッキリわかるJava入門 第4版』](https://sukkiri.jp/books/sukkiri_java4) の次の練習問題のシチュエーションを考えてみましょう。
> 練習15-2
> フォルダ名が入っている変数folderと、ファイル名が入っている変数fileがあります。fileは必ず「readme.txt」のような形式をしていますが、folderは末尾に\記号が付いている場合と付いていない場合の両方がありえます。たとえば、「c:\javadev」や「c:\user\」のどちらもfolderの値としては正しい形式です。
> folderとfileを連結して、「c:\javadev\readme.txt」
SpringBoot で TiDB Cloud Serverless に接続する
## TL;DR
ローカルの SpringBoot アプリケーションで TiDB を使ってみた。
## はじめに
TiDB は、MySQL 互換の NewSQL データベースで、昨今いろんな企業が導入しているらしい。
– https://pingcap.co.jp/case-study/
– https://www.publickey1.jp/blog/24/newsqltidbpr.html
– https://speakerdeck.com/leveragestech/tidb-user-day-tidbhayin-nodan-wan-ninarunoka-rehatetukunoke-ti-toxin-tanatiao-zhan-tidb-user-day-2024私が TiDB を知ったのは ServerlessDays Tokyo 2023 のセッションなので 1 年前になるが、今回重い腰を上げて使ってみた。
ユニットテストの価値を高めるリファクタリング
## 対象読者
* テストコードを書いた経験のある方
* テスト対象コードが複雑で、テストに苦労した経験のある方## 本記事のゴール
* リファクタリングするべきコードの種類を把握する
* テストする価値が高いコードを把握する
* どのようにしてリファクタリングするべきかを把握する## リファクタリングが必要なコードを識別する
テストコードを楽に書くためには、テスト対象コードのリファクタリングが必要不可欠です。
本記事では、リファクタリングが必要なコードの識別方法と、そのリファクタリング方法について解説します。:::note info
本記事では、テスト対象コードとテストコードを区別するために、
テスト対象コード = 「プロダクションコード」と表現します。
また、本記事で言う「テスト」はテストコードを用いたユニットテストを想定しています
:::## 4種類のプロダクションコード
ほとんどの場合、プロダクションコードは以下2つの視点で分類します。
* **コードの複雑さ、ドメインにおける重要性**
* **協力者オブジェクトの数****コードの複雑さ** とは、プロ
ChronoUnitをimportで読み込めない時の対処法【IntelliJ・SDK】
今回はJavaのSDKバージョンとIntelliJの関係で少しハマったので記事にしたい。
“`
使用環境
IntelliJ使用 ver 2022/2/3 ver
SDK 21を選択時
“`OSS参画時に、レビューを依頼されて中身を確認していたら、
ChronoUnitが読み込まない事象が発生。![スクリーンショット 2024-09-20 215505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233529/22c3cb9f-d033-baec-4f9f-e55183d07435.png)
![スクリーンショット 2024-09-20 215514.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233529/af809dec-17c1-259c-5fa5-8670566be491.png)`import java.time.temporal.ChronoUnit;`
が読み込まずに、下記`im
スッキリわかるJava入門
# はじめに
他言語の開発経験を数年経て次にJavaについて習うレベルの人向け(筆者がそうであるため)
かなり端折ったりはするけれどなるべく大切な部分は要約してまとめる# 第一部 ようこそJavaの世界へ
Javaは以下の点がある
– プログラミングの学びやすく標準的な基本文法
– 大規模開発を支援するオブジェクト指向に対応
– 豊富に準備された便利な命令群
– 多様なコンピュータで同じように動作する汎用性“`java:文章の表示
System.out.println(“Hello world”);
“`“`java:計算
System.out.println(31 + 31);
“`“`java:変数
int x;
x = 6;
“`## 第1章 プログラムの書き方
ソースコードの波括弧{…}で囲まれた部分をブロック(block)と呼ぶ
外側のブロックは、クラスブロック(class block)
内側のブロックは、メソッドブロック(method block)
2つのブロックの二重構造を持っているコンピュータに対する指示・命令はメソッドブロック
JPA Thymeleaf でstatus=500エラーが出た時にエラー解消した備忘録
**書籍**
Spring解体新書第2版
6章実施中**環境**
・Windows10
・STS
・Spring boot
・Tymeleafテンプレートエンジン発生したエラー
“`
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: “class path resource [templates/user/signup.html]”)
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: “class path resource [templates/user/signup.html]”)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.par
javaでログをマージする
コード
“`Java
public class Main {public static final String BACKUPDIR = “C:\\hoge\\backup”;
public static final String MERGEDDIR = “C:\\hoge\\merged”;
public static ListbkDirs;
public static ListbkFileNames; public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ}
public void filenameListOut() {
// backupフォルダのパスを取得
Path backupDir = Paths.get(BACKUPDIR);//
bkFileNames = new ArrayList();
// backupフォルダ配下のフォルダ名を
PowerMockito を Eclipse に設定するための手順
## 手順 1: Eclipse のセットアップ
Eclipse IDE をインストール
Java 17 に対応している Eclipse IDE をインストールします。Java SDK の設定
Window > Preferences > Java > Installed JREs から、対象のJavaの SDK を Eclipse に追加して選択します。## 手順 2: プロジェクトの作成
Java プロジェクトを作成
File > New > Java Project を選択し、新しいプロジェクトを作成します。JUnit と Mockito の依存関係を追加
PowerMockito は JUnit および Mockito を前提としています。JUnit5 または JUnit4 を使用できますが、互換性の観点から、JUnit4 の方がより多くの機能がサポートされているため推奨されます。## 手順 3: Maven もしくは手動でライブラリの追加
1. Maven を使用する場合:
pom.xml に以下の依存関係を追加します。
“`xml