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

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

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 メモ

指定したパスのディレクトリ一覧取得
“`
File[] dirList = new File(“./”.listFiles(File::isDirectory);
if (dirList == null) {
logger.warn(“directory not found”);
return;
}
“`

古い順にソート
“`
Arrays.sort(dirList, new Comparator(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
}
});
“`

指定した数の超えた分のディレクトリを削除 (↑でソートしているため古いものから削除する)
“`
int limitCount = Integer.parseInt(args.getOptionValues(“limitCount”).get(0));
int dirCount

元記事を表示

【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;

元記事を表示

JAVA DTOとDAO

# DAO/DTOパターン
まず最初に、DAO/DTOパターンを理解するときに、
「なぜそんなものが必要なのか?」が一目でわかるような画像があったので
紹介したいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661107/9feaa0a8-5d4b-4c56-2cde-88484181c01e.png)
[こちらの記事を参考にしました](https://kanda-it-school-kensyu.com/java-jdbc-contents/jj_ch04/jj_0402/)

メリットとして
– 1レコードのデータを一括で管理できるため、データの受け渡しが容易になる
– アクセス処理の回数を減らしパフォーマンスを向上することができる

よく言われるのは、
DAOはメソッドを持つがDTOはメソッドを持たないと違いを説明する人もいます

私の中での理解
`DTO`→ 型を事前に定義する。データを受け渡すためのクラス。
`DAO`→ SQLを呼び出す。データを操作するための

元記事を表示

Javaで作られたWEBアプリケーションの運用にあたってJVMのパラメータをKubernetesマニフェストで管理する

## はじめに
皆さんこんにちはasmgです。今回は、Javaで作られたWEBアプリケーションの運用にあたってJVMのパラメータをKubernetesマニフェストで管理するタスクを行なったので実現した方法を記載していこうと思います。
## 本記事の対象者
本記事は、JVMのパラメータをKubernetes マニフェストで管理することに着目しているのでkubernetesやJVMについて言及はしません。なので、KubernetesやJVMのパラメータは理解していることを前提としています。
## 本記事の実行環境
#### 検証機
* Mac Book pro 14inch M1 Pro
#### 検証環境
* kind(Kubernetes in Docker)

## 現状のJVMのパラメータの管理方法
現状、JVMの管理は以下のように行っていました。

“`Dockerfile:Dockerfile
FROM openjdk:8-jdk-oraclelinux8
COPY ./target /
CMD [“./apply.sh”, “./app.jar”]
“`
“`shell

元記事を表示

【Java】Math.randomを使わずに手軽にサイコロを作りたい【Collections】

サイコロを作りたい

ランダムに1〜6の数字が出るようなプログラムを作ってサイコロを振りたい!
Javaでサイコロを作る、と言われたら、皆さんは何を思い浮かべますか?

解答

リファレンス:Math.random 
通常、Math.random()クラスを用いて以下のような形で記述すると思います。
これはおそらく一番一般的な方法で、Javaを勉強する時に練習問題等で解いた方も多いのではないでしょうか。

“`Java:Main.java
public class Main {
public static void main(String[] args) {
int dice_num = (int)( Math.random() * 6 + 1 );
System.out.println ( “サイコロ振ったら” +

元記事を表示

ABC265A~Eの解答[Java]

## はじめに
今回はコンテスト中にDまで、コンテスト後にEが解けたのでEまで書きます。

では、見ていきましょう。

## A – Apple
問題文は[こちら](https://atcoder.jp/contests/abc265/tasks/abc265_a)

X円払って1個買うかY円払って3個買うかですが、要はどっちがお得かを求めれば良いです。
YがXの3倍より大きいならX円でN個買った方がお得です。一方、Xの三倍よりもYの方が小さいなら3個セットの方がお得です。
ということでそれをMath.minを使って記述して解きました。
Nは3の倍数とは限らないので3個セットで買うときはX*(N%3)を足すことに注意しましょう。
“`A.java
class Main{

static Library System = new Library(java.lang.System.in,java.lang.System.out);

public static void main(String[] args)throws IOException{

//値の受け取り
in

元記事を表示

blastengineのJava SDKを使って添付ファイル付きメールを送信する

blastengine(ブラストエンジン)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。

現在、Java向けに、blastengine SDKを開発しています。この記事では、その使い方を解説します。0.0.2で対応した添付ファイル付きメールの即時送信について解説します。

[blastengineMania/blastengine-java: Java SDK for blastengine](https://github.com/blastengineMania/blastengine-java)

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34

元記事を表示

qiitaに上がっていた初心者用webアプリ(java)を作成してみたときの備忘録

## 1.はじめ
Qiitaに投稿されていたwebアプリを作成した際に悩まされたエラーの解消方法について記載しておきます。

## 2.対象エラー
There was an unexpected error (type=Internal Server Error, status=500).
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

SQLに関するエラーだとはわかりましたが、今回SQLファイルは作成していなかったのでどこでエラーになっているのかわかりませんでした。

## 3.解決方法
上記エラーで検索してヒットしたサイトを見てみると、SQLテーブルを事前準備として作成しているサイトが多く見つかりました。
そこで、テーブルを作成するSQLを対象サーバー内で実行しました。
すると、エラーは消えて動くようになりました。
“`
create table customer

元記事を表示

OTHERカテゴリの最新記事