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

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

Couchbase Lite機能解説:ピアツーピア同期〜プログラミング構成と設定項目

## ピアツーピア同期プログラミング構成

Couchbase Liteのピアツーピア同期機能を利用するためには、`URLEndpointListener`クラスを利用します。

`URLEndpointListener`を初期化する際に、`URLEndpointListenerConfiguration`を使用して構成を実行します。

ここでは、Couchbase Liteのピアツーピア同期で行えることの理解を助けるため、`URLEndpointListenerConfiguration`で設定できる項目を紹介します。

## ピアツーピア同期設定項目

`URLEndpointListenerConfiguration`を使用して、リスナーを初期化するために使用できる構成オブジェクトを作成します。

#### `port`
リスナーがリッスンするポート。

ポートがnullまたはゼロの場合、リスナーは使用可能なポートを自動割り当てします。

#### `networkInterface`
IPアドレスまたはネットワークインターフェイス名の形式で指定する、リスナーが利用する使用するネ

元記事を表示

【Android】新規画面の追加、別画面として扱い(Java)

最近、Android Studioを使って、JavaのAndroidアプリを独学で作成しているので、その過程で勉強した内容です。
作成したコードはGithubで公開しているので、気になる方は下記をご覧ください。
https://github.com/NagaJun1/OriginalCalendar

#新規画面作成においての前提
まず、Androidで新規画面(アプリ起動後の初期画面とは別の画面)を表示するには、Javaの場合は`setContentView();`を実行することで表示できます。
ですが、この場合、Androidのライフサイクル(`onStart()`や`onStop()`などのイベント)を使用することが難しくなります。
その問題を解消するために、`Intent`を使用した処理を実装する必要があります。

#新規画面の作成
新規画面の’.xml’作成は、プロジェクト作成時に作成される`\res\layout\activity_main.xml`と同様の作りにすればOKです。
(例として、`activity_sample.xml`としておきます。)
ついでに書いておくと

元記事を表示

Java 文字列を1文字ずつ表示

#文字列を1文字ずつ表示

charAtを使うことで一文字ずつ表示することができます。

“`
変数名.charAt(index)
“`

“`java:Test.java
public class Test{

public static void main(String[] args) {
String s = “ありがとう”;
for(int i=0; i

元記事を表示

Javaファイルを解析してホワイトボックステストのテストケースを生成するツールを作成(※C1のみ 2021/11/13 現在)

表題の内容に関するツールを作成しました。
残課題がありますが一旦の区切りとしてコミットしました。

– ソースリポジトリ(Git)
https://github.com/miwa-m/decision_generator/tree/develop

– 実行可能jar
https://github.com/miwa-m/decision_generator/releases/download/0.0.2/DecisionMatrixGenerator.jar

– 動作環境
Java 16(Open JDK 16)

– 概要/使用方法(Git上のREADMEから)
# decision_generator
(Desicion Matrix Generator)

## Overview

Desicion Matrix Generatorは指定のJavaファイルからホワイトボックステストにおけるカバレッジを担保するテストケース表をxlsxに出力するツールです

## Specification

### Usage

#### Parameters

| name |

元記事を表示

Twitchのチャンネルが配信を開始したらDiscordへ通知する

# この記事のゴール
– 任意のTwitchチャンネルが配信を開始したことをDiscordのテキストチャンネルへ通知するアプリをつくる :mega:
– 初期構築・維持含め、タダで実現する :moneybag:

![goal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556115/17398ddb-5ca9-e74f-e751-404febba4357.png)

# 採用したアーキテクチャ
– ハードウェア、サーバ
– Google Cloud Platform Cloud Functions

– 言語
– Java (OpenJDK 11)

## なぜ?
– 配信が開始されたときのみ動作すればいいアプリなので、ミニマルなサービスでいいから
– インターネットと通信を行なうアプリをタダで構築したいから(AWS LambdaはElastic IPのぶんコストが発生する)

言語は好みです。Javaを選択してGCPで構築する場合は、ランタイムの制約があるためJava11を使用

元記事を表示

コンピュータとオセロ対戦26 ~JavaでBitBoard~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/9279ee9b1cab8efe529e)

# 今回の目標
前回、データ集めも機械学習もPythonで行うと書きましたが、Javaにも機械学習ライブラリがあると知りやっぱりJavaで行うことにしました。
今までc++でデータ集め、Pythonで学習と分けて行っていた理由は、

* c++は最高クラスの実行速度があるものの機械学習ライブラリがない -> データ集めには向くが学習はできない
* Pythonは実行速度こそ遅いものの機械学習ライブラリとそれに関する情報が豊富 -> データ集めには向かないが学習は得意

という両極端な性能があるからでした。
しかしJavaなら、最高クラスとまではいかないものの高速な実行が可能で、かつPythonほど情報が豊富ではないものの機械学習ライブラリが存在するという中間的な性能を持っています。そのため今回目指しているような、「データをいったんcsvなどで保存すること

元記事を表示

JavaでExcelファイルに書き込み・出力する。

現在、参画している案件でJavaを扱っています。
その際Java上でExcelファイルに書き込み・出力するコードを書きましたので、自身の勉強のために記録として残しておきます。(2021年11月時点での情報ですので、間違っていたら申し訳ないです。)

Mavenやpomの設定なんかは調べて出てくるものを真似して使いました。
こちらがExcelに書き込み・出力する簡単なコードになります。
![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280983/9f4a20c1-ea67-6367-1a90-75f1ea08624f.png)
①まずWorkbookクラスで書き込みたいExcelファイルを指定します。
②次にExcelのシートを指定します。
③そしてRowの位置を指定した後に、Cellの位置を指定します。
※Row = Excelでいうと縦の列, Cell = Excelでいうと横の列
④書き込む文字を指定した後は、出力ファイルを作成します。(元々のファイルに出力しても構

元記事を表示

【図解で理解】インタフェースとDIについて

はじめに

インタフェースとDIってなくても実装できるのに何で必要なの?と思ったのでこの記事にまとめました。

言語の学習の際につまずく要因として「何その考え?」ということが多いと思いますが、これを理解しておくのとしないのでは現場での活躍度が遥かに変わってくると思います。

図を用いて解説します。

インタフェースとは?

メソッドの具体的な処理は記載せずに「変数」「メソッドの型」を明記したもの。

要約すると、
他のクラスで使用する変数とメソッドが明記されたファイル。

インタフェースのメリットと使い方はこちらで詳しく記載しています。

DIとは?

DIとは、外部の環境などに依存する部分(データへのアクセスなど)を切り離し、 ソフトウェアの外部から提供できるようにするという考え方です。
(引用:Webアプリケーション開発教材 実行時にアノテーション@Overrideが見つからなかった話

## これはなんですか
Java屋さん向けのjava.lang.Classやjava.lang.Methodやアノテーションを使ったあれやこれやする浅瀬くらいの深みな話。
ソース中でstream構文等を使用しているためjava9未満のバージョンをお使いの方はよくわからないかもしれませんが、心の目で見ればわかる、かも。

## やりたいこと

1. インターフェースに書いてあるメソッドをimplementsしたメソッドに @Override を書いてない輩を見つけたらあんじょうよろしゅうしたい
2. そうだ、単体テストで見つけよう!
3. 結論:だめでした

### 検証その1 指定したクラスのメソッド一覧を取得する

単体テストのコード

“` Java
import java.util.Arrays;
import org.junit.jupiter.api.Test;

public class FindOverrideTest {

@Test
public void test() {
Arrays.stream(Class1.class.getMethods

元記事を表示

【Android】BottomNavigationView(画面下部のナビゲーションビュー)の実装(Java)

最近、独自でAndroid のアプリを書いているので、それのメモ書きぐらいのつもりで書いています。
独自で書いているコードは下記に収めてあるので、気になる方は下記をご覧ください。
(「カレンダー_設計書.xlsx」に完成図がざっくりと書いてあります。)
https://github.com/NagaJun1/OriginalCalendar

#「BottomNavigationView」とは?
下記画像の、赤枠の部分がそれです。
今回の記事の題名には「Java」と書いてありますが、実装方法自体は「xml」で実装します。
![ナビゲーションバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/b5204b73-9f70-d32e-a279-d3b00bde96dd.png)

#実装
ソースコードは下記の通りです。
(各ソースの配置位置は、Andoid Studioでプロジェクトを生成した基本的な構造を想定しています。)

“`xml:\res\layout\activity_main.x

元記事を表示

【図解で理解】Javaのinterfaceのメリットと使い方について

目的

・Javaのinterfaceのメリットと使い方を理解する

interfaceとは

メソッドの具体的な処理は記載せずに「変数」「メソッドの型」を明記したもの。

要約すると、
他のクラスで使用する変数とメソッドが明記されたファイル。

interfaceのメリット

・予め規格(ルール)を決めておけばその通りに作成することができ、保守性が上がり複数人での開発の際に実装が複雑化せずに済む。

・改修が発生した場合でも追加で改修を実装するだけで、大元の呼び出しクラスへの影響を抑えられる効果もありテストの工数を短縮することも可能。

・クラス間で疎結合の関係になる。

・インタフェース内で定義したメソッドを継承先で実装しないとエラーになるので実装漏れを防ぐことができる。
 →そのため最初に必要なメソッドと引数を検討してインタフェース内に記述しておくといい。

▼インタフェースがない世界
![インタフェースがない世界.jpg](https://qiita-image-store.s3.ap-northeast

元記事を表示

Couchbase Lite機能解説:ローカルデータ同期

## 概要

Couchbase Liteは、ローカルにあるふたつのデータベース間のレプリケーションをサポートしています。これにより、Couchbase Liteデータベースのデータをセカンダリストレージに保存することできます。

以下は、ローカルデータ同期のコーディング例です。

“`JAVA
DatabaseEndpoint targetDatabase = new DatabaseEndpoint(database2);
ReplicatorConfiguration replicatorConfig = new ReplicatorConfiguration(database1, targetDatabase);
replicatorConfig.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH);

// レプリケーターを作成します(レプリケーターがGCされるのを防ぐために、参照が保持されている必要があります)
replicator = new Replicator(replicatorConfig)

元記事を表示

Spring Bootで簡単なWebアプリを作ってみたい!【準備からGet・Post表示まで】

# 【経緯】
Javaの入門書である「スッキリわかるJava入門」を読み終わったので、なにかWebアプリを作ってみたいと思ったのがきっかけです。
ちょうど業務でSpring Bootが使われていたので勉強を始めたのですが、チュートリアルが少なく苦労しているので、備忘録的にまとめてみようと思います。

# 【対象読者】
Javaの入門書を読み終わって、これからWebアプリを作ってみたいと思っているひと向けです。
「とりあえず動かすこと」を優先にまとめています。

# 【この記事でやること】
– ブラウザでHello Worldを表示させてみる
– Getで値を渡してみる
– Postで値を渡してみる

# 【開発環境】
– OS:Windows 10 Pro
– IDE:IntelliJ IDEA 2021.2.2(Community Edition)
– Java:openjdk 11.0.2 2019-01-15
– Spring Boot:2.5.6

# 【準備編】
ここでは、環境構築の際に参考にしたサイトをまとめています。

## ■IntelliJのインストール
Intel

元記事を表示

Couchbase Lite 機能解説:ロギングAPI

## 概要
Couchbase LiteのロギングAPIについて解説します。

ログ出力には、次のふたつのストリームがあります。

#### ファイルベースロギング

ファイルベースロギングでは、ログはログレベルでフィルタリングされた個別のログファイルに書き込まれます。
また、各ログレベルは個別のポリシーを持ちます。

#### コンソールベースロギング

コンソールロギングを使用すると、問題の調査のために通常のファイルベースのロギングに干渉することなく、特定のデバッグシナリオに合わせて診断出力を調整できます。

#### カスタムロギング

Loggerインターフェースを使用してカスタムロギングクラスを実装できます。

## コンソールベースロギング

コンソールログはファイルログとは独立しています。そのため、ファイルログストリームを損なうことなく変更を加えることができます。

コンソールログは、デフォルトで有効になっています。デフォルト設定を変更するには、`Database.log`のメソッドを使用して必要な値を設定します。

次の例では、コンソールベースのログのドメイ

元記事を表示

Android 11 API30 以降に対応したアプリ開発用メモ

2021年11月からプレイストアの要件でターゲットAPIバージョンが30以降になったことに伴い、作業で躓いたポイントのメモです。

——-

## 前提
Android API30 の要件により、端末内へのアクセスなどをする場合は以降に記載する作業が必要になっています。
私の場合はアプリからブラウザを呼び出すために作業が必要でした。
[Android でのパッケージの公開設定のフィルタリング  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/package-visibility)

## AndroidManifest.xml への追記
プロジェクト名/android/app/src/main/__AndroidManifest.xml__
に必要な情報を追記します。
私の場合は以下を記載しました。
“`


Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

#Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

##行(横)ごとに値を受け取る
####inputがint型の場合

【input】
1 2 3
4 5 6
7 8 9
0 1 2

“`java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 受け取り用配列
int[][] line = new int[4][3];

// トークン取得、配列格納
for (int i = 0; i < 4; i++) { line[i] = new int[3]; for (int j = 0; j < 3; j++) { line[i][j] = scan.nextInt(); } } // 配列の中身表示 for (int i = 0; i < line.length; i++) { for (int j = 0; j < line[0].length; j++) { System.out.println("line[" + i + "][" + j + "] = " + line

元記事を表示

SpringSecurityの基本のき

最近、現場でログイン機能を実装する機会がありました。
SpringSecurityというフレームワークを使用したのですが、クセが強くてとっつきにくかったので記事にしておこうと思いました!
完全に理解しきれておらず、変な部分もあるかもしれませんがご了承ください。

##SpringSecurityとは
アプリケーションにセキュリティ機能を追加するフレームワークです。
主に、認証機能、認可機能を提供します!

##ファイル構成

今回動作させたファイル構成になります。

“`
├ src/main/java
└ com.example.demo
└ SecurityConfig.java
├ controller
├ AdminController.java
├ LoginController.java
└ SuccessController.java
├ model
├ CustomUserDetails.java
└ User.java
├ repository
        ├ LoginRepository.jav

元記事を表示

HTTP domain

“`
String toDomainUrl = getToDomainUrl(request.getRequestURL(), request.getServletPaht());

private String toDomainUrl(StringBuffer requestURL, String servletPath){
return requestURL.delete(requestURL.indexOf(servletPath), requestURL.length()).toString();
}

“`

元記事を表示

【C#・Java】DBで絞り込み検索

#絞り込み検索のサンプルコード
テーブルに対して絞り込み検索を行うために必要なSQL文を生成するロジックです。
そのままでは使えませんので適宜編集してください。

###C#版 サンプルコード

“`csharp:Refinement.cs
string cnd1 = textBox1.Text;
string cnd2 = textBox2.Text;
string cnd3 = textBox3.Text;
string cnd4 = textBox4.Text;
string cnd5 = textBox5.Text;

List List = new List();

// 絞り込み条件式の生成
if (!cnd1.Equals(“”))
{
List.Add(“CONTRACT_DATE>='” + cnd1 + “‘ “); // (例)契約日付の最小値
}
if (!cnd2.Equals(“”))
{
List.Add(“CONTRACT_DATE<'" + cnd2 + "' "); // (例)契約日付の最大値 } if (!c

元記事を表示

springframework.security JWT実装サンプル

# はじめに
springframework.securityでのJWT実装サンプルです調べてみると、「難しい・分からない」みたいなコメントがたくさん出てくるので、まとめます
実際、ほかにもサンプルはあるのですが、コピペしても動かないことが多々あったのでサンプルの1つとしてどうぞまた、「難しい・分からない」を解消するために処理の流れも追っていきたいと思います

# ソース
下記のソースをダウンロードしておいてください

https://github.com/HawkClaws/SpringSecurityJWTExample

# 必要なクラス群
+ SecurityConfig
– springframework.securityのconfigを記載
+ User
– springframework.securityの「UserDetails」の実装
+ UserRepository
– UserモデルのRepository
+ UserServiceImpl
– springframework.securityの「UserDetailsService」の実装
+ J

元記事を表示

OTHERカテゴリの最新記事