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

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

Android開発リンクまとめ

#Android

android studio logcat
https://developer.android.com/studio/debug/am-logcat?hl=ja

コード整形プラグイン
https://qiita.com/ikemura23/items/9a33c1b2bdb5a65d29a5

Fragment
https://developer.android.com/guide/components/fragments?hl=ja

AlertDialog
https://qiita.com/ohwada/items/f95518b6948b271433a3

https://qiita.com/granoeste/items/bc30c25caefe5ceb102b
http://www.366service.com/jp/qa/42f4109029cf60909206170c40d3d8f2


https://www.javadrive.jp/andr

元記事を表示

[Java]画像をアップロードしてBase64化する

## 概要

– Servlet/JSPを使った古き良き技術スタックで画像のアップロードを試します
– multipart/form-dataで送ったファイルをサーバサイドでBase64化するのが今回やりたいこと
– ServletもJSPもど素人です

## コード

### アップロード画面

– 最初に表示するアップロード画面のJSP

“`java
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




Java Sample

Hello

元記事を表示

【Java基礎】Classとは

## はじめに
当記事は、[やさしいJava](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC%AC7%E7%89%88-%E3%80%8C%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E3%80%8D%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E9%AB%98%E6%A9%8B-%E9%BA%BB%E5%A5%88/dp/4815600848)という参考書で独学した知識の整理の為に書きました。

## Classとは
モノ一般に関する状態・性質や機能をまとめたもの

– field:クラスの「状態・性質」を表す仕組み
– method:クラスの「機能」を表す仕組み
– member: field、method…etcのこと

## Classの宣言
クラスは次のように宣言します。

“`html:
class クラス名
{
型名 フィールド名;
・・・
戻り値の型 メソッド名(引数リスト)

元記事を表示

Kubernetes で VisualVM(JMX接続)

# はじめに
今回は k8s で動いている Java アプリに VisualVM で接続しようと思います。
Java アプリケーションの監視や解析の際に利用するかと思います。
コンテナなので Prometheus でのメトリクス収集が一般的だと思いますが、今回は Java 開発者に使い慣れたツールということで Java 側で用意されているツールを利用します。

※今回は Java アプリケーションを用意せず Jenkins のコンテナに対して実施しました
※JMX や Jenkins は Prometheus でメトリクス収集も可能です

# 環境情報
Kubernetes:1.18
helm:v3.2
※https://helm.sh/docs/intro/quickstart/
Java:1.8
Jenkins:2.235

# Jenkins コンテナ準備
helm で Jenkins コンテナをデプロイします。

まずはデプロイ用にパラメータファイルを作成します。
※Pod への接続は NodePort を利用します
※jmx で接続するポートを今回は 32000 で指定してい

元記事を表示

Java 例外処理

#【Java 例外処理】

業務内で使用する Javaの例外処理のメモです。
開発時に使用しているのでまとめました。

##Javaには例外処理という便利な機能がある

例外は、Javaプログラム実行時に通常ではない特別の状態のときに発生する。
例外発生時に実行されるのが例外処理である。

余談ですが、例外処理のプログラム構造は、if文のような感じで視覚的にわかりやすいなと思いました。

###try – catch – finally構文

“`java
//例外処理の構文

try{
//例外が発生する可能性のある処理;
} catch (例外クラス 変数名){
//例外が発生したときに実行する処理(例外が発生しなければ行われない処理);
} finally {
//例外の有無に関わらず、最後に必ず実行する処理
}
“`

通常実行は、tryブロックのみ。
例外が発生した場合、処理は直ちにcatchブロックに移行する。

※スタックトレースとは、JVMがプログラムのメソッドをどのような順序で呼び出して、どこで例外が発生したかの経緯が記録された情報である。

##余談

元記事を表示

【Java】StringBuliderで改行する方法

##地味にハマったので

“`Java
System.getProperty(“line.separator”)
“`
機種によって改行コードが異なる為、上記のように機種に依存しない書き方をしたほうがいい。

元記事を表示

*Android*HTTP通信でWebAPIを叩いてみる[GET, POST]

# はじめに
こんにちは.今回は,AndroidでWebAPIを叩いてみましょう.初めてWebAPIを叩く方でも読めるように書いていきます.WebAPIを叩く方法はいろいろありますが,Javaの標準ライブラリである`HttpURLConnection`を使用します.面倒な設定などは何もなく,WebAPIを叩くために使用するのであればオーソドックスな方法だと思います.

WebAPIを叩くと戻り値として`JSON`を受け取ることになりますが,AndroidではJSONを整形して画面に出力するのが難しいので,`curl`コマンドを使いつつ,Androidの方を実装していきます.WebAPIを使う場合,curlコマンドに関しては使えた方がかなり作業が楽になると思います.

# 前提
開発環境は以下の通りです.
*Android Studio 4.0.1
*targetSdkVersion 28
*Google Nexus 5x

curlコマンド
*Ubuntu 20.04 LTS (WSL 2)

# なぜWebAPIを使用するか
音楽の歌詞アプリを作りたい場合や翻訳アプリを作ることを考え

元記事を表示

@PostConstruct

# @PostConstructとは
– 初期化メソッド
– オブジェクトの初期化部分
– オブジェクト生成後、別途初期化作業を行うために実行するメソッドに宣言する。
– PostConstructアノテーション付きのinitメソッドはWASが上がるときに実行される。

# メリット

1. コンストラクタが呼び出された時、beanはまだ初期化されないです。(挿入された依存性がない。)
でも、@PostConstructを使うとこで、beanが初期帰化されるときの同時に依存性を確認できます。

2. bean lifecycleで一回だけ実行されることを保証できます。(**WASが上がるときにbeanが生成されるときの1回だけ初期化**されるため。)なので、**PostConstructアノテーションを使うことでbeanが何回も初期化されることを防ぐことができます。**

# 適用ソース
自分がWebSocketの勉強をしていた時に作成したコードの一部です。

“`java

@Slf4j
@RequiredArgsConstructor
@Service
public class

元記事を表示

IntelliJ IDEA環境で開発されたJavaアプリケーションをAlibaba Cloud ECSインスタンスにデプロイ

このチュートリアルでは、ローカルのIntelliJ IDEA環境で開発された**Java**アプリケーションを**Alibaba Cloud ECSインスタンス**にデプロイする方法を説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-a-java-application-to-an-ecs-instance-in-intellij-idea_594777)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/095b1147-dadf-04e6-7b46-38fc6d786fa6.png)

#ローカルでアプリケーションを開発する
クラウド上で動作するJavaアプリケーションをコンパイルしても、ローカルで動作するJavaアプリケーションをコンパイルしても、

元記事を表示

EclipseでJavaアプリケーションをAlibaba Cloud EDASにデプロイする方法

このチュートリアルでは、Cloud Toolkitを使用してEnterprise Distributed Application Service (EDAS)上にアプリケーションをデプロイする方法をご紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploy-an-application-to-alibaba-cloud-edas-in-eclipse_594775)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/07f350b6-8a8e-3126-1174-742ac94c3179.png)

#EDASについて
[エンタープライズ分散アプリケーションサービス](https://www.alibabacloud.com/ja/product/edas)(EDAS

元記事を表示

Cloud Toolkitでローカルで開発されたJavaアプリケーションをAlibaba Cloud ECSインスタンスにデプロイ

このチュートリアルでは、ローカルで開発された**Java**アプリケーションをCloud Toolkitを使用して**Alibaba Cloud ECSインスタンス**にデプロイする方法を説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-a-java-application-to-an-ecs-instance-in-eclipse_594770)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

クラウドコンピューティング技術の急速な発展に伴い、Alibaba Cloud [Elastic Compute Service](https://www.alibabacloud.com/ja/product/ecs) (ECS) インスタンスにアプリケーションをデプロイする開発者が増えています。このチュートリアルでは、ローカルで開発したJavaアプリケーションを[Cloud Toolkit](https://www

元記事を表示

Excelに自動で変換された日付の文字列をjava.time.LocalDateで取り込む

CSVファイルなどで日付を文字列で扱うとき、日付のフォーマットは `YYYY-MM-DD` を使うことが多いかと思います。
ところが、CSVファイルをExcelで開くと勝手にExcelの日付フォーマットに変更されて `2020-09-02` が `2020/9/2` といったように上書きされてしまうことがあります。

# java.time.LocalDate で取り込む

このようにExcelで自動変換された日付フォーマットの文字列を `java.time.LocalDate` で取り込むときは `java.time.format.DateTimeFormatter` でフォーマットを指定する必要があります。

“`scala

scala> import java.time.LocalDate
import java.time.LocalDate

scala> import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatter

scala> val localDate = Lo

元記事を表示

spring-batchで集計処理をしたい

# 経緯
Spring-Bootで作られたWEBアプリケーションにおいて、
用意されたAPI実行ログファイルの内容を集計して、その結果をDBに格納する、そんなバッチ処理の実装を行いたい。
ただその要件の実装の参考になりそうなサイトがなく、とんでもなく詰まったので備忘録として残しておく。(これがベストかは不明)
※当方投稿時点でバッチ歴7日くらい

# 主要件

* データ中の特定の項目毎に集計を行いたい
* 集計はJava側で行う(SQLでは行わない)
* データの一部をDB格納前にマッピングした文字列に変換する

# 前提データ(例)

### Before:集計対象のログ形式

アクセス時の`URL/HTTPメソッド/HTTPステータスコード/実行時間/実行日時`がTSV形式で羅列されている
例:
`/api/・・・ GET 200 48 2020/08/14 11:05:42 701
/api/・・・ GET 200 27 2020/08/14 11:05:43 352
/api/・・・・/41 DELETE 401 10 2020/08/14 11:05:46 780
/api

元記事を表示

Twitter OAuth認証のコールバックURLでintent-filterが反応してくれない

Twitter OAuth認証のコールバックで自分のアプリに制御が戻ってくれない
というハマりがあったのでメモ。


Twitterアプリ登録ページで、
コールバックURLはhttp://かhttps://で始まらなければならない、と書いてあるので
最初、存在しないURLや存在するURLを色々試したが、
intent-filterが反応しなかった。

実際には、コールバックURLは

**”独自スキーマ://” **

という構文でも登録を受け付けてくれる。

>Callback URL
>zanapp://

次に、
AndroidManifest.xmlのandroid:hostとコールバックURLのhostが
両方とも無し、
という設定で試したが、やはり反応しない。

そこで、
アプリのソースコードで、
コールバックURLのスキーマに**ホスト**(test)を付けてみた。

(AndroidManifest.xmlのandroid:hostとコールバックURLのhostが
 両方ともあり、の設定。)

“`java:TwitterOAut

元記事を表示

Micronaut 2.0 入門

先日、[Micronaut フレームワークの採用を促進するために Micronaut 財団を設立](https://www.infoq.com/jp/news/2020/08/oci-micronaut-foundation/?itm_source=infoq&itm_medium=related_content_link&itm_campaign=relatedContent_news_clk)すると発表されました?

これにより、どんどんMicronautが流行っていくと思われます!

最近サーバレスファンクションやコンテナサービスによるオートスケールで運用することが多くなってきたことから、コールドスタートが問題視されるJVM言語は利用が難しいのでは?という声も聞こえてきます..。

ですが、Micronautを始めとするJVM系のフレームワークがネイティブビルドに対応していくことでJVM言語が採用しやすくなりそうです。

## そもそもMicronautって何?

[Micronaut公式](https://micronaut.io/)から引用

> A modern, JVM

元記事を表示

JavaでListを降順ソートし非破壊で新たにListを生成する

## 概要
表記の件、AtCoderの問題を解く時に必要になったのでメモ書きで残します。Javaで実装しようとした時にいくつか方法は挙げられると思いますが、個人的に一番短く書けると感じる実装を記載します。

## 対応方針
* [Java: Sort an unmodifiable list](https://stackoverflow.com/questions/1797550/java-sort-an-unmodifiable-list)に非破壊でListを返す実装方法がいくつか書いてありますが、今回はStream APIを使うものを採用します。
* 降順ソートは、[Comparatorの使い方・作り方](https://javazuki.com/articles/comparator-usage.html)で紹介されている`reverseOrder()`を使います。

## 実装サンプル
下記のように入力する数字の数と、数字のリストを入力し、

“`
4
2 2 1 3
“`

入力した数字リストを降順に出力するサンプルです。

“`Sample.java

import

元記事を表示

結城先生のデザインパターンの本を買ったので勉強ノートを書いていく – ArrayやDictionaryを支えるIteratorパターン

# 教科書:Java言語で学ぶデザインパターン入門

「数学ガール」で有名な結城浩先生の「Java言語で学ぶデザインパターン入門[^1]」を購入しました[^2]。
せっかくの機会なので、普段使っているSwiftで実装しながら、勉強ノートを作っていこうと思います。
本記事は「第1章 Iterator 1つ1つ数え上げる」を参考に作成しました。

# Iteratorパターンの嬉しさがなんとなくわかってきた!

はじめてIteratorパターンに触れたとき(JavaScriptのIteratorでした)は、何が嬉しいのかまったくわかりませんでした。
今回、自分で手を動かして具体的に実装したり、Swiftの`Sequence`や`map`のソースコードを眺めているうちにIteratorパターンの嬉しさがなんとなく実感できた気がします。
同じような気持ちを抱いている方の参考になると嬉しいです!

# Iteratorパターンとは?

ArrayやDictionaryのように、何かの集まりの全体を順番にスキャンしていくときに使われるデザインパターンです。
少し長い引用になりますが、「Java言語

元記事を表示

JavaのStream API

# はじめに
`Java` 皆さんお使いでしょうか!
自分は最近何かと書くことが多いですが、 `Stream API` が実装されてからかなり便利になった気がします。
`Stream.forEach` や、 `Stream.filter` といった代表的なものはパッと出てきますが、
あまり使用しないものは出てこなかったりするので、覚書のために残しておきます。

# Stream.generate
順序付けされていない、無限Streamを作成します。
乱数の生成など、関連性のない値の作成時に便利です。

ドキュメント:[docs](https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/Stream.html#generate-java.util.function.Supplier-)

## コード
“`java
public static void main(String[] args) {
Stream stream = Stream.generate(() -> Math

元記事を表示

Springアノテーション備忘録~lombokもあるよ~

#タイトル
Spring アノテーション備忘録

#概要
* Spring bootを学習している際に出てきたアノテーションを備忘の為にまとめてみました。
* 各アノテーションについて、調べた内容を自分用に簡単に整理したものとなります。
* Spring boot,lombokなど色々なアノテーションを集めていますので使用の際はご注意ください。
* 例文中におけるpackage宣言、import宣言は省略してあります。

学習中の為、認識違いや説明不足が多々あると思いますので、気づいた方がいましたらご指摘いただけると幸いです。
また、記載のないもので、覚えておくと便利なものをご存知でしたらコメントいただけると~~泣いて~~喜びます。

#目的
* 備忘録
* Spring bootでWebアプリケーションを作成する際によく使いそうなアノテーションの理解を深める

#目次
よく使いそうな場所で分類(※一概に特定のクラスで使用する、使用可能というわけではない)
1. Controller
 1. `@Controller`
 2. `@RequestMapping`
 3. `@Respo

元記事を表示

HystrixとSentinelをコード例で使用

本記事シリーズでは、**Alibaba**のオープンソースの**Sentinel Java**フローコントロールプロジェクトを**Hystrix**と比較しながらご紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/hystrix-vs–sentinel-a-tale-of-two-circuit-breakers-part-2_594756)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

前回のブログでは、2つのライブラリを高いレベルで比較しました。今度は、コード例を見ながら、両者の使い方を見ていきましょう。

#例
ここで使用した例は、このSpringの[チュートリアル](https://spring.io/guides/gs/circuit-breaker/?spm=a2c65.11461447.0.0.7e4717c6AVEkbf)のものです。有名な書店のサンプルアプリです。

始める前に、サンプルアプリをダウンロード

元記事を表示

OTHERカテゴリの最新記事