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

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

【Java】パスワード変更を遷移なしでやろうとした話【Ajax】

備忘録としての投稿です
記事にしておきながらなんですが、人に見せることは目的をしておりません。
ですが、見かけた方が内容についていろいろとツッコミを入れてくださると嬉しいです。

【自分について】
となるITベンチャー企業に入社し、日々勉強中です。
主にJavaを勉強しています。

## 事の発端
現在、Javaの動的WEBプロジェクトで簡単な従業員管理サイトのようなシステムを作っている。
管理者のパスワード変更機能を付けたいと思ったのですが、変更のためだけに別でページを作るのもなーなんて思い、モーダルウィンドウでパスワード変更画面を出し、ページ遷移することなく変更処理ができたら良いよねと思う。

## 画面遷移なく Servlet の処理を実行することは可能か?
パスワード変更機能の追加で一番実現させたかったのは、画面遷移なくパスワード変更の処理を実行すること

このシステムでは、基本的には JSP で画面表示、Servlet で内部処理を行っている。
(基本そうかもしれませんが、、)
JSP → Servlet → JSP のやり取りは Servlet の URLマッピング で s

元記事を表示

ラッパーを作れば労働時間が減るかもしれない【adapterパターン】

# adapterパターンとは
安定してるプログラムの中身(Adapteeの中身)を変えずに仕様を変更するためのパターン
ようはラッパーを作るってことです

中身を変えないから
仕様を変更しても既存クラス(Adaptee)の品質が保証されますね
つまりテストが減ります貴方の労働時間は減ります

# クラス図(委譲を使用した実装)
![スクリーンショット 2024-03-06 130636.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3714713/34f3c01e-ac8e-c1e5-b059-b0f8cddc1e5c.jpeg)

# 詳しい解説
こちらの記事が非常に詳しく解説しているので委譲(丸投げ)します
> 引用: よしたろうブログ

# おわりに
ラッパーを作るという考え方を頭の片隅に置くための
きっかけを目指してみました

ふと思ったんですけど
機械学習ライブ

元記事を表示

Hello Worldからの復習 ~カプセル化編~

Spotifyで落語を聞くのが趣味だが、いろんな噺家さんがランダムに聞けて良い。
去年、おととしあたりは、春風亭一之輔にはまり、笑点に出演が決まったとき、笑点の見方も知っている噺家さんが出るようになるとまた違った感じで見れる気がする。
まぁ最近テレビを破棄したのでテレビ自体観ていないのだが、、
最近聞いて話し方面白いなぁと感じているのは「桃月庵白酒」で師匠は五街道雲助。
師匠の亭号を継ぐ人もいれば改める人もいるんだな。
歌舞伎だと代々受け継ぎ格式高い印象がある。(落語が格式低いとは言っていませんw)
落語の亭号は割と自由なんだなと感じた。
歌舞伎は屋号、名跡、格で枠が決まり生まれた家系でカチッとしていて、落語は家系というより噺家になりたいという人が弟子入りしてっていう感じで割とパブリックな感じ。
歌舞伎も養成所から入ったりと家系外もたまにあるが、どちらかというとprotected、privateなところがあるなと思いましたというお話。

ペコリ

##### カプセル化って?
+ メリットは?
+ Sample

◆カプセル化って?

**アクセス修飾子**でクラス・メン

元記事を表示

[Vision API] Javaで画像内のいろいろなものを検出する

Googleが提供しているVision APIをJavaで使ってみました。

***Vision APIとは***
Googleが提供しているAPIで
機械学習モデルを使い、対象となる画像から様々な情報を取得することができます。
画像に含まれている文字、物(猫や人物が履いているジーパンとか)、人物の表情などの
情報を取得することができます。

Google Cloud Platform(GCP)が提供する機械学習サービスの一種です。 このサービスを利用することで、Googleの持つ画像に関する機械学習モデルを使い、対象となる画像から様々な情報を取得することができます。

料金は、1000回/月(API実行回数)までなら無料です。
詳細は、Googleのページ[Cloud Vision の料金](https://cloud.google.com/vision/pricing?hl=ja)を参照ください。

|No|||目次|
|—|—|—|—|
|1|||[Cloud Vision APIを使用するための準備](#1-cloud-vision-apiを使用するための準備)

元記事を表示

[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた

スプレットシートのメニューとGoogle Sheets API使い方のQiita記事を
関連づけた一覧を作成しました。
関連づけてみた所感としては、ほとんどの操作がAPIで対応されているようです。

記事では、Google Sheets API v4(Java)を使用していますが、
ほぼ全てのAPIを網羅しているはず(執筆の時点では)

なお、コメント関連の操作はSheets APIには用意されていません。
Google Drive APIでコメントの追加・取得・変更が可能ですが
追加位置の指定はできないようです。(こちらは別途記事にします)

|No||目次|
|—|—|—|
|1||[メニュー](#1-メニュー)|
||1|[ファイル](#11-ファイル)|
||2|[編集](#12-編集)|
||3|[表示](#13-表示)|
||4|[挿入](#14-挿入)|
||5|[表示形式](#15-表示形式)|
||6|[データ](#16-データ)|
|2||[シートメニュー](#2-シートメニュー)|
|3||[ツールバー](#3-ツールバー)|
|4||[行・列メニュー

元記事を表示

継承

継承は親クラスの持つメソッドやフィールド等を子クラスに引き継がせることができます。
継承を用いると子クラスが親クラスの機能を全て利用できる為、機能の本質が似通っている類似クラスを容易に作成できます。

ただしクラスの多重継承は禁止されています。
また、安易な継承はクラスの参照元を増やす事や不要な機能の追加にも繋がり、コードが読みにくくなります。
その為、委譲等の類似機能での代用が可能か常に考える必要があります。

元記事を表示

[Google Sheets API] 埋め込みオブジェクト(グラフ、画像、スライサーなど)のサイズ、配置位置を変更したり、埋め込みオブジェクトを削除する

Google Sheets API v4(Java)を使用して、
スプレットシートに埋め込まれたオブジェクトのサイズ、配置位置を変更する方法と
スプレットシートに埋め込まれたオブジェクトを削除する方法
についてご紹介します。

**埋め込みオブジェクトとは**
グラフ、画像、スライサーなど、スプレットシート上に配置され、
マウスなどで動かすことができるオブジェクトのことを指します。
埋め込みオブジェクトは、グラフや画像などの種類に関わらず一意のIDを持ちます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
:::

:::note info
その他のGoogle Shee

元記事を表示

「容器」と「中身」を同一視するということについて【コンポジットパターン】

“`
最終更新日: 20230305
“`
# はじめに
ライトな感じでコンポジットパターンに触れてみようってテーマの記事です

コンポジットパターンってようは、ツリー型データ構造作りたいから同一視して再帰処理するってことだと思うんですけど
まず頭に入れるべきことは「同一視」かなって個人的には思ってます

ツリー型データ構造が必要ならライブラリ使えば良いで終わりな気がするけど
同一視って設計概念は頭の片隅に置いとけば役に立つ日が来る予感!

# 何が実現できる?
「容器」と「中身」を同一視するということは
「容器」を「中身」として見ることができるので

下記のような「容器」に「容器」を格納する入れ子構造が実現可能
“`
* ディレクトリ
* ディレクトリA
* ファイルA
* ディレクトリB
* ファイルB
* ファイルC
“`

# クラス図
> 引用: Java言語で学ぶデザインパターン入門 結城 浩

![スクリーンショット 2024-03-05 101940.jpg](https://qiita-image-st

元記事を表示

Hello Wordからの復習 ~static編~

##### お品書き
+ staticって?
+ static変数、staticメソッド
+ 使いどころは?
+

◆staticって?

staticを使わないパターン。
カウンター変数を設定し入力された人数は?

まずはひとつみてみよう。

“`java:java
class Student4{
String name;
int counter = 0;

Student4(String n){
name = n;
counter++;
System.out.println(name + “さんをインスタンス化しました”);
}
void display(){
System.out.println(counter + “人です”);
}
}

“`

“`java:java
class StuSample4{
public static void main(String[] args){
Student4 stu1 = new Student4(“大輔”);
stu1.display()

元記事を表示

Spring Cloud Gatewayを使用してAPIゲートウェイを構築してみた

## Spring Cloud Gatewayとは?

Spring Cloud Gatewayは、Spring BootフレームワークとSpring Cloudプロジェクトの一部であるAPIゲートウェイで、シンプルかつ効果的な方法でAPIへのルーティングを提供し、セキュリティ、監視/メトリクス、回復力などの横断的な関心事をAPIに提供することを目的としている。

#### 主な機能

– ルーティング: さまざまな条件に基づいてリクエストを適切なサービスにルーティングする
– フィルター: リクエストとレスポンスを処理するフィルターを適用できる
– 認証と認可: OAuth2、JWTなどの認証と認可メカニズムをサポートする
– 監視: Prometheus、Micrometerなどのツールを使用してAPIの使用状況を監視できる
– サーキットブレーカー: 障害が発生したサービスへのリクエストを自動的に遮断し、システム全体の安定性を保つ

## APIゲートウェイとは?

APIゲートウェイは、複数のAPIをまとめて管理するためのプラットフォームで、APIの開発、公開、保護、監視を容易

元記事を表示

Java開発者向け: GitHub ActionsでGraldeとSpotBugsを使ったCI静的解析の実装方法

### はじめに
– GitHub Actionsの詳細な説明は行いません
– Gradleを中心した説明になります。Mavenの説明は行いません。
– 私のイメージも交えて話します。誤っていたら指摘していただけると記事も私のイメージも修正できるのでありがたいです


# GitHubActionsのイメージ

![スクリーンショット 2024-03-05 12.35.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641519/02a83b99-199c-0916-2777-c2c98c3ef22e.png)

### 項目の説明

**ワークフロー(Workflow)**
ディレクトリにあるYAMLファイルで定義され、一連のジョブを含みます。
GitHubActionsにおける一番大きな枠組みです

https://docs.github.com/ja/actions/using-workflows/about-workflows

**イベント(

元記事を表示

Hello Worldからの復習 ~コンストラクタ編~

##### お品書き
+ コンストラクタって?
+ Sample
+


◆コンストラクタって?

今回もメソッド系の復習。
**コンストラクト(construct)**
組み立てる、作成するという英単語。
javaでのコンストラクタはオブジェクトを作成するための特殊なメソッド。

オブジェクトの初期化に使われる特殊なメソッドを
**コンストラクタ**という。

::: note
ルール①:名前がクラスと同じ
ルール②:戻り値を持たない
ルール③:new クラス名(コンストラクタへの引数)←呼び出し側のルール
:::

Sample

一般的にメソッド名は最初`小文字スタート`だが、`クラス名と同じにするルールの為、大文字スタート。`
“`java:java
class Student{
Student(String n){
.
.
}
Student(String n, int e, int m){
.
.
}
}
“`

オーバーロード編でsetDataというメンバー変数の情報を設定するメソッドを復習したが、

https://

元記事を表示

[Google Sheets API] 条件付き書式を追加・更新・削除する

Google Sheets API v4(Java)を使用して、
スプレットシートのセルに条件付き書式を追加・更新・削除する方法
についてご紹介します。

**条件付き書式とは**
シートメニュー:「表示形式」 ⇨ 「条件付き書式」
で設定することができます。

条件付き書式には2種類存在します。
・単一色
  セルの値が条件を満たした場合、セルに指定した書式を設定します。

  条件を満たしたセルに設定できる書式は下記になります。
  ・太字
  ・斜体
  ・下線
  ・取り消し線
  ・文字色
  ・背景色

・カラースケール
  複数セル(行または列)内の値の大小により、
  背景色を薄くしたり濃くしたりします。

:::note info
APIを利用する環境の準備から始める場合や、コードを

元記事を表示

Hello Worldからの復習 ~オーバーロード編~

話の枕を書かずにやってみたら、シンプルになった。

あたりまえかw

##### お品書き
+ オーバーロードって?
+ メリットは?
+ Sample

—-

◆オーバーロードって?

設計図クラスを作るときに、同じ名前で引数の型や数が違うメソッドをいくつも定義できる。
メソッドを複数定義することをいう。

—-

**setDataをオーバーロードしている**↓
“`java:java
class Student{
void setData(String n){ //名前の引数のみ
.
.
}
void aetData(String n, int e, int m){ //名前とint型の点数を2つ
.
.
}
}
“`

**オーバーロードしたのを呼び出すmainメソッド**↓
“`java:java

main( ~ ){
Student stu = new Student(); //Studentクラスを基に変数stuを作りインスタンス化
stu.setData(“大輔”);
stu.setData(“大輔”, 80, 90

元記事を表示

[Java] java.util.Date型からシリアル値を取得する

JavaでGoogle Sheets APIを使用する上で
エクセルやスプレットシート上で扱うシリアル値を扱う必要が出てきましたので
簡単にはですがここに備忘録として残します。

**シリアル値とは?**
1900年1月1日を1として何**日**経過したかを示す値

**UNIX時間とは?**
1970年1月1日 0時0分0秒を0として何**秒**経過したかを示す値

### 1. Date型からシリアル値に変更する際の考え方
UNIX時間を日数に変更して、シリアル値とUNIX時間の日数の差を足します。

① UNIX時間を日数に変更
 getTimeで取得したUNIX時間(ミリ秒)を1日のミリ秒で割って日数にします。
 もし、Dateが日本標準時の場合は、割る前のミリ秒に9時間(ミリ秒)を足します。
“`
 date.getTime()/(24*60*60*1000)
//(date.getTime()+(9*60*60*1000))/(24*60*60*1000)
“`
② 1900年1月1日と1970年1月1日の差を足す
 0スタート、1スタートの違いと閏年も考えて、日数を

元記事を表示

Hello Worldからの復習 ~オブジェクトの使い方編~

##### お品書き
+ オブジェクトの使い方って?
+ Sample

—-

◆オブジェクトの使い方って?

設計図クラスを基にオブジェクトを作って利用するには大きく2つのステップを踏む
まず、オブジェクトを生成し、次にオブジェクトの持っている**変数**や**メソッド**を利用する

①生成

“`java:java
クラス名 オブジェクト名 = new クラス名();
Student stu1 = new Student();
“`
前回の設計図編を参考

https://qiita.com/tianshandafu894/items/0655cdf0849f363469e7

上記のコードでnewした時、メモリ上に新しく領域が確保され、3つの変数の領域と3つのメソッドの情報が含まれるイメージの図↓
“`mermaid
classDiagram
Student –|> newしたメモリ領域
class Student{
+name :String
+engScore :int
+mathScore :int
+

元記事を表示

spring-security-testのアノテーション使用時に気をつけること

## この記事でわかること
spring-security-testを行う時に注意すべきアノテーションについてまとめております。
spring-securutyの知識がある前提でお読みください。

## @WithMockUser
このアノテーションを使用すれば、特定のユーザーとしてどのようにテストを最も簡単に実行する方法です。
`@WithMockUser`を付加することでユーザー名 “user”、パスワード “password”、ロール “ROLE_USER” を持つユーザーとして実行されます。
“`java:
@Test
@DisplayName(“todo情報を1件削除”)
@WithMockUser
void deleteTodo() throws Exception {
doNothing().when(todoService).deleteTodo(anyInt());
mockMvc.perform(delete(“/api/todos/999999”)
.

元記事を表示

[Google Sheets API] グラフを追加・更新・削除する

Google Sheets API v4(Java)を使用して、
スプレットシートにグラフを追加またはそのグラフを更新・削除する方法
についてご紹介します。

メニュー:「挿入」 ⇨ 「グラフ」
で追加できるグラフです。

Sheets APIでは、次のグラフを扱うことができます。
・基本的なチャート
  ・棒グラフ
  ・折れ線グラフ
  ・面グラフ
  ・縦 棒グラフ
  ・散布図
  ・コンボチャート
  ・階段状の面グラフ
・バブルチャート
・ローソク足チャート
・ヒストグラムチャート
・組織図
・円グラフ
・スコアカード チャート
・ツリーマップ チャート
・ウォーターフォールチャート

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sh

元記事を表示

テキストファイルをダウンロードする(Java, SpringBoot)

### 動作環境
Java 17
Spring boot 3.2.1
Gradle

### まずは小さく動かしてみる
下記はテキストファイルをダウンロードするためだけのSpringBootのプロジェクトです。

https://github.com/yusuke/text-file-download

クローン、ビルド、実行して、`http://localhost:8080/download`にアクセスすれば直書きした文字列が、txtファイルでダウンロードされるのでお試し下さい。

こちらのソースは[『プロになるJava』](https://gihyo.jp/book/2022/978-4-297-12685-8)の著者の一人である[山本裕介さん](https://twitter.com/yusuke)が管理されるLINEオープンチャットにて質問した際に、ご本人から直接ご回答いただいた時のものです。(CC0のため引用)

## 記事の内容
– ローカルのファイルのダウンロード処理を実装
– テキストファイルのダウンロードが失敗
– Content-Disposition「filena

元記事を表示

[Google Sheets API] スライサーを追加・更新・削除する

Google Sheets API v4(Java)を使用して、
スプレットシートのシートにスライサーを追加・更新・削除する方法
についてご紹介します。

**スライサーとは**

スライサーとは、セルの表示方法を自由に変更できる機能です。
フィルタ機能と似ていますが、表だけではなく、ピボットテーブル、グラフ等も
フィルタリングできるのが特徴です。
フィルタリングした結果の表示は保存されず、シートを再読み込みなどすると
リセットされてしまうのでご注意ください。

スプレットシートからは、メニュー:「データ」 ⇨ 「スライサーを追加」
でスライサーの追加ができます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Sheets API] Google Sheet

元記事を表示

OTHERカテゴリの最新記事