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

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

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

# Python

https://qiita.com/atsui-ocha/items/5b8e4f973b36e78fdaf1

# Ruby

https://qiita.com/beanzou/items/6231d3d0a926765ddbb4

# PHP

https://qiita.com/rana_kualu/items/0abd2b6f69527b0b4b92

# Java

https://qiita.com/morioheisei/items/e686e33b60c6a60e87f0

# JavaScript

https://qiita.com/tetsuyakojima/items/fd63f91a4e34d6bad28b

# Perl

https://perlzemi.com/blog/20170521149524.html

元記事を表示

A problem tracing experience of application support

# Symptom
A user reported that in the saved report of a application, all fields related to time are changed, changed to 1 hour earlier to original value. This happened recently and there was no problem in the past.

Simple to say, the application is build by Spring Boot, and details are:
– Java 8
– Spring MCV
– Spring Data JPA
– JPA (By Hibernate)
– MySQL

# Investigation direction: Time zone
In the UK, time zone will be changed 2 times per year. And there is one hour difference between two time

元記事を表示

Javaの学習 ~String~

### Stringクラス
java.lang.Stringクラスのこと。配列を内部に隠蔽しているため、文字列操作が可能なメソッドを提供することができます。

#### Stringクラスのインスタンス生成

“`java
String a = new String(“こんにちは”); //newを使う

String b = “こんばんは”; //newは省略できる

//☆文字列であるため、ダブルクォーテーション!
“`
#### Stringオブジェクトは不変な(immutable)オブジェクト
オブジェクトに一度セットしたフィールドの値を、後から変更できるオブジェクトを「可変なオブジェクト」、変更できないオブジェクトを「不変なオブジェクト」と呼びます。
その「不変なオブジェクト」の代表例がStringオブジェクトです。

不変と聞くと全く中身を変えることができないように感じますが、
以下のコードで見てみると犬が猫に変わっていることが分かります。
“`java
String str = “犬”;
str = “猫”;
System.out.println(str);

元記事を表示

IBM Cloud Code Engineにアプリケーションをソースコードから直接デプロイしてみる

# はじめに

前回まででIBM Cloud Code Engine上にPlay Frameworkで作ったアプリケーションをデプロイしてみましたが、そのままだとコード開発の後にデプロイを行うまでかなりの手動ステップを必要とします。

– `sbt dist`でパッケージを作成
– zipファイルを展開
– dockerイメージを作成
– container registryへpush

これを解決する手段としてはまずCI/CDパイプラインを導入することが考えられますが、IBM Cloud Code Engineではアプリケーションをデプロイするのに作成済みのイメージを使用する他に、直接ソースコードからイメージをビルドしてデプロイする方法も提供しています。今回はそちらの機能を使って上記の手動ステップを行わずにアプリケーションをデプロイする方法を探ってみます。

# GitHubにリポジトリを作成

まずはGitHub上に空のリポジトリを作成します。Repositoriesのタブから”New”をクリックして以下の画面で名前をつけます。

![スクリーンショット 2021-12-24 1

元記事を表示

正規表現による複数行の置換(VSCodeでBuilderパターンをコンストラクタに置換)

# やりたいこと

“`java
// 現状
Foo.builder()
.hoge(“a”)
.huga(10)
.build();

// こうしたい
new Foo(“a”, 10);
“`

例としてJavaのコードを扱います。Builderパターン[^builder]をやめてコンストラクタでインスタンスを生成したいという設定です。
本記事はVSCodeで検証しました。(ツールによっては`\n`に非対応ということもあるかもしれません。)

# 「現状」とマッチングする正規表現(シンプルなケース)
“`text:「現状」とマッチングする正規表現
Foo\.builder\(\)[\s\S\n]*?build\(\);

(見やすさのために改行を入れると)
Foo\.builder\(\)
[\s\S\n]*?
build\(\);
“`

正規表現[^dotnet]がどう働いているかというと、
– `Foo\.builder\(\)`で始まる部分を指定します。
– `[\s\S\n]`は改行コード含む全文字を示します[^ref_q

元記事を表示

【Java】throwとthrowsの使い方を簡潔に説明してみる

# はじめに

今回の記事はthrow、throwsの解説を簡潔に書くことを目的としているため、検査例外・非検査例外とは何か等の細かい内容は省かせていただきます。お許しを。

# 実行環境
OS:Windows10 バージョン20H2
言語:Java 8
使用ツール:Spring Tool Suite 4

## 1. throw
### 1-1. throwとは

***例外を意図的に起こすことが出来る処理のこと。***

### 1-2. 使い方
throw new 例外クラス名();
### 1-3. 使用例
“`Sample.java
public class Sample {
public void hello(String name) {
if (name == null) {
throw new IllegalArgumentException();
}
System.out.println(name + “さん、こんにちは!”);
}
}
“`

“`Main.java
public class Main {
publi

元記事を表示

Houdiniを学習してみて(1週間経過)

学習しはじめて1週間
毎日仕事+3時間やると疲労が蓄積していますが、習慣になりつつあります。

仕事はWeb系(PHP,java)のエンジニアですが、
かねてよりやりたかったデザイン系のお仕事へジョブチェンジします。

1週間学んでみた感想は、
**Houdiniがエンジニアと相性いいかもしれない??**
でした。

教材や公式サイトを見ていると、
エンジニアで得た知識も全く無駄にはならなそうだなという印象を受けました。

例えば、
・相対パスや、演算子まわり
・[Houdiniで利用できるスクリプトのVEXの書き方](https://www.sidefx.com/ja/docs/houdini/vex/lang.html)
など

VEXは型に厳しいそうなので、Javaと言語的に近かかったりしてと思い調べてみたら、
>VEXは制限の緩いC言語ベースですが、RenderManシェーディング言語と同様にC++の考え方を採用しています。([出典](https://www.sidefx.com/ja/docs/houdini/vex/))

とのことでした。
プログラミング言語の歴史をたど

元記事を表示

プログラミングで、2次元平面のある点の周囲の点の座標を表現する方法

## 内容
タイトルの通りで、
プログラミングで、ある座標の周囲にある8つの点(8方位の点)をXY座標でどのように表すかという内容です。

原典はAtCoderの問題の解説です。 個人的に、解説の理解に時間を要したので、わかりやすく噛み砕いて説明しようと思います。

## コード
“`SurroundingCoordinates.java
public class SurroundingCoordinates {
public static void main(String[] args) {
int x = 0;
int y = 0;

// (1)
int[] distances = {-1,0,1};
int size = 0;

// (2)
for(int dx : distances){
for(int dy : distances){
if(dx == 0 && dy == 0) continue

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの条件分岐の比較

Python,Ruby,PHP,Java,JavaScript,Perlの条件分岐の比較

# Python

https://qiita.com/Morio/items/1e06e7ac768758af5ffe

# Ruby

https://qiita.com/sagawashu/items/0f08266d5f72229423d9

# PHP

https://qiita.com/Hashimoto-Noriaki/items/dfb76d440a64eccba95d

# Java

https://qiita.com/setonao/items/ebc341ddf6d95295c48e

# JavaScript

https://qiita.com/taiju_suzuki/items/e2bf11fcf1645623235f

# Perl

https://perlzemi.com/blog/20161023147731.html

元記事を表示

java: ディレクトリ一覧を取得、ソートして、指定数以上のディレクトリを削除

#### 指定したパスのディレクトリ一覧取得

“`java
File[] dirList = new File(“./”).listFiles(File::isDirectory);
if (dirList == null) {
logger.warn(“directory not found”);
return;
}
“`

#### 古い順にソート
“`java
Arrays.sort(dirList, new Comparator(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
}
});
“`
↑はメソッド参照を使うととてもシンプルになりました…
[コメント](https://qiita.com/yulily@github/items/92c8dc3ba46db7acefd9#comment-752989e78ca7d4620

元記事を表示

【Spring】特定のExceptionを発生させた際に独自のエラー画面を表示したい

# はじめに
業務でJavaを使うことになったが、少しブランクがあるため、記事としてまとめる。

# 背景
DBから値を取得するメソッドを使用した際に、検索結果が0件であった場合に
独自のExceptionを発生させるメソッドに出会った。また、このメソッドを使用
し、検索結果が0件であった場合500エラーが表示されてしまう。

今回、上記メソッドを使用した際には、HTTPステータスを404で返却し、
かつ既存の404エラーページではなく専用の404エラー画面を表示したい
という依頼である。
# 内容は一部ぼかしている

# 方針

特定のメソッドを実行する際に、0件であった場合に自作したExceptionを投げ、
そのExceptionを検知する。最終的に独自のエラー画面を呼び出すようにする。
# それ以外の404の場合は、既存のエラーページを呼び出す。

“`java:呼び出し元.java
int id = 1;

// idを元にDBから値を取得し、TestDetailに格納する(取得出来なければ独自のExceptionを投げる)
TestDetail detail = Te

元記事を表示

Javaで簡単なガチャを作る(Spigotプラグイン)

## 肝心なところだけ説明
ガチャの肝心なところと言えば確率。
パパっと実装することができて、なおかつある程度の精度が出るものを作ったので解説……?

## コード
https://github.com/Sakaki-Aruka/Lottery

コードは↑に置いてあります。

“`Java
double result = Math.random()
double step = 0.0;
double step_copy = 0.0;

for(double i:Weight){
step += i;
if(step_copy <= result && result < step){ ここに処理を書く return;

元記事を表示

Azure App Service上のJava + TomcatにElastic APMを設定する方法

Azure App Service上で動かすTomcatにElastic APMを設定する機会がありましたので、注意点など含めて紹介しようと思います。
# Java+TomcatでElastic APMを使う方法
公式ドキュメントはこちら
https://www.elastic.co/guide/en/apm/agent/java/current/setup.html
手順は変わりませんがApp Serviceで設定する上で少し注意する点があります。

## App Serviceのための設定
### 必要なもの
APM AgentとWARファイルだけです。
APM Agentはこちらからダウンロードできます。
https://search.maven.org/search?q=g:co.elastic.apm%20AND%20a:elastic-apm-agent

WARファイルはTomcatのサンプルファイルを使用します。
https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war
### App Servi

元記事を表示

SpringでのCifs実装

# 本記事を書くきっかけ
「Cifs通信をJavaでやりたいんだけど」と言われので、調べたらSpringにもCifsの仕組みがあったので、
自宅で調査した内容に限り纏めて記事にしてみました。
# Spring Integration SMB
Spring Integration(Spring 外部機器接続の統合プロジェクト)にて管理されているSMB通信(Cifs)用のライブラリ。
内部で[jcifs](https://github.com/codelibs/jcifs)というライブラリをラップしています。
jcifsを使用されたことがある方は、おおむね使用方法はjcifsと同様になる認識で問題ありません。
# 実装方法
[公式](https://github.com/spring-projects/spring-integration-extensions/tree/main/spring-integration-smb)では下記のような実装例が紹介されており、この実装ではSmbSessionFactoryをDIして使用するようになっています。
“` java
@Bean
publi

元記事を表示

JavaとGridDBによるAdaBoost、バギング、スタッキング、およびVotingの実装

AdaBoost、バギング、スタッキング、Votingはすべてアンサンブル学習の手法です。アンサンブル学習は機械学習の一種で、一般に「弱い学習器」や「ベースモデル」と呼ばれる複数のモデルを特定の問題を解決するために学習させ、より良い結果を得るために組み合わせるものです。弱いモデルを正しく組み合わせると、より正確で頑健なモデルが得られるという仮説に基づいています。

ソースコードの全文はこちらをご覧ください。

それでは、今回使用するアンサンブル学習の方法について説明します。

1\. **バギング**

バギングは “Boostrap Aggregation “の略です。ブートストラップとは、特定の学習セットから、置換を用いて異なるデータセットをサンプリングする手法になります。バギングは、1つの学習アルゴリズムを学習データの異なるサブセットに適用し、サブセットのサンプリングを置換(ブートストラップ)を用いて行うアンサンブル学習の手法です。

アルゴリズムがすべてのサブセッ

元記事を表示

Java: PDFドキュメントからイメージを抽出する方法

PDFドキュメントは、イメージやテキストなどの様々な形式のコンテンツを含むことができ、非常に実用的な文書フォーマットです。PDFドキュメント内の価値のあるイメージを自分の資料に使用したい場合は、[Free Spire.Pdf for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)でイメージを抽出し、指定したフォルダに保存することができます。以下は具体的なチュートリアルです。

**Spire.PDF.Jarのインストール**

方法1:
mavenを使用している場合は、次のコードをプロジェクトのpom.xmlファイルに追加することで、JARファイルをアプリケーションにインポートできます。
“`ruby:qiita.rb


com.e-iceblue
e-iceblue
https://repo.e-iceblue.com/nex

元記事を表示

Partner WSDLを使用したMaven(Java)プロジェクトの作成方法

## 経緯
Javaからsalesforceに接続する記載が少ないため、備忘録として記載。
## 手順
> 参考サイト:[Java 開発者環境の設定](https://developer.salesforce.com/docs/atlas.ja-jp.salesforce_developer_environment_tipsheet.meta/salesforce_developer_environment_tipsheet/salesforce_developer_environment_overview.htm)
## 前提
1. javaがダウンロードされていること
> 参考サイト:[Javaダウンロード](https://www.oracle.com/java/technologies/downloads/)
2. Mavenがダウンロードされていること
– インストール方法
– Windows: [ダウンロードサイト](https://maven.apache.org/)
– macOS: コマンド

元記事を表示

【備忘録】nullチェック

if (“”.equals(str))

if (str != null && str.equals(“”))

上はnullチェックも兼ねている

元記事を表示

Creates Spring Boot application runs in Java Servlet container

# On Servlet 3.0 container

If you plan to run your project on Servlet 3.0 container (e.g. Apache Tomcat start from 7.0), it is very easy to convert the project from run in command line to run in a Servlet container.
1. in software project management tool, change generate file format from jar to war, and prevent to append version number to file name
1. include **org.springframework.boot:spring-boot-starter-tomcat** into project’s dependency
1. change the class which annotated with @SpringBootApp

元記事を表示

【Spring Boot】自作のバリデーションを作る

バリデーションを自作する方法を学んだので、備忘として本記事を作成しました。

# 使用環境
– Windows10 (64bit)
– spring-boot : 2.7.1
– postgres : 11.15

# ユースケース
ユーザーを新規会員登録させるときに、emailとpasswordの入力が必須。
その際に既に登録してあるemailで新規会員登録できないようにしたいので、
入力されたemailが既にDBに登録があった場合はエラーとなるように、バリデーションを自作する。
バリデーションの名前は“@UniqueEmail“とする。

## エンティティクラスの作成
今回、ユーザー情報はusersテーブルに格納しておくので、
そのテーブルに対応する“user“クラスを作成する。
~~~java:user.java
package com.example.domain;

import文省略

public class User {
private int id;
private String email;
private String password;

元記事を表示

OTHERカテゴリの最新記事