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

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

nullableなMono/Fluxの後続処理を分岐する(WebFlux基本編)

[前回の記事](https://qiita.com/kilvis/items/fb18be963da6cac03ee9)でWebFluxの基本的なAPI呼び出しの順次・並列の実装例を紹介しました。
今回は**nullableなMono/Fluxの後続処理**として、nullの場合/nullじゃない場合の分岐の実装例を紹介します。

# まずは分岐を考えない場合の実装
前回の実装例です。
![activity_1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430093/45908bc9-fcc9-0e69-5b3c-f2f2e77d2e21.png)

“`java:順次処理(nullの考慮なし)
@GetMapping(“/headers/find-by-user/{userId}”)
public Mono findHeadersByUserId(@NotNull @PathVariable final String userId) {
retu

元記事を表示

Apache beam サンプルコード

# TL;DR
Apache beamの[Java quickstart](https://beam.apache.org/get-started/quickstart-java/)がいまいち分かりづらかったため、最小コードとデプロイ手順(Google Cloud Dataflow, AWS EMR)を備忘録としてまとめる

# WordCountサンプル
https://github.com/aaaanwz/beam-wordcount-sample

“`
.
├── pom.xml
└── src
└── main
   └── java
   ├── core
   │   └── WordCount.java
   └── dafn
   ├── ExtractWordsFn.java
   └── FormatAsTextFn.java
“`

“`xml:pom.xml

元記事を表示

【Android Studio】ボタンによる画面遷移

あくまでも自分用のmemoとして残しておきます。
#必要なファイル(全4つ)
・MainActivity.java
・activity_main.xml
・SubActivity.java
・activity_sub.xml

#MainActivity.javaのソースコード
17~24行目を追加

スクリーンショット 2020-01-31 21.56.09.png

“`
Button nextButton = findViewById(R.id.bt_next);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent

元記事を表示

Java(clear)

【clear】
ArrayListの要素をすべて削除する際に使用するメソッドである。
以下のようにして使用する。
変数名.clear();

Java(add)の回で使用したArrayList「array」を
clearメソッドで全ての要素を削除する。

ArrayList array = new ArrayList();

array.add(“日本語”);
array.add(“英語”);
array.add(“フランス語”);
array.add(“中国語”);
array.add(“ドイツ語”);

System.out.println(array);

[日本語, 英語, フランス語, 中国語, ドイツ語]

ArrayListの要素をすべてを削除する。

array.clear();
System.out.println(array);

リストの中を出力すると以下のようになる。

[]

要素の値がすべて削除されて何も表示されていない。

元記事を表示

SimpleDateFormatがスレッドアンセーフであることをstreamを使って検証する

#導入
こんにちは。けちょんです。
**皆さん、SimpleDateFormatとstream使っていますか?**
ニッチですね。私はstreamが大好きです。
今回はSimpleDateFormatがスレッドアンセーフであることを検証します。

#準備
まず、Date型のオブジェクトを用意します。

“`java
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd hh:mm:ss”);

Calendar day1 = Calendar.getInstance();
day1.set(2020, 0, 31, 0, 0, 0);
Calendar day2 = Calendar.getInstance();
day2.set(1995, 3, 6, 0, 0, 0);
“`

では、リストに詰めます。

“`java
for (int i = 0; i < 10; i++) { // リストにDateオブジェクトを20個詰める list.add(day1.getTime()); list.add(day2.ge

元記事を表示

Spring bootの@Autowiredってなんや

業務でSpring bootを使う機会があり、`@Autowired`とか`@RestController`とか普通のJavaで見かけないものがたくさん出てきて怖かったので調べました。
メインはフロントエンドなので、Springはあんまりわかってません。~~(フロントエンドもわかってはいない)~~
間違いあれば遠慮なくご指摘ください。。。

## そもそも
**MVCモデル**ってやつがいます。
[この記事](https://qiita.com/yo1000/items/a6acbf5f454a7f53aef9)に詳しいのでこちらをご覧ください。

`view→controller→service→repository→template`

という構造になってるよというお話でした。

## `@RestController`とは
コントローラーにつけるアノテーション。似たようなものに`@Controller`があるが、返り値が違う。
RestControllerはwebApi用のコントローラーで使用するので、返すものはコンテンツ。(jsonとか?)
Controllerは返り値がそのま

元記事を表示

Android(Java)でFirebase Cloud Functionsを使ってみる

Android初心者なのですが、
Firebase Cloud FunctionsのhttpsCallableを使ってHello Worldするまでをやってみたのでその手順をまとめます。

## 1. Androidプロジェクトを作成

Android SDK自体はインストール済みという前提で、まずはAndroid Studioを起動してプロジェクトを作成します。

`File` → `New` → `Create New Project`の順に選択

テンプレートは(お好みですが)`Empty Activity`を選び、`Name`、`Package name`、`Save location`を入力。
`Language`は`Java`を選択します。

## 2. Firebase SDKの準備

ブラウザでFirebaseプロジェクト(作成していない場合は作成してください)を開き、Androidアプリを追加します。
ここからはチュートリアル画面になりますので、概ねその通りに導入します。
1ページ目、まずは`パッケージ名`に先ほどAndroid Studioで設定したものを入力し、省

元記事を表示

java.utilにはArrayListクラスが二つある

#導入
こんにちは。けちょんです。
**皆さん、ArrayList使ってますか?**
もちろん私もよく使います。
1つ予想外なことがあったので紹介します。

#クイズ
以下ソースで実行時例外が発生します。
それはどこでしょう。

“`java
String[] array = { “banana”, “apple”, “melon” }; // 配列を作成
List list1 = Arrays.asList(array); // 配列からリストの作成

List list2 = new ArrayList<>();
list1.stream().forEach(e -> list2.add(e)); // list1と同じ要素を持つリストを作成

list1.add(“lemon”); // list1に追加
list2.add(“lemon”); // list2に追加

System.out.print(list1); // list1の結果を出力
System.out.print(list2); // list2の結果を出力
“`

※str

元記事を表示

[Android] zxingでQRコード画像から読み取る

QRコードを含む画像からの読み取りを、zxing を使って行ってみました。
[ZXing Android Embedded](https://github.com/journeyapps/zxing-android-embedded)

“`Java
void readQrcode(Bitmap bitmap) {
// Bitmap のサイズを取得して、ピクセルデータを取得する
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);

try {
// zxing で扱える BinaryBitmap形式に変換する
LuminanceSource source = new RGBLuminanceSource(width, height, pi

元記事を表示

タイピングゲーム-ver1.0

“`java:Typing.java

class Typing {

Word word = new Word();

//フィールド
private int score; //スコアを計測
private int mode; //モード選択
private int miss; //ミス回数
private boolean logic = true; //論理値

//スコアセット・ゲット
public void setScore(int score) {
this.score += score; //ゲーム終了後にスコア取得
}
public int getScore() {
return this.score; //スコアリターン
}

//モードセット・ゲット
public void setMode(int mode) {
this.mode = mode; //モードを取得
}
public int getMode() {
return this.mode; //モードリターン
}

//ミス回数セット・ゲッ

元記事を表示

JavaでPDFファイルの文字列を読み取る

# 概要
PDFファイルから文字列を抽出する。

※PDFファイル内の画像データは本件では扱わない

# 実行環境
OS: Windows 7
言語: Java

# Javaの準備
mavenプロジェクトを作成し、pom.xmlに以下を追加

“`

org.apache.pdfbox
pdfbox
2.0.8

“`

# 実装

“`
try {
File file = new File(“test.pdf”);
PDDocument document = PDDocument.load(file);

// 文字列のみ抽出
PDFTextStripper pdfStripper = new PDFTextStripper();

// 見た目通り(左上から右下にかけて)の順番で文字列を読み取る設定
pdfStripper.setSortByPos

元記事を表示

64bit Linuxに、32bit用のJava 1.4をインストールする

# はじめに

本稿の筆者は、一般企業でJava/.NET向けの自社プロダクトを開発しています。
Enterprise向けとなると、Java1.4への対応もいまだに求められる状況で、Java1.4での開発環境構築を
行わないと自社製品の開発ができません。

で、WindowsのJava1.4向けのインストーラは、代々受け継がれてきたものがある&32bit版でも、
Windows上ではちゃんと動いている(ように見える)のですが、Linux版ではそうはいかず、
いろいろな記事を見回ってみたものの、すべての情報がまとめられた環境はなかったので、
だれか困っている人の助けになればと思い執筆しました。(そんな人いないか・・・?)

## TL;DR

* Oracleの[Java Archive ダウンロードサイト](https://www.oracle.com/java/technologies/java-archive-javase-v14-downloads.html)から、バイナリを取得
* ld-linux.so.2をインストール
* バイナリを実行し、ライセンスを読み、agreeする

元記事を表示

課題((public) Carクラスの作成)

class Car {

int num;
double gas;

void show() {
System.out.println(“車のナンバーは” + num + “です。”);
System.out.println(“ガソリンの量は” + gas + “です。”);
}

void setNumGas(int n, double g) {
num = n;
gas = g;
System.out.println(“車のナンバーを” + num + “にガソリン量を”
+ gas + “にしました。”);
}

void charge(double fuel){
//fuel = gas;
fuel += gas;
System.out.println(“ガソリン量を” + fuel + “にしました。”);
}
}

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

Car car1 = new Car();

元記事を表示

timestamp status 999 error none message no message available

#状況
Spring boot でアプリを作っている。
Spring-security で認証機能の実装をする。

#問題
submitを押して認証処理を行うと、ログインフォームから表題のエラーが発生したページへ遷移する。
(表題エラーはJSONで表示されていた。)

#原因
認証処理で遷移するURLの許可がない場合に発生する。
認証に失敗した際に/login-errorに遷移するが、/login-errorへのアクセス許可がないため発生していた。

#解決
“`
@Override
protected void configure(HttpSecurity http) throws Exception {

http
.authorizeRequests() // 認可の設定
.antMatchers(“/”, “/find”, “/login”, “/signup”, “/error”, “/login-error”).permitAll() // 全ユーザーアクセス許可

元記事を表示

【Java】StringはStringBuilderの下位互換?

#背景
最近AtCoder問題を利用してJavaの文法とかを勉強しています。

[ABC146 F -Sugoroku](https://atcoder.jp/contests/abc146/tasks/abc146_f)
に出くわした際にStringを反転させたいなーと思ったところStringBuilderなるものに出くわしたお話です。

#StringとStringBufferの違い

これについては以下のリンクを見ればわかりやすいと思います。
https://qiita.com/shunsuke227ono/items/e8f34c67dcffa0fa28ad
https://www.javadrive.jp/start/stringbuilder/

簡単にまとめると、

– Stringはイミュータブルであり、StringBuilderはミュータブルである
– コード上ではStringもミュータブルのように記述できる(S = S + “a”など)
– 文字列の追加・挿入ではStringBuilderの方がメモリ・時間効率が良い

ということでStringBufferの使

元記事を表示

Java

“`java:Test.java
class Test {
public static void main(String[] args) {
System.out.println(“Test”);
}
}
“`
“`bash:bash
>javac Test.java
>java Test
Test
“`

“`java:Index.java
package test;

public class Index {
public static void main(String[] args) {
TokyoService tokyo = new TokyoService();

for (String city : tokyo.getCities()) {
System.out.println(city);
}

OsakaService osaka = new OsakaService();
System.out.println(osaka.getCity(0));
}
}
“`
“`java

元記事を表示

FindBugs-IDEAのエラー

##経緯
静的解析したかったので、AndroidStuidoにFindBugsを導入してみたがエラーが出て動かなかった。
以下のようなエラーが出ていた。

>Error:Internal error: (java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index

最初は設定がおかしいとは思っていたが、どうやらそうではないらしい。

##原因
どうやらjava9以降はFindBugsが使えないらしい…

>FindBugsはメンテナンスされておらず、Java 9以降用にコンパイルされたバイトコードをサポートしていないため、FindBugsプラグインは非推奨になり、Gradle 6.0で削除される予定です。 代わりにSpotBugsプラグインの使用を検討してください。

https://stackoverflow.com/questions/55844077/findbugs-idea-classnotfoundexception-com-googl

元記事を表示

オブジェクト指向について

#はじめに
私がこれまでプログラミングを勉強して学んできた中で、ちゃんと理解出来ているかどうかの復習も兼ねてよく聞く言語や言葉の意味を書いていこうと思います。

初めての投稿となりますので、多々至らぬ点があるとは思いますがどうぞよろしくお願いします。
#この記事の内容について
私が通っていたプログラミングスクールで学習を進めていた時によくオブジェクト指向という単語を聞くので、その事について改めて見直してみようということでこの記事を書いてみようと思いました。
オブジェクト指向はプログラミングを学習していたらよく聞く単語の一つだと思いますが、いざ説明してくださいと言われると難しいな・・・ってなりますよね。

まず、ザックリとした説明で言ってしまうと

#####「モノ」を組み立てていくように表現して、コンピュータに動作させていくという概念

です

正直、自分で書いてても???ってなるくらい簡潔に説明が難しいですね・・・

#何故難しく感じてしまうのか
そもそもオブジェクト指向の説明に明確な正解は存在せず、概念であるために皆さんも学習しているうちにオブジェクト指向について調べても、ほぼ全て

元記事を表示

【2020年1月版】QuarkusでAzure Key Vault を MicroProfile Config で参照

# Azure Key Vault の Microprofile Config 対応

以下の記事で Azure Key Vault のMicroProfile Config 対応について書かれておりました。

– [Azure Key Vault を使用した MicroProfile の構成](https://docs.microsoft.com/ja-jp/azure/java/microprofile/configure-microprofile-with-keyvault)

Quarkus での設定値やDBの接続文字列、APIキーなどのシークレット情報をプロパティファイルに直書きするのは嬉しくなかったんですよね!
これらのキーなどを管理するのに Key Vault を利用したいと考えました。

以下が Azure Key Vault をMicroProfile Config APIのConfigSourceとして接続するAPIなのですが・・・

– [Azure Key Vault Config Source for MicroProfile Config API](http

元記事を表示

【逆引き】Spring Security(随時更新)

# 概要

Spring Securityの利用にあたり、逆引きという形でまとめました。ここに載っていることが正解ではなく、あくまでもひとつの方法ですので実装に迷ったときに参考にしていただければ幸いです。

リファレンスは随時更新していきます。

# 環境
|項目|バージョン|
|:–|:–|
|Java|8|
|Spring Boot|2.2.4|

# 準備

以下は最低限必要なコードです。

“`java:全てのリクエストを制限

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.authenticated();
}
}
“`

元記事を表示

OTHERカテゴリの最新記事