- 1. JUnitの使い方 #忘備録
- 2. Javaの基本データ型とラッパークラス: BoxingとUnboxingの仕組み
- 3. スタックを活用した文字列展開アルゴリズム
- 4. Java 品質を高める例外処理とマルチキャッチ構文まとめ
- 5. OptaPlannerのHelloWorld
- 6. システムトレイに常駐するプログラムのサンプルコード
- 7. java初学者の学習メモ
- 8. Java Silver資格試験にむけた学習ページ
- 9. Javaでマウスポインタを動かしたい
- 10. CATALINA_BASE環境変数を利用してTomcatを複数起動する方法
- 11. GraphQL×Java入門 エラーハンドリング
- 12. GraphQL×Java入門 Mutation編
- 13. GraphQL×Java入門 Query編
- 14. GraphQL×Java入門 基礎編
- 15. Java Gold(1Z0-816 Java SE 11)合格体験記
- 16. フレームワークを作りながら、ServiceLoaderとアノテーションプロセッサーを使ってみました
- 17. EchoAPI for IntelliJ IDEA: Java開発者のためのAPI管理を強化するプラグイン
- 18. Javaの演算子を勉強してみました
- 19. すべてのモニターのスクリーンショットを1つのファイルに保存したい
- 20. Javaの開発環境を構築
JUnitの使い方 #忘備録
## JUnitのユーザーガイド
以下のJUnitのユーザーガイドを参考にJUnitの基本的な使い方を
まとめました。https://junit.org/junit5/docs/current/user-guide/
## 基本的な使い方
1、テスト対象クラスを作成する
2、テストメソッドを作成する
3、アノテーションを付けてテストを実行する
4、テスト結果を確認する### 1. テスト対象のクラスを作成
Calculator.javaというクラスを作成しています。
足し算・引き算を行う簡単なメソッドを定義しています。“`java
package hogehoge;
public class Calculator {
// テストメソッド:足し算
public int add(int a, int b) {
return a + b;
}// テストメソッド:引き算
public int subtract(int a, int b) {
return a – b;
}}
“`
### 2. テストクラスを作成
Calcu
Javaの基本データ型とラッパークラス: BoxingとUnboxingの仕組み
Javaには、基本データ型(プリミティブ型)とそれに対応するラッパークラスが存在します。基本データ型は直接メモリに格納されるシンプルなデータ型ですが、Javaのコレクションフレームワークなどのオブジェクト型が必要な場面ではラッパークラスが利用されます。この基本データ型とラッパークラス間の自動変換を、それぞれ Boxing と Unboxing と呼びます。この記事では、BoxingとUnboxingの仕組み、各基本データ型に対応するラッパークラス、そして実際の使用例をご紹介します。
## 1. BoxingとUnboxingとは?
Boxing: 基本データ型から対応するラッパークラスへの自動変換のこと。Javaでは基本データ型(int, double など)をラッパークラス(Integer, Double など)に自動的に変換できます。
Unboxing: ラッパークラスから基本データ型への自動変換のこと。
Boxingの逆で、Integer から int などの変換が自動で行われます。
Java 5 以降では、BoxingとUnboxingは自動的に行われるため、コードがシンプ
スタックを活用した文字列展開アルゴリズム
## 問題概要
与えられた文字列には、括弧で囲まれたパターンと繰り返し回数が含まれています。この文字列を解釈し、括弧内のパターンを繰り返して最終的な文字列を返すことが目標です。括弧は入れ子になっている場合があり、それぞれのパターンは括弧の外にある数字に基づいて複数回繰り返されます。### 例
– 入力: `”3(a2(b))ef”`
出力: `”abbabbabbef”`
– 入力: `”2(2(ab)3(2(ac)))”`
出力: `”abacabacabacabacabacabacabacabac”`—
## 使用するデータ構造
### 1. **スタック (Stack)**
– **スタック**はLIFO(Last In, First Out)構造で、最後に追加された要素が最初に取り出されます。
– この問題では、括弧を効果的に処理するためにスタックを使用します。入れ子になった括弧に遭遇したとき、スタックを利用してその括弧内のパターンを抽出し、繰り返し処理を行います。## 問題解決のアプローチ
### 1. **文字列の走査と文字の処理**
–
Java 品質を高める例外処理とマルチキャッチ構文まとめ
`IOException`: 入出力操作でエラーが発生した場合にスロー
`FileNotFoundException`: 指定されたファイルが見つからないときにスロー
`SQLException`: データベース操作中にエラーが発生した場合にスロー
`NumberFormatException`: 無効な数値文字列を数値型に変換しようとしたときにスロー
`ArithmeticException`: 算術演算で不正な操作(例: 0 での除算)をしたときにスロー
`ClassCastException`: オブジェクトを互換性のない型にキャストしたときにスロー
`NullPointerException`: null 参照に対してメソッドを呼び出したときにスロー
`ReflectiveOperationException`: リフレクション操作でエラーが発生したときにスロー## テンプレート 1: ファイル読み込みとマルチキャッチ
“`java
import java.io.BufferedReader;
import java.io.FileReader;
import j
OptaPlannerのHelloWorld
## はじめに
OptaPlannerを久しぶりに手を付けてみようと思う。しかしながら、HelloWorldを動かすのに手こずったのでメモを。
– OptaPlannerのチュートリアル
– https://www.optaplanner.org/docs/optaplanner/latest/quickstart/hello-world/hello-world-quickstart.html#helloWorldJavaQuickStart
## 環境
– OptaPlanner 9.44.0.Final
– OpenJDK 21.0.5
– gradle 8.10.2## うまくいかない
チュートリアルの言うとおりにやってみたが、以下の表示になり何も表示されない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90251/4da1da90-5081-4fa0-8da4-7f2d81c12347.png)しばらく眺めていろいろ試したがなにも変わらず。
メ
システムトレイに常駐するプログラムのサンプルコード
Javaでシステムトレイに常駐するプログラムを作成する機会があったので、サンプルコードを紹介します。
# サンプルコードの概要
– システムトレイに常駐するプログラムを作成する
– アイコンには指定のpngファイルを利用する
– https://www.irasutoya.com/2017/06/blog-post_572.html
– アイコンを右クリックするとポップアップメニューが表示される
– Helloメニューを押下すると、通知を表示する
– Exitメニューを押下すると、プログラムが終了し、システムトレイからアイコンが削除される# サンプルコード
“`Main.java
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.i
java初学者の学習メモ
# 概要
今回はjavaで基礎学習用のコードを書いてみました。
これから少しずつjavaの学習記録を残してまいります。
学習のメモ程度に記述していますのでご承知ください。## 実行環境
・windows:Windows11Pro 23H2
・java:22.0.1
・統合開発環境:Eclipse## クラス
“`Java:Sample.java
package helloworld;public class Sample {
public static void main(String[] args) {
Car.getinitnum();
Car car1 = new Car();
car1.setNum();
int get_num= car1.getNum();
System.out.println(“get_num >>>” + get_num);
}}
“`
“`java:Car.java
package helloworld;public class Car {
//クラス変数
public static int
Java Silver資格試験にむけた学習ページ
## 今回の目的
java silver資格試験に向けて勉強中のエンジニアがjava学習のために書いている記事です。
用語やjavaルールを忘れないために学習の一環として書いています。
どうぞお手柔らかに。## プログラム実行までの流れ
①java言語仕様にそってプログラムを作成して、拡張子.javaファイルを作成
②コンパイラが起動して、作成したプログラムがコンパイルされる。コンパイルされると拡張子.classファイルが作成される。
③javaコマンドによって、プログラムがJVM上で実行される## リテラリ
ソースプログラムの中で直接書き込まれたもの。
表現できるデータには、数値、文字列、null、真偽値がある## データの型
基本データ型は以下の8種類ある| 種類 | データの型 | サイズ | 表現できる値 |
|:-:|:-:|:-:|:-:|
| 整数 | byte | 8ビット | -128~127 |
| | short | 16ビット | -32768~32767 |
| | int | 32ビット | -2147483628
Javaでマウスポインタを動かしたい
以下のステップでマウスポインタを動かすことができます。
1. `MouseInfo.getPointerInfo`で現在のマウスポインタの位置を取得する
2. `Robot.mouseMove`を利用してマウスポインタを動かします例: x軸方向に1ピクセル、y軸方向に1ピクセル、マウスポインタを1分おきに動かす
“`java
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.util.concurrent.TimeUnit;public class MoveMouse {
public static void main(String[] args) throws AWTException, InterruptedException {
Robot robot = new Robot();
while (true) {
Point p
CATALINA_BASE環境変数を利用してTomcatを複数起動する方法
## 1. はじめに
JavaのWebアプリ開発でServletエンジンとして Apache Tomcat が使われることが多いのではないでしょうか。一般的な書籍や研修等で簡単な使い方は教わりますが、同一ホスト上で複数のTomcatインスタンスを起動させる方法はあまり知られておらず、若手メンバがよく質問されるので今回はその方法について説明したいと思います。なおTomcatはサービスではなく、利用時にコマンドで起動させるZip版を対象とします。
## 2. 環境変数を定義する
Java開発では`JAVA_HOME`、`MAVEN_HOME`等、`XXX_HOME`というディレクトリを指定する環境変数がよく使われます。Tomcatの場合も同様でTomcatのインストールディレクトリは`CATALINA_HOME`となります。
複数Tomcatを起動させるポイントは`CATALINA_HOME`に加えて`CATALINA_BASE`という別のTomcatインスタンス用の環境変数を定義することです。| 変数 | 値 | 説明 |
|:—:|:–:|:—-|
| JAVA_H
GraphQL×Java入門 エラーハンドリング
## はじめに
前回はMutation編ということでMutationの実装例を紹介させてもらいました。
今回は、エラーハンドリングの実装例を紹介します。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)## 環境
・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1## ソースコード
[GraphQL Sample](https://github.com/kehuka11/graphql_sample)
## エラー時のステータスコード
https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#applicationjson
GraphQLはエラー時でも200コード返す仕様みたい。
ここに書いてあるように、ステータスコードは200固定が推奨なの
GraphQL×Java入門 Mutation編
## はじめに
前回は、JavaでのQueryの実装例を紹介したので、今回はMutationを紹介します。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)## 環境
・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1## ソースコード
[GraphQL Sample](https://github.com/kehuka11/graphql_sample)
## 実装
### 1データ登録
**スキーマ**
~~~sql
type Mutation {
registerBook(title: String!, author: AuthorInput!): Book!
}type Book {
id: ID!
title: String!
author: Author
}input AuthorInput
GraphQL×Java入門 Query編
## はじめに
前回は基礎編ということでざっと用語紹介させてもらいました。
今回から、実際の実装例を紹介しますー。
ただ、JavaでGraphQLの実装してもらうときのポイントとなるところを紹介するのがメインなので、ソースコードを作り込んでいるわけではないので、実務でそのまま使用するのは避けてくださいmm
(時短で結構適当にロジックや例外処理書いてあります)## 環境
・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1## ソースコード
[GraphQL Sample](https://github.com/kehuka11/graphql_sample)
## とりあえず、データ取得してみる
### スキーマ
~~~sql
type Query {
searchBookById(id: ID!): Book
}type Book {
id: ID!
title: String!
author: Author
}type Author {
id: ID!
firstName: St
GraphQL×Java入門 基礎編
## はじめに
以下のような方達を対象に記事書いてます。
・GraphQLを初めて触る方
・とりあえずGraphQLで作成されたAPIを動かして動作させてみたい方
## 環境
仕事でGraphQLを検討することになったので、サンプルを作成しつつ、気になったところを検証してみようと思います。
・SpringBoot:3.3.2
・Java:17
・GraphQL:22.1## ソースコード
[GraphQL Sample](https://github.com/kehuka11/graphql_sample)
GraphQLの検証のためのサンプルなので、動作するためだけに書いてあるところが多いので、悪しからず
## GraphQLとは
めっちゃざっくりいうと、
APIを開発するためのクエリ言語であり、REST APIより、データ取得効率を上げたり、柔軟性が上がることでクライアント側とコミュニケーションコストも減るなどを特徴に持ったFacebookによって開発されたクエリ言語とサーバーサイドのランタイム。
スキーマという構造を定義してQueryでデータを取得できた
Java Gold(1Z0-816 Java SE 11)合格体験記
# はじめに
Java Goldを取得したため、その備忘録を残しておきます。私のスペックは以下です。
– 2023年4月入社(当時新卒2年目)
– 情報系大学院卒業
– 業務でJavaを使用中
– Java Silver合格済み(Java Goldの受験資格になっています)業務でJavaを使っているため、Javaの知識の定着を兼ねて試験を受けてみるかという気持ちでした。Java Silverは2024年8月に取得しており、折角なのでJava Goldも受けてみようと思い立ちました。
# 勉強方法
定番の黒本を周回しました。
以下のような流れで勉強しました。
1. 1章分問題を解く
1. 正解・不正解に関わらず、問題の解説を読む
1. 解説を読んでイメージ付かない場合は、サンプルコードを写経して動かし理解を深める
1.
フレームワークを作りながら、ServiceLoaderとアノテーションプロセッサーを使ってみました
## はじめに
現在、ドメインごとに依存関係を分離し、命名規則を強力に検査するDIフレームワークを作成しています。このフレームワークを開発する中で、`ServiceLoader` と `Annotation Processor` を使用してみました。そこで、これらが何であるか、そしてどのように使用したかについて書いてみようと思います。– 韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
– 翻訳ツールの助けを借りて書いた文章なので、誤りがあるかもしれません## 状況
現在、私は命名規則を厳格に管理しています。クラス名がルートドメインではなく、サブドメインに属する場合、必ず守るべき命名規則を定義しました。
基本的には以下のような命名規則が適用されます。
“`java
“Service”, “Repository”, “Controller”, “Handler”, “Manager”
“`これにより、次のように記述できます。
“`java
import org.haroya.annotation.Container;
EchoAPI for IntelliJ IDEA: Java開発者のためのAPI管理を強化するプラグイン
# EchoAPI for IntelliJ IDEA: Java開発者のためのAPI管理を強化するプラグイン
現代のソフトウェア開発において、API管理はますます重要性を増しています。Java開発者にとって、強力なAPI管理プラグインは開発効率を大幅に向上させ、Postmanのような重いデスクトップツールをダウンロードすることなく、ワークフローを簡素化できます。ここでは、Java開発者向けに特別に設計されたツール—EchoAPI for IntelliJ IDEAをご紹介します。
## EchoAPI for IntelliJ IDEAの紹介
[EchoAPI](https://www.echoapi.com)は、API設計、デバッグ、そして自動テストをサポートする多機能なAPI管理ツールです。特にIntelliJ IDEA用に設計されたプラグインとして、開発者の環境にシームレスに統合され、Java開発者の生産性を飛躍的に向上させます。
![EchoAPI for IntelliJ IDEA.png](https://assets.echoapi.com/upload/use
Javaの演算子を勉強してみました
## はじめに
現在、私が進行しているJavaの勉強会でまとめた内容です。内容に不正確な点があれば、ご指摘いただけるとありがたいです。
https://github.com/whiteship/live-study/issues/3
– 韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
– 翻訳ツールの助けを借りて書いた文章なので、誤りがあるかもしれません# 演算子
– 算術演算子
– ビット演算子
– 関係演算子
– 論理演算子
– instanceof
– 代入(=)演算子
– アロー(->)演算子
– 三項演算子
– 演算子の優先順位
– Java 13. switch演算子## Javaで提供される演算子
演算子と被演算子とは?
– 演算子: 演算に使用される記号(+, – など)
– 被演算子: 演算に使用される対象(1, 2, a など)**ほとんどの演算**はプリミティブ型でのみ使用可能です。
– Stringクラスは除く
“`java
String str1 = “Hello, “;
String s
すべてのモニターのスクリーンショットを1つのファイルに保存したい
マルチモニター環境で、すべてのモニターのスクリーンショットを取得し、1つのファイルscreenshot.pngに保存するサンプルです。
“`java
public void screenShot() throws AWTException, IOException {
Rectangle rectangle = new Rectangle();
for (GraphicsDevice graphicsDevice : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {
for (GraphicsConfiguration graphicsConfiguration : graphicsDevice.getConfigurations()) {
rectangle = rectangle.union(graphicsConfiguration.getBounds());
}
}Robot rob
Javaの開発環境を構築
Javaの学習を始めたのでアウトプット目的で書き記していきます。
使用するフレームワークはSpring Boot、
開発環境はIntekkiJ Ideaを使用します。## Spring Bootについての説明から。
一言でいうならば、**設定が難しいSpringをもっと手軽に使えるようにしたもの**です。Springとは、 Webアプリケーションを作るためのフレームワークで広く使われています。
しかし、細かい設定が必要だったり、ウェブサーバーの準備をしたりなど自由度が高い反面、初心者には難しいです。対して、Spring Bootは雛形があり、初期設定を自動生成してくれたり、データベースやウェサーバーの設定が揃っていたりと初心者でも簡単に開発を始めることができます。
以上にをまとめると、
Spring Bootは初心者や小規模プロジェクト向け
Springha高度なカスタマイズが必要な大規模プロジェクト向けSpring BootはSpringの利点を継承しつつ、初心者でも簡単に開発を始められるが、自由度はSpringには劣る。
ということになります。
## In