JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Advent of Codeのすすめ

## AoCはいいぞ
クリスマスも近づいてきていますが、皆様いかがお過ごしでしょうか。
主に技術系の界隈では、「アドベントカレンダー」として、12月のはじめからクリスマスまで、毎日記事が投稿されるといった風習[^1]がありますが、海外で有名な、**Advent of Code**と呼ばれるイベントをご存知でしょうか。

[Advent of Code](https://adventofcode.com/) (以下AoC)は、12月1日から25日まで、**毎日プログラミングの問題が出題され、それを解いていく**というイベントです。必ず1から順番に解く必要がなく、**自分の好きなタイミングで、好きな問題にチャレンジすることができます** (過去の年の問題にも取り組めます!)

上のページにアクセスして、GitHubやGoogleでサインインすることで、問題に取り組むことができます。

日本ではあまり有名ではありませんが、海外ではSNSなどで毎年話題になっていて、私も去年から、知り合いの海外のプログラマに勧められて始めました。今ではすっかり夢中になっているので、今回はAoCについて、実際に問

元記事を表示

Web 開発再入門#1 ― フォルダー構成

Web 開発再入門#1 ― フォルダー構成

# はじめに
たくさんのファイルを扱っていくことになること、また、今後、他の開発(Python とか)もやることになるので、ある程度、フォルダー構成をきれいに設計することにしました。
きれいな構成にしておくことで、バックアップとかでも便利になるかなと思います。
ただし、フォルダー構成は完璧ではなく、手抜きをしているところが多々あります。技術を速習することが目的でしたので…。

# 基本的な考え
とにかく簡単に。
・ インストーラーがあれば、インストーラーを利用する。
・ インストーラーによるインストール物は、基本的に C ドライブに置く。
・ 開発からリリースに関するものは、全て D ドライブ上に置く。

# フォルダー構成
C:
├ Programs
│ └ pleiades-yyyy-mm
└ Program Files
    ├ MySQL
    │  ├ MySQL Server 8.1
  &n

元記事を表示

MapBoxMapをAndroid、JAVAのみで使ってマーカーで詰まった話

MapBoxMapは便利な地図APIです。

https://qiita.com/ppt_msdg_maas/items/c35c07ec2502e9a2de12

↑MapBoxMapの概要はこれ見てください
GoogleMap APIより体感お手軽に使えるしなんかマップの見た目とかかなりカスタマイズ効くので個人的には特に理由がなければ埋め込みのMapはこれを使うのが良いと思う。

## 記事の内容
MapBoxMapのドキュメントはほぼKotlinで書かれてる。
Kotlinはとても強い言語なのでやはり特に理由がなければJavaよりこちらを使うべきだが、なんかの理由でJavaでAndroidアプリを作らなければならない場合があった場合、公式ドキュメントに書かれているメソッドとかクラスとかが一部うまく動かないので、主に詰まったところをこの記事に書いていく。

## マーカーを打つ
公式ドキュメント:

https://docs.mapbox.com/android/maps/guides/annotations/annotations/

ここにはmapboxmapでマーカーを打つ方

元記事を表示

Spring Bootでエクセルファイルをアップロードして読み込む

**この記事は[フリュー Advent Calendar 2023](“https://qiita.com/advent-calendar/2023/furyu”)の10日目の記事となります。**
# はじめに
社内で利用するウェブアプリの機能追加として、エクセルファイルを読み込ませて一括処理を行いたいという要望があったので、実装しました。
オンメモリからエクセルファイルを読み込む方法がレアケースなのか、意外にも他に記事として見かけませんでしたので、私が得た情報をアップロードからの流れに沿ってまとめておこうと思います。

# ファイルをアップロードする
フロントエンド、バックエンドそれぞれ説明します。
記載しているソースコードに最低限としており、エラー処理などは入っていませんので実際に利用する際には必要に応じてチェックなど行ってください。

## 環境
以下の環境で動作を確認しています。

| ライブラリ | バージョン |
| —- | —- |
| Spring Boot | 3.2.0 |
| Open JDK | 21 |
| JQuery | 3.7.1 |
| A

元記事を表示

【初心者向け】SPRINGでCSVデータをDBに登録してみた

# はじめに
押忍!
今日は業務用アプリとかでよく見る
CSVデータをアップロードしてDBに登録する機能をSpringを使って作成してみました!

# そもそもCSVってなんぞ
私は業界に入るまで見たことも触ったこともなかったんで一応記載しておきます。
Comma Separated Valuesの略称で
“`:CSVsample
従業員番号,氏名,部署
A123456789,総務太郎,総務部
B223456789,営業花子,営業部
“`
こんな感じでカンマごとに値を区切ったデータの事です。
ファイル形式は .csv になります。

ちなみに1行目は項目名を記載したヘッダーレコードなのですが、
物によってあったりなかったりします。

今回はある想定で作成をしたので
DBに登録するのは2行目以降ってことですね。

# やりたいこと
画面からCSVを選択してアップロード
アップロードされたCSVの内容をDBに登録

# 作ってみた
まずは画面から
csvに下記のフォームを追加します。

“`HTML

thisには2つの顔がある

thisには2つの用途があると学んだので備忘のため残す。

1つめ
コンストラクタはオーバーロードして複数定義できる。
オーバーロードされたコンストラクタから別のコンストラクタを呼び出すにはthisを使う。

“`java
public class Sample{
public Sample(){
this(null,0);//この引数がオーバーロードされたコンストラクタに渡される。
//thisの前には何も記述しちゃいけない

}
public Sample(String str, int num){
System.out.println(“OK”);
}
}
“`
2つめ
インスタンスそのものを表す参照に入れる特別な変数

“`java
public class Sample{

public String str;
public int num;

public Sample(String str,int num){
this.str = str; //生成したインスタンスのstrに値を入れてる
this.num =

元記事を表示

日本語プログラミング言語 プロデル Java C# で整数カウントアップ実行時間を仲良く競う(プロデル コンパイル済で再計測)

# はじめに
日本語プログラミング言語 プロデル とJava C# とで整数カウントアップの反復実行時間を仲良く競い合わせてみます。いったん素の処理でどんなものなのかなと計測したプロデルがC#と比べて著しく遅いという結果に。実はそれはランタイム版というインタプリタモードで実行していたことが判明。ということでコンパイル済という中間コードでの実行を再計測してみます。

https://qiita.com/advent-calendar/2023/produire

## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
Produire Version 2.0.1197 for Windows
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz

## この記事内容の保証
※この記事の実行結果は参考情報です。実行環境に大きく依存します。

元記事を表示

GCP Contact Center AI機能と実装

# GCPのContact Center AIの概要と機能

## 概要
GCP(Google Cloud Platform)のContact Center AIは人工知能(AI)と自然言語処理(NLP)を活用したクラウドベースのコンタクトセンターソリューションです。このソリューションは、企業が顧客との対話を自動化し、効率的かつパーソナライズされたカスタマーエクスペリエンスを提供することを支援します。

## 機能
1. 対話フローマネージャー:GCPのContact Center AIは、ビジュアルなエディターやAPIを通じて対話フローの作成と管理を提供します。顧客との対話の流れや質問に基づいて対話フローを定義し、顧客が問題を解決するための情報を収集します。

2. 自然言語処理(NLP):Contact Center AIは、顧客の発言やテキストメッセージを解釈し、意図やエンティティを抽出する自然言語処理を提供します。これにより、顧客の要求や問題を正確に理解し、適切な返答やアクションを提供できます。

3. オムニチャネルサポート:GCPのContact Center AIは、電話

元記事を表示

GCP Duet AI for Google Cloud機能と実装

## GCPのDuet AI for Google Cloudの概要

GCPのDuet AI for Google Cloudは、Google Cloud上で提供されるAIを活用したデュエット型のサービスです。ユーザーは、自身のアプリケーションにDuet AIを組み込むことで、音声やテキストなどの入力に対して自然な対話応答を行うAIチャットボットを作成することができます。

## 機能

Duet AI for Google Cloudには以下のような機能が備わっています。

1. デュエット型AI: Duet AIは、対話の流れを理解し、質問に応じた自然な回答を生成することができます。AIモデルは、大量のデータを学習しており、高い応答品質を実現しています。

2. マルチ言語対応: Duet AIは、複数の言語に対応しています。ユーザーは異なる言語での対話インターフェースを簡単に作成することができます。

3. カスタムトレーニング: ユーザーは、独自のデータセットを使用してDuet AIをカスタムトレーニングすることができます。これにより、特定のドメインや業務に適したAIモデルを

元記事を表示

【精選10問】B – 81を解いた

# 問題
https://atcoder.jp/contests/abc144/tasks/abc144_b

# メモ
九九のよくあるループに条件判定を組み込んだ。

# 回答
~~~java:Main.java
import java.util.Scanner;

public class Main{

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
boolean flg = false;

for (int i=1;i<10;i++) { if (flg) { break; } for (int j=1;j<10;j++) { if (N==i*j) { flg

元記事を表示

DreamServiceでエオルゼア時計スクリーンセーバーを作る

# はじめに
この話は『 [ThinkSmart View for Zoom](https://psref.lenovo.com/product/thinksmart/thinksmart_view_for_zoom) 』という製品の新古品を[結構安いお店](https://iosys.co.jp/)で買ったところから始まります。
とりあえずROMイメージをごにょごにょして(保障対象外です)APKのインストールができるようになりましたが、何に使いましょうか…。
そうだね、エオルゼア時計だね!(お約束)
せっかくなのでスクリーンセーバー化して、いつでも見れるようにしましょう。

# コード

アドベントカレンダー進行というわけで、ガシガシとコーディングしていきましょう。

## レイアウトXML

簡易的な割に長いので折りたたんでいます

“`xml:daydream.xml

【Java】var変数とのうまい付き合い方

# var 変数とは
var 変数とはJava11以降で使用が可能となった、いろいろな型を代用する変数のことである。
例えば、

“`
String str=”test”;
“`

とJava10以前であれば、記載する必要があったが、Java11以降であれば、下記の書き方も出来るようになった。

“`
var str=”test”;
“`

# 問題点
上記のように明らかに右側の形式が明確な場合は問題ない。
ただし、他のメソッドからの戻り値の値をセットする場合などではちょっとややこしいことにもなる。

“`

pubic static void main(){

var hogehoge=getStr();

}

pubic String getStr(){

String str=””;
//doSomething

return str;
}

“`
この時点でgetStrメソッドの戻り値ってどんな型がどうか分からない。
確かに右側のメソッドでは必ずString型で返しているが、記述的に問題はなく、コンパイルも通るわけではあるが。

# JavaDo

元記事を表示

GCP Document AI機能と実装

### GCPのDocument AIの概要

GCP(Google Cloud Platform)のDocument AI(Artificial Intelligence)は、文書処理にAI技術を利用するためのクラウドサービスです。Document AIは、自然言語処理や機械学習などの先進的な技術を活用することで、大量の文書を自動的に処理・分析することができます。主な機能としては、文書のOCR(光学式文字認識)、テキスト抽出、情報の分類、自動要約、機密情報の検出などがあります。

### Document AIの機能

1. OCR(Optical Character Recognition): Document AIは、画像やスキャンされた文書からテキストを抽出するOCR機能を提供します。複数の言語に対応しており、高い精度で文字を認識できます。

2. テキスト抽出: Document AIは、文書内の特定の情報を抽出する機能も備えています。例えば、契約書からの特定の項目や注文書からの商品情報などを自動的に抽出することができます。

3. 情報の分類: Document AIは、文

元記事を表示

Web 開発再入門 #0

Web 開発再入門 #0

# はじめに

2000年から 8年間ほど、仕事で Web 開発(C++ の CGI、Perl の CGI、Java、PHP)をしていました。その時は自分でソースコードも作成していました。
その後も Web 開発・運用に関わってきたものの、自分でソースコードを作成することはありませんでした。
今回、Web 開発の新技術を理解(特に、シングル・ページ・アプリケーション技術を習得)すべく、久しぶりに Web 開発(ソースコードの作成)を行ってみました。

開発する際に多いに参考にさせていただいた Qiita に、その開発の記録を書き留めておこうと考えました。
また、そのうち GitHub にソースコードを置きたいとも考えています(って、どなたにソースコードを見ていただけるのかは分かりませんが…)。
ただし、ソースコードは完璧ではなく、手抜きをしているところが多々あります。技術を速習することが目的でしたので…。

## Web システム名称
fmockup (Mock-up for Business System Demonstration and Dev

元記事を表示

Spring BootでSwingアプリケーションを動かす

Spring BootでSwingアプリケーションを動かす方法を示します。

まずmainメソッドは以下の通りになります。Headlessをfalseにすることが重要です。

“`HelloWorldApplication.java
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldApplication {

public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(HelloWorldApplication.class);
springApplication.setHeadless(false);
sp

元記事を表示

うるう年の一年前を取得すると…

## 冒頭

現場のPJでの詳細設計にて以下のような記載をしました。
「○○日より1年前の日付を取得する。」
特定の日付を基準にして、その前後の日付を取得するというよくある処理だと思うのですが
レビューにて「うるう年の一年前の日付を取得した場合どうなりますか?」と質問があり、私もふと疑問に思いました。

「うるう年の一年前の日付を取得したら、前年の3月1日なのか?それとも2月28日なのか?」

今回の記事はそんな疑問から始まった記事であり、実際にいくつかの言語、DBで試してみた結果を書いていきたいと思います。

## Javaの場合

Javaにて日付の計算を行う場合、Calendarクラスを使用します。Caleandarクラスのインスタンスを生成し、生成したインスタンスのsetTimeメソッドの引数にDate型を指定することで日時の設定ができます。そしてaddメソッドにて第一引数にCalendar.YEAR、第二引数にint型(加算の場合は正の数、減算の場合は負の数)を指定することで日付の計算が可能となります。
以下がサンプルコードになります。
“`java:main.java
i

元記事を表示

未経験エンジニアがJavaSilverを取得した話

# はじめに

はじめまして、Lincraftの酒井です。
アドベントカレンダー8日目の記事を担当します。
今回、会社でアドベントカレンダーに参加することになり、こうして1つ記事を書かせていただくことになりました。
僕自身、会社に入社して1年半ほど経ちましたが、まだまだ実力不足でわからないことだらけです。
他の社員のように技術に関してかっこよく書きたいのですが書けません。
そこで今回は先日自身のスキルアップのために取得した”JavaSilver”の合格体験記のようなものを書けたらと思います。
暖かい目で見ていただけましたら幸いです。

# JavaSilverとは

[Oracle公式](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html)より抜粋

試験名:Java SE 11 Programmer I
受験料(税込):37,730 円
出題形式:選択問題
試験時間:180 分
出題数:80 問
合格ライン:63 %

Javaアプリケーション開発に必要とされる基本的なプログラミン

元記事を表示

Mapper XMLの内容紹介

## 0.前置き
本日は私がDFのアドベントカレンダーの8日目を担当いたします。
少し思いを書きますが、私はこの間31歳になり、IT業界に入っておよそ10年くらいです。
20代の週末は結構な頻度で資格勉強や目標達成のために、PCと参考書持参で、カフェやファミレスに通いつづけ、周りの他業種の友人が人生をステップアップし続けているのを横目で見ていて、趣味の時間と仕事の忙しさと将来のことのワークライフバランスに苦しみ続けた10年でした。

そんな私ですが、私ごとですが本日、12/8に結婚しました。
(公開時点は7:00なので本日します!)

そのため、今日にアドベントカレンダーを引き受けました笑
これからは家庭と仕事をうまく両立し、楽しい家庭を気づいていきたいと思っています。

ではJava開発で使用したMapper XMLについて紹介いたします。

## 1.目的
以前、紹介した以下の記事、
「MyBatisGeneratorを用いて、Model・Mapperの作成」

で作成した、Ma

元記事を表示

FUNCTIONのリターンの桁精度が取得できない件と対策方法【PostgreSQL、JDBC】

## 概要
JDBC(Java)から検索結果のメタ情報を取得する場合、ResultSetMetaDataを使用します。
検索結果のカラムの桁精度は、ResultSetMetaData#getScale()で取得することができます([サンプルコード](#補足jdbcで型精度情報を取得するサンプル))。

しかし、以下の両方の条件に当てはまる場合に取得できる桁精度の値が、データ型によって固定された値になってしまいます(例:timestamp型なら6、numeric型なら0 など)。
– データベースがPostgreSQLである。
– SELECT句で取得する値がFUNCTIONの戻り値である。

この記事では、FUNCTIONの戻り値の桁精度をJDBCで取得するための方法を紹介します。

## 経緯

弊社製品[^1]は、データベースに長らくOracleを使用しています。
また、2020年にリリースされたバージョンから、Oracleに加えてPostgreSQLも使用できるように改善しました。

弊社製品は、SQL実行などのDBアクセスに関する処理を、自社開発しているフレームワークで実装して

元記事を表示

Bungeecord で接続したサーバーに存在するプレイヤーを他のサーバーにテレポートさせる

# はじめに
Bukkit プラグインから Bungeecord で管理しているサーバーに接続したプレイヤーを他のサーバーにテレポートさせる方法について。

# 準備
他のサーバーにテレポートさせるにはサーバーに BungeeCord plugin チャンネルを登録する必要があるので、`onEnable` メソッドに登録するコードを含めておきましょう。

“`java
@Override
public void onEnable() {
this.getServer().getMessenger().registerOutgoingPluginChannel(this, “BungeeCord”);
}
“`

これにより、Bukkit プラグインから BungeeCord に文字列を送信する準備が整いました。

# 送信する文字列の準備
登録したチャンネルに命令を送り込むには、文字列を Byte 配列に変換する必要があります。
Spigot のリファレンスには Google Guava の `ByteArrayDataoutput`, `DataInputStream`

元記事を表示

OTHERカテゴリの最新記事