- 1. nullableなMono/Fluxの後続処理を分岐する(WebFlux基本編)
- 2. Apache beam サンプルコード
- 3. 【Android Studio】ボタンによる画面遷移
- 4. Java(clear)
- 5. SimpleDateFormatがスレッドアンセーフであることをstreamを使って検証する
- 6. Spring bootの@Autowiredってなんや
- 7. Android(Java)でFirebase Cloud Functionsを使ってみる
- 8. java.utilにはArrayListクラスが二つある
- 9. [Android] zxingでQRコード画像から読み取る
- 10. タイピングゲーム-ver1.0
- 11. JavaでPDFファイルの文字列を読み取る
- 12. 64bit Linuxに、32bit用のJava 1.4をインストールする
- 13. 課題((public) Carクラスの作成)
- 14. timestamp status 999 error none message no message available
- 15. 【Java】StringはStringBuilderの下位互換?
- 16. Java
- 17. FindBugs-IDEAのエラー
- 18. オブジェクト指向について
- 19. 【2020年1月版】QuarkusでAzure Key Vault を MicroProfile Config で参照
- 20. 【逆引き】Spring Security(随時更新)
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 MonofindHeadersByUserId(@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行目を追加“`
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” }; // 配列を作成
Listlist1 = 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();
}
}
“`