- 1. javaでブロック崩し作ってみた(1)
- 2. VSCode の Remote-Containers Extension v0.131.0 から、選べる Java の Configuration は1つになりました
- 3. ゼロからVSCode+WSL+Java+Gradle環境を構築する
- 4. Javaでsftp (JSchラッパ)
- 5. java 固定長文字列の中身の有無を調べる方法
- 6. 【JDBC ③】プレースホルダと引数を使ってmainメソッドから入力してみた。
- 7. 大量データを扱うとSQLRecoverableExceptionに苛まれる
- 8. ヒープソートの実装(javaで)
- 9. Java SE, EE, ME, SDK, JDK, JRE, JVM ややこしい用語を図で解説
- 10. Java カプセル化とは?
- 11. Java 配列の作り方
- 12. Java よく使う命令一覧(初心者、入門者向け)
- 13. Java 文字列をコンソール画面に出力する方法
- 14. Java 変数宣言の書き方
- 15. httpcore-4.4.5 で削除されたannotation ThreadSafe/NotThreadSafeの置換
- 16. Jenkinsを使って、Docker内でビルドしてからDocker imageを作成する。
- 17. Ubuntu 20.04 で Bio-Formats の使い方
- 18. [Java]MinecraftのModを作成しよう 1.16.1【ブロックの追加】
- 19. [Java]MinecraftのModを作成しよう 1.16.1【アイテムの追加】
- 20. 51歳(現52)からのプログラミング 備忘 Path と File
javaでブロック崩し作ってみた(1)
#やること
前回の記事は以下にありますhttps://qiita.com/strict39275/items/41da2ad3bb8fd60228e0
じっくり考えても、自分の理想には届かなかったコードですが、これから改善をしていきたいと思います。今回の記事はそれぞれのクラス説明をしていきたいと思っております。いきなり全部説明すると途方にない時間になりそうなので、次回は別のクラスを一つずつ丁寧に説明した方が良さそう。やったるぞ。
#大まかなクラス構造
shiracamus様が作りました大まかなクラス構造です。breakoutクラスをメインにして、その中にクラスのインスタンス変数を作った感じですかね。
![java1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680378/280702e7-5a7f-bda3-c0d2-1100757f589d.png)
#プログラムコード一つずつ、反省も含めて説明をしていきたいと思っております
“`java
import javax.swing.*
VSCode の Remote-Containers Extension v0.131.0 から、選べる Java の Configuration は1つになりました
Java を Remote-Containers 拡張でやろうと思って導入したら、いきなり詰まったのでメモ。
# 詰まった点
`VSCode Remote Containers Java` とかのキーワードでググると、いくつか記事が出てくる。
参照すると、「`Remote-Containers: Add Development Container Configuration Files` から `Java (8|11|14)` を選んで〜〜」というように説明されているが、実際に試すとバージョン別のConfigurationが見つからない。
下図のように、`Java` だけがあり、あとは Azure Function 向けの Configuration だ。![スクリーンショット 2020-08-15 0.39.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66988/5e7f4c71-52ad-7c7f-176f-fa38c2b7f0d4.png)
これを選ぶと、JDK 11 の `.d
ゼロからVSCode+WSL+Java+Gradle環境を構築する
# WindowsにJDKをインストールする
– JDKがインストール済みかコマンドラインから確認する“`
> javac -version
C:\Users\ユーザ名>javac 11.0.7
“`– JDKがインストールされていない場合、インストーラーでインストールする
https://adoptopenjdk.net/
「OpenJDK 11 (LTS)」「HotSpot」
※インストール時に環境変数「JAVA_HOME」を設定するようにチェックを入れる– JDKがインストール済みかコマンドラインから確認する
“`
C:\Users\ユーザ名>echo %JAVA_HOME%
C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot
“`
空欄が出力された場合は、環境変数を設定する# WindowsにVSCodeインストール
– インストーラー
https://azure.microsoft.com/ja-jp/products/visual-studio-code/# VSCodeでJavaを扱えるよ
Javaでsftp (JSchラッパ)
“`SftpService.java
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SftpService {
private static final String SFTP_ERRMSG_NO_SUCH_FILE = “No such file”; // 環境依存かも?
private Session session = null;
java 固定長文字列の中身の有無を調べる方法
“`java
String sti = ” “;
//スペースをtrimする
//その結果、ブランクであるかどうか
if(sti.trim().isEmpty()) {
System.out.println(“blank”);
}else {
System.out.println(“notBlank”);
}
“`
【JDBC ③】プレースホルダと引数を使ってmainメソッドから入力してみた。
[前回の記事](https://qiita.com/tsweblabo/items/a3e37bc439bacfe6c5c5)では、SQLのINSERT文・UPDATE文・DELETE文・SELECT文ごとにメソッドで分けて、mainメソッドでSQL文を実行することに成功しました。
追加や変更・削除したいデータをSQL文の中で固定していたため実用的ではありませんでした。そこで、mainメソッドからSQL文の各メソッドを呼び出す際に追加したいデータ等も渡すことができれば、より有用性の高いソースコードになると考えたので挑戦してみました。
## 環境
今回の環境については以下のとおりです。– Ubuntu 18.04 LTS
– OpenJDK 11.0.8
– SQLite3 3.20.0—
## 前回の振り返り
まずは前回のコードのINSERT文のメソッドを見てみます“`java:前回のINSERT文のメソッド
/**
* INSERT文
*/
public static void insertData() {
try {
// cr
大量データを扱うとSQLRecoverableExceptionに苛まれる
数万単位のデータをデータベースから参照、更新を行うと、まれに `SQLRecoverableException` に遭遇します。
こいつほんまなんやねん…って感じて、再現の仕方もさっぱりだったのですが、つい先日再現もできたので調査内容をシェアしてみます。# 実行環境
|項目|バージョン|
|:-:|:-:|
|Java| amazon Corretto-11.0.3.7.1 |
|Spring Batch| 4.2.2.RELEASE |
|データベース| Oracle Database(ドライバはojdbc8) |
|mybatis| 3.3.0 |
|mybatis-spring| 1.2.3 |アプリは、定期的にデータベースを参照・更新するバッチ処理です。
サーバ上でマルチスレッドで動作し、1スレッド上で数千件ずつ処理が走ってます。# 状況
Javaから、ORMに関わらず以下の例外に遭遇します。“`
Caused by: java.sql.SQLRecoverableException: クローズされた接続です。
at
ヒープソートの実装(javaで)
##### ディレクトリ構造
> heap/
> ├ Heap.java
> └ Main.java##### 実行
“`
$ javac Heap.java
$ javac Main.java
$ java Main
“`##### ソースコード
“`java:Heap.java
import java.util.*;
/**
* ヒープソート用のクラス
*/
public class Heap {
int[] origArray;
int[] origHeap;
int[] forSortHeap;
int[] sortedHeap;
int arrayLength;
/**
* ヒープソート用の配列を取得する.
*/
public void getForSortHeap(){
for (int i: forSortHeap){
System.out.print(i+”, “);
}
System.out
Java SE, EE, ME, SDK, JDK, JRE, JVM ややこしい用語を図で解説
# Java SE、Java EE、 Java MEはプラットフォームの種類
![001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668115/3bc99480-2d3d-c392-964a-2d50469b1d2e.jpeg)
Java SE、Java EE、 Java MEはJavaのプラットフォームの種類。
プラットフォームとは、Javaのプログラムを作成するための作成キットのことである。
プラットフォームにはAPIが含まれており、SE、EE、MEはそれぞれ含まれているAPIの種類が異なる。# SDK、JDK、 JRE、 JVMはJavaの開発や実行に使うソフトウェア
SDK、JDK、 JRE、 JVMはJavaの開発や実行に使うソフトウェアの名称。
それぞれ図のような関係にある![002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668115/e239b854-3d4c-8eaf-5
Java カプセル化とは?
# カプセル化とは?
クラスのフィールドやメソッドへのアクセスを制限する機能のこと。
フィールドやメソッドが想定しない用途で利用されるのを防ぐ役割がある。“`java
//例:フィールドに文字列のname、整数のmoneyを持つUserクラス
public class User {
String name;
int money;public User(String name, int money) {
this.name = name;
this.money = money;
}
}
“`Userクラスのインスタンスはname、moneyが自由に変えられてしまう。
“`java
public class Main {
public static void main(String[] args) {
User user = new User(“鈴木太郎”, 100);
System.out.println(user.name + “の所持金は” + user.money + “円”);
//空白の名前にされてしまうことや
user.n
Java 配列の作り方
# 配列を作る3ステップ
配列を作るには3つのステップが必要。1. 配列の変数を宣言
1. 配列の要素を作成
1. 値を代入イメージとしては
1. 大枠の箱(配列の変数)を作る
1. 箱の中に仕切り(配列の要素)を作る
1. 仕切りの中にモノ(値)を入れるといったところ。
## 1. 配列の変数を宣言
配列の変数を宣言するには以下のように記述する。“`
配列要素のデータ型[] 配列の変数名;
“`配列要素のデータ型は、配列の中に代入する要素のデータ型。
整数なら int[]、少数なら double[]、文字列ならString[]のようになる。配列の変数名は、配列の中身を表す英語の複数形にするのが基本。
配列の中身がテストの点数の数字なら scores、色の名前の文字列なら colorsなど。例:整数の配列 numbers を定義する
“`java
//整数なのでデータ型は int、データ型の後ろに[]をつけて定義する
int[] numbers;
“`## 2. 要素を作成
要素を代入するには以下のように記述する。“`
配列の
Java よく使う命令一覧(初心者、入門者向け)
# よく使う命令一覧
## コメントアウト“`java
// 1行ならスラッシュ2つ/* 複数行なら
スラッシュと
アスタリスクで囲む
*/
“`## キーボードから1行の文字列を受け取る
“`java
// 入力した文字列を変数wordsに代入
String words = new java.util.Scanner(System.in).nextLine();
“`## キーボードから1つの整数を受け取る
“`java
// 入力した整数を変数valueに代入
int value = new java.util.Scanner(System.in).nextInt();
“`## 文字列を表示(改行あり)
“`java
System.out.println(“表示する文字列”);
“`## 文字列を表示(改行なし)
“`java
System.out.print(“表示する文字列”);
“`## 文字列を整数に変換
“`java
int n = Integer.parseInt(stringNumber);
“`
Java 文字列をコンソール画面に出力する方法
# 文字列をコンソール画面に表示する命令
Javaで文字列をコンソール画面に表示する命令は2種類ある“`java
//命令1
System.out.print(“Hello World!”);//命令2
System.out.println(“Hello World!”);
“`# 命令1 System.out.print();
System.out.print(); を使用するとコンソールに表示した文字列の後に**改行が入らない**“`java
//例:System.out.print(); で Hello World! を2つ表示する
System.out.print(“Hello World!”);
System.out.print(“Hello World!”);
“`実行結果は以下のようになる。
“`
Hello World!Hello World!
“`# 命令2 System.out.println();
System.out.println(); を使用するとコンソールに表示した文字列の後に**改行が入る**“`java
//
Java 変数宣言の書き方
# 変数宣言の書き方
Javaで変数宣言をするときは以下のように記述するデータ型 変数名;
“`java
//例:整数型の変数 age と文字列の変数 name を宣言int age; //整数型の変数 age
String name; //文字列の変数 name
“`# 変数名の付け方
変数名を付ける際には以下のような注意点がある* 予約語(Javaの構文で使用する単語 if や void など)を使用しない
* すでに利用している変数名は使わない
* 大文字、小文字は区別される(例:name と Name は別の変数とみなされる)
* キャメルケースを利用することが望ましい(例:userName)
httpcore-4.4.5 で削除されたannotation ThreadSafe/NotThreadSafeの置換
httpcore-4.4.4 では使用可能だが httpcore-4.4.5 から削除されたannotation
`@ThreadSafe`, `@NotThreadSafe` に関する置換メモ。
Release Note:
https://archive.apache.org/dist/httpcomponents/httpcore/RELEASE_NOTES-4.4.x.txthttpcore ThreadSafe class not found solution:
## 置換
@ThreadSafe class not found compilation error occurs after updating your org.apache.httpcomponents:httpcore dependency version to 4.4.11 or above.
@NotThreadSafe“`
Jenkinsを使って、Docker内でビルドしてからDocker imageを作成する。
# はじめに
Jenkinsを使って、Mavenコンテナ内でビルドしていました。
どうせならDocker imageまでも一気通貫でやりたくて作成。
思っていたよりも作成に時間がかかった。# リポジトリ構成
“`
src
Dockerfile
Jenkinsfile
pom.xml
“`
gitリポジトリにソースと上記のファイルを格納しています。# Dockerfile
“`
FROM tomcat:jdk14-openjdkCOPY target/*.war /usr/local/tomcat/webapps/
“`
ビルドでできたwarファイルをwebapps配下に格納しています。
コードと同じリポジトリで管理します。# Jenkinsfile
“`
pipeline {
agent any
stages {
stage(‘delete_workspace’) {
steps {
deleteDir()
}
}
Ubuntu 20.04 で Bio-Formats の使い方
[Bio-Formats](https://www.openmicroscopy.org/bio-formats/)の使い方です。
1) コマンドラインツールのダウンロード
“`bash
wget https://downloads.openmicroscopy.org/bio-formats/6.5.1/artifacts/bftools.zip
“`
解凍して、例えば、$HOME/bin/bftools とするPath を通す
“`text:.bash_profile
(省略)
export PATH=$HOME/bin/bftools:$PATH
“`2) ij.jar のダウンロード
“`bash
wget http://wsr.imagej.net/distros/linux/ij153-linux64-java8.zip
“`解凍して、ij.jar を $HOME/bin/bftools に入れる
3) サンプルデータのダウンロード
“`bash
wget https://downloads.openmicroscopy.org/ima
[Java]MinecraftのModを作成しよう 1.16.1【ブロックの追加】
(この記事は一連の解説記事の一つになります)
先頭記事:[入門編](https://qiita.com/koteko/items/8d32c8819e3f9e6a333a)
前の記事:[アイテムの追加](https://qiita.com/koteko/items/578c3cfdfd7ef71df9c1)
次の記事:# ブロックの追加
ブロックの追加をします。1.14.4のときと少し書き方を変えました(バージョンアップによって実装の方法が変わったという意味ではないです)。## ブロックの登録
“`
\src\main\java\jp\koteko\liveinwater\
├ block
│ └ Blocks.java
├ item
└ LiveInWater.java
“`“`java:Blocks.java
package jp.koteko.liveinwater.block;import jp.koteko.liveinwater.LiveInWater;
import net.minecraft.block.Abstra
[Java]MinecraftのModを作成しよう 1.16.1【アイテムの追加】
(この記事は一連の解説記事の一つになります)
先頭記事:[入門編](https://qiita.com/koteko/items/8d32c8819e3f9e6a333a)
前の記事:[基本ファイル](https://qiita.com/koteko/items/6560128ebd320f2727ab)
次の記事:[ブロックの追加](https://qiita.com/koteko/items/fb057afa493fd2d648fc)# アイテムの追加
まずは基本となるアイテムの追加を行っていきます。[1.14.4のとき](https://qiita.com/koteko/items/76910dbf9eb126bdfdf9)と少し書き方を変えました(バージョンアップによって実装の方法が変わったという意味ではないです)。## アイテムの登録
“`
\src\main\java\jp\koteko\liveinwater\
├ item
│ └ Items.java
└ LiveInWater.java
“`“`java:Items.jav
51歳(現52)からのプログラミング 備忘 Path と File
忘れていたので確認しました。
java7以降のファイル操作は
1. java.nio.file.Pathsクラスのメソッドで、操作するファイルやディレクトリを指定し
2. java.nio.file.Filesクラスのメソッドで、ファイルやディレクトリを操作する“`java
Path p1 = Paths.get (“sample.dat”); // Pathsメソッド
Boolean b = Files.isDirectory(p1); // Filesメソッド
System.out.println(b);
“`
[ Files.newBufferedReader(path) ]は、これでいいのかな?“`java
Path p1 = Paths.get(“sample.dat”);
BufferedReader br = Files.newBufferedReader(p1);
String l;
while( (l=br.readLine()) != null){ System.out.println(l); }
`