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

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

Java Twitter投稿

# 前提
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-resource`文と`with`文
Java には`try-with-resource`文があり、これを、[インターフェース`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ソースコードファイル`Main.java`には、2 つの`try-with-resource`文があり、変数`bw`及び変数`br`に、`AutoCloseable`/` Closeable

元記事を表示

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”))

元記事を表示

Java Gold SE 11に合格しました【正答率85%】

先日Java Goldを受験し、見事合格しましたのでその経緯をまとめたいと思います。

#Java Gold試験概要
まず簡単な試験概要です。
・試験名:Java SE 11 Programmer II
Pearson VUEで試験の申込みをする時に「Java Gold」だと検索に引っかからないので注意です。
・試験時間:180分
一般的なベンダ試験の試験時間だと思います。普通に解いていれば180分丸々問題に費やすことはないと思います。
・出題数:80問
・合格ライン:63%
ベンダ試験の上位資格にしてはかなり合格ラインは低いな、という印象でした。なので20問くらい間違えてもいいかぁくらいの気楽な気持ちで取り組みました。
・受験要件:Java Silverを取得済みであること

#自身の背景
まず今回Java Goldを受験するにあたり、自身の経歴について記載します。

###Javaの経験
大学時代と社会人1年目で少し触れて、Java Bronzeは取得。しかしその後は業務等で使う機会は全くなく、内容はほとんど忘れてしまった。昨年6月にJavaを使う部署へと異動し、猛勉強を開始。昨年

元記事を表示

Javaデベロッパが知るべきDockerセキュリティ5つの大切なこと

セキュリティのシフトレフトを考えると、開発段階から考えるということが重要ということはわかってはいても、どう実践すれば良いものか、、、
わかってはいつつ、なんとなく不安になりつつも、忙しく作業に没頭せざるをえないJavaデベロッパの方も多いのではないでしょうか。

######今回はJavaデベロッパ向けDockerのセキュリティの短めの記事のご紹介です。

参考資料:

* [JavaデベロッパのためのDocker:セキュリティを失敗させないために知っておくべき5つのこと(原文)](https://snyk.io/blog/docker-for-java-developers/)
* [Docker for Java developers: How not to fail your security(動画)](https://www.youtube.com/watch?v=v2SkWn-ZRDg)

#JavaデベロッパのためのDocker:セキュリティを失敗させないために知っておくべき5つのこと

Brian Vermeer
ブライアンフェルメール
2020年11月20日
D

元記事を表示

【Java文法】例外処理

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

本記事では’例外処理’について、説明したいと思います。

******

# 1. 例外処理とは?
例外処理はプログラムの実行中に予想されていない結果が発生した際の対応を言います。

例えるとコンソールからユーザー入力で’数字データ’を入力するべきものを’文字列データを入力してもらい’、文字列のデータを数字変数に代入しようとする場合
プログラムは例外を発生させます。

上記のような状況で **1) 例外発生の理由をログなどで知らせたり、2) 例外が発生した際に必要なロジックを実行すること**などを例外処理で担います。

# 2. try-catch構文
try-catch構文は **例外が発生が予想されたり、必ず例外処理をしないといけないコード囲み例外を処理**します。

例外発生が予想される所のコードをtry構文で囲んで、catch構文に例外を処理するロジックを記載します。

“`
File file = new File(“newFile.txt”);
//file.createNewFile(); // ファイル作成時に例外処理をしないとコンパイ

元記事を表示

SpringBoot Bean Validation:フィールド名を出力する

## はじめに
Bean Validationのエラーメッセージにフィールド名を出力させるために、プロパティファイルに {0} を追記したが、「{0}を入力してください。」と表示される。
message.propertiesに記述していたのをValidationMessages.propertiesに変えてみたり、@Validを@Validatedに変えたりしたのだが、改善せず。
当たり前に使っていたのに、いざ上手くいかないと、何が原因なのか検討がつかず。解決するまでに、結構は時間を使った・・・。

どうようにお困りの方もいるかと思い記録しておきます。

## 不足していたのはMessageSourceの利用
bindingResultに登録された時点で、{0}にフィールド名が置き換わると思い込んでいたが、MessageSourceを使って置き換える必要がありました。(フォームだと自動的にやってくれていたのかも?)

### Controller(抜粋)
“`java
import org.springframework.context.MessageSource;
import o

元記事を表示

【Java文法】セット(Set)

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

本記事では’セット(Set)’について、説明したいと思います。

******

# 1. セット(Set)とは?

Setは**重複されていないデータの集まりを格納するため**のデータ構造です。
Setを実装したクラスはHashSet, LinkedHashSet, TreeSetなどがあります。

# 2. HashSet
ハッシュセットはHashMapの**Keyの値がユニークである特性を利用して実装**されています。
そのため、**HashMapの特性と長・短所を共有します。**

## 1) データの挿入

“`
Set set = new HashSet();

set.add(“HashSet-value-01”);
set.add(“HashSet-value-02”);
set.add(“HashSet-value-02”); // 重複された値は挿入できない。
set.add(“HashSet-value-03”);
set.add(“HashSet-value-04”);
“`

## 2) デー

元記事を表示

【Java文法】マップ(Map)

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

本記事では’マップ(Map)’について、説明したいと思います。

******

# 1. マップ(Map)とは?
マップは**Key-Value構造に構成されているデータを格納**するデータ構造です。
Keyを使った**データ検索に最適化されたデータ構造で、 **Key値は重複できない**という特徴があります。
Mapを実装したのはHashMap, LinkedHashMap, TreeMapなどがあります。

# 2. HashMap
## 1) HashMapとは?
ハッシュマップとはハッシュテーブルを使ってマップを実装したデータ構造で、
Key値をハッシュ関数を通してデータの参照値が格納されているバーケット(bucket)のインデクスに変換し、バーケットのインデクスを用いてデータにアクセスします。

※ 長所
– Key値でデータを検索するため、 **検索速度が速い**です。

※ 短所
– バーケットの長さ調整が必要な場合、 **処理速度の遅延が発生する可能背があり**ます。
– データの格納時に**配列やリストより多めのメモリーを使います。*

元記事を表示

[オブジェクト指向]某コーヒーショップの注文をイメージしてプログラムを書いてみた。

アウトプット用!!
第7回目は
has-aの関係を意識してプログラムを行なっていく!
(has-a)とはあるクラスが別のクラスをフィールドとして利用している関係のことです。
例えば、Hero型のクラスとSword型のクラスがあるとしてHeroクラスのメンバ変数にSwordクラスのデータが使えるようになるイメージです。よって勇者は剣を持っている(has-a)の関係が成り立つ。

今回作成したプログラムは(has-a)を意識して作成しました。
SetMenuクラスはMenuクラスを持っている(has-a)の関係が成り立つので、SetMenuクラスでMenuクラスのデータが使えるようになる。

早速コードをみていきましょう。

“`Main.java
package ensyu;

import java.text.SimpleDateFormat;
import java.util.Date;

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

//現在日時を取得
Date dateObj = ne

元記事を表示

Javaに入門してみたらmainメソッドが気になり過ぎて前に進めなくなった話

#はじめに
IT業界の経験は10年以上あるものの、ずっとメインフレームコンピュータなどのレガシーな環境でCOBOLの開発をやってきて、最近はCOBOLすら書いていなくて完全にエクセルで資料作ってる人がこの記事を書いております。Java初心者が記事を書いておりますので間違いなどありましたら指摘頂けると幸いです。

#何が起きたのか
これまで個人開発でPythonを書いてきましたが、ふとOOPについて学んでみたくなったので、Javaを学んでみることにしました。まずは環境構築してHello Worldしてみたのですが、「mainメソッドはおまじない」という入門記事があったりして、本当にそれでいいのか?と気になって先に進めなくなり色々調べてみたという話です。

#とりあえず環境構築してHello Worldまでやってみる

###JDKのインストール
まずはJDK(Java Development Kit)をインストールするために[JDKのダウンロードページ](https://www.oracle.com/java/technologies/downloads/)にいきます。
2022年1月時

元記事を表示

【個人的4選】サイバーセキュリティニュースまとめ(2021年12月)

# はじめに

## この記事の目的
この記事は日々刻々と変化するサイバーセキュリティ関連のニュースの内、興味深いニュースを筆者の**独断と偏見**でピックアップしたものです。

日々の情報収集、セキュリティの勉強、~~セキュリティ全く関心のない経営層への啓蒙~~などに役立てていただけますと幸いです。

## 想定読者
– セキュリティ関連の仕事に従事している人
– セキュリティに関わらないけど、少しセキュリティに興味がある人
– セキュリティに興味のある学生

# サイバーセキュリティニュース
2021年12月は、4つのニュースをピックアップしました。

## 1位 Apache Log4j の脆弱性
1位はこれで異論のあるセキュリティ担当者はいないでしょう。
12/10頃に世界的に話題になった、Javaのログ出力ライブラリLog4jの脆弱性です。

多くのセキュリティ担当者がこの脆弱性に対応に忙殺されたのではないでしょうか。

### 概要

>
Javaベースのログ出力ライブラリLog4j2で深刻な脆弱性(CVE-2021-44228)を修正したバージョンが公開された。その後も

元記事を表示

【Java文法】リスト(List)

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

本記事では’リスト(List)’について、説明したいと思います。

******

# 1. リスト(List)とは?
リストはJavaでデータ構造とデータを取り扱うためのコレクションフレームワークに属するインターフェースです。
配列のように**順序があるデータを格納するためのデータ構造**で、リストを実装しているクラスはArrayList, LinkedList, Vectorなどがあります。

# 2. ArrayList
## 1) アレイリスト(ArrayList)とは?
‘ArrayListは**長さが変更できる配列’**のようなデータ構造です。
ArrayListのクラス内部を見れば**配列を使いデータを格納している**ことが分かります。

※ 長所
– 配列のように**インデクスを使い、速やかに要素にアクセスできます。**

※ 短所
– **長さが変わる際の処理に時間がかかる。**
 リストにデータを入れてみるとリストの内部のデータを格納する配列の長さを超える場合がある。この時長さを増やした新しい配列に既格納していたデータをコピーする処理

元記事を表示

【Java文法】ラッパークラス

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

本記事では’ラッパークラス’について、説明したいと思います。

******

# 1. ラッパー(Wrapper)クラスとは?
ラッパークラスはプリミティブデータ型をクラス化したもので、
**1) プリミティブ型の変数をインスタンスとして使う場合**
**2) 文字列 <-> 数字を相互変換する必要がある場合**
などに使います。

# 2. プリミティブ型からラッパークラスのインスタンスに変換
– プリミティブ型 -> **ラッパークラスの変換はnew 演算子**を使います。

“`
// ※ Wrapperクラスの参照変数には’null’の代入ができます。
Integer wrapperInt = null;
Long wrapperLong = null;
Short wrapperShort = null;
Byte wrapperByte = null;
Double wrapperDouble = null;
Float wrapperFloat = null;
Character wrapperChar = null;
Boolean

元記事を表示

【Java文法】標準入出力

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

本記事では’標準入出力(ユーザーからキーボード操作などにて入力を受け取り、コンソールにて結果を出力)’について、説明したいと思います。

******

# 1. 値を入力する(Scannerクラスを使う)
Scannerクラスはユーザーからデータを入力してもらう様々なメソッドを提供するクラスです。

## 1) 整数データ入力

“`
// (int)
int inputInt = sc.nextInt();
System.out.println(“Inputed int : “+inputInt);

// (long)
long inputLong = sc.nextLong();
System.out.println(“Inputed long : “+inputLong);

// (byte)
byte inputByte = sc.nextByte();
System.out.println(“Inputed byte : “+inputByte);

// (short)
short inputshort = sc.next

元記事を表示

OTHERカテゴリの最新記事