JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

[Google Tasks API(V1)] Javaでタスクリスト内のタスクの順序変更や親タスクを設定する

Google Tasks API V1(Java)を使用して、
タスクリスト内のタスクの順序変更や親タスクを設定する方法
についてご紹介します。

なお、このAPIでは同一タスクリスト内のみ移動が可能です。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクを移動](#1-タスクを移動)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[親タスクの指定](#2-親タスクの指定)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. タスクを移動
指定したタスクを指

元記事を表示

【Android/Java】OkHTTPでDigest認証

## やりたいこと
AndroidアプリからDigest認証で通信したい
OkHTTPを使用することとしたらSingletonで作らないと、メモリを食いまくるようなので、それを意識する

## Step1.実装方法
#### app¥build.gradle
~~~gradle
android {
:(略)
}
dependencies {
:(略)
implementation ‘com.squareup.okhttp3:okhttp:4.11.0’
implementation ‘io.github.rburgst:okhttp-digest:3.1.0’
}
~~~~

#### AndroidManifest.xml
~~~xml

元記事を表示

【Android/Java】Bluetoothペアリング機器の削除(任意のもの以外)

## やりたいこと
製品に付随しているBluetooth機器(例えば、AndroidTVに付随しているBluetoothリモコン)以外のペアリング機器を削除したい。
ネットカフェのPCなど、不特定多数の使用が想定される状況で、利用者がペアリングした機器を、利用終了後に削除したいのが目的での調査メモ

## Step1.実装方法
#### AndroidManifest.xml
~~~xml



【Android/Java】アプリ間データ共有 その2(Android11)

## やりたいこと
アプリ間でデータの共有を行いたい
片方のアプリがプロセスKillされている状態でもデータの参照を行えるようにしたい

以前、非推奨のSharedUserIDを使って実現したが、推奨、かつ簡単に行える実装(SystemProperties)をみつけたので備忘録

## Step1.SystemPropertiesとは
Androidのデバイス動作や設定を制御するキーと値のペアが格納されているもの。
#### ADBコマンド例
~~~cmd
# デバイスのモデル名をシステムプロパティから取得する
adb shell getprop ro.product.model
~~~~

## Step2.実装方法
### SystemPropertiesへの書き込み
任意のキーを指定して、値を書き込む
~~~java
public void writeSystemProperties(String key, String val) {
try {
@SuppressLint(“PrivateApi”)
Class SystemProp

元記事を表示

[Google Tasks API(V1)] Javaでタスクを作成・更新・削除する

Google Tasks API V1(Java)を使用して、
タスクを作成・更新・削除する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクを作成](#1-タスクを作成)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[タスクを上書き](#2-タスクを上書き)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|
|3||[タスクを更新](#3-タスクを更新)|
||1|[スコープ](#31-スコープ)|
||2|[実行](#32-実行)|
|

元記事を表示

Jacksonの JsonNode を使ってJSONの特定のキーを取得しようとしたとき、そのキーが存在しない場合は NullPointerException が発生します。

Jacksonを使用して、深い階層のJSONの値を変更するには、次の手順に従います。

– JSON文字列をJavaオブジェクトにデシリアライズします。
– 必要な値を変更します。
– 変更したJavaオブジェクトをJSON文字列にシリアライズします。

Jacksonの JsonNode を使ってJSONの特定のキーを取得しようとしたとき、そのキーが存在しない場合は JNullPointerException が発生します。このため、キーが存在するかどうかを事前にチェックすることが重要です。

以下の例で rootNode.get(“a”).get(“b”) のようなコードを使用すると、もしキー “a” や “b” が存在しない場合に NullPointerException が発生します。したがって、キーが存在するかどうかをチェックするために has メソッドを使用することが推奨されます。

“`java
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.

元記事を表示

Spring bootの環境構築をしてみた(Intel Mac)

## 背景
“Java“の勉強がしたかったので、人気な“Spring boot“を触るために環境構築をしました。

## 導入内容
IDEは“Eclipse“を使用することにしました。STS(Spring Tool Suite)というツールも主流のようですが、STSもEclipseをベースに作られたIDEになっていて、Eclipseにライブラリを入れることで同等の環境が作れるようです。
Eclipseを使用する理由は“Spring Boot“以外を触ることも考慮して、専用ツールを使うより慣れた時の汎用性が高いかもと思ったからです。

## 導入手順
### 手順
1. Pleiadesをダウンロード・インストール
1. プラグイン: Spring Toolsをインストール
1. Javaをインストール
1. Lombokのインストール
1. プロジェクトを作成
1. Hello Worldを表示させる

### Pleiadesをダウンロード・インストール
pleiadesは日本語化されたEclipseがインストールできて、OS・言語ごとにまとまったプラグインもダウンロ

元記事を表示

JVM – PCレジスタ

Java Virtual Machine (JVM) の Runtime Data Area 構成要素の一つに「PCレジスタ」があります。([JVM – 全体構造](https://qiita.com/fastso/items/9bc3f4d861f729b4e54f)をご参考ください。)

![jvm_runtime_data_area.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260307/6fa83edc-fcd7-7d9c-e716-6b5f1d3b4d44.png)

## JVM仕様のPCレジスタ定義

[The Java Virtual Machine Specification (Java SE 8 Edition)](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html)は次のようにPCレジスタを定義しています。

JVMは、一度に多くのスレッドを実行することができます。JVMの各スレッドは、独自の

元記事を表示

ABC348A~Fの解答[Java]

## はじめに
今回は所用でコンテストに参加できなかったのでコンテスト後に解いたものを載せようと思います。

なお、僕のライブラリに関しては[提出結果](https://atcoder.jp/contests/abc348/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。

## A – Penalty Kick
問題文は[こちら](https://atcoder.jp/contests/abc348/tasks/abc348_a)

`oox`が永遠に繰り返されている文字列の先頭から$N$文字目までを切り出せば答えが求められるので、雑に`oox`を$N$回繰り返した文字列を構築し、`substring`メソッドで答えを求めました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc

元記事を表示

ABC347A~Eの解答[Java]

## はじめに
今回はコンテスト中にEまで解けたのでそれをそのまま載せようかなと思います。

なお、僕のライブラリに関しては[提出結果](https://atcoder.jp/contests/abc347/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。

## A – Divisible
問題文は[こちら](https://atcoder.jp/contests/abc347/tasks/abc347_a)

$K$で割れる物を`ArrayList`にaddしていって答えを構築しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWri

元記事を表示

ABC346A~Fの解答[Java]

## はじめに
今回はコンテスト中にFまで解けたのでそれをそのまま載せようと思います。

なお、僕のライブラリに関しては[提出結果](https://atcoder.jp/contests/abc346/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。

## A – Adjacent Product
問題文は[こちら](https://atcoder.jp/contests/abc346/tasks/abc346_a)

問題文の通りに実装しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(Sy

元記事を表示

Jakarta EE 10 で API と実装が分離された Specification の一覧

2022 年 9 月、[Jakarta EE 10](https://jakarta.ee/release/10/) がリリースされました。

Jakarta EE となって初めての機能追加リリースですが、アプリケーションサーバの EoL 都合で Java / Jakarta EE 8 からジャンプアップを迫られるケースがありそうです。たとえば Red Hat JBoss EAP の場合、Jakarta EE 8 互換の 7.x は Full support が 2023 年 12 月 31 日に終了しています。Maintenance support ends も 2025 年 6 月 30 日に控えており、最近 GA となった 8.x は Jakarta EE 10 互換ですから、デッドラインは近いです。[^1]

||GA|Full support|Maintenance support|ELS-1|ELS-2|
|:—-|:—-|:—-|:—-|:-

元記事を表示

Java silver向け 例題 継承 ポリモーフィズム 2

次のコードの出力結果を答えてください

“`java
abstract class Fish {
String name = “SAKANA”;
abstract void setName(String na);
abstract String getName();
}

class SABA extends Fish{
String name = “”;

void setName(String na) {
name = na;
}
String getName() {
return name;
}
}

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

Fish fish1 = new SABA();
SABA fish2 = new SABA();

fish1.setName(“Tarako”);
fish2.setName(“Maguro”);

System.out.println(fish1.name);
System.out.pr

元記事を表示

JavaでJettyをMavenプロジェクトに組み込む方法

開発中のWebアプリケーションを簡単にテストするためには、組み込みHTTPサーバーが非常に便利です。Jettyは、軽量で使いやすい組み込みHTTPサーバーおよびサーブレットコンテナの一つです。この記事では、MavenプロジェクトにJettyを組み込む方法をステップバイステップで説明します。

# 前提条件

このチュートリアルを始める前に、以下の条件を満たしていることを確認してください:

– JDK 17 以上がインストールされている
– Mavenがインストールされている

# ステップ1: `pom.xml`の編集

プロジェクトが作成されたら、`pom.xml`ファイルを開いて、Jettyの依存関係とプラグインを追加します。

## 依存関係

Jettyサーバーを組み込むために、以下の依存関係を``セクションに追加します。

“`xml

jakarta.servlet
jakarta.servlet-api
<

元記事を表示

[Google Tasks API(V1)] Javaでタスクリストから完了したタスクを全て削除する

Google Tasks API V1(Java)を使用して、
タスクリストから完了したタスクを全て削除する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクを全て削除](#1-タスクを全て削除)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|

## 1. タスクを全て削除
指定したタスクリスト内の完了したタスクを全て削除します。

### 1.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
“`
TasksScopes.TASKS
“`
[⧉[Google Tasks API(V1)] JavaでTask

元記事を表示

Spring BootでTomcatデフォルトのエラーページをカスタマイズする

# 環境
– JDK 21
– Spring Boot 3.2.4
– Embedded Tomcat 10.1.19

# やりたいこと
Spring Bootにもエラーページの機能があります。具体的にはsrc/main/resources/templates直下にerror.htmlを作成すればOKです([公式ドキュメント](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.actuator.customize-whitelabel-error-page))。

しかし、サーブレットフィルターのレベルで例外がスローされると、前述のエラーページではなくTomcatデフォルトのエラーページが表示されてしまいます。

![スクリーンショット 2024-04-11 16.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58650/d9cbceb5-339a-fa33-e4d0-5be5cceea0

元記事を表示

[Google Tasks API(V1)] Javaでタスクリストを作成・更新・削除する

Google Tasks API V1(Java)を使用して、
タスクリストを作成・更新・削除する方法
についてご紹介します。

タスクリストはタイトルのみ更新できます。

Googleカレンダーからのタスク参照では、
画面左下にあるリストの情報が取得できます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスクリストを作成](#1-タスクリストを作成)|
||1|[スコープ](#11-スコープ)|
||

元記事を表示

[Google Tasks API(V1)] Javaでタスクを取得する

Google Tasks API V1(Java)を使用して、
タスクを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[タスク一覧を取得](#1-タスク一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[タスクリストを取得](#2-タスクリストを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. タスク一覧を取得
指定したタスクリスト内のタスク一覧を取得します。

### 1.1. スコープ
このAPIを実行

元記事を表示

Minecraft Fabric APIの備忘録

Mod作成を始めたばかりなので
まだまだ知識は得ていない

記事を書いた理由は “クリエイティブタブのグループ作成” で物凄く沼ったから。

今後いろいろと作るうえで覚えたことを追記する予定

## 開発環境
– minecraft – 1.20.4
– fabric – 0.96.11+1.20.4
– VSCode
– Java (Kotlinは理解不足なので使わない)

バージョン等は今後変わる可能性あり

## プロジェクトの作成

– [テンプレートの作成](https://fabricmc.net/develop/template/ “fabricmc template”)
– grableの読み込みが終わった後コンソールで
`gradlew vscode` の実行

gitからzipでダウンロードする方だとクラス名やディレクトリ構成の変更が面倒だったので、上記テンプレートからダウンロードする方が楽

## アイテムの追加
“`java:ModName.java
public static final Item CUSTOM_ITEM = Registry.

元記事を表示

【Kotlin】OpenAPI Generatorでjavax.annotation.Generatedを生成しない or jakarta.annotation.Generatedに置換【Java】

この記事は同僚の発見した知見を代理でまとめたものです。

https://qiita.com/organizations/justincase

# 文脈
`OpenAPI Generator`で生成されるファイルに含まれる`javax.annotation.Generated`アノテーションのせいで`Java 17`移行時にコンパイルエラーが発生しました。
この問題は最新バージョンでは恐らく解決されていますが、自分たちのチームでは独自パッチを当てたバージョンを運用している関係で、バージョンアップでの解決はできませんでした。

そこで、なんとかバージョンを変えないままで、`javax.annotation.Generated`を生成しない、または`jakarta.annotation.Generated`に置換することを試みました。

自分たちのチームでは`spring-kotlin`のジェネレータを使っていますが、やり方的に言語を問わず応用可能と思われます。
また、後述するテンプレートのファイル名が同じだったので、`Java`に対してはそのまま適用可能だと思っています(確認はして

元記事を表示

OTHERカテゴリの最新記事