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

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

[JavaSilver受験対策] 誰も解けないラムダ式を解説

この記事は、[シアトルコンサルティング株式会社 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/seattleconsulting “Advent Calendar 2021”)の9日目の記事です。
こんにちは、シアトルコンサルティングの村田です。
## はじめに

* ラムダ式ってなに
* Javaシルバーの勉強中でラムダ式についての問題が分からない

Javaのラムダ式に関して上記の方を対象にしています。
後半ではJavaシルバーの例題を用いて得点するポイントを解説しています。

## 1. ラムダ式は実行を代入できる
 通常インタフェースはメソッドを実現したクラスを定義しなければなりません。
しかしラムダ式を用いることで、メソッドが1つだけのインタフェース型変数(関数型インタフェース)に実行を代入できます。

“`java
Runnable r = () -> {System.out.println(“sample”);};
“`
■ラムダ式の構文
 引数の変

元記事を表示

kotlinいいぜ~javaと比較~

# はじめに
[kotlin](https://ja.wikipedia.org/wiki/Kotlin)はjavaを簡潔に記述するために作られた言語であり
javaと互換性のある言語である

# (個人的に)kotlinがいいとおもうところ
## val と var
kotlinではjavaと異なりmutable(再代入可)、imutable(再代入不可)な変数をそれぞれ定義できます。
javaだといちいちfinalをつけねばなりません

“` kotlin
//kotlin
// 再代入可能な変数
var mutableValue : Int = 1
// 再代入不可能な変数
val imutableValue : Int = 1
“`

“` java
//java
// 再代入可能な変数
var Integer mutableValue = 1
// 再代入不可能な変数
var final Integer imutableValue = 1
“`

## null safety(null安全)
javaのoptionalと同じことがkotlinでは?の一文字で済みます。

元記事を表示

SpringBootの導入【備忘録】

# はじめに
自身の備忘録のために作成しました.
SpringBootはほとんど触ったことがない方向けの記事です.

# 目次
1. プロジェクトの作成
2. アプリケーションの雛形を作る
1. 静的なHTMLを作成する
2. Formを使用する
3. Serviceを実装し,DBと連携する
3. Dependency Injection(依存性注入)
4. MyBatis

# 開発環境(バージョン忘れました.すみません)
* SpringBoot
* Gradle

# 1. プロジェクトの作成
## プロジェクトの作成
[Spring initializr](https://start.spring.io/)で作成.
初期の雛形のディレクトリ構成は以下.jarファイルに固める時はsrc以下のファイルが固まる

“`
.
├── HELP.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.prope

元記事を表示

SmbFileでハマった話(Java)

#SmbFileでファイル共有認証が通らない。(Java)
古のJDK5.0で開発してる古代人です。
最近、WindowsのSMB(共有フォルダ)のファイル操作で使ったSmbFileでハマったので、需要なさそうだけど残します。

SMB(共有フォルダ)のファイル操作を行いたいときに使おうとしたjcifsのSmbFile。
使い方としてはJava標準のFileクラスと使い方はほぼ同じです。
とはいえFileクラスをラップしてたりするわけではなく、全く関係ないので注意です。

初案件で右も左もよくわかってない初心者向け。
#パスにユーザ名、パスワードを含めるやり方

“`
 String rootPath = “smb://ユーザー名:パスワード@サーバー名/共有フォルダ名/”
 SmbFile file = new SmbFile(rootPath);
“`
これでいけると思いきや、ユーザ名またはパスワードが不正といわれる。

もしかして、Active Directoryのドメインが抜けているから認識されない?

“`
 String rootPath = “smb://ドメイン名

元記事を表示

Whatを書くな。Whyを書け。

コメントを書くときのお話。

## 「What」のコメントとは

“`
public static void main(final String[] args) {

final List telList = Arrays.asList(“090-1234-5678”, “090 1928 3746”, “09098765432”);
final List result = formattedTel(telList);
}

public static List formattedTel(final List telList) {

// 結果用のリストインスタンスを初期化
final List result = new ArrayList<>();

// 電話番号リストの各要素に対して処理をする
telList.forEach(tel -> {
if (tel

元記事を表示

最近の Java がすごい!!(switch 式 )

switch 式は Java 14 より正式に追加されたようです!!!
以下のように switch 式により値を返すことができるようになりました。ラクチン!!

“`java
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
“`

また、以前の switch 文では以下のように case のブロックごとに break を書く必要がありましたが、アロー構文 -> により break を省略することができるようになりました。

“`java
switch (day) {
case MONDAY:
case TUESDAY:
int temp = …
break;
case WEDNESDAY

元記事を表示

Javaを使用してWordテーブルのテキストと画像を読み取る方法

##Javaを使用してWordテーブルのテキストと画像を読み取る方法

##背景
Wordは一般的にはテキストの多い職場ドキュメントだと認識されていますが、実際テーブルも使用します。時にはWord文書の中にあるテーブルとその文字を読み取りしたい場合はどうしたらいいでしょうか。この記事でJavaを使用してWordテーブルのテキストと画像を読み取る方法を紹介します。以下は具体的な手順です。

##1 プログラム環境の下仕事:

**コードコンパイルツール:**IntelliJ IDEA
**Jdkバージョン:**1.8.0
**テストドキュメント:**Word .docx 2019
**Jarパッケージ:**[free spire.doc.jar 3.9.0]()

テストドキュメントは以下のようになります:
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/ad0b6d93-7baa-35c3-8f85-8184cb323516.png)

**Jarのインポート手順と方法:**
方法

元記事を表示

MacでEclipse環境にlombokをインストールする

備忘録です。

# lombok.jarをダウンロード

https://projectlombok.org/download

ここから最新をダウンロードします。

# lombokをEclipseにインストールする

lombokがダウンロードフォルダにあると仮定して

“`bash
$ java -jar ~/Downloads/lombok.jar
“`

起動するとこんな画面が出てくるので自分がインストールしたいIDEのみチェックをつけて`install/update`を実行します。

![スクリーンショット 2021-12-08 11.19.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493116/6a9fa971-42a2-6951-3b61-d4bb2fd99c8b.png)

その後、一度Eclipseを`⌘Q`で終了して起動しなおしエラーが出ているプロジェクトをビルドすれば通るはずです。

元記事を表示

脆弱性検出ツール「Snyk Vulnerability Scanner」 vs. 脆弱性だらけのWebアプリケーション「EasyBuggy」

# はじめに

脆弱性検出ツール[「Snyk Vulnerability Scanner」](https://plugins.jetbrains.com/plugin/10972-snyk-vulnerability-scanner)は、脆弱性だらけのWebアプリケーション[「EasyBuggy」](https://github.com/k-tamura/easybuggy/blob/master/README.jp.md)の脆弱性をどの程度検出できるでしょうか?

![vs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43869/52332422-03da-5339-606b-6ca9bd3dd568.png)

Snyk Vulnerability Scannerには、以下のIDEのプラグインがありますが、今回はIntelliJのプラグインで検証してみました。

– Eclipse
– JetBrainsのIDE(GoLand、IntelliJ、PhpStorm、PyCharm等)
– Vi

元記事を表示

[JavaSilver受験対策] 非検査例外と検査例外の違い 

この記事は、[シアトルコンサルティング株式会社 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/seattleconsulting “Advent Calendar 2021”)の8日目の記事です。
こんにちは、シアトルコンサルティングの村田です。
## はじめに
Javaの例外クラスに関して非検査例外と検査例外の内容と違いを解説しており、下記の方を対象としています。

* 非検査例外と検査例外ってなに
* Javaシルバーの勉強中で例外についての問題が分からない

## 1. 例外は2種類に分けられる
 Javaには例外処理をしなくてもコンパイルエラーにならないクラスがあります。
これを**非検査例外**と呼び(コンパイラが検査しないから「非検査」)
try-catchやthrowsで例外ハンドリングをする必要がありません。
反対に例外ハンドリングが必要なクラスが**検査例外**です。
検査例外はハンドリングしなければコンパイルエラーになります。
 例外クラスは大きくEr

元記事を表示

Minecraft Java Edition 1.18 サーバ側のバージョンアップの備忘録

# はじめに
こんにちは withでエンジニアをしているhayatonです。(最近入社したのでピチピチの若手です。)
withでは サーバ周りのお仕事をさせてもらっています。

今回、アドベントカレンダーで記事を書かせていただくこととなり、何を書こうかと悩んでいたところに、
Minecraftの大型アップデートがきた。ということもあり、その内容を記事にさせていただきました。

:::note info
このドキュメントはマイクラサーバの構築手順ではありません。バージョンアップ作業にフォーカスをおいたものです。
:::

https://www.minecraft.net/ja-jp/article/the-caves—cliffs-part-ii-update-here-jp

私は、マイクラ(Minecraft JavaEdition 1.11ぐらいから)にハマっています。(公共事業大好き勢)
一人だけでは飽き足らず、自前でサーバを構築し友人同士と同じ世界で楽しんでおります。(鯖管兼任)
そのサーバのアップデートについて

– 自分の作業備忘録
– 気づいたポイント(3つ)

元記事を表示

azure batch 使った機能を自社アプリケーションに組み込んでみた

# 基礎知識
azureバッチの概要はこちら↓
[azure Batch ってなんなん?](https://qiita.com/sho-yamashita/private/1eb736edcee38b4a86ad)

# はじめに
私が管理しているアプリケーションで同じ処理を大量に並行で実行したい要件があり、Azure Batchを使って、計算する機構をつくりました。

# アプリ概要
あるWebアプリで指定された複数のパラメータを元に各パラメータごとに計算用アプリを実行します。
## 仕込み
– 元々Spring で作った自社Webアプリケーションがあります。
– 今回計算用にSpringでCliアプリケーションを用意しました。(引数を2つ受け取って計算結果をDBに保存する)

## 仕組み
1.計算用のCliアプリケーションをazure storageに配置(batchCli.jar)
2.自社アプリ本体から、Azure Batchのリソースを作成するように指示
3.指示を受けて、プール、ノード、ジョブ、タスクが作られる
4.作られたノード上でタスクが実行され、DBに結果書き出し、

元記事を表示

【Elixir】ElixirとOOP、プログラミングスタイルの違い

https://qiita.com/advent-calendar/2021/fukuokaex

2021/12/08の回です。

昨日は [Koyoさん](https://qiita.com/koyo-miyamura) の [Elixir + SendGrid でメール送信してみる](https://qiita.com/koyo-miyamura/items/34e369200fe1aeafb0af) でした。

# はじめに

私はfukuoka.exを通じて、Elixirに関わってちょうど1年になります。
普段は~~O社を憎みながら~~Javaでお仕事をするエンジニアなんですが、知人の紹介でElixirを触り始めました。

当然JavaとElixirのパラダイムは大きく違うので、最初は戸惑うことがありました。
今回は振り返りとして、それぞれのプログラミングスタイルの違いを書いていこうと思います。

# ループ処理の取り扱い

**Elixirではfor文などを使う必要がありません。**
「何を言っているんだ?」と思いますが、階乗を計算するソースコードを見てみましょう。

まず

元記事を表示

AndroidのJavaで任意関数を一定間隔で実行する方法

⚠ 昔書いた記事の流用です。

“`java
final int delayMilli = 10000; // 定期実行間隔をミリ秒で指定する.
final Handler handler = new Handler();
final Runnable r = new Runnable() {
@Override
public void run() {
// f(); 定期実行したい関数.
// invalidate(); 再描画する場合は,これを有効にする.
handler.postDelayed(this, delayMilli);
}
};
handler.post(r);
“`

元記事を表示

RxJava概要メモ

■RxJavaの特徴

– Observerパターンをうまく拡張している
– データの通知 + データストリームの完了の通知・エラー発生時の通知
– 非同期処理が行いやすい
– Observable契約というガイドラインにしたがって実装している限り、直接的なスレッドの管理がなくなり実装もシンプルになる
– 同期処理・非同期処理で実装方法が大きく変わらない
– 関数型プログラミングの影響を受けている
– 処理の多くを関数型インターフェースを受け取るメソッドを使って実現している
– 入力と結果のみ決めてあれば具体的な処理に関しては開発者に委ねられる
– 関数型プログラミングの原則に従うことで、処理の影響範囲を狭めることができ非同期処理の複雑さを回避できる

■非同期処理

– RxJavaでは、開発者が直接スレッドを扱い管理をしなくて良いように、各処理の用途に合ったスレッド管理を行うSchedulerを用意している
– そのSchedulerを指定することで、スレッドの制御ができる

– Schedulerを指定できる箇所
1.生産者(Observable)

元記事を表示

基本から学ぶJava – 変数について –

# 初めに
今回から執筆させていただく初心者です。
備忘録という意味合いも強いのですが、第一に、私自身が**「他人に説明できるかどうか」**を目的に執筆していこうと思います。

今回はJavaどころかプログラミング自体よくわからないという方に配慮して執筆してみます。
ですので、JVMがどうとかメモリがああだとか処理速度がどうとか等は触れずに、あくまでも**Javaというプログラム言語を扱う**事に焦点を当てていきます。

そういう意味では一番大切なことではあるのですが、Javaのインストールについては事前に済ませおり、コンパイルも出来、実行も出来る。という前提で進んで行きます。 ~~ぶっちゃけそこは他の方の記事を見ればいいんじゃないかと思います。~~
需要があればインストール方法からコンパイル方法等書こうとは思います。

元々はJavaの型について書こうと思っていたんですが、変数について書いていると大分長くなったので今回は変数のみの解説とします

## 環境について
私はjdk-11を使用し、開発環境はJavaではeclipseを使用していますが、現在は諸事情によりVscodeを使用し

元記事を表示

【LeetCode】アルゴリズム体操 21. Merge Two Sorted Lists

# LeetCode – Merge Two Sorted Lists

#### 問題文
>You are given the heads of two sorted linked lists list1 and list2.

>Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists.

>Return the head of the merged linked list.

#### だいたいの日本語訳
引数:`ListNode list1, ListNode list2`
戻り値:ListNode型のリンクしてるリストのいっちゃん最初

list1、list2っていうリンクしてるリストのいっちゃん最初をそれぞれあげるね。ちなみにソートされてるよ。
この2つのリス

元記事を表示

【LeetCode】アルゴリズム体操 1920. Build Array from Permutation

# LeetCode – Build Array from Permutation

#### 問題文
> Given a zero-based permutation nums (0-indexed), build an array ans of the same length where ans[i] = nums[nums[i]] for each 0 <= i < nums.length and return it. > A zero-based permutation nums is an array of distinct integers from 0 to nums.length – 1 (inclusive).

#### だいたいの日本語訳
引数:`int[] nums`
戻り値:int型の配列

与えられた配列(nums)と同じ要素数の配列(ans)を返してほしいんだけど、`ans[i] = nums[nums[i

元記事を表示

ABC168を解いてみた(C問題まで)

こんにちは!!

今回はAtCoderのコンテストに向けて過去問を解いたので、C問題までの各問題について方針と解答コードを投稿していきたいと思います。

#A問題-∴ (Therefore)
https://atcoder.jp/contests/abc168/tasks/abc168_a

###方針
1. 与えられる入力値(Nとする。Nは999以下の正整数)を文字列方で受け取る。
2. 一の位を比べれば良いので、1.で受け取った文字列から末尾の文字を取り出して数値型に変換
3. 2.で変換した値を問題文に従って判定して分岐させる。

###コード
if文の分岐をswitch文に変えても良かったかもしれません…?

標準入力と出力に関しては下記サイトから拝借しています。

https://qiita.com/p_shiki37/items/a0f6aac33bf60f5f65e4

“`Main.java
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
impor

元記事を表示

Javaを利用してWordテキストボックスでテキストの回転方向を設定する方法

##Javaを利用してWordテキストボックスでテキストの回転方向を設定する方法

##背景
Word文書にテキストボックスを追加し、テキストボックスを水平方向のテキスト配置または垂直方向のテキスト配置に設定するか、テキストボックスでテキストの回転方向までも設定できます。Javaプログラムコードにより、上記のテキストボックスの操作も実現できます。以下は、具体的な実装手順を示すJavaコード例です。

プログラムテスト環境は以下のとおりです。
Wordテストドキュメントバージョン:.docx 2019
Word Jarパッケージツール:**[free spire.doc.jar 3.9.0](https://www.e-iceblue.com/Download/doc-for-java-free.html)**
コードコンパイルツール:IDEA
JDKバージョン:1.8.0
ドキュメントの操作に必要なjarパッケージツールをインポートし、結果は以下の通りです:
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

OTHERカテゴリの最新記事