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

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

Javaを利用して既存のPDFドキュメントにページ番号を追加する方法

##背景
PDFドキュメントは世界中に広く使われていて、毎日無数のPDFドキュメントが人々に閲覧したり、処理したりしています。しかし一部のPDFドキュメントにはページ番号がないため、ユーザーが読むのは非常に不便です。この記事では、無料のPDF JavaコンポーネントであるFree Spire.PDF for Javaを使用して既存のPDFドキュメントにページ番号を追加する方法を紹介します。

##下準備
jarパッケージをインポートします

まず、Free Spire.PDF for Javaコンポーネントパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/pdf-for-java-free.html)**して解凍し、次の2つの.jarファイルをlibフォルダーからJavaアプリケーションに引用します。

Spire.Pdf.jar
Spire.Common.jar
処理するドキュメントは次のとおりです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

コレクションの理解を深める

## ArraList
– ArraListの書き方について、下記どちらの書き方でもOK!!なのでもちろん短い方がよさそう!

“`java
ArrayList list = new ArrayList();
ArrayList list = new ArrayList<>();
“`

– 基本データ型は格納できない 例:int
– addメソッドは第一引数にインデックスを指定して上げることができ、そうにゅうする位置を指定できる
– setメソッドは上書きできる
– containsで指定要素が含まれるか判定できる
– indexOfメソッドで指定要素が何番目にいるか判定できる

元記事を表示

/*Java入門*/ Hello Worldをプリントすることから見るJava言語の基本特徴

# JavaでHello Worldをプリントする
ソースコード:

“`Java:HelloWorld.java
public class HelloWorld { // クラス名とソースコードファイル名は同名とする
public static void main(String[] args) { // Javaはmainメソッドをプログラムの起点とする
System.out.println(“Hello World!”); // 標準出力はSystem.outで表現される
}
}
“`

実行結果:

“`zsh:
% javac HelloWorld.java # クラスファイルにコンパイラ
% java HelloWorld # クラスファイルを解釈し実行
Hello World!
“`
# この例から見るJavaの基本特徴
##完全にオブジェクト指向(object-oriented)
Javaはオブジェクト指向を前提としたプログラミング言語で、手続き型プログラミング(procedural programming)をサポートしないです。
=> Javaはすべての

元記事を表示

【Scala】はじめての環境構築(Mac)

#はじめに
こんにちは。
こちらの記事では、Scalaの環境構築を行う方法を記しています。
理解が浅い部分もあるかと思いますので、誤っている点がございましたらコメントいただけると幸いです。

##やりたいこと
Scalaを使って`Hello World`を表示させる。

##実装手順

* JAVA(JDK)のインストール
* sbtのインストール
* sbt consoleを起動

###1. JAVA(JDK)のインストール
JAVA8 以降が必須になるので、[公式サイト](https://www.oracle.com/java/technologies/downloads/#java11-mac)にアクセスしてMacOS版のJDK`jdk~~~.dmg`をインストールする。
(バージョン8よりも古いバーションをインストールした場合、セキュリティの問題やそもそもScalaを使用できないため、[アンインストール](https://www.imymac.jp/powermymac/uninstall-java-on-mac.html)して正しいバージョンをインストールする。)

下記

元記事を表示

Javaを使ってPDFドキュメントにテーブルを追加する方法

##背景
この記事では、Javaプログラミングを介してPDFドキュメントにテーブルを追加する方法を紹介します。テーブルを追加するときに、テーブルの境界線、セルの配置、セルの背景色、セルの結合、画像の挿入、行の高さ、列の幅、フォント、フォントサイズなどの基本的な属性を設定できます。

##下準備

使用ツール:Free Spire.PDF for Java(無料版)

JARファイルの取得とインポート:
公式ウェブサイトからjarファイルパッケージをダウンロードします。ダウンロードした後、ファイルを解凍し、libフォルダー内のSpire.Pdf.jarファイルをJavaプログラムにインポートします。

##コード一覧
“`
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.grid.PdfGrid;
import java.awt.*;

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

元記事を表示

[Spring]メール送信機能

## はじめに
`spring-boot-starter-mail`を使用して、Gmailでメールを送信できるようにしていきます
基本的に詳細はjavadocで記載しています

## 環境
Java 11
Spring Boot 2.6.1
Gradle 2.24
spring-boot-starter-mail 2.6.1

## 依存の追加

“`build.gradle
dependencies {
implementation group: ‘org.springframework.boot’, name: ‘spring-boot-starter-mail’, version: ‘2.6.1’
}
“`

## 設定の追加
今回はGmailを使用します

“`application.properties
spring.mail.default-encoding=UTF-8
spring.mail.protocol=smtp
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.usern

元記事を表示

[Gradle]War作成時、含まれるapplication.propertiesを環境ごとに切り替える

## 環境
Java 11
Spring Boot 2.6.1
Gradle 2.24

## 環境ごとにapplication.propertiesを配置
`src/main`配下に、環境毎にresourcesディレクトリを作成し、application.propertiesを配置していきます
![スクリーンショット 2021-12-29 10.08.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539971/d1ec7c7e-a9e0-c4be-69f3-4d1cf6ec67e6.png)

## build.gradleにwar作成ロジックを記載
`srcDirs “src/main/resources_$env”`で環境変数毎に作成するresourcesディレクトリを指定します

Gradleは最初に`src/main/resources`ディレクトリをコピーするようなので、
↓を記載して、上書きするようにします
`duplicatesStrategy = DuplicatesStrate

元記事を表示

[DDD]Apache POIでExcelドメインを作成する

## はじめに
DDD×Apache POI でエクセル出力ドメインを作成していきます

## Apache POIとは
> Apache POI(以前はJakarta POIと呼ばれていました)はJavaアプリケーションからExcelやWordなどのMicrosoft製品のフォーマットファイルを読み書きするためのAPIです。

https://www.javadrive.jp/poi/

## 環境
Java 11
Spring Boot 2.6.1
Gradle 2.24
Apache POI 4.1.2

## 設定
poi-ooxmlも追加することで、 `xlsx`、`dock`といった2007形式のファイルの読み書きが可能となります。

“`build.gradle
dependencies {

implementation(‘org.apache.poi:poi:4.1.2’)
implementation(‘org.apache.poi:poi-ooxml:4.1.2’)

}
“`

## エクセルドメイン
ここからDDDの出番です
まずは、`Ex

元記事を表示

AtCoder Beginner Contest 012をやった(Java)

AtCoder Beginner Contest 012をやった。

D問題もパッと見た感じ解けそうな気がするので、明日以降に挑戦したく。
※D問題追記予定

##[A](https://atcoder.jp/contests/abc012/tasks/abc012_1)
入力された二つの値を入れ替える問題

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
int A = scan.nextInt();
int B = scan.nextInt();

if(A == B){
System.out.println(A + ” ” + B);
} else {
System.out.println

元記事を表示

Java Silver SE11 3章

# Java Silver SE11 3章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## インクリメント デクリメント
変数の値に1を加算、減算するための演算子。

“`java
public class Main {

public static void main(String[] args) {
int a = 3;
int b = a += 5; //1.a = a+5 2.b = a
System.out.println(a); //8
System.out.println(b); //8

//コンパイルエラー intにlongを格納させようとしている
int c = 2 * 3L; //エラー

int d = 10;
int e = d++ + d

元記事を表示

Log4Shellに脆弱な環境をSpring Bootでつくる

勉強がてら、話題のLog4Shellに脆弱な環境を作ってみます。
**Log4j2のバージョン2.14.0を使っていると簡単に脆弱な環境を作れました。すぐにバージョンアップしないと危険です!**

脆弱性に対するSpring公式サイトの解説

https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot

# 題材

公式の[Getting Started Guides](https://spring.io/guides)の中にある[Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)をベースにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/43c562fd-3989-fc82-ed2d-5ae8f08426f1.png)

* GitHubからソースコードの取得

https://git

元記事を表示

【Java】StreamAPIと拡張for文の違い・使い分け

現在、参画しているプロジェクトではjavaを用いて開発しています。
その際、StreamAPIと拡張for文を使う場面が多く、それぞれの違いや、場面によっての使い分けを例をあげてまとめてみました。

#Stream API とは
Stream APIとはJava SE 8から追加されたイテレーションの拡張APIです。
ListなどのCollectionを扱う為のもので、値の集計やデータを使った処理などが出来る便利なAPIです。

**基本的な流れ**
1. コレクションからstreamを取得
2. streamに対して「中間操作」を実行
3. 「終端操作」で変換したコレクションの中身に対して処理を適用

###中間操作の例
| メソッド | 内容 |
|:———–|:——————————|
|filter() | ( )内の式がtrueの要素だけを集める|
|map() | 要素を変換 |
|distinct()

元記事を表示

Java SE 11 パイプでOutputStreamとInputStreamを接続する

“`
/* インスタンス */
PipedOutputStream pipedOutputStream = new PipedOutputStream(); //パイプの送信側 上流
PipedInputStream pipedInputStream = new PipedInputStream(); //パイプの受信側 下流

/* 送信側と受信側の接続 */
pipedOutputStream.connect(pipedInputStream); //connect()は送信側と受信側のどちら一方から呼び出す

/* パイプへの送信 */
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(pipedOutputStream))
bufferedWriter.write(“テキスト”);
bufferedWriter.flus

元記事を表示

OCIのオブジェクトストレージにJavaからファイルをアップロードする

OCIのAlways Freeアカウントにある10GBのオブジェクトストレージを活かしたいなーと思っていろいろググって見たもののいい感じにまとまっている資料が[これ](“https://orablogs-jp.blogspot.com/2019/01/cloud-java-controlling-your-cloud.html”)くらいだったし、探すのも大変だったので整理する意味も込めて作成。

#環境

– Ubuntu 20.04
– Visual Studio Code

#下準備

– configファイルを作成する

今回使ったのは接続情報をクライアントにもたせる形式なので、configファイルを作成する。
この辺を参考に設定。

[Oracleの公式資料]
(“https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/climanualinst.htm”)
[Oracle Cloud(OCI)のoci cli設定ファイルの使い方をまとめてみた](“https://qiita.com/feifo/items/29d842

元記事を表示

Javaを通してWordテキストボックスを追加する方法

##背景
Word文書の中で、テキストボックスとは、移動することが可能で、サイズの調整も可能なテキスト、またはグラフィックコンテナというものを指します。テキストボックスにテキスト、画像、テーブル、およびその他のオブジェクトを追加できます。以下では、Javaプログラミングを使用して上記のオブジェクトをWordテキストボックスに追加する方法をご紹介致します。

###使用ツール:Free Spire.Doc for Java(無料版)

**JARファイルの取得とインポート:**

公式Webサイトからjarパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/doc-for-java-free.html)**します。ダウンロードした後、ファイルを解凍し、libフォルダー内のSpire.Doc.jarファイルをJavaプログラムにインポートします。(以下の画像の示すように)
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/d908482

元記事を表示

開発ツール(Checkstyle, Spotbugs, Formatter)について

開発ツール(Checkstyle, Spotbugs, Formatter)について

Checkstyleについて
→コーディング規約に則ったJavaコードを書くのを補助する開発ツール
https://checkstyle.sourceforge.io/

Spotbugsについて
→Javaプログラムの中のバグを見つけるプログラム(ツール)
https://spotbugs.readthedocs.io/ja/latest/introduction.html

Formatterについて
→コーディング規約に沿ってソースを修正してくれるツール
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Formatter.html

元記事を表示

【Scala, Java】LocalDateから月の第何週かを取得する

`java.time.temporal.WeekFields#weekOfMonth` を使うことで、指定日が月の第何週にあたるかを取得できる。
週の始まりを日曜日とするか月曜日とするかも指定できる。

このカレンダーを例とする。

“`
???????? – ????
??|??|??|??|??|??|??
??|??|??|??|??|??|??
??|??|??|??|??|??|??
??|??|??|??|??|??|??
??|??|??|??|??|??|??
??|??|??|??|??|??|??
“`

カレンダーはこちらを使わせていただきました。
https://qwerty.dev/calendar-generator/

## 実装

### 週の始まりを日曜日とするなら

“`scala
val date = LocalDate.of(2021, 12, 26)
val weekField = WeekFields.SUNDAY_START.weekOfMonth()

println(date.get(weekField)) // -> 5

元記事を表示

【Java】logback.xml でINFOログの圧縮

### 概要
JavaのシステムログとしてINFOレベルのログも大量に出力する際、最大バイト数で区切りログファイルを圧縮し保存する。

### 修正前

“`logback.xml


./logs/maker/system.log

./logs/maker/system.log.%d{yyyy-MM-dd}.gz

7
<

元記事を表示

AtCoder Beginner Contest 011をやった(Java)

AtCoder Beginner Contest 011をやった。

~~C問題できませんでした、、、[こちら](https://qiita.com/Zombie_PG/questions/778515700fa8fca0a731)でも投稿しましたが、どなたかご助力いただけませんか。。。~~
~~C問題できたら追記します。~~
C問題追記しました!

##[A](https://atcoder.jp/contests/abc011/tasks/abc011_1)
場合分けにより実装。

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
if(N == 12){
System.out.println(1);

元記事を表示

【POC検証】Apache log4j 脆弱性(Log4Shell:CVE-2021-44228)

# 【POC検証】Apache log4j 脆弱性(CVE-2021-44228)

## :black_medium_square: はじめに

2022年12月9日頃~IT業界を騒がせている「Apache log4j 脆弱性(CVE-2021-44228)」なのですが、
各社、確認に追われている方も多いと思っています。
こちらについて、この機会に調べて実際に動きを確かめてみましたので共有と知識整理のために記載します。

## :black_medium_square: 対象者

– log4jの脆弱性がどんなものなのか知りたい方
– log4jの脆弱性を実際にローカル環境で動かして試してみたい方
– 攻撃手法について簡単に概要を抑えたい方
– log4jの脆弱性についてまとめて、身近な人に共有したいなと思っている方

## :black_medium_square: Apache log4j 脆弱性(Log4Shell:CVE-2021-44228)とは

– 概要
– 今回の脆弱性は「Log4Shell」と呼ばれていて「別名:CVE-2021-44228」というCVE番号

元記事を表示

OTHERカテゴリの最新記事