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

JAVA関連のことを調べてみた2022年06月01日
目次

【SAP BTP】CAPのAPI(Java)をPostgreSQLで使ってみる

# はじめに
[CAP(SAP Cloud Application Programming Model)](https://cap.cloud.sap/docs/)を利用してHANA DBと連携するODataAPIを作成しました。(Java)
HANA DBはTrial環境だと気軽に利用できますが、購入して利用する場合はお高いこともあります。
HANA DBほどのスペックが必要とされない場合、ほかの選択肢としてはBTP環境で提供されるPostgreSQLになるかと思うので、
Javaで作ったCAP APIをPostgreSQLにつないでみます。

# 前提
CAP Service SDK for Javaで作成したOData APIがあることを前提としています。
【参考】
[【SAP BTP】CAP Service SDK for JavaでOData APIを作ってみる(2)](https://qiita.com/yonekura-h/items/9ce04ddbb37dc9001bb4)

# PostgreSQLのインスタンスを作る
まずはTrial環境でPostgreSQLの

元記事を表示

ぷよぷよAIをつくる授業で学んだこと

# 0. はじめに
## この記事を書いた経緯

ぷよぷよAIを作ろう!という大学の授業があったので、色々調べたり考えたりしたことを備忘録として残しておきます✍

個人的にためになったなと思う以下の2点を主に書いていきます
1. どんなアルゴリズムを実装するか
2. そのアルゴリズムを如何に効率的に実装するか(開発フロー)

## 注意点
– 教材として提供されたコードは公開できないのでJavaコードを交えての説明はないよ
– 各戦略の評価はちゃんと計測したわけじゃないのでざっくりの感覚値
– 間違いがあったら教えてほしいよ

## ぷよぷよのルール
今回の課題は授業用ということで本来のぷよぷよと若干ルールが違う
#### ぷよの色が5色
スタンダードは4色?実は4色と5色だととるべきアルゴリズムが全然変わったりする
#### 同時ターン制
本来のぷよぷよだと相手が発火し始めてからし終わるまでに結構時間があるので、その間にカウンターを組めたりする。

けど相手と同時にぷよをおいていくこのルールだと発火の際のタイムロスがない。なので、お邪魔が降るまでに自分の盤面の発火ぷよを引かなければ相

元記事を表示

SpringでNoUniqueBeanDefinitionExceptionが出たときの解決法

# 環境
– JDK 17
– Spring Boot 2.7.0

> 多少バージョンが違っていても、動作は変わらないと思います。

# 解決したい問題
`Foo` インタフェースがあって、その実装クラス(Bean)が2つあります。

“`java:Foo.java
package com.example;

public interface Foo {
public void doSomething();
}
“`

“`java:FooImpl1.java
package com.example.foo1;

import com.example.Foo;
import org.springframework.stereotype.Component;

@Component
public class FooImpl1 implements Foo {
@Override
public void doSomething() {
System.out.println(“FooImpl1”);
}
}
“`

“`java:F

元記事を表示

Spring BootでDataSourceのBeanを複数作る

# この記事について
Spring Bootでは、Auto Configurationにより `DataSource` のBeanが1つ作られます。しかし自分で明示的に `DataSource` のBeanを定義すると、Auto Configurationによって作られるはずだった `DataSource` Beanが作られなくなってしまいます。

では、どうやって `DataSource` のBeanを2つ作るかと言うと、自分で明示的に `DataSource` のBeanを2つ作ればよいのです。

方法は大きく2つです。

– 方法① `DataSource` などのサブクラスを各DB用に作る
– 方法② `@Qualifier` を利用する

方法①のみ、ソースコードは[GitHub](https://github.com/MasatoshiTada/spring-boot-multi-datasource)においてあります。

# 環境
– JDK 17
– Spring Boot 2.7.0
– spring-boot-starter-web
– spring

元記事を表示

SpringBoot(+MyBatis)を用いてLambda + APIGatewayのAPIを製造する

SpringBootをLambda関数に実装してAPIGatewayでクライアント側から呼び出すAPIを製造する機会があり、何回か障壁にぶち当たったので、簡単な手順や注意点を備忘録としてまとめておくことにしました。
今回はMyBatisをORマッパーとして採用しましたが、JPAなどでも問題なく同様の手順で製造できるかと思われます。
バックエンド中心の話になります。

今回はAWS CodeStarでLambda+SpringBoot環境を自動生成しています。
 参考URL:https://qiita.com/ogu1101/items/b30a5ccbc28085462dff

# pom.xml
Codestarで自動生成されるJavaプロジェクトを使用したため、最初から何点か依存するライブラリの記述は書かれていましたが、私の方で以下を追加しました。

#### SpringBootのバージョンについて
今回自動生成されたプロジェクトのSpringBootのバージョンが2.0.3でしたが、2.3.0までアップグレードできることを確認しました。
2.4.0以上になると、デプロイ時に失敗

元記事を表示

Java技術者から見るブルーベリー本【第2章:基本的な文法・型編】

Javaを4年間実務で取り扱った私が、「プロを目指すためのTypeScript入門」(著: @uhyo 氏)
でTypeScriptを学んだ際に感じたことを書いていきます。

Javaと比較して、どう違うのかに着目して書いています。

JavaとTypeScriptは同じ静的型付け言語ということで、共通する部分は多くありますが、細かな違いがありました。

同じようにJava技術者がTypeScriptを学ぶ際の助けになればと思います。

第1章のものも投稿しています。

https://qiita.com/fuga_else/items/4b95ba77329bdcd4edb0

# この記事の読み方

各節ごとに上段は本の内容
線を挟んで下段は私の所感になります。

# 文と式
文はセミコロンで終わる。

文には結果がなく、式には結果がある。
式が実際の操作を行う。

“` typescript
// 文 変数に文字列を代入した。という事実だけを示す
const str = “Hello” + “world!”;

// 式 文字列を結合していて、結果がある
“Hello” +

元記事を表示

1分足の4本値とチャートデータをマージするツール

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

日足の4本値とチャートデータをマージしないマージツール

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

4分チャレンジ:テキストファイルを分割してランダムアクセスする

# はじめに

前記事
1. [4分チャレンジ:タブ区切りファイルをhtmlファイルに変換する](https://qiita.com/hiuchida/items/8be2894b4f38397ba7c0)
2. [4分チャレンジ:31時(翌7時)基準のファイル分割ツール](https://qiita.com/hiuchida/items/f57268047995f2290a22)

ツールというよりサンプルですが、近い将来ツールで使うためのstaticメソッドを作るためのPGMです。

# 要件

可変長テキストファイルをランダムアクセスしたい。
固定長テキストファイルや固定長バイナリファイル(構造体)は、指定したインデックスからファイルオフセットを計算でき、シークして読めます。
可変長の場合、各行のバイト数が分からないので、各行のインデックス番号を保存する必要がある。

# staticメソッドの仕様

汎用的に使えるように以下の宣言とした。

“`java
/**
* 指定したオフセットから指定した行を読み込む。
*
* @param lr

元記事を表示

【Java】「sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target」の対処法

# まえがき
このエラーに3時間ほど時間とられたので備忘として残しておく。

# 事象
`mvn clean`実行時に以下のエラーログが出力される。
“`
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
“`
リモートリポジトリにある依存をダウンロードするときに、有効なSSL証明書がないと怒られる。

# 対処方法
SSL証明書は`$JAVA_HOME/lib/security/cacerts`に作成済だったのだが、こいつを読み取ってくれていなかったのが原因だった。読み取ってくれるように、`-Djavax.net.ssl.trustStore`オプションでキーストアを指定する。
“`
mvn clean -Djavax.net.ssl.trustStore=C:\dev\tools\openjdk11\lib\security\cacerts
“`

`.mavenrc`に以下のように記

元記事を表示

FlutterにてAndroid SDKの”Service”で1秒ごとにUIに反映させる方法について考える

# 1.はじめに
僕はFlutterを触るようになって1か月のものです。参考にならない記事を上げるなと思われるかもしれませんが、僕個人の記録として書いている部分の方が大きいのご了承ください。「こうしたら楽に実装できるよ~」とか、「こうした方がいい!」とか教えていただけると幸いです。
### 今回のゴール
AndroidのServiceと言えばバックグラウンドで動作し、ファイルのダウンロードやTimerを動かし定期的にUIに反映させたりなどそうゆう用途で用いられることが多いと思います。(これも素人目なので適切な使い方かどうかは確証がないです)それを踏まえて、今回のゴールは「Timerで1000ms毎にUIに表示している整数をカウントアップさせる」にします。
![Animation2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125465/2c98d743-e564-d8fb-b64d-b4e7e5883f6f.gif)
# 2.方法
とりあえず方法を検討してみます。Flutter初心者なので「そもそも

元記事を表示

業務未経験エンジニアが初現場を終えて。

# 自己紹介
はじめまして。
昨年飲食業界からエンジニアに転職した『ゆうき』です。
私は現在都内のSESで勤務をしており、Javaをメインに業務を行っております。
2022年1月より参画させて頂いた、初案件の現場で感じたことや学んだことについて、今回は発信させていただきたいと思います。
技術的な事よりは、気持ちの面などの事がメインの記事です。

## 質問を恐れるな
分からないことは素直に分かりません。とまず伝えましょう。
初めての現場参画で、僕は不安な気持ちがとても多く、質問する事を躊躇してしまう事が多々ありました。

 ーこんな事も分からないの?
    って思われたらどうしよう。。

ですが、いざ質問すると上長の方などは、僕が思っているよりも詳細に答えを下さいました。
もちろん現場によって、雰囲気が違ったりする事もあるでしょうが、1人で悩んでも時間の無駄なので、不安な事や、分からないことがあれば質問するようにする事が、技術や知識が乏しい僕が出来る最大限の努力だなと感じました。
一人で悩んで解決しそうかも!?みたいな時は15分など時間を決めて悩むのは有りかもしれません。

## 質

元記事を表示

Java技術者から見るブルーベリー本【第1章:イントロダクション編】

Javaを4年間実務で取り扱った私が、「プロを目指すためのTypeScript入門」(著:uhyo氏)
でTypeScriptを学んだ際に感じたことを書いていきます。

Javaと比較して、どう違うのかに着目して書いています。

JavaとTypeScriptは同じ静的型付け言語ということで、共通する部分は多くありますが、細かな違いがありました。

同じようにJava技術者がTypeScriptを学ぶ際の助けになればと思います。

# この記事の読み方

各節ごとに上段は本の内容
線を挟んで下段は私の所感になります。

# TypeScriptとは

Microsoftによって開発されているプログラミング言語。

もともとはブラウザ上で動作しWebページに動きを与えるための言語だったJavaScript(以下JS)だったが、現在ではサーバサイドなど幅広い用途に応用されている。

だが、JSは静的型付け言語ではなかった故、大規模なシステム開発には苦労が伴っていた。
それを克服するためにTypeScript(以下TS)が開発されている。

Javaなどが担っていたサーバサイドの用

元記事を表示

Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件

# この記事について
最近(5.x)のSpring Securityでは、セキュリティ設定の書き方が大幅に変わりました。その背景と、新しい書き方を紹介します。

非推奨になったものは、将来的には削除される可能性もあるため、なるべく早く新しい書き方に移行することをおすすめします。

この記事は、Spring Securityのアーキテクチャの理解(Filter Chain、 `AuthenticationManager` 、 `AccessDecisionManager` など)を前提としています。あまり詳しくない方は、まず[opengl_8080さんのブログ](https://qiita.com/opengl-8080/items/c105152c9ca48509bd0c)を読むことをおすすめします。

# 忙しい人のためのまとめ
1. `WebSecurityConfigurerAdapter` を継承せずに `SecurityFilterChain` をBean定義してセキュリティ設定を書きましょう
1. `http.authorizeRequests()` ではなく `htt

元記事を表示

EclipseでtWAS 9.0開発環境の構築

# 目的

EclipseでtWAS 9.0用のアプリケーションをテストするときには、古い(Java8で動作する)Eclipseが必要でした。その方法を記載します。

# IBM Installation Manager
IBM Installation Manager を導入します。(IBM id が必要です)

[Installation Manager and Packaging Utility download documents](https://www.ibm.com/support/pages/installation-manager-and-packaging-utility-download-documents)

導入手順や画像はここでは省略します。IBM id さえあればダウンロードできて導入できました。最新にしておきましょう。

# tWAS 9.0

IBM Installation Manager に ILANのレポジトリを追加して導入します。
ファイル > 設定 > リポジトリの追加
![image.png](https://qiita-image-st

元記事を表示

Java初心者がシングルトンとかDIとか学んでみた

# はじめに
転職先でJavaを業務で使うことになり、2週間前から本格的にJava, Spring Bootの勉強を始めました。
この土日を使ってDIやシングルトンを中心に学んだため、頭の整理も兼ねてまとめたいと思います。

# DIとは

DI (Dependency Injection / 依存性の注入)のこと。
– オブジェクト指向におけるSOLID原則の一つに依存性逆転の法則があり、それを実現する方法がDI。
– クラス間を密結合にせず、疎結合を保つことで開発における高い保守性と変更によるテストへの影響を抑えることができる。

**DIしていない例**
実行クラスが他クラスから情報を取る場合は、newすることで他クラスの情報を取得する
– 実行クラスのメソッド内で別のクラスのインスタンスをnewして生成している
– 実行クラスのメソッドの引数として他のクラスのインスタンスを使用している
“`java
public class B {
private String hoge;

public String getHoge() {
return this.hoge;

元記事を表示

マージしたチャートデータのファイル名の調整

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

【Java初心者】改良版・Commons emailで日本語添付ファイルの文字化け解消

# 改良版を作ったわけ

以前の記事[【Java初心者】Commons emailで日本語添付ファイルの文字化け解消](https://qiita.com/sev01/items/6c8ea0c1a82324341fdd)では、添付ファイルの文字化けが発生しないことを確認していたのですが、差出人やタイトルの文字化けが発生することがありました。

環境変数に頼っていたことが原因かもしれないと思いまして、JavaMailやCommons emailに備わっていたメソッドを利用する方法を試したところ、目的を達成することができました。

“`java
package mailsendtest;

import java.io.UnsupportedEncodingException;
import javax.mail.internet.MimeUtility;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.com

元記事を表示

【spring boot】PokeAPIでポケモンの種族値を取得するWebAPIを作成してみた。

ポケモンのガチ対戦をしていて、どちらの素早さが高いのか分からなくなった経験はありませんか?
そんな自分の悩みを解決すべく、PokeAPIを使用してポケモンの種族値を取得するWebAPIを作成してみました。
PokeAPIとは、ポケモンの情報を取得することが出来るAPIです。

↓↓↓↓pokeAPI↓↓↓↓
https://github.com/oscar0812/pokeapi-v2-java

分かりやすいように先に完成品をお見せ致します。
検索フォーム欄にポケモンの名前を入力すると、ポケモンの種族値を返却してくれます。
![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280983/3b97ef99-54e3-144e-22fd-cb5f6c4d179c.png)
![スクリーンショット (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280983/04307401-52a

元記事を表示

ReactNativeのMainActivity.javaとかで”class、interfaceまたはenumがありません”が出るときの対処

# 症状
MainApplication.javaとかMainActivity.javaでこんなエラーが出る
“`
…MainApplication.java:4: エラー: class、interfaceまたはenumがありません
package com.hoge.hoge;
“`
(error: class, interface, or enum expected)
# 原因
packageが先頭じゃなくなってる

# 解決
packageを先頭に移動する

“`java:MainApplication/MainActivity.java
import hoge.fuga.hoge;

package com.hoge.hoge;
import hoge.piyo.hoge;

“`

“`java:MainApplication/MainActivity.java
package com.hoge.hoge;
import hoge.fuga.hoge;
import hoge.piyo.hoge;

“`

元記事を表示

OTHERカテゴリの最新記事