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

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

Robocode Tank Royale より知的に弾を打つ(三角比)

これらの続き

https://qiita.com/JQinglong/items/7ec02a689f78abbd3324

https://qiita.com/JQinglong/items/0415d200d66c152edd10

https://qiita.com/JQinglong/items/c43b60f0efa0742eaa7b

前回の最後に、知的に弾を打つためのメソッドをCornersからパクりましたが、今回は、これを発展させます。

三角比ネタが盛り上がっているうちにここまできたかった・・・

## 問題の所在
現在、基本的には敵をスキャンできたらそこに対して弾を打っているわけですが、そこに向けて打っても、止まっている敵でない限りはそこにはもう敵はいないことが多いわけです。
これに対応していきます。

## 時間による移動距離の計算

基本情報はこちらになります。

https://robocode-dev.github.io/tank-royale/articles/physics.html#movement

まず、とっかかりとなるのは、

[distanc

元記事を表示

Selenium + ModHeader で RequestHeader を変えてみた

はじめに

Selenium と Chrome拡張ツールの ModHeader を使ってRequestHeaderの「User-Agent Client Hints」を書き換えてページアクセスする方法。

今回はモバイル判定で利用する「sec-ch-ua-mobile」を「?1」に書き換えます。

## 環境
Java8
Selenium 4
WebDriverManager

準備

事前に「chrome-modheader」をダウンロードしておきます。

https://github.com/modheader/modheader_selenium/tree/main/chrome-modheader

コード

“`java:Example.java
package example;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.openqa.selenium.WebDriver;
import org

元記事を表示

The Badass Runtime Plugin+Gradle+JPackageで自己完結型Javaアプリケーションインストーラを作る&パスも通す

# はじめに
どーもnaotikiKtです。とあるコンソールアプリにJavaを同梱して配布したくなったのでその時のハマりポイントとかを備忘録的な感じで書いておきます。

**本記事はInteliJ IDEA&Kotlinユーザーの方向けです。**
# JPackageて何?
JDK 14から含まれるようになったJavaを同梱した様々なプラットフォームのネイティブインストーラを作成できるツールです。
もとはjavafxpackager(JDK 7),javapackager(JDK 11)て名前だったらしいです。

https://docs.oracle.com/javase/jp/14/jpackage/index.html

# 環境
Windows,Linux両方のインストーラーを作りたいので両方の環境を用意する必要があります。

“`text:Windowsの環境
OS: Windows 11
JDK: Amazon Corretto Version 17.0.3 (JDK 14以上が必要)
IDE: InteliJ IDEA 2022.1.3
“`

“`text:Ubu

元記事を表示

[サーブレット&JSP]ArrayListを使って文字を表示させる

### formで入力した値をArrayListに格納して表示させる。

### form入力
![スクリーンショット 2022-06-25 16.29.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/e9c3d6fe-e681-bf11-b218-940685af9794.png)

### 入力結果
![スクリーンショット 2022-06-25 16.31.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/cea839c8-021e-c59c-c38b-2d92d2f1ee08.png)

“`java:form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>



元記事を表示

初心者による初心者のためのSpringBoot

# 環境構築
Eclipseをダウンロード
以下のURLへアクセス
URL:https://mergedoc.osdn.jp/

– Eclipseの最新版を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676412/c105bb94-9ff3-5113-8646-fe1891266a71.png)

– JavaのFull Editionをdownload
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676412/27fffb92-4a87-2007-bcd4-905c8f9715aa.png)

あとは解凍してEclipseを起動してください

:::note info
これで環境構築は完了になります!!
Spring Tool Suite (STS)などはFull Editionにすでに入っているのでDownLoadは不要です。
:::

# HelloWordを表示しよ

元記事を表示

Javaの引数と戻り値

Javaでは、ある機能を持ったメソッドがあり、そのメソッドにデータを渡すことで、メソッドの機能を利用することができます。メソッドに渡されるデータを「引数」と呼びます。詳細は以下の通りです。
# 引数とはなんぞや
引数とは、メソッドに渡すデータのことで、メソッドの後の「( )」内にある。例えば、printlnメソッドでは、以下の部分の「コンニチハ!」が引数になります。
“`java
println(“コンニチハ!”);
“`
引数には数値データ、文字データなどを用いることができ、引数の数は倍数で指定することができます。複数の引数を使用する場合は、「,」で区切られます。引数は、第1引数、第2引数、第3引数の順で呼び出されます。
“`java
メソッド名(第1引数,第2引数,第3引数,);
“`
# 戻り値とはなんぞや
メソッドに引数を渡した結果、返されるデータを戻り値と呼びます。たとえば、maxメソッドは、数値の大きさを比較して大きい方を返すメソッドです。以下の例では、maxメソッドの第1引数に「2」、第2引数に「5」が渡されています。
“`java
Math.max(2,5)

元記事を表示

【ちょっとアレンジ】Spring bootのControllerクラスで定義したパスを一覧として取得する

## やりたいこと

APIの本数が増えてきたので、実装済みのAPIのURIの一覧を出力したい

→[Spring bootのControllerクラスで定義したパスを一覧として取得する](https://qiita.com/shigeshibu44/items/886efb44c8c573c3ba6b)の内容の踏襲でほぼいけたのですが、PJの実装ルール的に少し考慮が必要な部分があったので、その部分を書き記しておきます

## アレンジした部分

クラスに@RequestMappingを付与して基幹部分のパスを、メソッドにリクエストメソッドに応じたアノテーションを付与して相対パスを定義するルールなので、以下2点実現できるように手を加えました。

* リクエストメソッドに応じたアノテーションからリクエストメソッドと相対パスを出力する
* クラスに定義された親パスとメソッドに定義された相対パスの関係性が分かるように出力する

“`参考記事のControllerクラスをループする部分改変.java
// 略
for (BeanDefinition def

元記事を表示

ArrayListで遊んでみる

“`java
package sample;

import java.util.ArrayList;

//Parsonクラス
class Parson {
private String name;

//コンストラクタ
public Parson(String name) {
super();
this.name = name;
}

//gettar
public String getName() {
return name;
}

//setter
public void setName(String name) {
this.name = name;
}
}

public class Array{
public static void main(String[] args) {

Parson p1 = new Parson(“加藤”);
Parson p2 = new Parson(“佐藤”);
Parson p3 = new Parson(“伊藤”);
Parson p4 = new Parson(“松原”);

A

元記事を表示

Jetpack Composeを現場のアプリ開発で使用してみて思ったこと

最近、Androidのアプリ開発においてJetpack Composeを使用する機会が増えました。

ということで、私が特に現場でJetpack Composeを使用してみて感じた(ている)ことを書いていこうと思います。(2022/6/24時点の感想)
知識不足で間違っている点あればご指摘ください。

# 良いと感じている点
### レイアウトの変更・管理がしやすい
– Kotlinコードでレイアウトを書いていくので、個人的にXMLベースよりコードのネスト構造が浅くなる(りやすい)傾向があります。
– Kotlinコードで管理するので、XMLファイルといった形式の異なるレイアウトファイルを管理する必要がほぼなくなります。見るのがKotlinコードに一元化されるので管理がしやすいです。
– 同じKotlinファイル内に複数のComposable定義を記述できるのでグルーピングしたい時とか便利

個人差はあるので、上記はいまいちピンと来ない方がいるかもしれませんが、XMLよりKotlinに慣れ親しんでいるエンジニアは頷けると思います。

### 状態に応じたUIの出しわけがやりやすい
その

元記事を表示

【Java, Slack】Spring で Slack メッセージ送信

# 背景
– Springプロジェクトで Slack にメッセージを送りたい(Apache Velocity テンプレートで)

# 環境
– Spring Framework 4
– slack-api-client 1.XX
– Apache Velocity 1.7
– Java 8

# 参考リンク
https://slack.com/intl/ja-jp/help/articles/215770388-API-%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E7%94%9F%E6%88%90%E3%81%A8%E5%86%8D%E7%94%9F%E6%88%90

https://slack.dev/java-slack-sdk/guides/composing-messages

# 基底クラス
– AbstractSlackService:使いたいサービスで extend して使うイメージ
“`java:AbstractSlackService.java
public abstract class AbstractSlackS

元記事を表示

SpigotプラグインにおけるTagを用いた処理の制御

## 最初に
~~今回はいつものダラダラ解説ではないです。~~

# Tagを用いて処理の実行を制御する
## Tagの操作
処理の条件にはTagを使いましょう。
裏側でファイルやデータベースを用いて判定してもいいですが、なにかと用意が面倒くさいと思います。
というわけでマインクラフトに搭載されているTagという機能を使って処理の制御をしてみましょう。

### Tagの付与
Tagの付与は簡単です。
“`
player.addScoreboardTag(“Tag名”);
“`
で付与することができます。
付与することのできるTag名には一部使うことのできない記号があるので注意しましょう。

:::note warn
マインクラフト側からでは空白、/は使用することができないのでプラグインでも同じだと思われます。
またこれら以外にも使えない文字があると思われます
:::

### Tagの取得
TagはSetに格納されているのでListのように番号を指定して取得することができません。
toArrayなどを用いれば全要素の取得をすることができます。

### Tagの存在確認
タグ名が

元記事を表示

Spigotにおいて看板を用いてプレイヤーからの入力を取得する

## 最初に
看板でプレイヤーからの入力を取得する方法を雑に書きます。

## ステップ1
今回はプレイヤーの座標に看板を設置して入力を取得していきます
“`
Location loc = player.getLocation();
Block block = loc.getBlock();
block.setType(Material.OAK_SIGN);

BlockState signState = block.getState();
Sign sign = (Sign) signState;
sign.update();
player.openSign(sign)
“`
おわりです。……

嘘です。少し解説します。
## 解説
1行目:
プレイヤーの座標(Location型)を取得

2行目:
`Location loc = player.getLocation();`で取得した座標のブロックを取得

3行目:
`Block block = loc.getBlock();`で取得したブロックをオークの看板に置き換える

4行目:
`Block block = lo

元記事を表示

SpringBoot でよく使うアノテーション

# はじめに
業務でよく使っていたアノテーションについて備忘録兼解説です。

# アノテーション
## @RestController
JSON 形式などで返却するコントローラークラスに対して付与するアノテーション。
コントローラーには、ロジックを含む処理は入れずに、サービスからレスポンスを受け取って、そのまま返却するイメージ。

“`
@RestController
public class SampleController {

 @GetMapping(“/”)
public SampleResponse findSampleResponse() {

“`
似たようなやつで、@Controller は HTML 形式のレスポンスに利用される。

## @Service
サービスクラスに付与する。「サービスクラスですよー」って宣言しているみたいな感覚で使ってた。
サービスクラスでは、値をフロントエンドで扱いやすくするために、整形して Entity クラスに詰めるみたいなことをやる。
“`
@Service
public class SampleService {

元記事を表示

JavaでSymbolブロックチェーンのトランザクションを送信する

この記事は「自分の得意なプログラミング言語でSymbolブロックチェーンを動かす方法」をJavaで実践したものです。

https://qiita.com/nem_takanobu/items/09b6b687f3cbe10af945

ほぼすべてのロジックを @Toshi_ma さん(Twitter:[toshiya_ma](https://twitter.com/toshiya_ma))に作成していただきました。ありがとうございます。

### pom.xml
“`xml


commons-codec
commons-codec
1.15

OTHERカテゴリの最新記事