JAVA関連のことを調べてみた2023年09月29日

JAVA関連のことを調べてみた2023年09月29日

javaのラムダ式を自分なりに解釈してみた

# はじめに
ラムダ式とは、java8から追加されたプログラムの記述方式のことです。その中でよくわからない部分が少しあったので自分なりに解釈してみました。

まず最初に、この手の記事を調べるときに出てくるワード「匿名クラス」「関数型インターフェース」について説明し、そのあとラムダ式の説明をします。

# 匿名クラスとは
インターフェースの実装をせずに「クラス宣言」「インスタンス生成」を行える便利なものだと解釈します。通常はインタフェースの実装を行い、メソッドを呼び出すコードを書くので、通常と比べるとはるかに楽ですが、可読性が少し下がるような気がします。

# 関数型インターフェースとは
抽象メソッドを1つだけもつインターフェースのことを指します。メソッドをインターフェースのような扱いができるので便利です。

# ラムダ式とは
関数型インターフェースを実装したインスタンスを生成する式と言え、匿名クラスを使用するより可読性が高いものになります。イメージでいうと下記の形になります。
`インターフェース 変数 = (引数) -> {処理}`

# ラムダ式の例
上記の匿名クラスや関数型インタ

元記事を表示

VSCodeでJavaのセットアップ~Windows編~

VSCodeの公式にセットアップ方法が載っていました!
https://code.visualstudio.com/docs/languages/java#_install-visual-studio-code-for-java
※英語です

私の場合、VSCodeはインストール済みなので、拡張機能とJDKのインストールのみでした。
VSCodeからインストールする場合は、まとまったパックがある。
「Install the Coding Pack for Java – Windows」というボタンからインストール可能。

1. JDKをインストール
https://www.oracle.com/java/technologies/downloads/#jdk21-windows
今回は最新版の21のWindows版をインストール
1. 「Install the Extension Pack for Java」ボタンより、拡張機能のセットを一式インストール

元記事を表示

Agora SDKでリアルタイムコミュニケーション

# Agora SDKの概要と機能

Agora SDKは、リアルタイムコミュニケーションを実現するためのプラットフォーム。SDKは、ビデオ通話、音声通話、メッセージングなどのさまざまな通信機能を提供します。以下にAgora SDKの主な機能を詳しく説明する。

1. ビデオ通話:
– ビデオキャプチャとディスプレイ: カメラや画面の共有を実現するための機能
– オーディオ/ビデオコーデック: 高品質なオーディオ/ビデオストリームのエンコードおよびデコードをサポート
– リアルタイム映像処理: ビデオフィルターや仮想的な背景などのリアルタイム映像処理を実現する機能
– レコーディングとプレイバック: ビデオ通話の録画および再生をサポート

2. 音声通話:
– 音声コーデック: 高品質な音声ストリームのエンコードおよびデコードをサポート
– ノイズおよびエコーキャンセル: 音声品質を向上させるためのノイズおよびエコーキャンセル機能
– オーディオミキシングと変換: 複数の音声ストリームをミキシングしたり、サンプルレートを変換したりする機能

3

元記事を表示

Javaで「日時のエポックからのUTCミリ秒値を取得する」の動作を確認してみた

# 概要

Javaで「日時のエポックからのUTCミリ秒値を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/calendar/index6.html

# 実装

以下のファイルを作成しました。
“`TestCalendar5.java
import java.util.Calendar;

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

Calendar calendar1 = Calendar.getInstance();

System.out.println(“日時1を2006/05/08 09:45:10に設定します”);
calendar1.clear();
calendar1.set(2006, 4, 8, 9, 45, 10);
long millis1 = calendar1.getTimeInMillis();
System.out.println(“エポ

元記事を表示

エラー対処:com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException

バージョン情報
jdk 17
LibreOffice v4.6.1
jodconverter-local v4.4.6

jodconverter-localを用いてwordファイルをpdfに変換するときに次のエラーが出ました。

“`
ERROR [2023-09-08 16:23:47,615] org.jodconverter.local.task.LocalConversionTask: Local conversion failed.
! com.sun.star.uno.RuntimeException:
! at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:173)
! at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:139)
! at com.sun.star.lib.uno.environments.remote.JobQueue.enter(Jo

元記事を表示

JavaとGridDBによるシンプルなデータ可視化ツールの作成

本記事では、主にGridDBのデータセットをWebプロジェクトで開発し、動的な可視化を実現する方法について紹介します。プロジェクトのソースコードは、GitHubにアップロードされています。

プロジェクトが実行された後、ローカルコンピュータのブラウザにアドレス http://127.0.0.1:8080 を入力します。スクリーンショットのアニメーション効果は次のとおりです。

[][1]

Technology Stack
Operating System: Ubuntu-18.04.6
Front-end: HTML, JavaScript,

元記事を表示

JavaでシンプルToDoアプリを作る

# はじめに
この記事はJavaの基礎知識を学習する目的で作成したToDoアプリに関するクラスやメソッドの解説記事になります。データベースを使用しないため、入力と出力はeclipseのコンソール上で完結しています

## プロジェクトを新規作成する

今回作成するプロジェクトの名前は`ToDoList`とします。以降の操作方法はeclipseを使用する前提で解説をしています。

新規プロジェクトを作成するウィザードを起動して、`Javaプロジェクト`を作成します

![スクリーンショット 2023-09-27 16.31.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/3056c86c-dcb3-d604-4cda-9efbe4193756.png)

## パッケージを作成する

新規作成したプロジェクトへすぐさま`クラス`を記述するJavaファイルを配置することは推奨されていないため、関連するクラスをまとめるためのフォルダ(ディレクトリ)であるパッケージを作成します。

パッケー

元記事を表示

【初心者】Java基礎 練習問題

# Q1
クラス名:自由

備考:変数は使用しないこと

内容:
以下の内容でプログラムを作成し、標準出力を行う。
私の名前は、〇〇です。(〇〇には任意の文字列を表示)
私は、〇〇歳です。(〇〇には任意の年齢を表示)

# Q2
クラス名:自由

備考:変数は使用しないこと

内容:
以下の内容でプログラムを作成し、標準出力を行う。
10進数の20を10進数を用いて表示。
10進数の20を8進数を用いて表示。
10進数の20を16進数を用いて表示。
出力文字列:
10進数を使った20の値を表示。
8進数を使った20の値を表示。
16進数を使った20の値を表示。

# Q3
クラス名:自由

備考:変数は使用しないこと

内容:
以下の内容でプログラムを作成し、標準出力を行う。
①「~~~Hello Java~~~」と出力

②右の側の各リテラルを使用して標準出力を行う。
abc = 文字列
x = 文字
111 = 数値
111.234 = 数値
777 = 文字列
3.14 = 文字列

③エスケープシーケンスを使用して「HelloJava」を
「Hello Java」と標準出

元記事を表示

Gradle x JavaをKotlinに浮気させる

こんにちは。 株式会社クアンドのhakatakinocoです。

私たちの会社では、遠隔支援で現場の判断を加速するSynQ Remote(シンクリモート)というサービスを開発しており、バックエンドをKotlinで作成しています。
いわゆるサーバーサイドKotlinです。

![synqremote_kotlin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193036/ba3e9107-53a8-fe61-3ca6-f6d50a151847.png)

JavaからIT業界に入門&修行し、JavaJavaの実を食べたJava人間になった私でもKotlinは扱いやすく、文法も簡素で可読性が高い
かつ、古くから受け継がれた大量のJavaライブラリがほぼ全て使える素敵な開発体験を得られました٩( ‘ω’ )و

そんな素敵なKotlinですが、いざサーバーサイドで使おうとすると意外と本格的な導入事例は少なく、ちょっと勿体無いな〜と思ったので `既存のJavaシステムにだって段階的にKotlinに置き換えてい

元記事を表示

Java JSON-P/JSON-BとJakarta JSON-P/JSON-B両方変換する

Javaの標準的なJSON APIはJava JSON-P/JSON-Bがありますが、新しいJakarta EEでは Jakarta JSON Processing/Jakarta JSON Bindingになっています。
両方対応するのはどうするの、ということで変換機能を作ってみました。
もともとABNF Parser から JSON Parserを練成していたので元はそこから拡張してJava EEの JSON-P APIに準拠させています。JSON-Bの方っぽい機能もそろってきます。
拡張していくと Jakarta EE対応どうするの、という壁があります。JDK 8とJDK 11でバイトコードも違うので分けないとJDK 8ないろいろも死んでしまいます。

直接変換してもいいのですが、JavaのList/Mapなど経由でいろいろ拡張できる構成にしています。
Java Object(List/Map), JSON-P (Class), JSON Processing (Class), JSONテキスト, CBOR YAMLその他もろもろの型をJDBCドライバのように拡張しながら使うこと

元記事を表示

【Java・学習ログ⑩】多態性について

教本に沿ってやってみたシリーズ、『第12章』。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## 多態性の基本
あるものをざっくり分類したり、ざっくり捉える概念。
下記のように大まかな括りとして、HeroインスタンスをCharacter型に代入できる。
但し、ヒーロー=キャラクターのように絵に描いてみて嘘にならないもの。突拍子のない代入はエラーになる。

“`java
Character c = new Hero;
“`
下記はabstractを持つCharacterクラスを継承したWizardクラスを代入しようと試みようとしている例である。抽象クラスインタフェースはインスタンス化はできないが、型として使用することは可能だ。

“`java
Character c = new Wizard();
“`
ただし、子クラス独自のフィールドを呼び出そうとするとエラーが発生する。
![スクリーンショット 2023-09-26 210645.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

Javaで「日時を比較する」の動作を確認してみた

# 概要

Javaで「日時を比較する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/calendar/index5.html

# 実装

以下のファイルを作成しました。
“`TestCalendar4.java
import java.util.Calendar;

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

Calendar calendar1 = Calendar.getInstance();

System.out.println(“日時1を2006/05/08 09:45:10に設定します”);
calendar1.set(2006, 4, 8, 9, 45, 10);

Calendar calendar2 = Calendar.getInstance();

System.out.println(“日時2を2006/05/11 12:58:15に設定します”);

元記事を表示

Internet Explorer EOL – Chrome Enterpriseユーザーにとっての意味

![My-project-12.png.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486144/b8be997c-4983-7ec0-6c97-eb11e198d689.jpeg)

2022年6月、Microsoftは長寿ブラウザであるInternet Explorerのメインストリームサポートを終了する意向であり、Windows 11上のIE11デスクトップアプリケーションは無効になる。

しかし、一部のアプリケーション、特にJavaアプレットに基づくアプリケーションは、Internet Explorerでのみ確実に動作し、Chrome Enterpriseユーザーは、[Googleのレガシーブラウザサポー(LBS)](https://support.google.com/chrome/a/answer/9270076?hl=en)を介してこのコンテンツにアクセスします。

IEの無効化は、これらのアプリケーションへのアクセスを維持する必要がある企業のワークフローに大きな変化をもたらします。こ

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part5 -非標準ライブラリの活用

# はじめに
こんにちは ◤●ㅅ●◥ノ

今回はライブラリについて学びました!

## 第5章 非標準ライブラリの活用
### 1.ライブラリとは
他人が利用することを想定した複数のクラスファイルの集まりのこと

ライブラリのようなひとまとまりの形で利用できるコンパイル済みのコード
→バイナリモジュールと呼び、ソースコードと対比して使われる

JAR…複数のファイルを1つにまとめる形式

### 2.クラスパス
クラスパス…Javaがクラスファイルをハードディスクから効率よく検索するために使うヒント

クラスパスの指定方法
1.環境変数CLASSPATHに宣言する
2.javacやjavaコマンド実行時に-cpオプションをつける
3.何も指定しないと、現在のフォルダ(.)を指定したとみなされる

### 3.Commons-lang
Commons-langとは
Javaのライブラリは多くの個人や団体が公開している
Commons-langはApacheソフトウェア財団が作っているライブラリの1つ

### 4.ログ出力ライブラリ
ログ…プログラムの実行中にファイルに書き出

元記事を表示

ABC321A~Fの解答[Java]

## はじめに
今回は参加できなかったのでコンテスト後に解いたものを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc321/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください(ちなみにE、Fはライブラリを使用していません)。
では、見ていきましょう。

## A – 321-like Checker
問題文は[こちら](https://atcoder.jp/contests/abc321/tasks/abc321_a)

下一桁を見て条件を満たしていれば$10$で割るのを繰り返すことで全体が条件を満たしているか調べました。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in

元記事を表示

Application Load Balancer 配下の SpringBoot アプリケーションを暖機運転する

# 環境
– java: 17
– spring: 6.0.11
– spring-boot: 3.1.2
– spring-boot-actuator: 3.1.2

# きっかけ
ALB (Application Load Balancer) + ECS で Java アプリケーションを公開しているとき、スケールアウトのタイミングで応答時間が一時的に劣化する問題の対応として暖機運転を実装しました。

# 方針
ヘルスチェックには spring-boot-actuator のヘルスチェックエンドポイントを使っている前提とします。

– 暖機リクエストの実行タイミング
暖機リクエストの送信は、当然ながらアプリケーションがリクエストを受け付けられる準備が整ってから始めたいので、 Spring の `ApplicationReadyEvent` を `@EventListener` でハンドリングするようにします。

– ヘルスチェックのカスタマイズ
spring-boot-actuator では、独自の `HealthIndicator` 実装を追加することでヘルスチェックの内

元記事を表示

手順書管理Webアプリ作成

# はじめに
手順書が色々散らばってしまっているため、一括管理するためのWebアプリを作成する。
手順書はマークダウン記法で記述する。
将来的にはサーバーも立ち上げたいが自分には少し難易度があり時間がかかると思うので、とりあえずそれなりに形にするためにフロントエンドで完結する形で作成する。
手順書はデータベースを活用して管理したいが、とりあえずjsonファイルにべた書きで管理する。
個人利用のアプリであり、初心者が手探りで作っているため至らない点があると思うがメモとして使っていると思ってください。

・使用するライブラリ
jquery-1.8.0.js
marked.js

# 開発
### ディレクトリ構成
“`
/procedure-site

├── /src
├── /main
├── /webapp # ウェブアプリケーションのリソース
│ ├── /static # 静的ファイル (CSS, JS, 画像など)
│ │ ├── /c

元記事を表示

Spring AI覚え書き

# この記事について

本稿は、自分自身の学習のための、下記サイトからの自由な翻案です。

https://docs.spring.io/spring-ai/reference/concepts.html

# Spring AIのコンセプト

## モデル
AI モデルモデルは、大規模なデータセットからパターンと洞察を学習し、予測、テキスト、画像、その他の出力を作成します。Spring AI の当初の焦点は、**言語入力を処理し、言語出力を提供するモデル** (手始めとして、 OpenAIとAzure OpenAI) にあります。また、Spring AI は、**エンベディングをサポート**します。

## プロンプト
プロンプトは、AI モデルが特定の出力を生成するようにガイドする言語ベースの入力のファウンデーションとして機能します。
プロンプトとして使用される言語表現は AI モデルの応答に大きな影響を与え、応答を意図した方向に導きます。

このスキルの重要性が「プロンプトエンジニアリング」の出現につながりました。特定のユースケースに対する効果的なプロンプトが特定されると、コミ

元記事を表示

簡単SpringBoot,Thymeleafでページネーションを実装

# やりたいこと
下記のようにページネーション機能を実装する。
![ページネーション1 2023-09-26 .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/e5460dbf-2184-9b6a-bb6c-4e81c407c97b.png)
![ページネーション2 103854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/9efe3c45-6cc3-42b2-c8ed-6ad6501b9628.png)

# 環境
springboot2.7.7
java 11
postgres

# 実装手順
①Entity
②Repository
③Service
④Controller
⑤Html

# ①Entity
“`java
@Entity
@Table(name = “goods”)
@Getter
@Setter
public class Goods {
@Id
@C

元記事を表示

Javaで「日時を加算/減算する」の動作を確認してみた

# 概要

Javaで「日時を加算/減算する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/calendar/index4.html

# 実装

以下のファイルを作成しました。
“`TestCalendar3.java
import java.util.Calendar;

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

Calendar calendar = Calendar.getInstance();

System.out.println(“日時を2005/12/30に設定します”);
calendar.set(2005, 11, 30);
dispCalendar(calendar);

System.out.println(“– — — — — –“);

System.out.println(“日を1ずつ増加させます”);
for (int i =

元記事を表示

OTHERカテゴリの最新記事