- 0.0.1. Gradleコマンド・build.gradle記述方法まとめ
- 0.0.2. 「マイクロサービスパターン」の復習 13章 リファクタリング
- 0.0.3. Robocode Tank Royale 盤面を動き回る
- 0.0.4. Robocode Tank Royale(Robocode が2022年に帰ってきた!)
- 0.0.5. ABC241A~Cの解答[Java]
- 0.0.6. ジャンケンの勝敗判定プログラム【Java】
- 0.0.7. さいしょにおぼえる Java の stream構文(勉強会資料)
- 0.0.8. AnnotationProcessorでプログラムの自動生成をするときに役に立つかもしれない記事
- 0.0.9. SpringBoot2.5.1以降でDBの初期化が走らない
- 0.0.10. 一次関数の傾きと切片を計算する
- 0.0.11. 4分チャレンジ:ファイル監視&差分取得のフレームワーク
- 0.0.12. Think Java 後半
- 0.0.13. ファミチキで学ぶ String 型
- 0.0.14. JUnit:例外が発生しないことを確認するテストの書き方
- 0.0.15. ZOOMの日本語音声を無料で英語に翻訳した字幕をつける。
- 0.0.16. 【SpringBoot&React】ログイン認証~ホーム画面表示
- 0.0.17. 【備忘録】Java学習2週間でInterfaceを理解するまで
- 0.0.18. 【備忘録】Processingで遊んでみた
- 1. Processingってどんなもの?
Gradleコマンド・build.gradle記述方法まとめ
# 初めに
本記事はJava使用時のGradleの使用を想定しています。ご注意ください。
[Gradleコマンド](#gradleコマンド)
[build.gradle記述方法](#buildgradle記述方法)
# Gradleコマンド
Gradleコマンドについてです。
## プロジェクトの作成
プロジェクトの作成方法
“`# プロジェクトの作成
gradle init
“`
## クリーン
クリーンの方法
“`:# クリーン
gradle build
“`
## ビルド
ビルドの方法
“`:# ビルド
gradle build
“`
## プログラムの実行
“`:# プログラムの実行
gradle run –args=”任意の引数1 任意の引数2…”
“`
以下例です。
“`:# 例
gradle run –args=”1 1″
“`
# build.gradle記述方法
build.gradleの記述方法についてです。
## Mainクラスを指定
“`:# Mainクラスを指定
application {
mainClass =
「マイクロサービスパターン」の復習 13章 リファクタリング
## 13章 マイクロサービスのリファクタリング
– ついに最終章である13章
– モノリシックアーキテクチャをマイクロサービスアーキテクチャへとリファクタリングする方法について
– 著者の主張は、最初はモノリシックで動くものをサクッとつくってから、メンテナンス性向上のためにマイクロサービスに変えるのが良いとしています
– なので必然的に、モノリシックからマイクロサービスへのリファクタリングは必須となります。## マイクロサービスへのリファクタリングの概要
– まず、システムを0から作り直す「ビッグバンリライト」は止めた方がいいとのこと
– これは元と同じ機能を再現するだけで数年かかってしまうのでビジネス的になりたたないから
– 私の実体験からいってもこれは確かにその通り。ビジネス的に新たな価値を提供することができないので、会社的にも見放されてしまうかもしれません。
– ストラングラーアプリケーション
– 元のシステムから少しずつ一部を切り出してサービス化していって、最後には全体がマイクロサービスになるというやり方。著者的にはこちらがおすすめ。
– この
Robocode Tank Royale 盤面を動き回る
こちらの続き
https://qiita.com/JQinglong/items/7ec02a689f78abbd3324
## 動きを変える
近場をうろちょろせず、混戦は避けるために
・盤面を動き回る
・敵に衝突したらそこから離れる止まっている敵にも、意外と弾が命中しない。
・せめて止まっている敵には確実に命中させるこれらをやっていきます。
## 盤面を動き回る
参考になるのは、Crazy ですね。
setForward(40000) で、とりあえず長距離動く「設定を」します。
set系を使うことで、複数の動作をパラレルにさせることができる、ということで、合わせて setTurnRight(90) も使用しています。set系のメソッドの説明を見ると、IBaseBot.go() を行うまでの設定が使われるということのようなので、下記のように書くと、ぐるぐる回り出します。左に角度を変えながら前に進むので、そんな感じになるわけです。“`java
setForward(400);
setTurnLeft(90);
Robocode Tank Royale(Robocode が2022年に帰ってきた!)
Robocode、たまに思い出してはいたのですが、もう日の目を見ることもないかなと思っていました。
しかし、ふとまた気になって、調べてみたところ、ページが更新されている!
https://robocode.sourceforge.io/
> Note: In February 2022 a new version of Robocode is introduced named Robocode Tank Royale, which is a new platform for Robocode. This new version supports the .Net 5.0 and Java/JVM platform, and the web platform in the future.
> 注:2022年2月にロボコードの新バージョンが登場し、ロボコード・タンク・ロワイヤルと名付けられました。この新バージョンは、.Net 5.0とJava/JVMプラットフォームをサポートし、将来的にはWebプラットフォームもサポートする予定です。
新しいサイトはこちら。その名も、「Roboc
ABC241A~Cの解答[Java]
## はじめに
このコンテストは私が初めてrated参加したときのコンテストです。思い出深いです。
昔書いたコードなので今の自分が書くなら~っていうコードも一緒に書きます。では、実際にコードを解説していきます。
## A – Digit Machine
問題文は[こちら](https://atcoder.jp/contests/abc241/tasks/abc241_a)初期値0として実際に試行してみれば答えが出ます。いわゆるやるだけ。
“`A.java
import java.io.*;
//値取得用クラス
class subMain{
public static int[] parsingInt(String someInt){
//取得した文字列を空白区切りで格納
String[] str = someInt.split(” “);
int[] Intel = new int[str.length];
//一つずつparseIntして格納
for(int i=0;i
ジャンケンの勝敗判定プログラム【Java】
# 1.はじめに
こんにちは、坂内太一です。今回は僕が新入社員研修で実際に出された課題の類似問題を自分自身のアウトプットも兼ねて解説していきます。
最後まで読んでもらえたら嬉しいです。# 2.問題内容
Aさん、Bさんが5回ジャンケンを行い、勝ちが2点、あいこが1点、負けが0点で最終的に誰が一番得点が多いかを判定するというものです。
非常にポピュラーな問題ですが他のプログラムと違い3すくみを判定するのに僕自身少し悩んだこともあり、解説付きのコードを書いたのでシェアしようと思います。# 3.解説入りのコード
~~~ Main.java
import java.util.Scanner;public class Main {
public static void main(String[] args) {
//2人のプレイヤーの定義
int player1 = 0;
int player2 = 0;//キーボードから入力を受けるためのscanner
Scanner scanner = new Scanner(System.in);
さいしょにおぼえる Java の stream構文(勉強会資料)
## これはなんですか
streamを知らぬ幼きものたちへのアドバイスこれさえ覚えておけばテストで100点・・はとれないけど、60点くらいはなんとかなるかもしれない。
## そもそも
Javaでfor文を使うのは、主に配列として存在する変数を参照し、加工もしくは別な結果を生成するために用いるためです。たとえばこんなかんじ。
### 1文字ずつ
“`
String str = “ABCDE”;for (i=0; i
list = List.of(‘A’, ‘B’, ‘C’, ‘D’, ‘E’); for (char c: list) {}
“`### map
“`
Map map = new HashMap() {
{
put(“key1”, “A”);
put(“key2”, “B”);
put(“key3”, “C”);
put(“key4”,
AnnotationProcessorでプログラムの自動生成をするときに役に立つかもしれない記事
## AnnotationProcessorでプログラムの自動生成
:::note warn
本記事はあまりにも情報が少ないため書いた記事です。本なら情報があると思うのですが、ネットでは見つけられませんでした。
そして、書いてる人は使うことをあきらめました。
:::プログラムを一から生成する場合こちらで紹介する方法ではなく、テンプレートなどから`JavaFileObject`を生成したほうが楽です。
## 代替手段
– リフレクションで実行時に何とかする - 動作速度は遅いですが情報が多いです。
– 部分的に`JavacParser`で作成して差し替え – 圧倒的に楽になると思います。### 環境
– JDK corretto-11
– Gradle gradle 7.4
– Intellij IDEA 2022.1## gradleの設定
`AnnotationProcessor`を作成するプロジェクトにいかを追加します。
“`gradle
dependencies {
annotationProcessor ‘com.google.auto.service:a
SpringBoot2.5.1以降でDBの初期化が走らない
こちらの記事のSpringBoot2.5.1以降の解消手順です。
https://qiita.com/gami_/items/0208a7e6d1a41b447c84
## 結論
以下を設定してください。
“`application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:./target/db/testdb
spring.datasource.username=sa
spring.datasource.password=
spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath:schema.sql
spring.sql.init.data-locations=classpath:data.sql
“`SpringBoot2.5.0以前は
“`application.properties
spring.datasource.initi
一次関数の傾きと切片を計算する
# はじめに
前記事
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)
3. [4分チャレンジ:テキストファイルを分割してランダムアクセスする](https://qiita.com/hiuchida/items/635d889056e63f14459f)もう4分で作れっこないので、思いついたことを書き残しておけば、非同期に出来てくれるいいという感じ。
# 要件
Linuxでlessでファイルを開いて大文字Fを押して、ログファイルの監視ができます。
tail -fでも同じ。
Windowsでファイル監視して差分表示するツールが欲しいというよりは、差分を1行づつ渡してくれるフレームワークが欲しい。# 仕様
ファイル監視は、むかしだと、File.lastModified
Think Java 後半
# 背景・理由
立派なプログラマーになるためにThink Javaを学びます。
#リソース
Think Java: How to Think Like a Computer Scientist
Allen B. Downey https://www.amazon.co.jp/dp/1492072508/ref=cm_sw_r_tw_dp_THGFFJFBXVVCYQ54R9ES
但し書き エクササイズ主にThink Javaの前のバージョンを使います。
https://books.trinket.io/thinkjava/
# chap 9
## 語彙
object-oriented:
object:
primitive:
immutable:
wrapper class:
parse:
empty array:
design process:
encapsulate:
generalize:## ex 9_1
省略 実際に手は動かしました。## ex 9_3
“`java
public static BigInteger pow(int x, i
ファミチキで学ぶ String 型
皆さん、こんにちは。
ゴールデン・ウィークから 28日。そして、次の祝日まで 46日の中日。いかがお過ごしでしょうか。今回は **”Java”** のお話。
Java を学習し始めた人のほとんどが躓くであろう **Java** の **String 型** に関するお話しです。
参照型でありながら、あたかも基本データ型であるかのように振る舞うことで、Java 初学者を罠に貶めてくるあいつですね。
では、はじめましょう!## :one: 基本データ型と同じように定義する場合…
まず初めに、基本データ型と同じように `String “変数名” = “値”;` として定義した場合はどうなるでしょうか?
まずはこちらをご覧ください。||
Java初心者AdventCalendar2022QiitaEngineerFesta2022JUnit:例外が発生しないことを確認するテストの書き方
# 何もしないメソッドのテスト
弊社ではJUnit5でJUnitを書いているのだが、次のような既存メソッドのテストをどうしようか迷った。(ググレカスと言われかねない)
“`java
public class HogeCheck{/**
* Api経由で何かしらの値をチェックし、trueの場合、専用Exceptionを投げる
* @param url
*/
public void hogeCheck(url){boolean checkResult = new FugaApi(url).check();
if(checkResult){
throw new HogeHugaException();
}}
}
“`個人的にvoidはあんまり好みじゃないというか、テストしにくいからできるだけ敬遠している。
返り値を作れるならそうなるようコードReviewでも指摘を入れることがよくある。しかし今回のコードはレガシーコード。つまりテストのないコード。
ここについてはまずテストを書くこ
ZOOMの日本語音声を無料で英語に翻訳した字幕をつける。
# ZOOMで日本語の音声を無料で英語に翻訳した字幕をつける。
音声の翻訳はAzureのSpeech translationの無料枠を使用します。
## 構成
“`plantuml
@startuml
actor User2
node Client {
actor User1
component Application
interface ミキサー
}
node Zoom
node AzureApplication <-- ミキサー : オーディオマイク Application <--> Azure : Speech to transrate
ミキサー — Zoom : スピーカー出力
Application –> Zoom : 字幕
User1 — Zoom
User2 — Zoom
@enduml
“`* ユーザがZoomに対していつものようにしゃべります。
* Zoomから声がスピーカーに出力されます。
* スピーカーからの出力をマイクとして音声を拾います。
* 音声をAzureの音声翻訳に送信し、翻訳したテキストとして受け取ります。
* 受
【SpringBoot&React】ログイン認証~ホーム画面表示
最近よく聞くReactを勉強して、ログイン認証~ホーム画面表示までなんとか出来たので個人的に見直すように纏めておきます。Reactは始めたばかりなので間違いもあると思います。
## はじめに
React、SpringBootの環境作成については割愛してます。
バージョンは以下の通りです。
react: 18.1.0
react-router-dom:6.3.0
axios:0.27.2react-router-dom、axiosは個別にインストールが必要です。
`npm install react-router-dom`
`npm install axios`## 仕様について
①Basic認証でログイン
②認証成功時はJSESSIONIDを発行し返却
③認証失敗時はログイン画面へリダイレクト
④ホーム画面ではヘッダーとメインコンテンツを分けて表示## 画面イメージ
### ◇ログイン画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/5a5b0277-37
【備忘録】Java学習2週間でInterfaceを理解するまで
# はじめに
この記事はプログラミングを初めて2か月たったアホの子である筆者がJava学習を開始して2週間たった時にInterfaceを理解した時の思考回路です。
基本的にドルオタ末期なのでかなりお見苦しい点も見受けられますが温かい目で見てやってください。
でも初学者の方は理解しやすい(はず)です!# そもそもInterfaceクラスとは
抽象クラス(abstractクラス)の仲間みたいなものらしいです。そもそも抽象クラスの概念自体難しいのに余計になんだこれって感じですよね…
恐らく皆さん調べた結果似たような状態になっているのではと思ってます。# 本題!この説明を見ればInterfaceが理解できる!(はず)
そもそもクラスから生成されるインスタンスは実体として扱う上での話になります。
筆者は日〇坂〇6が大好きですのでその中の推しメンである小〇菜緒さん(kosakanaクラス)をJavaで作ろうと思いました。(そもそもこの時点で正気の沙汰ではない)
この際に、小〇奈緒さんは(当たり前ですが)「人」なので、human classという人としての機能(呼吸する
【備忘録】Processingで遊んでみた
こんにちは!新人エンジニアのなっしーです。
久しぶりにProcessingで遊んだので、今回はProcessingの特徴や使い方などの概要を書いていこうと思います!
今回の記事は、ある程度プログラミング(主にJava)がわかる人向けの記事です。Processingってどんなもの?
Processingとは、Javaを単純化し、電子アートとビジュアルデザインに特化させたプログラミング言語及び統合開発環境(IDE)です。
……と言われてもイメージが湧かないと思うので、実際の画面をお見せします!
[1] IDEの画面(sketchbook)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655859/6eef4e93-f548-a800-862e-1f197a084e14.png)[2] 実行結果
※実際には小さなボールが画面上を動き回る様子が表示されています。
![image.png](https://qiita-image-store.s3.ap-nor
異なるディメンジョンを移動できるSpigotプラグインを作る
## はじめに
サラっと書きます。
Spigot API 1.18.2 のAPIを用いて開発しています。
それ以前のバージョンのAPIでの動作については保証しません。
## ワールド間(ディメンジョン間)を移動するには
ワールド間を移動するには
“`
player.teleport(Location型の引数)
“`
でできます。
ですがこれだけでは移動することはできません。
幾つかのステップを踏まねばなりません。というわけで1つずつ見ていきましょう。## ファーストステップ
今回は例としてオーバーワールドの指定座標へ移動するコードを用います。まずは移動先のワールドを読み込みましょう。
読み込まないとエラーを出して動きません。
“`
WorldCreator loadWorld = new WorldCreator(“world”);
“`
と書いてWorldCreator型の変数を定義して代入しましょう。使用するときはworldの部分をワールド名に変更してください。
(ワールド名が分からないときはワールドデータのフォルダ名を参照すると良き)## セカンドステッ
【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環境