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

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

GitHub ActionsからGitLabのMavenパッケージレジストリにDeployする方法

# この記事の概要
筆者は、HottyDBという検索エンジンとレコメンドエンジンの機能を搭載したRDBMSを個人開発しています!
そのHottyDBのα版を公開するにあたり、GitLabのパッケージレジストリを使いました。
この記事では、GitHub ActionsからGitLabのパッケージレジストリにMavenパッケージをDeployする手順を解説します。

ちなみに、過去の記事でHottyDBに関する解説もしていますので、よければそちらも参照してみてください!!

https://qiita.com/toru1055/items/0fe400989373823e9c78

# 背景
Mavenパッケージを公開したい場合、一般にはMaven Central Repositoryを使うと思います。
ただMaven Central RepositoryはJIRAチケットによる申請が必要なので、HottyDBがまだα版であることを考えると少々面倒です。

GitLabのパッケージレジストリであれば簡単にMavenパッケージの公開や削除することができるので、今回使うことにしました!

#

元記事を表示

AndroidでのJava→Kotlin移行時に起動すると異常終了するようになった場合の対処法

## Javaファイル右クリック → Convert Java File to Kotlin File

このままだと変換は無事終了するが、起動時に以下のエラーが出て異常終了してしまう。

“`
Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.xxxxx.xxxxxxx.XxxXxxxxx” on path: DexPathList[[zip file
“`

## javaディレクトリ右クリック → Convert Java File to Kotlin File

こちらだと、以下の確認ダイアログが表示される。
“`
Kotlin is not configured in the project
You will have to configure Kotlin in project before performing a conversion.
“`

“`OK, configure Kotlin in the project“`を選ぶと、“`build.gradle“`や“

元記事を表示

Classが理解できない、難しい人のために

## この記事を書いた理由
私はエンジニアの学習を始め、一通り文法を勉強しましたが
Classの意味が本当にわからなかったです。
わからない原因をずーっと考えていましたが、自分なりの答えにやっと辿り着きました。
それは『Classの概念がなぜ必要かわからない』というところでした。
## 覚えておいた方が良い前提条件
Classの説明に関してはあらゆるところで見ると思います。
よく見るのが
Classとはモノの設計書です。
Classとは概念です。
Classはインスタンスを生成してから使います、、
そしてこんな設計図をみます、、
![スクリーンショット 2022-07-15 11.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714631/a74d3795-ce77-41f6-5134-865cafda26bb.png)

こんなこと書かれてあーなるほどね。そう理解する人はごく少数だと思います

そこで、知っておくべきこととして大事なことですが
*アプリケーションは何百ものソースコードの集合

元記事を表示

JavaでSlack botをリリースするまで その2

[前回](https://qiita.com/blue_islands/items/bd16d23bb75e818cd133)、アプリの作成までを進めていきましたので、今回はアプリのリリースについてをまとめていきます。

# アプリの提出
作業を開始するには、[アプリ設定のページ](https://api.slack.com/apps) の 「Manage Distribution (配信を管理する)」 セクションをクリックします。

## アプリを他のワークスペースと共有する
この配布オプションをアクティブにすると、すべてのワークスペースでアプリをインストールできるようになり、アプリを Slack App Directory に送信する手順が表示されます。

配布を有効にする前に、以下の手順を実行してください。

### 機能を有効にする
以下の画像のように使用する機能に対して機能が有効化されている必要があります。
前回の設定が完了していれば、こちらの以下のように設定されています。
![image.png](https://qiita-image-store.s3.ap-northe

元記事を表示

Visual Studio CodeのInlay Hintsについて Java編

# 今回の事象について
Visual Studio CodeでJavaのコーディングをしてたら、println関数内に勝手に「x:」が勝手に表示されてなんだこれは?
と思ったので調べてみました。
![スクリーンショット 2022-07-14 22.34.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737484/4f85d989-dbc3-898b-b0c8-194d81b2a5b7.png)

# 調べてわかったこと
どうやらこれは、javaの拡張機能が提供してる「Inlay Hints」という機能がオンになっていて
メソッドに対して指定する引数のパラメータ名を親切に表示してくれてるみたい。
![スクリーンショット 2022-07-14 22.40.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737484/42c922e7-bd11-3606-7016-35cea7a65839.png)
上記の場合だ

元記事を表示

~今さらながらJavaで関数型プログラミングを学習してみた~(第3部)

「関数型プログラミングとJava8での取り組みと追加API説明」を中心テーマとした第1部はすでに投稿されています。
 [第1部へのリンク](https://qiita.com/greencycle/items/d864a56da30b3861fb4b)

「実際Javaシステム開発においてどの程度関数型プログラミングを取り込むべきなのか?」を中心テーマとした第2部はすでに投稿されています。
 [第2部へのリンク](https://qiita.com/greencycle/items/b476c8d2de013759e1e2)

## はじめに
第1部では関数型インターフェイス、Map、List、Streamにおける関数プログラミングのサンプルを紹介しましたが、第3部ではこの中でも把握しずらいStreamにおけるmap、flatMapとcollectメソッドを中心にしたサンプルを紹介いたします。
合わせて関数プログラミングに関連したStringメソッドや知っておくと便利なArraysとCollections、それにmapやflatMapでよく使用するCollectorsについてもサンプ

元記事を表示

ElasticsearchをソースからビルドしてIntelliJを使ってデバッグ実行する

どうも、Elasticのコンサルタントの杉森といいます。Qiitaでははじめての記事です。お手柔らかにお願いします。

この記事ではエンジニアならば誰しもがやってみようかと思っているけど面倒で後回しになっているであろう作業、つまりElasticsearchをソースからビルドしてIntelliJでデバッグする、というところを紹介したいと思います。難しいことは何もないですが、初回ビルドにはそこそこ時間かかりますので、そこはご承知ください。

特にIntelliJについてはあんまり使い慣れていない私のような人を想定した記事です。ベテランの人は暖かく見守って下さい。

## 前提

この記事の前提は以下とします。

– Macのローカルでビルド(IntelMac, macOS Montereyで確認しています)
– JavaはSDKManでインストールしたJDK17をつかう
– IntelliJ IDEA 2022.1.2 (Community Edition)
– mainブランチのHEADからビルド(執筆時点ではElasticsearchバージョン8.4)

## JDKインストール

元記事を表示

【個人開発】HottyDBのLock-freeなメトリクステーブルを紹介します!

※HottyDBは、検索エンジンとレコメンドエンジンの機能を搭載したRDBMSです!

# この記事の概要
筆者が個人開発しているHottyDBの機能の1つ 「**Lock-free** なメトリクステーブル」 について紹介したいと思います。

以前の記事でHottyDBの概要を解説しているので、そちらも是非参照してみてください!

https://qiita.com/toru1055/items/0fe400989373823e9c78

# メトリクステーブル
## メトリクステーブルとは
メトリクステーブルとは、例えば商品別のアクセス数などをカウントする際に役立つ機能です。
通常のテーブルでアクセス数などをカウントする場合、書き込み処理になるため排他ロックを取得する必要があります。排他ロックはその名の通り、その他のトランザクションの書き込みや読み込みを全て禁止します。そのためアクセス数のように、頻繁に更新が発生する処理があると全体の処理性能を大きく悪化してしまいます。

メトリクステーブルは、READ用テーブルとWRITE用テーブルを2つずつ用意し、多少の値の反映遅延を許容する

元記事を表示

簡潔なGoと簡単なJavaのどちらを選択するか

最近 Go言語を個人的に勉強しているのですが、そのときに思ったことを Java と比較しながら書いてみようと思います。

# Go言語とは

皆さん、そもそも [Go言語](https://go.dev/)って知っていますか?
Go言語はGoogleが開発したオープンソースのプログラミング言語です。「Go」や「Golang」と呼ばれます。

特徴としては、「簡潔な記述ができる」、「軽量な並列処理が可能」などがあげられます。

Go言語は色々なところで利用されており、Web だと API サーバの実装に利用されることが多くなっています。
また、クロスコンパイル(Windows/Mac/Linux 用のコンパイル)が可能であるため、CLI ツールの作成などに利用されることも多々あります。有名どころだと「[docker](https://github.com/docker/cli)」の CLI なんかが go 言語で作成されています。(先程のリンク先を見てみると、「.go」ファイルがちらほらありますね。)

# 簡潔な記述ができるとは?

元記事を表示

Windowsのファイル名の禁止文字をアンダースコアに置き換える関数

https://docs.microsoft.com/ja-jp/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#naming-conventions

「整数表現が 0 ~ 31 の範囲にある文字」に当てはまる正規表現を脳直で`\u0000-\u0031`としてしまって、半角スペースも置き換えるようになってしまった。
javaユニコードエスケープは16進数表現であることに気づき修正。

“`scala

import java.util.regex.Pattern

final val ForbiddenWindowsFilenameCharsRegexPattern = Pattern.compile(“””[<>:”/|?*\\\u0000-\u001F]”””)

def replaceForbiddenCharWithUnderscore(str: String): String =
ForbiddenWindowsFilenameCharsRegexPattern.matcher(str).replace

元記事を表示

JUnit5

テスティングフレームワーク「Junit」を統合開発環境(IDE)Eclipse※1で実行する手順を備忘録として記載させていただきます。
特徴であるラムダ式などのJava 8以降の機能を活用して実施したサンプルを記載しました。

※1 Eclipse Oxygen.1a (4.7.1a)から JUnit Platformサポートを提供

**junit5**
**https://junit.org/junit5/**

**ECLIPSE**
**https://www.eclipse.org/community/eclipse_newsletter/2017/october/article5.php**

:::note info
検証環境
**java Version: “13.0.1” 2019-10-15**
**Eclipse Version: 2021-09 (4.21.0)**
:::

## 1.Javaプロジェクトの新規作成
ファイル → 新規 → プロジェクト
![2022-07-13_00h43_10.png](https://qiita-image-store.

元記事を表示

Java PDFドキュメントの印刷方法

PDFドキュメントを印刷することは、私たちの日常生活の中で最もよく見られることの一つです。 Java言語を使用して、さまざまなシーンに簡単にプログラムでPDFファイルを印刷できます。 Spire.PDFには、プリンタ名の指定、印刷範囲の設定、両面印刷、カスタム用紙サイズ印刷など、PDFドキュメントを強力に印刷する機能があります。 この記事では、これら4つの側面からPDFドキュメントの印刷方法について説明します。
– 印刷ダイアログを使わずにデフォルト印刷機でPDFを印刷する
– 印刷ダイアログを使用してPDFドキュメントを印刷します
– 指定した用紙サイズでPDFドキュメントを印刷します
– PDFドキュメントを両面印刷する
– 指定した印刷機でPDFドキュメントのページ範囲を印刷する
## 【プログラム環境】
このテストでは、[Free Spire.PDF for Java](https://jp.e-iceblue.com/download/free-spire-pdf-for-java.html)がプログラムに導入されます。`Spire.Pdf.jar`ファイルは次のユーザーから

元記事を表示

HottyDB(検索エンジン+レコメンド+RDBMS)のレコメンド機能の使い方

# この記事の概要
HottyDB(検索エンジンとレコメンドエンジンを搭載したRDBMS)という、筆者が個人開発したソフトウェアのレコメンド機能について紹介したいと思います。

前回の記事でHottyDBの概要と検索エンジン機能について解説しているので、そちらも是非参照してみてください!

https://qiita.com/toru1055/items/0fe400989373823e9c78

# レコメンド機能
この機能では、「この商品を購入した人は、この商品も購入しています」や「この記事にイイネしている人は、この記事にもイイネしています」などのアイテムベースのレコメンデーションを実現します。 SQL LIKEなコマンドで、これらを自動的に計算する使い方を紹介します。

## 前提
説明のため、「この記事にいいねしている人は、この記事にもいいねしています」というアイテムベースのレコメンデーションを実現するための例を紹介したいと思います。

事前に、下記のような「いいね管理テーブル(`likes`)」という「どのユーザーがどの記事にいいねしたか?」を管理するテーブルが作成されている

元記事を表示

LINE WORKS Bot メッセージの送信 Java サンプルコード

# Bot – メッセージの送信

Bot からのメッセージ送信方法は、ユーザー指定とトークルーム指定の2つがあります。
– [メッセージの送信 – ユーザー指定](https://developers.worksmobile.com/jp/reference/bot-user-message-send?lang=ja)
POST/bots/{botId}/users/{userId}/messages

– [メッセージの送信 – トークルーム指定](https://developers.worksmobile.com/jp/reference/bot-channel-message-send?lang=ja)
POST/bots/{botId}/channels/{channelId}/messages

グループや組織のトークルームにメッセージを送信するにはトークルーム指定を使用します。

## Java Sample Code

標準ライブラリを使用したサンプルコードです。下記はユーザー指定でのメッセージ送信です。
`ApiAuthInfo`, `BotMessageSend`

元記事を表示

Eclipseのコンソールフォント変更

# この記事で分かること
– Eclipseのコンソールのフォントサイズ変更

# 手順
1. ウィンドウ(W)をクリック
2. 設定(P)
3. 一般> 外観 > 色とフォント > デバッグ
4. コンソール・フォント(デフォルト値のオーバーライド:テキスト,フォント)
5. 適用して閉じる

## 感想
– コンソールだから 一般> 外観 > 色とフォント > コンソールかと思ったら、
違ったのでメモ
– エディタのほうは検索でもよく出てくるがコンソールは見つからなかった

元記事を表示

More about Java Serialization

# About Serialization interface

There is a brief introduction on [baeldung](https://www.baeldung.com/java-serialization) to discuss on Serialization interface. Which includes

1. The fact that **all non static fields** of serializable class must be serializable
1. How to save/load object instance
1. Define custom steps on save/load object instance
1. The function of field “serialVersionUID”
1. The function of keyword “transient”

# About writeReplace() and readResolve() function

## Example
Ple

元記事を表示

可変長引数にリストを渡すときの罠

# なにこれ?
Javaではメソッド定義で可変長引数を設定できますが、その引数にリストを渡すときは注意しないといけないよという話です。

# そもそも可変長引数とは?
メソッドの引数として個数が任意のものです。
例えばString.formatでは以下のように第1引数に書式文字列、第2引数に書式指示子(%s, %dとか)によって参照される引数を渡しますが、この第2引数は要素数が可変です。
“`java
public static String format(String format, Object… args)
“`
このため、以下のように第2引数以降は好きな数だけ引数を渡せます。
“`java:sample.java
public class Main {
public static void main(String[] args) {
System.out.println(String.format(“メッセージです”));

System.out.println(String.format(“%s宛のメッセージです

元記事を表示

Java on Azure 実践開発【App Service デプロイ用スクリプトを利用したサーバーサイドビルド】

## はじめに

ポリシー上、GitHubを使えない企業様は多いのではないでしょうか。また、ソースコードを外部に配置することになんとなく嫌な気持ちになるエンジニアの方もいらっしゃるのではないでしょうか。
かといって、ローカルでビルドサーバーをもつのも、管理が大変ですよね。「App Service をホストしておくだけで、デプロイまで完結できればいいのに」なんて思っている方も少なくないのではないでしょうか。

そんな皆様に、本記事では、App Service をホストしておくだけで、デプロイまで完結させる方法をご紹介します。

## App Service

Azure App Service とは、Web アプリケーションやREST API、モバイルバックエンドをホストするための PaaS サービスです。

公式サイト: 『[App Service](https://azure.microsoft.com/ja-jp/services/app-service/)』

## App Service へのデプロイ方法

Azure App Service には、色々なデプロイ方法があります

元記事を表示

Springboot csvファイル出力 (単体テスト有り)

# 概要
SpringBootでcsvファイルを出力します。
csv出力機能はjackson-dataformats-textというライブラリを使います。
テストはJunit5とMockitoを使います。

# 成果物
ボタンを押すとcsvファイルがダウンロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/1b04ca0b-fc7d-cb9f-2329-3f44171d280c.png)

csvの中身
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/f6f579d8-2029-1080-14c0-b9d1c4b4227b.png)

# 動作環境
OS:Windows10
IDE:IntelliJ Community or CodeSpace
Javaバージョン:11(pom.xmlでバージョン変えればok、17は確認済み)
Spring bo

元記事を表示

ABC259A~Dの解答[Java]

## はじめに
今回はA~Cがコンテスト中に解けて、コンテスト後にDも解けたのでDまで解説しようと思います。
なお、ライブラリはABC258のものと同じですのでメソッドの中身が気になる場合は258の記事をご参照ください。

では、解説していきます。

## A – Growth Record
問題文は[こちら](https://atcoder.jp/contests/abc259/tasks/abc259_a)

文章、制約を読み込んでみましょう。

「高橋君はN歳になった」と書いてあり、その時の身長はT[cm]だと記述してあります。
また、それ以下の文章を要約すると「0~X歳まで身長がD[cm]ずつ伸び続け、それ以降はずっと変化していない」ということを言っています。

ここで制約に着目すると、MMならX

元記事を表示

OTHERカテゴリの最新記事