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

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

【解説付き】Java標準APIで画像処理(2) – グレースケール化 –

#はじめに
Javaの標準APIだけを使って基本的な画像処理を実装していきます。
簡単ではありますが、必要な用語などの解説もつけていく予定です。

進めていくにあたり「画像処理100本ノック!!」を参考にさせて頂きました。

https://github.com/yoyoyo-yo/Gasyori100knock

[←前記事 (1) チャネル入れ替え](https://qiita.com/Sigmay/items/f5d32a9932b42e185bc2)
次記事→ (3) 現在準備中

#グレースケール画像とは?
一言でいうと白黒画像です。
プリンターなどで白黒印刷を選択すると出てくるあの画像です。

前回、カラー画像は3チャネルで構成されると説明しました。
グレースケール画像はチャネル数が1つとなります。
すなわち、8bitのみで画像を表示することができます。

ただし、画像処理で扱う場合、チャネル数は3のままで表示のみグレースケールにすることもあります。
具体的には各画素値のR, G, Bにそれぞれ同じ値をセットすることで表現できます。
この辺りは画像処理を扱う言語やライブラリ

元記事を表示

@RunWith(PowerMockRunner.class)と@RunWith(SpringRunner.class)の共存方法

## 概要
`@RunWith(PowerMockRunner.class)`と`@RunWith(SpringRunner.class)`を同時に使いたい。
しかし、`@RunWith`には複数クラスを指定することはできない。
そのため、以下のように`@PowerMockRunnerDelegate`を使う。

“`gradle:build.gradle
dependencies {
testImplementation ‘org.powermock:powermock-module-junit4:2.0.9’
testImplementation ‘org.powermock:powermock-api-mockito2:2.0.7’
}
“`

“`java
@PrepareForTest({SampleServiceImpl.class})
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@SpringBootTest
public class Sa

元記事を表示

Spring Batch の Tasklet クラスに @StepScope アノテーションを付与して挙動を確認する

## 概要

– Spring Batch の Tasklet に @StepScope アノテーションを付与して挙動を確認する

## Step スコープと @StepScope アノテーション

Bean 定義でスコープを指定しない場合は Singleton スコープになる。

[Spring Framework 5\.3\.9 コアテクノロジー \- リファレンス](https://spring.pleiades.io/spring-framework/docs/5.3.9/reference/html/core.html#beans-factory-scopes)

> singleton
> (デフォルト)Spring IoC コンテナーごとに、単一の Bean 定義を単一のオブジェクトインスタンスにスコープします。

[Spring Framework 5\.3\.9 コアテクノロジー \- リファレンス](https://spring.pleiades.io/spring-framework/docs/5.3.9/reference/html/core.html#bean

元記事を表示

[JAVA] JPAで1対Nで中間テーブルのあるDBをModelに落とし込む

## Table構成
usersテーブルとrolesテーブルが1対Nの関係であり、中間テーブルがある構成。
![ER.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/bda80a33-a07d-6f28-f12e-c5fc83279f85.png)

### users

“`sql
Table “public.users”
Column | Type | Modifiers
———-+————————+———————————————————-
id | integer | not null default nextval(‘users_id_seq’::regclas

元記事を表示

WEB開発未経験者のSpringBoot学習のメモ

私はPHP, Laravelで簡単にアプリケーションを作成したことがありますが、今回Java, SpringBootを初めて学習することになったのでメモを残しておきたいと思います。
※この記事は、ただのメモです。

## Gradleとは
ソースコードのコンパイル、テストを実行してレポートを出力するクラスファイルのアーカイブ生成、アーカイブをステージングにリリースするなど定型的な作業を自動化するソフトウェア。
Mavanとどちらかで使用されることが多い。

## POJO
Plan Old Java Object

## DI(Dependency Injection)
ソフトウェアのデザインパターンの1つ。
DIコンテナで生成したクラス。
newをいちいちしなくていい。

### メリット
– 単体テストがしやすくなる
– インスタンスのスコープ(生存期間)を制御できる。
アノテーションをつけたクラスはDI管理ができる。

@Component
@Controller コントローラの役割を担うコンポーネント
@Service ビジネスロジックを提供するコンポーネント
@R

元記事を表示

【Java】ビンゴカード作成問題を解く

 僕は現在Javaを勉強中です。ということで過去にRubyで解いた問題をJavaで解いてみることにしました。RubyもJavaもまだ初心者であるため、コードの可読性は高くなく、まずは動くだけのプログラムを作ることに努めています。ご意見いただけると非常に勉強になります。

 今回解いた問題はビンゴカード作成問題です。

https://qiita.com/kim-shun/items/0c862ff71e61648cd346

B:1~15のどれか
I:16~30のどれか
N:31~45のどれか
G:46~60のどれか
O:61~75のどれか

“`
B | I | N | G | O
13 | 22 | 32 | 48 | 61
3 | 23 | 43 | 53 | 63
4 | 19 | | 60 | 65
12 | 16 | 44 | 50 | 75
2 | 28 | 33 | 56 | 68
“`

 このような出力結果を得たいという問題になります。僕は以下のようなコードでこの問題を解きました。

“`java
package example;

im

元記事を表示

Scanner.nextInt()の落とし穴

###Scanner.nextInt()の落とし穴
これはあまり参考書などに載っていなくて、ちょっと苦労したコードの落とし穴を記事として記しておきます。
もし、同じような落とし穴にはまってしまった人の参考になれば幸いです。

###エラーの内容
以下のようなコードを実行すると、

“`
あなたの年齢は?
44
あなたの名前は?
あなたの名前: あなたの年齢は: 44
“`
年齢を入力したあと、間髪入れずに

あなたの名前は?
あなたの名前: あなたの年齢は: 44

と表示されてしまいます。

###エラーの理由
これは、整数を入力したあとのエンターキーの入力がStringとして残っていて悪さをしてしまいます。そのため、
整数を入力したあとのエンターキーの入力を処理する必要があります。

### 該当するソースコード
“`java
import java.util.Scanner;

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

Sca

元記事を表示

Eclipseの使い方

### はじめに
この記事ではMac における初心者が使いながら便利だと思ったEclipseの機能を書き足して行こうtと思っています。
自分の備忘録を兼ねた記事です。
まだ、書き途中なのでご容赦ください。

###Eclipseのコンテンツアシスト
変数名やメソッド名、クラス名などを補完してくれる。スペルミスを防ぐためにも使った方がいい。
preferance → java → コンテンツアシスト

###コンストラクターやゲッター、セッターの設定

コンストラクターやゲッター、セッターの設定は自動生成することができます。
右クリック  →  ソース  →  フィールドを利用してコンストラクターの生成
右クリック  →  ソース  →  getter および setter の生成

###equalsメソッドの自動生成
右クリック  →  ソース  →  hashcodeおよびequalsの生成

###toStringメソッドの自動生成
右クリック  →  ソース  →  toStringの生成

###テンプレートの一覧
設定のJava→エディター→テンプレート

### Com

元記事を表示

Java Excel フィルターの作り方

Excelでは、フィルター機能を利用することで、指定したデータのみを表示したり、取り出したりすることができます。今回はFree Spire.XLS for Javaという無料のライブラリを活用して、Excelでフィルターの作り方を紹介します。

下準備

1.E-iceblueの公式サイトからFree Spire. XLS for Java無料版をダウンロードしてください。

f:id:lendoris:20210811122545p:plain

元記事を表示

[Java] Microsoft Word のプロパティを設定

Wordプロパティは、ファイルの内容を示し、そのファイルを特定するためのものです。 ドキュメントのプロパティには、タイトル、作成者名、件名などのほかに、ドキュメントのトピックや内容を特定するキーワードがあります。今回はSpire.Doc for Javaというライブラリを使ってWord プロパティを設定する方法を紹介していきます。

 下準備

1.E-iceblueの公式サイトからFree Spire.doc for Java無料版をダウンロードしてください。

</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>設定</div>
<div class='tag-cloud-link'>Word</div>
<div class='tag-cloud-link'>プロパティ</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/9bab6a6ce4e7d0c2d8ad'>元記事を表示</a></div>
<h3 id=Java入門[packageとimport]

前回のメソッドは、同じディレクトリ(ファイル内)のクラスから使用することもできます。

“`java:matome/Main.java
public class Main {
public static void main(String[] args){
System.out.println(Calc.tasukake(3,2));
System.out.println(Calc.hikuwaru(4,2));
}
}

// 10
// 1
“`

“`java:matome/Calc.java
public class Calc{
public static int tasukake(int a, int b){
int tasu = a + b;
return (tasu * 2);
}
public static int hikuwaru(int a, int b){
int hiku = a – b;
return (hiku / 2);
}
}
“`

Main.javaでは出力結果を表示させる

元記事を表示

キャストに触れてみた!

今回はキャストについて説明していこうと思う。

**キャストとは**
型を変換すること。例えばint型をdouble型に変換など。
※int型→整数まで扱える
※double型→整数〜少数まで扱える

整数までしか扱えないものを整数〜少数まで扱えるものに変換するのは?‍♂️
扱える範囲が狭いものから範囲が広いものに変換。
**これを拡大変換という**

コードだと下記のようなものになる。

“`Java
public class Main {
public static void main(String[] args){
double doubleA = 1234.5678;
int intA = 12345;
doubleA = intA;
System.out.println(doubleA);
}
}
“`

3行目でdouble型の変数をdoubleAに代入。
4行目でint型の変数intAに代入。
5行目でintAの値をdoubleAに代入。

では扱える範囲が広いものから狭いものに変換することができ

元記事を表示

正規表現で末尾が一致するのにif文でfalseが返ってくる。

Javaの正規表現を学習しているときに躓いたところがあるので、忘備録として残しておきます。

#やりたかったこと

あるディレクトリにあるファイルのうち、拡張子がpdfのもの(末尾がpdfで終わる文字列)をListに追加していく処理を行いたかった。

ちなみに拡張子がpdfのファイルはファイル名が8桁の整数で構成されているとする。

例:00000001.pdf

上記の処理を行うために以下のようにコードを記述した。

“`Java:Java
File[] files = new File(args[0]).listFiles();

//rcdファイルを保持するためのList
ArrayList pdfFiles = new ArrayList<>();

//配列filesに代入したファイルをfile数の数だけ取得する
for(int i = 0; i< files.length; i++) { String fileName = files[i].getName(); if(files[i].isFile() && fileName.

元記事を表示

安全かつ前向きなバグ修正の手順~新しいメソッドを作り、既存メソッドを非推奨にする~

# はじめに: バグ修正の際に意識するべきこと

バグ修正の際に意識するべきこととは、何でしょうか。
単に「そのバグが直る」ことだけではなく、今後は同じ間違いに陥らないようにすることも含まれるのではないでしょうか。それにより、プログラムの品質が高まり、アプリケーションの価値を高めることにつながります。

本記事では、そのためのメソッド修正の基本的な手順について説明します。

# やりたいこと

バグ修正の際には、下記の3つの要件を達成したいです。

– 問題となっている箇所では、動作を変更し、バグを修正したい
– 問題となっていない箇所では、動作を変更せず、悪影響が無いようにしたい
– 今後追加する箇所では、同じ間違いに陥らないようにしたい

# 解決策

理想的には、バグの原因が含まれるメソッド自体を修正するべきです。
ただし、そのためにはすべての呼び出し元(利用箇所)をリストアップすることが必要となる場合があります。
メソッドがすでに広く使われてしまっている場合、この解決策は現実的ではありません。

すべての呼び出し元をリストアップしての調査が現実的ではない場合、下記の手順で対応す

元記事を表示

macでflutter開発始めようとしたら思った以上にエラー出てきて時間かかった話。

## そもそもこの記事は何?
mac環境でflutterの開発を始めようとした際、手順を記した記事に従って実行していったのだが、つまづいた部分が多々あった。
都度調べながら実行するとそれなりに時間がかかってしまったので、解決方法の記事と一緒に、大まかな手順をまとめた。

## 方針
以下のページの手順に従って進めていく。

https://qiita.com/oekazuma/items/92e9bae4268fea107efa

https://zenn.dev/kboy/books/ca6a9c93fd23f3/viewer/5232dc

https://www.flutter-study.dev/getting-started/install

この記事では、具体的な手順や詳細の記述は省く。
詰まった部分とその解決方法を列挙的に記述していく。

##手順

### 1. まずflutterをインストール。
問題なくインストール完了。
### 2. flutter doctorを実行し、足りないものを確認。

“`
Running “flutter pub get” in f

元記事を表示

ksnctf #15 Jewel

#Jewel
Jewel:宝
https://ksnctf.sweetduet.info/problem/15

問題にはapkファイルが置いてある.apkファイルはandroidアプリのパッケージでただのzipファイルらしい.解凍したら以下のよう構成になっていた.

“`
C:.
│ AndroidManifest.xml
│ classes.dex
│ resources.arsc

├─META-INF
│ CERT.RSA
│ CERT.SF
│ MANIFEST.MF

└─res
├─drawable-hdpi
│ ic_launcher.png

├─drawable-ldpi
│ ic_launcher.png

├─drawable-mdpi
│ ic_launcher.png

├─layout
│ main.xml

└─raw
jewel_c.pn

元記事を表示

Java入門[メソッド]

今回はメソッドについてまとめます。

以下のような計算プログラムを作ったとします。

“`csharp:Keisan.java
public class Keisan {
public static void main(String[] args){
int a = 4;
int b = 2;
int c = 6;
int d = 3;
System.out.println(a + b);
System.out.println(a – b);
System.out.println(a / b);
System.out.println(a * b);
System.out.println(c + d);
System.out.println(c – d);
System.out.println(c / d);
System.out.println(c * d);
}
}
“`

`System.out.println()`が乱立しています。
計算プログラムとしては成り立ちますが、冗

元記事を表示

Android Studioのチェック付きListViewでスクロールするとチェックの状態が変わってしまう(解決)

#チェックの状態が変わってしまう

まず、スクロールするほどのチェックを追加したとして、それでスクロールしたらなぜかチェックの状態が変わってしまうのです。

↑のように、アイテム1がチェックされていない状態でスタートして、

↑のように、アイテム1にチェックを入れます。
【解説付き】Java標準APIで画像処理(1) – チャネル入れ替え –

#はじめに
Javaの標準APIだけを使って基本的な画像処理を実装していきます。
簡単ではありますが、必要な用語などの解説もつけていく予定です。

進めていくにあたり「画像処理100本ノック!!」を参考にさせて頂きました。

https://github.com/yoyoyo-yo/Gasyori100knock

[←前記事 (0) 準備編](https://qiita.com/Sigmay/items/772570a9ab5dfc32f6c3)
[次記事→ (2) グレースケール化](https://qiita.com/Sigmay/items/1a5ce305c348a322ebae)

#チャネルとは?
一般的なデジタル画像はRGB(赤、青、緑)の3色から構成されています。
詳しく知りたい方は光の三原色で調べると良いかと思います。

要するに、ほとんどのカラー画像はRGBの3層から構成されているということです。
この各層のことを画像処理ではチャネルと呼びます。

なお、ここでは説明しませんが、アルファチャネルという透明度を表す層も使用することがあります。
その場合、チャネル数は

元記事を表示

Javaのエラー「エラー: この文字(0x92)は、エンコーディングwindows-31jにマップできません」を直す

#JavaをVScodeで記述し,実行する際のエラーを解消した備忘録(CodeRunnerを利用している方向け)
###エラー: この文字(0x92)は、エンコーディングwindows-31jにマップできません
このような不快なエラーメッセージが出た.
これはどうやらfilename.javaの中に全角文字が記述されている場合発生するようだった.filename.javaはUTF-8で保存されていた.
####UFT-8ではなくShift-Jisで保存すると問題なく同じ動作で実行される(解決策の一つ)
個人的にUFT-8を使いたかったので,どうにかしてそのまま動くようにする.
このとき,使うコーディングに特にこだわりが無い方は,.javaの規定コーディングをShift-Jisに変更することで解決すると思います.
同様のエラーを起こしている人を見つけ対処法が解説されていたのでそのとおりにしてみても消えないが,ターミナルで「javac -encoding UFT-8 filename.java」とすると正常に動作する.
####CodeRunnerが元凶
これらから,コンパイルにエラーが発

元記事を表示

OTHERカテゴリの最新記事