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

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

blastengineを使ってJavaでメールを送信する

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

今回は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-46d181ee2924.jpeg)

## 送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

“`
txt @ v=spf1 inclu

元記事を表示

【Java】Optionalクラスの使い方 

##Optionalクラスとは?
Optionalクラスは、メソッドの処理結果を扱うためのクラスです。
このクラスを利用することで例外処理に関するコードを減らすことが出来ます。
Optionalクラスはファクトリメソッドです。なので、インスタンスを生成すためにはメソッドを使います。

##Optionalクラスのインスタンス生成メソッド
インスタンスを生成する方法として2つあります。

####引数の値がnull入る可能性がない場合
ofメソッドを利用します。

“`Sample.java
import java.util.Optional;

public class Sample {
public static void main(String[] args) {
Optional sample = Optional.of(“こんにちは”);
System.out.println(sample);
}
}
“`
“`
Optional[こんにちは]
“`

####引数の値がnull入る可能性がある場合
ofNullableメソッドを利用します。

元記事を表示

「マイクロサービスパターン」の復習 6章

## 概要

– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 6章 イベントソーシングを使ったビジネスロジックの開発

モデリングした結果を反映したテーブルを作るのではなく、エンティティに対する生成・更新イベントをDBに記録していくという話
https://microservices.io/patterns/data/event-sourcing.html

### 従来のアプローチ

– やり方
– なんらかモデリング
– 対応するクラスを作る
– 対応するテーブル作る
– ORマッパーでテーブルとクラスをつなぐ
– 欠点
– 履歴が残らない
– 後付で履歴つくるのは大変
– 生成・更新イベントも後付

### イベントソーシング

– やり方
– モデリングはする
– 対応するクラスは作る
– でも永続化するのは、生成・更新イベントのみ(永続化用のテーブルをイベントストアと呼ぶ

元記事を表示

Keycloakでmaster realmを無効化しちゃった場合の回復方法

# この記事の概要

Keycloakの設定を誤って、管理者ログインできなくなるケースと、その回復方法の話。

# 起きたこと

[Keycloak](https://www.keycloak.org/)で管理者ログインしようとしたら、以下のような画面が表示されログインできなくなってしまった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50759/5ead75e7-fb34-b9f0-cf3a-2f8559a7292a.png)

# 原因に至った操作

よく分かってないまま、初期状態で作成されていた「Master」realmの「Enabled」をオフにしてしまった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50759/d70dec02-8a93-321b-a44e-02cbf9c3cb96.png)

(Keycloak自身の管理に必要なのかよ!!知らないよ!!)

# 回

元記事を表示

DOMによるXML読み込みテストアプリ

package com.example.myapplication;

import android.annotation.SuppressLint;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateF

元記事を表示

WebSphereでデータベースとのコネクションリークを検出する

# 概要

データベースとのコネクションリーク(接続の解放漏れ)が疑われる場合、問題の処理を特定するにはどうすればよいでしょうか。WebSphere上にデプロイしているアプリケーションの場合、管理コンソールからログレベルを上げることで、問題の処理を特定できる可能性があります。

# 手順

1. WebSphereの管理コンソールにて、 トラブルシューティング > ログおよびトレース > (サーバー名称) > ログ詳細レベルの変更 を選択する
1. 初期状態では `*=info` が指定されているはず。末尾に `:ConnLeakLogic=finest` を追加する
1. `*=info: ConnLeakLogic=finest` と入力したことを確認する
1. 設定の反映のために、サーバーを再起動する

# 結果

`$WAS_HOME/Profiles/node/logs/%Server_Name%/trace.log` を確認します。

たとえば、コネクションリークによるコネクションプールの枯渇が発生している場合、下記のようなStackTraceが出力されます。既定では、10

元記事を表示

Javaでreplace()メソッドを使う時にエラー: replaceに適切なメソッドが見つかりませんの対処法

Javaでコードを書いている時に、replace()メソッドを使う時に、タイトルのエラーで詰まってしまったので、備忘録としてまとめます。
以下のようにしてコードを書いていたのですが、

“`main.java
class Main {
public static void main(String args[]){
String str = “あいうえお”;
str.charAt(0);
String targetWord = String.valueOf(str.charAt(0));
System.out.println(str.replace(str.charAt(0), “か”));
}
}
“`
これで実行しようとしたらタイトルのエラーになってしまいました。

# やろうとしたこと
やろうとしたこととしては、

“`
・charAt()メソッドで取得した文字を、replaceメソッドで置換する
“`

というものです。
それをする時に、replaceの引数に直接charAt(

元記事を表示

ObjectMapperについて

# 概要

[jackson-databind](https://github.com/FasterXML/jackson-databind)に含まれる[ObjectMapper](https://github.com/FasterXML/jackson-databind/blob/2.14/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java)について疑問に思うところがあったため、調査した記録を残す。

## 1. [readValue] recordにreadValueすることはできるか?

できる。
recordクラスのフィールドは自ずとfinalになるため、もしかしたらデシリアライズできないのではないか?と思っていたが杞憂であった。

## 2. [readValue] jsonに想定しないpropertyが入っている場合にはどうなるか?

`UnrecognizedPropertyException`をthrowする。
もし想定外のpropertyが来たとしても無視したいならば、下記のようにObject

元記事を表示

コンピュータとオセロ対戦44 ~勾配降下法と誤差逆伝播法~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/ed76a06d55e869aa706a)

# 今回の目標
誤差逆伝播法を実装します。
この記事は、[こちらの文献](#参考文献)を参考にさせていただきました。
まずは勾配降下法。
# ここから本編

## 誤差逆伝播法のまとめ
勉強不足だったので備忘録も兼ねて書いておきます。
下付き文字ですが、「pre」が前の層、「next」が次の層、「now」もしくは何も書いていなければ現在着目している層、「last」が最終層(出力層)を指します。下付き文字がコンマで区切られて二つある場合、二つ目はその層の何番目のノードのものであるかを指します。
また、「old」が更新前のパラメータ、「new」が更新後のパラメータです。
一般的に他の文献では層の数が上付き文字であらわされることが多いですが、累乗と区別がつかずわかりにくいのでここでは用いません。

### 勾配降下法
誤差を$\mathbf E$、重みを$\m

元記事を表示

専門学校生がカジュアル面談で会社の話を聞いてどんな感じだったか、その後どうなったかのお話

## 自己紹介
こんにちは、CoKoNPILeをtomio2480さんと運営しているのーりです。
学生プログラマーアルバイトを始めました。

実は、私の学科では少しずつ就職活動のときが近づいています。

今回は、私がWanteldyを使って第一志望の会社にカジュアル面談を申し込んで実際に話を聞いて2月21日から最初は学生アルバイトとして受け入れてもらったエピソードやそれまでに今までやってきたことなどをお話しします。

### この記事にはどんな内容がある?

この記事では下記の内容などを書きます。
・カジュアル面談とは
・なぜ選考前にカジュアル面談から行ったのか
・カジュアル面談は選考なのかどうか
・カジュアル面談や選考をを受けるまでやってきたこと

#### カジュアル面談とは何

ざっくり言うとそもそもカジュアル面談というのは、面接とはまた違うものです。
デートとかで例えるなら、自分と相手(会社)といい感じにマッチングするかどうかを見たり、情報交換な感じでお話をしたりします。

> カジュアル面談とは、選考前に求職者と社員がカジュアルに話をして、お互い

元記事を表示

JavaのCollections.sort()使っての並べ替え(昇順、降順)

#目次
– この記事を作成したきっかけ
– 実際に作ってみる

#この記事を作成したきっかけ
Javaのソースコードの修正時、ソート処理に悩んだので今回の記事を作成した

#実際に作ってみる
###昇順

“`:並べ替えるListを用意
//数値のリストを用意
List list = new ArrayList();
Random r = new Random();

for(int i = 0; i < 10; i++) { //0~99までの数値をランダムに設定 list.add(r.nextInt(100)); } System.out.println("ソート前:"); //リストを表示する for(int i = 0; i < 10; i++) { System.out.print("[" + list.get(i) + "] "); } ``` ```:昇順にソートする //昇順にソートする Collections.sort(list); System.out.println("\nソート後(昇順):"); //リ

元記事を表示

Javaの文字列操作についてまとめてみた

Javaの文字列操作について学習したのでまとめてみようと思います。
Javaシルバーの勉強をしていて、文字列操作の知識を問う問題で詰まってしまったので備忘録としてまとめてみようと思います。

# indexOf()メソッド

indexOfメソッドは、引数に指定された文字がどこから始まるのかというのを検索するためのメソッドです。
そして、実行すると、1や2のように数値を返します。

## 文法1つ目(indexOf)

“`
1.public int indexOf(調べたいワード)
2.public int indexOf(調べたいワード [,int index])
“`

indexOfメソッドの書き方は二通りあります。
一番最初の場合は、対象の文字列から調べたいワードが先頭から何番目にあるのかを検索し、その値を返します。

例えば、

“`main.java
class Main {
public static void main(String args[]){
String str = “あいうえお”;
System.out.pr

元記事を表示

Javaの基本ルール(備忘録)

##クラス名とファイル名##

クラス名とファイル名は同じに(頭文字は大文字にしなくてはならない)

“`
例 Main.java Sub.java

例 class Main {クラスブロック} class Sub{クラスブロック}
“`

##コメントの記述方式##

コメントは他言語と同様の記述方式を採用しているようです。

“`Java
/* コメント本文(複数行記述可能) */

// コメント本文 (行末まで記述可能)
“`

##変数と定数##

変数と定数の宣言方法です。
定数名は基本的にすべて大文字で記述します。
定数は使用する計算式などで今後変化しないものを入れることが多いです。

“`Java
//宣言のみの場合

型 変数名; 例 int age;
final 型 定数名; 例 final double TAX;

//初期値を入れる場合

型 変数名 = 初期値; 例 int age = 22;
final 型 定数名 = 初期値; 例 final double PIE = 3.14

元記事を表示

競合対策方法 【初心者向け】

##競合とは
一言で言うと、複数のスレッドで一つのインスタンスを共有すると競合が起きます。こうなることで、インスタンスのフィールドの値を読みだしてから、変更するまでの間に 、別のスレッドが変更してしまいます。いつ実行されるかはプログラミング側で制御することが出来ません。飲食店に例えると、あるお客さんがカレーを注文したが、料理人がカレーを作っている間にカレーからオムライスに変更されてしまったというイメージです。

![スクリーンショット 2022-02-23 9.54.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2526916/63bb2789-4558-f81d-25f7-6754d5afe6c2.png)

##対策
結論から言うと、対策はスレッドから処理している間は別のスレッドで処理が実行されないようにすることです。これを__排他制御__と呼びます。排他制御の方法を紹介していきます。

##方法
__synchronizedキーワード__を使用します。パターンは2つあります。
①メソッド宣

元記事を表示

JavaでPowerPointスライドマスターを作成して適用する方法

スライドマスターによって、フォント、プレースホルダーのサイズや位置、背景のデザインや配色など、デザインテンプレート情報をスライドに事前に保存できます。セットマスターは、すべてのスライドに適用することも、複数の異なるマスターをに適用して設計することもできます。別のスライド。以下では、Javaコードの例を使用して、単一のマスターとさまざまなマスターを作成する方法について説明します。

使用したツール:Free Spire.Office for Java(無料版)

jarの取得とインポート:公式Webサイトからjarパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/office-for-java-free.html)**し、libフォルダー内のjarファイルを解凍してJavaプログラムにインポートします。

次のようにエフェクトをインポートします。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b9310152-de86-42d6

元記事を表示

参考になったデバック方法

自分の知らないデバック方法をためておくためのページ!!

– ファイル出力機能でどこにファイルがでるかわからない
→ファイルを作成するメソッドを使って、ルートにファイルを作成するようにしてみる。デバックをしながらそのパスを拾い上げる

– try,catchを何階層も作成し、どこで落ちるか、当てはまるのかを特定する

元記事を表示

マルチスレッド概念から使い方まで 「初心者から中級者向け」

##はじめに
皆さんは、マルチスレッドについてご存知でしょうか。
正しくマルチスレッドを使うことによって、システムのパフォーマンスを向上させることが出来ます。今回は初心者に向けてマルチスレッドにについて概念から使い方まで解説していきます。

##マルチスレッドはなぜ必要なのか?
プログラムの流れは、プログラムの処理が終わるまで次の処理に進めないという特徴を持っています。この特徴の問題点は処理が終わるまで待つ時間ができてしまうことです。
このような問題を解決するのがマルチスレッド並列処理です。マルチスレッド並列処理を解説する前に、並列処理と並行処理について解説していきます。

##並行処理と並列処理
並列処理を一言で言えば、マルチコアで同時に複数の処理を実行することです。詳しく説明すると、コンピュータに搭載しているCPUには複数のコアを持っています。コアの数だけ、同時に複数の処理を進めることができるので、待ち時間を解消することが出来ます。飲食店を例にすると、お店の人が1人だった場合は料理、配膳、食器洗いと時間ごとに仕事をします。このことを並行処理だとイメージしてください。それが複数いると

元記事を表示

勉強会のためにGitLabのパイプライン機能で競プロっぽい環境を作ってみた

以前作ったCI環境に一手間加えて、自社の社員が楽しみながらJavaを学べるような環境を整えてみた。
できるだけ手軽にJavaのプログラムを体験できるように準備しました。

# 構成

今回のシステムの構成はこのような感じ。

![勉強会環境2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/dadab41f-a52f-ceab-cf5c-a4fa05cdd862.png)

1. 生徒がgitlabにソースコードをプッシュする
1. gitlab-ci.yamlにジョブを登録しておき、適当な環境でコードをコンパイル、実行する
1. 実行結果をslackに投稿

# パイプライン設定

前回ci環境を整えた後色々調べた所、gitlabの[runnerの設定を変更](https://docs.gitlab.com/runner/shells/index.html#overview)すればプリインストールされているpowershellを使えることがわかった。
それも踏まえて、下記のようなパイプライ

元記事を表示

1台のPCから2台のDOBOTを切り替えながら制御する

# やりたいこと
1台のPCから2台のDOBOT Magicianを制御したいと思います。
DobotStudioでは、プログラムを実行しながら接続するDOBOTを切り替えられないので、PythonやC言語等、各種プログラミング言語を使用します。

公式に提供されているAPIには、DOBOTを複数台同時に接続する方法がありませんので、今回は都度接続するDOBOTを切り替えながら制御したいと思います。

# 動作

– 1台目のDOBOTでペンを掴み、2台目のDOBOTに渡せる位置に移動します。

元記事を表示

Java Silver SE11 9章

# Java Silver SE11 9章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## コレクション
何らかの集合のこと。
配列がこれに該当する。

配列には以下の制約がある。

* 同じ型もしくは、互換性のある型のみ扱える
* 要素数を最初に決める必要がある
* 要素にアクセスするには添字を使う
* 要素にアクセスするときは、要素数を超えないようにしなければならない

詳しくは[Java Silver SE11 5章](https://qiita.com/yasuro/items/dc5443de64969f14c36d)を参照

## コレクションAPI or フレームワーク (collection framework)
java.utilパッケージに属する、データをまとめて扱うための入れ物としてのク

元記事を表示

OTHERカテゴリの最新記事