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

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

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を降順ソートしimmutableで返す

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

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

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

“`
4
2 2 1 3
“`

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

“`Sample.java

i

元記事を表示

結城先生のデザインパターンの本を買ったので勉強ノートを書いていく – 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)のものです。有名な書店のサンプルアプリです。

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

元記事を表示

AlibabaのオープンソースSentinel Javaフロー制御プロジェクトとHystrixの比較

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

ハイストリックスはここ数年でかなり人気がありました。現在はメンテナンスモードに入っているため、多くの人が代替案を探しています。この記事では、オープンソースのJavaフローコントロールプロジェクトであるSentinelを紹介します。より多くの人に親しまれているHystrixと比較しながら紹介します。このパートでは、この2つをより高いレベルで比較します。次回は、いくつかのコード例を見てみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/a88035f7-bfe9-51cf-8d97-e7366edcf5e7.png)

#Sentinelとは?
簡単に言えば、サーキットブレーカーです。サーキットブレーカーは、特定のリソースが故障し続けたときに起動されます。すでに故障しているリソースを叩き続

元記事を表示

TCP: 基本原理とアプリケーションアーキテクチャ

この記事では、**TCP** の基礎となる原理やアプリケーション・**アーキテクチャ**などを詳しく紹介し、高性能なサーバを構築するための **TCP** の使用方法について説明しています。

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

#TCPの機能
TCPは、信頼性の高い全二重通信をユーザプロセスに提供する接続指向のプロトコルです。このようにして、信頼性の高い整然としたデータパケットを確保し、トラフィック制御をサポートすることができます。ここでは、以下の側面から始めて、なぜTCPが上記のような動作を実装すべきなのかを説明します。

1、IPネットワーク層がデータパケットの信頼性を確保できない理由
2、TCPが到達可能で整然としたデータパケットを確保する方法
3、TCPがトラフィック制御をサポートする方法
4、T

元記事を表示

VSCodeでJARファイルからライブラリを読み込む方法《Maven/Gradleを使わない方法》

Javaで軽くプログラミングをしたくて、ビルドツールをセットアップするのは面倒な場合に直接JARファイルを読み込みたいときのための忘備録。

2020年4月のVSCode Java Extensions Packの[アップデート](https://github.com/microsoft/vscode-java-pack/blob/master/release-notes/v0.9.0.md#work-with-jar-files-directly)で、Maven/Gradleを使わずに読み込むことができるようになった。

# Java Extensions Pack
Java Extension PackはVSCodeでJavaプログラムを作成・デバッグ・テストするための拡張機能。インストールは[ここから](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)。

# JARファイルを読み込む
左のタブで「JAVA DEPENDENCIES」の下の「Referenced Librar

元記事を表示

2020年のMavenリポジトリの作り方

# はじめに

Javaのエンジニアであれば何だかんだでMavenリポジトリを使うことは非常に多いと思います。Gradleであっても使いますしね。

OSSなどはセントラルリポジトリから落とすとして自作のライブラリの管理をどうしていますか? ローカルだけで開発していれば`mvn install`で事足りますが、CI/CDを行っていたりチームや組織でライブラリを共有している場合はそうもいきません。

という分けで今回はMavenで作成したライブラリを公開するための方法に関してまとめました。ちなみに2020年8月時点でのおすすめはGCSをリポジトリにする方法です。

– Maven Central Repositoryに登録
– OSSのリポジトリサーバを立てる
– GitHub Pagesを使う
– GitHub Packages + Actions を使う
– S3/GCS/Azure Blobにリポジトリを構築する
– GCP Artifact Registry

# Maven Central Repositoryに登録

もっとも正攻法の手順となります。登録手続きはややめんどく

元記事を表示

ObjectMapperクラス

# ObjectMapperとは
ObjectMapperは、Jacksonライブラリの主要なアクタークラスです。 ObjectMapperクラスは、基本的なPOJO(プレーンオールドJavaオブジェクト)、または汎用のJSONツリーモデル(JsonNode)との間でJSONを読み書きする機能と、変換を実行するための関連機能を提供します。

また、さまざまなスタイルのJSONコンテンツの両方で動作し、ポリモーフィズムやオブジェクトIDなどのより高度なオブジェクトの概念をサポートするように高度にカスタマイズできます。 ObjectMapperは、より高度なObjectReaderおよびObjectWriterクラスのファクトリーとしても機能します。

**※簡単にいうと?**
JacksonのObjectMapperはJava Objec↔Jsonパーシングを簡単にしてくれるクラスです。

# 使ってみた!
今回、WebSocketを利用してチャットアプリケーションを作成していますが、
実際、使っている箇所のソースコードを共有します。

“`java

@Slf4j
@Require

元記事を表示

#3【備忘録】do〜while文

#はじめに
 今日の東京は曇りだったおかげで日中はいつもより涼しかったです(32℃はあったと思いますが、、、)
 今日は私自身まだ慣れていないdo〜while文について書いていこうと思っています!

#開発環境
今回も”Eclipse”で総合開発環境でやってみました。
こちらの記事を参考に開発環境を構築してみてください。

[EclipseでJava開発環境を作る(Mac編)](https://codeaid.jp/eclipse-java-mac/)
※今回もMacでの作業となります。

#実装
“`java

class Main {
public static void main(String[] args) {
int number = 1;
do {
number ++;
System.out.println(“number = ” + number);
} while (number < 5); number = 4; do {

元記事を表示

アリババ大規模データセンターのパフォーマンス監視と分析の課題と実践

本記事では、**アリババ**の大規模データセンターの**パフォーマンス**監視・分析の課題と実践を紹介します。

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

#独身の日、ショッピングフェスティバル
アリババの代表的なデータクランチイベントは、毎年中国の独身者の日を記念してプラットフォーム全体でセールを行う「11.11グローバルショッピングフェスティバル」です。

下図は2017年時点のデータを使用しています。イベントの規模がわかるように、左上のグラフは売上高の数字を示しています:約253億米ドルで、これは同年のアメリカの感謝祭、ブラックフライデー、サイバーマンデーを合わせた売上高を上回っています。

![image.png](https://qiita-image-

元記事を表示

[ev3×Java] 複数モーターの制御(メソッド、ランダム、確率、制限時間、配列)

この記事はJavaでev3を操作してみたい人のための記事です。
今回はタンクをいろいろな方法で制御していきたいと思います。

#目次
0 . 用意するもの
1 . 複数モーターの制御
 1-0 . タンクを前進させるプログラム
 1-1 . メソッドをつくって制御する
 1-2 . 引数を指定できるメソッドをつくる
 1-3 . StopWatchクラスを使うプログラム
 1-4 . メソッドを指定した確率で呼び出すプログラム
 1-5 . 配列を使うプログラム
最後に

#0.用意するもの
◯ ev3(タンク)
◯ Lモーター/Mモーター
◯ パソコン(eclipse)
◯ bluetooth
◯ microSD
◯ [API Documentation](http://www.lejos.org/ev3/docs/)(これをみながら進めていくのがオススメです。)

 

#1.複数モーターの制御

##1-0 . タンクを前進させるプログラム

◯タンクが5秒間前進して方向転換するプログラムです。
必要なメソッドを並べるだけのシンプ

元記事を表示

JVMパフォーマンスチューニング:チューニングとは何か、適切なプランの立て方について

![Something went wrong]()
**JVM**のパフォーマンスチューニングは、体系的で複雑な作業です。この記事では、その概念を説明し、**JVM**のパラメータを使用してアプリケーションのチューニングを実行する方法を示します。

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

#パフォーマンスチューニングレイヤー
システムの性能を向上させるためには、様々な視点やレイヤーから最適化する必要があります。最適化の対象となるレイヤーは以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/c760a744-75b1-f0c4-cdb0-fda2a18b7a

元記事を表示

JavaでTODOアプリを制作しよう6 検索機能の実装

こんにちは。今回はSpringで検索機能の実装を行いたいと思います。

## TODOアプリ作成リンク集
[1: MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: TODOの表示を切り替える] (https://qiita.com/nomad_kartman/items/c86f77c0435962b9ca37)
6: 検索機能の実装(今ここ)

元記事を表示

[Java] 条件分岐

#if文
 if文は数値や文字列などの評価(比較)結果を判定します。評価結果が「true(真)」の場合、ifブロック内の処理が実行されます。評価結果が「偽 (false)」 の場合はelse文を組み合わせます。

“`
if( 条件文 ) {
// 条件文が真 (true) のときにここが実行される
}
else {
// 条件文 が偽 (false) のときにここが実行される
}
“`
 if文など、処理分岐するためには条件を判定する必要があります。判定のことを「評価」と呼びます。

##関係演算子

![関係演算子.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646368/0e286b4c-f331-0b89-1311-879360d4e46f.png)

##論理演算子

![drow.io.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646368/0e3126f7-94e5-c1cb-

元記事を表示

KotlinとC#からみたJava言語

# はじめに

「KotlinとC#からみたJava言語」というタイトルからは、KotlinやC#に詳しい人間が、Javaを体験してみた結果の報告というようなものを期待する人もいると思うのだが、これはそうした文章ではない。JavaもC#も遊び程度に触ったことがある人間が『Kotlin In Action』という本に刺激を受けて(また、業務都合でC#の本も一冊読んで)書いたものだ。この本は大変面白い本で、Kotlinの知識だけでなく、Java言語についての見識も深めることができた。

本稿はその知見を、プログラミング言語について考える材料になるのではないかと思い、残すものだ。

# Javaの弱点

なぜKotlinやC#を勉強するとJavaの知見が得られるのか。それは両言語ともにJavaを大いに参考にし、それをもっと使いやすくするために設計された言語だからだ。そのため両言語が補った部分を見ると、逆にJavaの何を弱点として認識したのかが分かる。

では一体Javaの弱点とは何なのか。沢山あるのだが、ここでは、①値型定義機能の欠如、②仮想関数の継承、③NULL安全の欠如の3つに絞ることに

元記事を表示

担当したPJの単体テストが地獄絵図だったので独自に作成したガイド(?)を公開する

# はじめに
こんにちは, ねげろんです。

2020年上期にとあるJavaの開発案件にアサインされたのですが, 自分含めメンバが作成したUTコードが __カオスここに極まれり__ でした。

例えば,
・JUnit4とJUnit5のコードが混在しているテスト
・何もassertせずにただメソッドを呼んでいるだけのテスト
・成功するときと失敗するときがある再現性がないテスト
・ステータスコードが200だろうが404だろうが500だろうが成功してしまうモックを使った正常系テスト
などなど・・・。

本PJは追加機能実装のため下期も開発を継続するのですがこのままではまずいと思い,
先輩社員の方に相談のもと単体テストのガイド(?)を作ることにしました。

本記事ではそのガイドを公開します。

ただし, 上述したような __混沌とした現場__ のためのガイドであるということをご承知おきください。

また筆者自身も単体テストに精通しているわけではありません。
もし「もっとこうしたほうがいいよ!」や「それは間違っている!」みたいな意見がございましたら是非コメントに書いていただければと思います!

元記事を表示

OTHERカテゴリの最新記事