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

JAVA関連のことを調べてみた2022年01月15日
目次

Webで使えるJavaのUIフレームワークのVaadinをさわってみた

## モチベーション(動機)
この記事の執筆に至る経緯の発端は、Apache Wicket製プロジェクトを新システムに移行するのにどうするかという課題を筆者が持つ所以である。筆者は十数年Javaをメインにしている。最近はニューラルネットや機械学習でpythonをさわることが多くなっている。Webアプリを作るといえばReactやらVueやらでてくるのでReactを勉強しているがTypeScriptの型のサポート具合がどうにもしっくりこないやらバージョンアップのたびにばっさりと下位互換性をきりすてる具合にはついていけるかどうか一抹の不安が拭えないという印象がある。自身のできないことをできるようにすることは大事であるが、自身の強みを生かして伸ばすことも同様に大事だと気づいた。初心に立ち返ってJavaでがんばるには最近はどうしたらいいのだろうということで筆をとった次第である。

## Vaadinとは
JavaでWebのUIを作ることができるフレームワーク。Pure Javaで書けそう。同類としてはApache Wicket。最近はFlowとFusionという仕組みを用意してPure Java

元記事を表示

Javaを通してPDFタイル画像の背景(透かし)を設定する方法

##概要と環境への準備
この記事では、PDFライブラリの無料バージョン(Java用のFree Spire.PDFを使用して画像をロードし、タイル画像の透かしとしても使用できるPDFタイル画像の背景を設定する)の効果を紹介します。コードを編集する前に、 jarファイルをインポートする必要があります。2つのタイプがあります。メソッドはオプションでインポートされます。

1.手動でのダウンロードとインポート:公式Webサイトにアクセスしてjarパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/pdf-for-java-free.html)**し、解凍して、libフォルダー内のSpire.Pdf.jarファイルをJavaプログラムにインポートできます。

2. Mavenリポジトリーのインポート:Mavenプロジェクトを作成することにより、pom.xmlファイルでMavenリポジトリー・パスを構成し、次のようにFree Spire.PDF for JavaのMaven依存関係を指定します。

元記事を表示

Intellijで@slf4jでログ出力しようとするとcannot find symbol logのエラーが出る

## 概要
IntellijでSpring Bootで@slf4jを使って `log.debug(“Sample”)` のようにログを出力しようとすると、 `cannot find symbol log` というエラーが発生し、Compileが失敗する。その対処方法。

## Versions
– Intellij Ultimate 2021.3.1
– Spring Boot 2.5.6

## Enable annotaion processing
Preference > Build, Excecution, Deployment > Compiler > Annotation Processing
「Enable annotaion processing」にチェックを入れる。
![Screen Shot 2022-01-14 at 13.32.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/87183f1b-3d8c-1e56-e7e7-f52f9d7697b3.png)

#

元記事を表示

C++,C#のコメントアウトテクニック

# 概要
下記のような記載が出来る言語で使えるコメントアウトのTips

[使える言語の参照](https://qiita.com/power3812/items/d8fc76f551970085e189)

“`main.cpp
// 1行コメント
/*
複数行コメント
複数行コメント
*/
“`

# 内容
複数行コメントを1文字で切り替える
先頭の**スラッシュ(/)**を消すと切り替えれる

“`main.cpp
//*
現在の
複数行コメントは
コメントアウトされない
//*/

/*
現在の
複数行コメントは
コメントアウトされる
//*/
“`

機能の切り替えを1文字で切り替える
上記のIF版で
先頭の**スラッシュ(/)**を消すと切り替えれる

“`main.cpp
//*
Active Block
/*/
Disable Block
//*/

/*
Disable Block
/*/
Active Block
//*/
“`

# まとめ
C++er には多少有名なのでN番煎じではあるもののいろいろな言語で使えるので書いてみました。

C++では#i

元記事を表示

assertEqualsやassert_equalの引数はなぜ expected, actual の順なのか、調べてみた

## はじめに

xUnit系のテスティングフレームワークでは、2つの値が等しいことを検証するメソッド(`assertEquals`や`assert_equal`など)の引数が expected, actual(期待する値、実際の値)の順に並びます。

“`java
// Java (JUnit)
assertEquals(2, calculator.add(1, 1));
“`

“`ruby
# Ruby (minitest または test-unit)
assert_equal(2, calculator.add(1, 1))
“`

しかし、この引数の順番は直感に反するので、逆に書きたい、と思う人も中にはおられるようです(というか、僕も昔そう思っていました)。

“`java
// actual、expectedの順がいい!
assertEquals(calculator.add(1, 1), 2);
“`

“`ruby
# actual、expectedの順がいい!
assert_equal(calculator.add(1, 1), 2)
“`

元記事を表示

Effective Java第3版 項目26 p120に記述されているコードスニペットを完成させてみた。

 [Effective Java](https://www.maruzen-publishing.co.jp/item/?book_no=303408)を読んて勉強してみようと思いましたが私にとっては難しいものでした。そこでじっくりとコードを打ち込んで理解しようと思いましたがコードが断片的であり、すんなり理解できなかったので、コードの省略部分を想像に任せ動くようにして、理解を深めようと思います。
 本の1ページ目から始めればいいのですが、勉強会に途中から参加することになり、項目26から始めます。またこの記事は、記述されていない省略されたコードを補完することが目的で、何か技術的な説明をするのが目的なので、本を持っていないと理解できないことが多くあると思います。

#1.本記事の対象の項目とページ
第5章 ジェネリックス 項目26 原型を使わない p120

#2.コードスニペットを動くように補完したコード
 p120上段部分で記述されている「やってはいけないコード」のスニペットを以下のとおり書き加えて、本書に書かれているエラーを吐き出すことができるようにしました。

 次のコードは、m

元記事を表示

WebViewで基本認証させる際の注意点


## 最初に結論

AndroidアプリのWebViewで基本認証させようと思って検索するとよく見かけるサンプルコードについて、これではコンテンツに埋め込まれている外部サイトのオブジェクト(画像とかロギングツールとか広告オブジェクトとか)へ認証情報を流してしまうかもしれないので、注意が必要。
つまり、**認証情報を提示するホスト/URLを、きちんと制限しましょう。**という至極当然の結論。


## よく見るサンプルコード

“`java
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
handler.proceed(“ユーザ名”, “パスワード”);
}
});
“`

つまり、WebViewClientクラスの「onReceivedHttpAuthRequest」をオーバーライドして

元記事を表示

JavaでとりあえずWeb APIを叩く方法

## JavaでAPIを叩く方法でつまづいたので書き記す
とりあえず公開されているAPIを叩きたい人向け
もっといい方法ありそうですが書いておきます

## importするライブラリ
“`java
import java.net.URL;
import java.io.*;
“`

## コード
“`java
final String endpoint = “任意のURL”;

                // ここではkeyとidのパラメータが必要な場合を書きます。必要ない人は飛ばしてください。
final String key = “パラメータ必要な人は”;
final String Id = “任意で”;

                // パラメータが複数ある人はidのように&で繋げてください。
String url = endpoint + “?key=” + key + “&id=” + Id;
URL obj = new URL(url);
InputStrea

元記事を表示

初めてのjda-utilties (JavaのDiscordBot)

使い方・初めてではまったことを書いていきます。
jda初心者なのでミスがあるかもしれないです。

# appとbotの作成

まずDiscord Developer Portalに行きます。

> https://discordapp.com/developers/applications/

1. NewApplicationを押す
1. 名前の入力
1. create
1. ここで画像とかを設定できます
1. 左のメニューからbotを選択します
1. AddBotを押す

これでbotができました。

### botの招待urlの取得

1. 左のメニューからOAuth2 > URL Generatorを選択します
1. botを選択し、権限も設定します。
1. Copyでurlをコピーできます。

### tokenの取得

1. 左のメニューのbotを選択します。
1. アイコンの右にあるTOKENの下のCopyでコピーできます。

### ownerIdの取得

1. botのオーナーでログインします。
1. 設定を開き詳細設定を開きます。
1. 開発者モードをオンにします。

元記事を表示

JavaのHttpClientで、APIのレスポンスボディを自作クラスのインスタンスにする方法

# 以下のAPIのレスポンスボディを扱いやすくしたい
“`json
{
“id”:”1″,
“name”:”田中”
}
“`

# 方法

### レスポンスボディに対応したプロパティを持つクラスを作成する
“`java
public class ApiResponseBody {
private String id;
private String name;
}
“`

### jacksonを導入する(今回はMaven)
“`xml

com.fasterxml.jackson.core
jackson-core
2.13.1

“`
### レスポンスボディを自作クラスのインスタンスにする
“`java
// APIにリクエスト
var client = HttpClient.newHttpClient();
var request = HttpReq

元記事を表示

Javaで簡単なパスワードジェネレーターを作ってみた

Java初心者なので、とりあえずJavaのアルゴリズムを作成してみました。
今回の要件としては、

“`
・パスワードは数字のみ
・桁数と数はユーザーが指定できる
“`

といったものになります。

# 処理の内容

“`
・ユーザーから入力された値(桁数・パスワードの数)
・指定された桁数×指定されたパスワードの数分の乱数を生成する。
・指定された桁数で区切る
・もしユーザーが全角・半角の数字以外のものを入力してきたら、「入力は数字のみでお願いします」
という言葉を出力し、もう一度入力させる。
繰り返し数字を入力してこなかったら、数字を入力するまでそのアナウンスを繰り返す。
“`

といった処理になります。
それではやっていきましょう!!!!!

まず、パスワードを作るために必要なユーザーからの入力を受け付ける部分を作っています。

# まず、ほしいパスワードの数を求めます

まず3行目から、

“`
System.out.println(“ほしいパスワードの数を入力してください”);
String inputQuantity = passQ

元記事を表示

Javaを使用してWord文書に複数のテキスト透かしを追加する方法

##頭語
Word文書の透かしについて、皆よく知っているはずです。以前は単一行の透かしを紹介したことがありますが、日常でWordを使用していると、常に複数の透かしを追加しなければならないです。故にこの記事で、Javaを使用してWord文書に複数のテキスト透かしを追加する方法を紹介します。

##コードのテスト環境
1. Intellij Idea 2019.1
2. JDK 1.8.0
3. Spire.Doc.jar

##jarパッケージの取得とインポート
JarパッケージをIDEAに手動でインポートします。具体的な手順は次のとおりです。
**ステップ1**:E-iceblueの公式Webサイトに登録してログインし、[Spire.Doc for Java](https://www.e-iceblue.com/Download/doc-for-java.html)ダウンロードページにアクセスして製品パッケージをダウンロードします。
**ステップ2**:製品パッケージを解凍し、libファイルの下でSpire.Doc.jarを見つけます。
**ステップ3**:Spire.Doc.jarを

元記事を表示

Java Twitter投稿(twittered)

# 前提
Javaを利用してTwitterで呟くためには、twiiter4jを利用する記事を多く拝見しました。しかし、2021年12月にtwitterAPIがバージョンアップした為、twitter4jを利用した投稿は上手く行きませんでした。([twitter4j-v2](https://github.com/takke/twitter4j-v2)というTwitter API v2向きのtwitter4jが存在しますが、自分の環境では依存関係を上手く読み込むことができませんでした。)2022年1月現在ではJavaでのTwitter API V2向きに対応している記事が少なかった為、記事録的に残しておきます。初学者な為至らない点があるかもしれません。

#Twitter Developer 開発者申請(事前準備)
1. [Twitter Developer](https://developer.twitter.com/en/docs)にアクセスし、開発者申請を行います。
1. 以下リンクなどを参照し、申請を完了させます。
1. https://auto-worker.com/bl

元記事を表示

【Jython】AutoCloseable / Closeable 実装オブジェクトに with 文を使うには

# `try-with-resources`文と`with`文
Java には[`try-with-resources`文](https://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html)があり、これを、[インターフェース`AutoCloseable`](https://docs.oracle.com/javase/jp/10/docs/api/java/lang/AutoCloseable.html)又は[インタフェース`Closeable`](https://docs.oracle.com/javase/jp/10/docs/api/java/io/Closeable.html)を実装したクラスをインスタンス化したオブジェクト(以下、`AutoCloseable`/` Closeable`実装オブジェクト)が使用すると、ブロック終了時又は例外発生時に於いて、自動的にそのオブジェクトの`close()`メソッドが呼び出され、クローズ処理が為される。

次に示すJavaソースコ

元記事を表示

Spring BindingResultインスタンス作成方法

## いきなり本題
いっつも、忘れたころに、BindingResultを手動で作りたくなる。

“`java
Form form = new form();
BindingResult result = new DataBinder(form).getBindingResult();
“`

## References
* https://arkgame.com/2020/01/18/post-43133/

元記事を表示

WSL2でファイルシステムのアクセス速度がどの程度変わったか

なんか速度比べばかりしているような気がしますが・・・
今回はWSL2のファイルアクセス速度についてです。

WSL1から比べるとWSL2ではLinuxファイルシステムのアクセスは高速になったが、Windowsファイルシステム(/mnt/ドライブ名)のアクセスは遅くなったと言われます。
実際例えばJavaのソースリポジトリを `/mnt/c/` 以下のディレクトリにcloneしてきてビルドしたりすると極端に遅いので体感的にもわかります。

それでも意外とWSL2のほうが最新だしWSL2使おうというような感じで使われてて、かつ `/mnt/ドライブ名` 以下にワークディレクトリがあってビルドが遅くても比較対象がないので気にしていないなんてことが散見されるので、今更ながら記事にしてみました。

# 検証環境

* OS
* Windows 10 Pro
* バージョン
* 21H1
* CPU
* Core i7-10700
* ディスク
* Crucial P2 SSD 1TB

# 速度計測方法

WSL1,WSL2でそれぞれ以下のように計測しました。

元記事を表示

Eclipseでプロジェクトの外部の依存ライブラリのjarを抽出する

gradleでパッケージ依存関係を管理しているのですが、すべてのjarをクラスパスに読み込ませる昔ながらのバッチのためにそれらのjarを取得したいのです。
F/Wのバージョンアップに伴い、一新したい。

~~実行可能jar使えとかSpring使っているならBootにすればいいのにとかあーあー聞こえない。~~

## 雑な手順
1. Eclipseのプロジェクトエクスプローラー(いっぱいプロジェクト並んでいるやつ)から対象のプロジェクトを右クリックする。
– 出てきたコンテキストメニューから`エクスポート`を選択する。
– エクスポート対象として`実行可能JAR`を選ぶ。
– ダイアログが出てくるので適当にぽちぽちする。
– 依存JARをサブフォルダーに出力、みたいなラジオボタンがあるので設定して完了する。

元記事を表示

JavaでPowerPointにアニメーション効果を追加する方法(プリセットアニメーション/カスタムアニメーション)

##背景
PowerPointスライドは形状にアニメーション効果を設定することができます。よく見られるアニメーション効果は組み込まれた固定タイプで、つまり、アニメーション効果とパスは事前設定された固定テンプレートですが、アニメーション効果を設計する場合、ユーザーは自分の好みに応じてアニメーションモーションパスを定義してアニメーション効果をカスタマイズすることもできます。以下では、Javaバックエンドプログラムコードを使用して、PowerPointにアニメーション効果を追加する方法を示します。もちろんプリセットアニメーションとアニメーション効果をカスタマイズする方法が含まれています。

###テスト環境には次のものが含まれます。

ターゲットテストドキュメント:Power Point 2013
コンパイル環境:IntelliJ IDEA 2018
JDKバージョン:1.8.0
PowerPointライブラリのバージョン:Spire.Presentation.jar 5.1.0

注:このPowerPointライブラリを介してアニメーションタイプ(AnimationEffectType)を

元記事を表示

【OOP】01_オブジェクト・クラス・インスタンス

こんにちは、コイキングです。

本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、オブジェクト・クラス・インスタンスについて、説明したいと思います。

******
# 1. オブジェクトとは?
まず一般的なオブジェクトの概念について探してみると**現実世界に存在する’物体’、’対象’になります。

※ 参考
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

具体的に例えてみると人間・犬のような動物も、スマートフォン・PC・箱のような物も、ポケモン・デジモンのようなゲームのキャラクターもオブジェクトと言えると思います。

ではOOPでのオブジェクトは何でしょう?
私は現実世界のオブジェクトから重要で核心的な所を抽象化してクラス化し、クラスを元にしてメモリー上にロードされたデータだと思います。

オブジェクト指向では上記の説明通りメモリー上にロードされたオブジェクトの相互作用を通してプログラ

元記事を表示

Android開発におけるドキュメント作成”Dokka / KDoc”の導入手順

# Dokkaとは

“KDoc”形式で記載したコメントを、Javadocと同様な形でドキュメントを作成できる。
JavaとKotlinが混在したプロジェクトのドキュメントも生成可能

https://github.com/Kotlin/dokka

# 導入

“` project/build.gradle
buildscript {
ext {
dokka_version = “1.6.10”
}
dependencies {
classpath “org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}”
}
“`

“` app/build.gradle
apply plugin: “org.jetbrains.dokka”

android {}
dependencies {}

// dokkaHtml 用の設定
dokkaHtml.configure {
outputDirectory.set(new File(“${buildDir}/dokkaHtml”))

元記事を表示

OTHERカテゴリの最新記事