- 1. requiredで複数チェックボックスを、1つ以上のチェックを必須にする 備忘録#4
- 2. Gradleってなんだ?JavaやKotlinのビルドってどうやっているの?
- 3. Javaで「2つの配列の要素の値を比較する(equals,deepEquals)」の動作を確認してみた
- 4. よく使う関数型インターフェース(入門レベル)
- 5. SpringBootを使って、タダ(無償)でHTMLファイルをPDFにする
- 6. homebrewでjavaをインストールしたがUnable to locate a Java Runtimeエラーになった時の解消法
- 7. Javaの try-with-resources文の紹介
- 8. SevletとJSPで開発していた時に突然特定のページ全体が???になり文字化けする
- 9. Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみた
- 10. VSCodeのExtension作ってみた
- 11. ラムダ式について
- 12. Javaで学ぶ入出力入門
- 13. 2つのオブジェクトのフィールド値を全て比較する
- 14. Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみた
- 15. 【Java】ArrayListのメソッドを覚える
- 16. Javaの基礎的な備忘録1
- 17. Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみた
- 18. 【Java】ABC081B_ Shift Only #AtCoder
- 19. IBM MQ メッセージング・プロバイダー・アクティベーション・スペックとMQとの接続が切れた場合の再接続の動作
- 20. Spring BootでMyBatisログを出力する
requiredで複数チェックボックスを、1つ以上のチェックを必須にする 備忘録#4
### シンプルな使い方
“` diff_html
HTML
商品 値段 + + “`
このように、inputタグないに`required`とすることによって、
テキストエリアに入力されず、登録ボタンを押された場合、以下のような表示になります。![スクリーンショット 2024-06-22 14.33.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/13dfde3e-1cf5-e1f9-17f2-0f
Gradleってなんだ?JavaやKotlinのビルドってどうやっているの?
# Gradleとは?
Gradleは、主にJava,Kotlin,ScalaのようなJVMベースの言語で開発されたソフトウェアプロジェクトの**ビルド自動化ツール**.実はPythonやC++にも対応している.:::note info
**ビルドツールとは**
ビルドツールとは、以下のようなプログラムのビルドや実行を自動化するツールのこと.
– 必要なライブラリのインストール
– コンパイル
– オートテスト
– パッケージ(Jarファイル)の作成
– 実行
:::# なんで作られたのか
Antや Maven などの従来のビルドツールの欠点を克服するために開発された.### Antの欠点
– **XMLベースの設定**
Antは、XMLを使用してビルドスクリプトを記述する.XMLは冗長で読みにくく,大規模なプロジェクトではスクリプトが複雑になりがち…また,スクリプトのロジックを表現するために,XMLにカスタムタスクを埋め込む必要がある.– **依存関係管理の欠如**
Antには、依存関係管理のための組み込みの仕組みがない.外部ライブラリの依存関
Javaで「2つの配列の要素の値を比較する(equals,deepEquals)」の動作を確認してみた
# 概要
Javaで「2つの配列の要素の値を比較する(equals,deepEquals)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index11.html
# 実装
以下のファイルを作成しました。
“`JSample11_1.java
import java.util.Arrays;class JSample11_1{
public static void main(String[] args){
int[] a = {85, 78, 92};
int[] b = a;
int[] c = {85, 78, 92};System.out.println(a == b);
System.out.println(a == c);
System.out.println(b == c);
System.out.println(Arrays.equals(a, b));
System.out.println(Arra
よく使う関数型インターフェース(入門レベル)
# 導入
Java SE 8から、関数型インターフェースが導入され、Javaでの関数型プログラミングがより簡単になりました。関数型インターフェースは、1つの抽象メソッドを持つインターフェースです。
**「1つの抽象メソッドを持つインターフェース」** というワードですぐに`ラムダ式`が思いついた人はさすがです。
この関数型インターフェースは、ラムダ式を利用したものになります。本記事では、特によく使われる関数型インターフェースについて説明し、その利用方法を紹介します。
# 使用頻度の高い関数型インターフェース
## Function\
`Function
`は、引数を1つ取り、結果を返す関数です。
`T`は引数の型、`R`は戻り値の型です。
抽象メソッドは`R apply(T)`になります。### 使用例
“`java
FunctionageFunction = (age) -> { return age + “歳”; };
String ageString = ageFunction.apply(30);
SpringBootを使って、タダ(無償)でHTMLファイルをPDFにする
# はじめに
SpringBootを使った、管理サイトを構築予定です。
その中の要件としてPDFを出力したいというものがあったので調べてみました。
もちろん有償のライブラリを使えばできるのは知ってましたが、Google Maps Platformを
使ったりランニングコストがかさむので、無償にこだわって調査から開始# やってみる
## 環境
Spring Boot 3.3.0PDFの作成には、以下を利用しています。
https://github.com/danfickle/openhtmltopdf
## 日本語フォントファイルを格納
無料で使えるフォントファイルを取得します。ダウンロードしたファイルを解凍して、以下の通り格納
src/main/resources/fonts/NotoSansJP-Regular.ttf## Gradleの設定
PDF変換のために、以下の2行を追加してください。“`gradle
implementation ‘com
homebrewでjavaをインストールしたがUnable to locate a Java Runtimeエラーになった時の解消法
## 背景
“`
$ brew install java
“`でmac book proにインストールをしたのに
“`
$ java –version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
“`になった
## PCスペック
| 項目 | 情報 |
| — | — |
| OS | macOS Sonoma 14.4.1 |
| ハードウェア | MacBook Pro 16inc 2023 |
| プロセッサ | Apple M2 pro |
| メモリ | 32GB |## 解消法
シンボリックリンクを張るといいらしい。
### 以下のようにして対応
javaのインストール
“`
$ brew install java
“`シンボリックリンクを張る
“`
$ sudo ln -sfn $
Javaの try-with-resources文の紹介
# 導入
今回はJava7以降で使用可能な`try-with-resources`文について紹介していきます。
これは以前のこちらの記事で触れた「入出力ストリーム」における課題を解決するのに向いているので、ぜひ参考にしてください。https://qiita.com/F-monsoon/items/cac08dc5475c8f4ee69e
# try-with-resources文の紹介
プログラムでファイルやネットワーク接続、データベースなどを利用する際、リソースの管理は非常に重要です。特に、リソースを使い終わった後の「クローズ処理」を忘れると、メモリリークや他の問題の原因になります。
従来の方法では、`finally`句で手動でリソースを閉じる必要がありましたが、Java 7から導入された`try-with-resources`文を使えば、リソースの自動解放が可能になります。これにより、コードが簡潔になり、クローズ処理の記述漏れを防ぐことができます。
## 1. 従来のtry-finallyによるリソース管理
従来のリソース管理では、次のように`try-finally`
SevletとJSPで開発していた時に突然特定のページ全体が???になり文字化けする
## Eclipseを使うのはもう新卒だけかもしれないけど
Eclipse、Sevlet、jsp、Tomcatという古代のツールを使って開発していると様々なわけわからないエラーに遭遇します。
### 特定のページだけが文字化けする問題
ServletからJSPにフォワードする仕組みですが突然JSP全体が文字化けというかすべて「???」になりました。これはWindows XP時代に海外のPCを使って日本語を表示させたときに似ていました。
文字化けというか日本語全部が「???」と表示されていました。
ウェブには
**「文字エンコーディングが`UTF-8`になっていること」**
を確認しろとありましたが、その面は全く問題ありません。
### 原因はServletのミス
詳しいことは私の性格上忘れましたがSevletにミスがあったようです
Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみた
# 概要
Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index17.html
# 実装
以下のファイルを作成しました。
“`JSample17_1.java
import java.util.Arrays;class JSample17_1{
public static void main(String[] args){
int[] src1 = {28, 14, 35, 19};
int[] src2 = {17, 40, 23};
int[] dst = new int[src1.length + src2.length];System.arraycopy(src1, 0, dst, 0, src1.length);
System.arraycopy(src2, 0, dst, src1.length, src2.length);System.out.prin
VSCodeのExtension作ってみた
# この記事の内容
– こんなものを作ったよーという共有
– 割と簡単にできたのでVSCodeのExtension作成楽しいよーという布教
– 実装について
– 詰まりポイントと解消法
– パッケージした各ファイルの情報がリリース情報のどこに反映されるのか?
– Marketplaceにpublishする時のアクセストークンの権限設定がややこしいExtensionを作成するために必要な環境準備はすでに分かりやすくまとまった記事がたくさんあったのでそちらを紹介するにとどめます。
# できたもの
https://marketplace.visualstudio.com/items?itemName=gengen0719.java-testingpair-opener
Javaクラスを開いた状態で `Ctrl + 9` を押すとテスティングペアのJavaクラスを開く(なければ作る)という超単純なExtensionです。
EclipseのQuick Junit Pluginのショートカットキーの一つとほぼ同じ動きをします。https://eclipse-cheat
ラムダ式について
# 導入
Javaにはラムダ式という便利な機能が備わっているので、その紹介をしていきます。
かなり便利なものなので、きちんと理解することをお勧めします。# ラムダ式とは
ラムダ式は、匿名関数を表現するための簡潔な記法です。
ラムダ式は、通常のメソッドとは異なり、名前を持たず、その場で定義される小さなコードブロックです。
Java 8以降で導入され、コードの簡潔化や関数型プログラミングのサポートに役立っています。# 仕組み
ラムダ式は、ローカルクラスと無名クラスの仕組みを利用しています。
なので、これらについてまず触れます。## ローカルクラス
ローカルクラスとは、メソッド内にクラスを定義して利用するものです。
以下に例を示します。“`java
public static void main(String[] args) {// ローカルクラスLocalTestの定義
class LocalTest {
public void sayHello() {
System.out.println(“Hello!!”
Javaで学ぶ入出力入門
# 導入
Javaでは、ファイルの読み書きやコンソール入力を簡単に行う方法が用意されています。本記事では、Javaを使ったデータ入出力について、基礎から具体的なコード例までをわかりやすく解説します。
# Javaのストリームについて
Javaでは、**ストリーム**を使ってデータを扱います。ストリームはデータの流れを抽象化したもので、大きく分けて以下の2種類があります:
– **文字ストリーム**: テキストデータの読み書きに使います。`Reader`と`Writer`クラスを使います。
– **バイトストリーム**: バイナリデータ(画像、音声など)の読み書きに使います。`InputStream`と`OutputStream`クラスを使います。文字ストリームはテキストデータに、バイトストリームはバイナリデータに適しています。
## コンソールでのデータ入出力
コンソール(画面)でのデータのやり取りには、標準入力(キーボード入力)、標準出力(画面表示)、標準エラー出力(エラー表示)があります。
### キーボードからの入力を読む
キーボードからの入力は、`Scann
2つのオブジェクトのフィールド値を全て比較する
備忘録です。
“`java:DeepComparator.java
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.HashSet;
import java.util.stream.StreamSupport;public class DeepComparator {
public static boolean deepEquals(Object obj1, Object obj2) {
return deepEquals(obj1, obj2, “”, new IdentityHashMap<>());
}private static boolean deepE
Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみた
# 概要
Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index13.html
# 実装
以下のファイルを作成しました。
“`JSample13_1.java
import java.util.Arrays;class JSample13_1{
public static void main(String[] args){
int[] src = {12, 24, 18, 35, 21};
int[] dst = Arrays.copyOfRange(src, 1, 4);System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dst));
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample13_1.java
$ java
【Java】ArrayListのメソッドを覚える
ArrayListが通常の配列と比べて何が違うのか、覚えるための自分用メモです。
# ArrayListとは?
ArrayListは、“`java.util“`パッケージに含まれる“`List“`インタフェースを継承したクラスライブラリで、コレクションクラスの1つです。# サンプルプログラム
ArrayListを使うには、まず以下のように“`import“`文を記述します。
“`java:Main.java
import java.util.ArrayList;
“`
ArrayListをインスタンス化する際は、<>で格納する型を指定します(“`int“`などの基本データ型は不可、“`Integer“`などのラッパークラスは可)。
“`java:Main.java
import java.util.ArrayList;public class Main {
public static void main(String[] args) {
ArrayListnames = new ArrayList
Javaの基礎的な備忘録1
# メンバとは
クラスには属性を表す変数と、
操作を表すメソッドを定義します。
この`クラスに用意した変数やメソッドを総称してメンバと呼びます`。メンバ変数
メンバ変数とはクラス定義の中で下記の部分です。
クラス定義をしている”{“と”}”の中に記述され、そしてメソッドの外に記述されている変数のことです。
“`Java
class Television{
/**これ*/
int channelNo;
String name;
//クラスの中にあり、メソッドの外にあるvoid setChannel(int newChannelNo){
channelNo = newChannelNo;
}void dispChannel(){
System.out.println(“現在のチャンネルは ” + channelNo + ” です”);
}
}
“`では、メンバ変数に直接値を格納するのを禁止し、必ずメソッド経由でしかメンバ変数の値を格納したり参照したり出来ないようにするにはどうすればいいでしょうか。そういった場合はメン
Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみた
# 概要
Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index10.html
# 実装
以下のファイルを作成しました。
“`JSample10_1.java
class JSample10_1{
public static void main(String[] args){MyTest[] src = {new MyTest(28), new MyTest(12)};
MyTest[] dst = new MyTest[2];for (int i = 0; i < src.length; i++){ dst[i] = new MyTest(src[i].num); } System.out.println("src[0] = " + src[0].num); // 28 System.out.println("dst[0] = " + dst[0]
【Java】ABC081B_ Shift Only #AtCoder
自分用にAtCoderの解答をまとめていきます。誤った情報があったら、申し訳ございません。
## 覚えること
– setメソッド
Listクラスのsetメソッドは、1つ目の引数は書き換えたいList内の位置を指定し、2つ目の引数は実際の変更の仕方を指定できる。## コード
“`java:ABC049C_Daydream
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class ABC081B_ShiftOnly {
public static void main(String[] args) {
try (Scanner sc = new Scanner(System.in)) {
int s = sc.nextInt();
int count = 0;
boolean judge = true;
Listarra
IBM MQ メッセージング・プロバイダー・アクティベーション・スペックとMQとの接続が切れた場合の再接続の動作
[tWAS 9.0 と MQ 9.2 でJMSを動かす #Java – Qiita]( https://qiita.com/keniooi/items/506c913a9d339a10e24e )の環境で実行しています。
### 1.MQを停止
“`
[root@c90105v1 ~]# date; podman stop mq
Tue Apr 30 09:23:30 PM PDT 2024
WARN[0010] StopSignal SIGTERM failed to stop container mq in 10 seconds, resorting to SIGKILL
mq
“`### 2.WASで警告 CWSJY0003W が発生
最大5回、300000ミリ秒おきに再接続が試行される。
秒数と回数は[IBM® MQ リソース・アダプターのプロパティーの構成 – IBM Documentation]( https://www.ibm.com/docs/ja/was/9.0.5?topic=provider-configuring-properties-mq-reso
Spring BootでMyBatisログを出力する
# はじめに
こんにちは、Gakken LEAP のバックエンドエンジニアの Matsuura です。
Spring(Java)でDB操作の処理を実装する際には、MyBatisを採用することが多いですね。
ただ、MyBatisの初期設定では、クエリの実行内容や実行結果が確認できず、正しい結果が得られているかすぐには分かりません。
そのため本記事では、クエリの実行結果をコンソールログとして出力する方法をご紹介します。# 方法
## ディレクトリ構成
ディレクトリ構成は以下の通りとします。
“`text
src/
├─ main/
│ ├─ java/
│ │ ├─ com/
│ │ │ ├─ example/
│ │ │ │ ├─ mapper/
│ │ │ │ │ ├─ HogeDao.java
│ │ │ │ │ ├─ HogeDao.xml
│ ├─ resources/
│ │ ├─ application.yml
“`## 設定内容
対象となる`@Mapper`インターフェイスが格納されているディレクトリに対