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

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

IT業界未経験からPHP⇒Python⇒Java⇒VBA、XMLと学習ロードマップをうろうろして感じたこと

自分の学習ロードマップのうろうろ歴

無事とある**PHP、Laravel**を中心とする半年のカリキュラムを課す民間のプログラミングスクールを修了し、転職フェアなどにも何回か参加してみたところ、「**実はプログラミング言語の需要には地域差がかなりある**」ということを知り(下記参照)、エッ…(゚Д゚)と思いながら、時代はAIだろ(´д`)と思って、**Python**をやってみたら少しは分かったけど、居住地域の関係で **Java**も併行し始めたけど、Pythonを使うかな(´。`)と思って内定をいただいた会社の自分の所属する部署では一番使うのは **VBA、XML** とのことで、今は急遽ExcelやVBAを触りまくっています。

①実は地域によってプログラミング言語に需要ニーズに違いがある。(-_-;)

〇転職活動を通して感じた地域の言語ニーズの差異に関する私見

(1)求人がどの地域も万遍なく一番多いのは**Java、意外と

元記事を表示

Java学習 変数

# 変数の違い
プログラミング言語によって変数の扱い方は異なり、「動的型付け言語」と「静的型付け言語」の2種類がある。
今まで学習してきたRubyは「動的型付け言語」で、Javaは「静的型付け言語」。

# データ型
データ型とは、変数に格納するデータの種類のこと。
「数値としての1」と「文字としての1」はプログラムの上では異なるものとして扱われます。

Javaでは変数を定義するときに、その変数をどのデータ型として扱うのかプログラムに伝えるため、使用前に「宣言」してから使用する。

## Javaの基本データ型は以下の8種類

|データ型 |bit数  |値 |
| ——– | —– | ——————————————————— |
|boolean |1bit |true あるいは false

元記事を表示

【備忘録】gulp-notifyでエラーになったのでmacにjavaを入れた

# はじめに
現在進行しているプロジェクトのタスクランナーでjavaがないとエラーになる事象が発生したので入れてみた。

# 事象
“`
[12:16:44] gulp-notify: [Error running Gulp] ⚠️ Nu Html Checker (v.Nu) のエラーが出ています ⚠️
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
“`
gulp-notifyでjavaを使ってるけど、macにjavaがないので怒られた。

# javaのインストール
今回はbrewでjavaをインストールした。
“`
java –version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.co

元記事を表示

Heroku のJAVAのJMX周り

https://exec-manager.heroku.com/

を見るといろいろわかる

HEROKU_JMX_PORT などを管理画面の環境変数に設定すると変更できる。

元記事を表示

JavaプロジェクトでAndroidアプリの通信部品クラスを開発する

#### Androidアプリの通信部品クラスをJavaプロジェクトで開発する方法について解説します。

 Android Studio はバージョンアップを重ねるごとに快適に動作させるためのPCのリソース要件が高くなってきています。**ただでさえ重い環境でUIに関係しない通信部品クラスの開発までも Android Studio で行うのは効率的ではないと私個人は思っています。**

 今回紹介するAndroidのスタブクラスを作成することで、より軽量なIDEでのJavaプロジェクトで通信部品クラスの開発が可能になります。

:::note info
この記事の実装の元ネタとなった Android 公式ドキュメントは下記で、ほぼこのサイトで紹介されている方法で通信部品を作成します。※Volley, OkHttpなどの外部ライブラリは使用しない実装になっています。
[バックグラウンド スレッドでの Android タスクの実行 (Java編)](https://developer.android.com/guide/background/threading?hl=ja#java)
+ 複

元記事を表示

Antlrを基にした複雑な電卓の実装

人事労務システムを設計する際に、ユーザーからの要望で、設定した数式で計算する機能が必要とされて、このために、Antrl(パーサージェネレータツール)を使用し、IF ELSEなどの条件分岐を含む、より複雑な計算が可能な電卓機能を実装しました。
## Antrlって何
**ANTLR**(_ANother Tool for Language Recognition_)とは、[LL](https://ja.wikipedia.org/wiki/LL%E6%B3%95 “LL法”)(*)構文解析に基づく[パーサジェネレータ](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%B5%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF “パーサジェネレータ”)である(バージョン3.xはLL(*)、2.xまではLL(k))[ Wikipedia ](https://ja.wikipedia.org/wiki/ANTLR)

## 手順
1. antrlの設定ファイル.g4ファイルを書き

元記事を表示

【Java初心者】Google Tinkを使ったAEADテキスト暗号化

# 暗号を安全に使用するために

Google Tinkのサイト( https://github.com/google/tink )のIntroductionには

あなたのアプリケーションで暗号を使用することは、暗闇でチェーンソーを投げるような感覚になるはずはありません。Tinkは、Googleの暗号学者やセキュリティエンジニアのグループによって書かれた暗号ライブラリです。これは、Googleの製品チームと協力し、実装の弱点を修正し、暗号のバックグラウンドがなくても安全に使用できるシンプルなAPIを提供するために生まれました。

と書かれています。「暗闇でチェーンソー」という表現はユニークですが、暗号の知識がなくても安全に使用できるAPIを作るという思想は素晴らしいと思います。

# AEADとは

Wikipediaにはこうあります( https://ja.wikipedia.org/wiki/%E8%AA%8D%E8%A8%BC%E4%BB%98%E3%81%8D%E6%9A%97%E5%8F%B7 )

認証付き暗号(AE: Authenticated Encryption あ

元記事を表示

javaでコンテナ作るときに気を付けるべきこと

※この記事は数行で終わります

# javaはsignalを認識できない
signalとは`Ctrl+C`などを押したときにシステム側が反応し、ソフトウェアに割込み処理を行わせるものです。
### dockerでは
コンテナ終了時に内部アプリケーション(コンテナ内のpid1)にシグナルを発報します。10秒間(デフォルト)応答がなければ強制終了します。

# つまり
javaアプリケーションに対しては最初から強制終了を行うか、シグナルを文字列に変えてコマンドとして送るかとか考えないといけないのです。

#### 補足
ここまでの成り行きを説明します。
1. マイクラサーバー立てたるかー
1. docker使お
1. 起動時にシェルスクリプトでバックアップ取るか
1. あれ?正常に終了できないしログも出ない
1. pid1問題があるのか
1. 軽量init使いたくないなめんどそ
1. webguiによるマネージャ…めんどくさそ
1. `exec`コマンドを知る(すべての元凶)
1. おお、ログが出てきた!
1. 完成や!おまいらは入れ
1. (1か月後)
1. プラグイン更新

元記事を表示

Udemy講座クーポンコードの発行(2024年1月分)と新コースリリースに向けた告知

### 自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また [「マスタリング Java EE 5」](https://amzn.asia/d/j0txqK5)や[「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)といった書籍も執筆しています。

### Udemy講座のご紹介とクーポンコード(2024年1月末まで)

現在私が講師を務めるUdemy講座には、以下のラインアップがあります。
これらのコースは、**Udedmyセールス対象外のためタイミングを気にすることなく購入可能**です。また以下のリンクから購入いただくと、クーポンが適用されたことになり、定価の**約30%OFF**で購入することができます。
|コース名|リリース|定価|クーポン適用後価格|2024

元記事を表示

【初めてのJava】まずはコーディングしてみた(インターフェース)

## はじめに
インターフェースの実装練習として、
前回作成したBMI計算機にBMR(基礎代謝量)を計算する機能を付けてみました。

## 機能
 身体のパラメーター値(身長、体重、年齢など)をセットすると、BMI、BMRの計算結果を出力するツールです。
(値の入力はハードコーディング)

## ソースコード
※長いので、折りたたんでいます。

“`java:App.java
public class App{
public static void main(String[] args){

try{
Person person = new Person();
if(!person.setParameter(“John”, 1.7, 60.5, 30, Person.Sex.MALE)){
return;
};

Bmi bmi = new Bmi();
Bmr bmr = n

元記事を表示

【Java・学習ログ17】コレクションについて~Mapの基本~

≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ 『第16章』
## Mapの使い方
マップとは2つの情報を**キー**と**値**のペアとして格納するデータ構造。格納した値はキーを指定して読み書きできる。実装の中でも特に多く利用されるのは、java.util.HashMapクラス。

《HashMapが備えるメソッド》
|操作|戻り値|メソッド|意味|
|-|-|-|-|
|追加|値|put(キー,値)|マップにキーと値のペアを格納する|
|取得|値|get(キー)|キーに対応する値を取得(なければnull)|
|調査|int|size()|格納されているペア数を数える|
||boolean|isEmpty()|要素数がゼロであるかを判定|
||boolean|containsKey(キー)|指定データがキーに含まれているかを判定|
||boolean|containsValue(値)|指定データが値に含まれているかを判定|
|削除|void|clear()|要素をすべて削除する|
||値|remove(キー)|指定した内容の要素を削除する|
|その他|Set<

元記事を表示

JavaSE11Gold合格するためにやったこと

## JavaSE11Goldに合格した
正解率63%以上合格で79%だった。
8割以上取れているかなと思ったが、ギリ届かなかった。

![スクリーンショット 2024-01-07 181925.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3577396/b2afd1a9-df69-04b7-b1ce-fa2c95c88e85.png)

## Javaの経験
4年ぐらいJavaでの開発をしている。
試験で頻出するストリームAPIやラムダ式は、ほんの少し業務で使った経験がある。

## やったこと
[黒本](https://book.impress.co.jp/books/1121101020)と[紫本](https://www.shoeisha.co.jp/book/detail/9784798170572)を中心に勉強した。
勉強量としては、黒本は5周、紫本は2周ほどした。

## 期間
かかった期間は6ヶ月だが、前半の3ヶ月はダラダラしていて黒本1周しかしてなかったので、実際に身になった期間は後

元記事を表示

GCP Cloud Load Balancing機能

# GCPのCloud Load Balancingの概要と機能

## 目次
1. [概要](#概要)
2. [機能/詳細](#機能/詳細)
3. [まとめ](#まとめ)

## 概要
GCPのCloud Load Balancingは、Google Cloud Platform(GCP)上で提供される負荷分散サービスです。このサービスは、アプリケーションやウェブサイトへのアクセスを複数の仮想マシンやサーバーに均等に分散することができます。これにより、トラフィックの増減に柔軟に対応し、高可用性とパフォーマンスの向上を実現することが可能です。

Cloud Load Balancingは、GCP内にデプロイされた複数のリソース間でトラフィックを分散するために使用されます。特定のリクエストに対して最適なリソースへのルーティングを行い、セッションの保持やヘルスチェックなどの高度な機能を備えています。

## 機能/詳細
次に、Cloud Load Balancingの主な機能とその詳細について説明します。

### 1. HTTP(S) ロード バランシング
– HTTP(S)プロトコルを

元記事を表示

Java初心者の失敗メモ

私がJavaの学習中に引っ掛かった内容を纏めています。
※内容は今後変更・追記する可能性があります。
 

・エラー: 構文解析中にファイルの終わりに移りました

public static void main(String[] args)
{
System.out.println(“Hello!”);
}

public static void main(String[] args)
{
System.out.println(“Hello!”);

原因:{}の不足
☆プログラムが長くなると{}の数が合わなくなりがちになり発生する
 

・newの扱い
オブジェクトの作成で用いるコマンド。
☆配列の宣言にも必要だが忘れがち

 
・static
クラス変数とクラスメソッドに用いる。
インスタンスと異なりオブジェクトに関連付けられていない。
☆クラス全体を管理する変数等で用いる。

 
・エラー:InterruptedException
原因:スレッド実行中の他スレッドによる割り込みの発生
☆スレッド内でsleepを使用した、

元記事を表示

HashSetとListのパフォーマンスの違い

## 結論:HashSetの方が高パフォーマンス
### 使用問題文-LeetCode 345
文字列 s を指定すると、文字列内のすべての母音のみを反転して返します。

母音は「a」、「e」、「i」、「o」、「u」で、小文字と大文字の両方で複数回出現することがあります。

### コード HashSetを使用 実行時間:5ms メモリー:44.46MB
“`java
class Solution {
public String reverseVowels(String s) {
char [] c = s.toCharArray();
HashSetlist = new HashSet<>();
list.add(‘a’);
list.add(‘i’);
list.add(‘u’);
list.add(‘e’);
list.add(‘o’);
list.add(‘A’);
list.add(‘I’);

元記事を表示

Spring SecurityのfailureUrl()とfailureForwardUrl()の違い

# 環境
– Spring Boot 3.2
– Spring Security 6.2

# 忙しい人のための結論
`failureUrl()`を使いましょう。

# レスポンスが返ってこない
👇のように記述すると、ログイン画面で間違ったユーザー名・パスワードを入力した場合にレスポンスが返ってこなくなりました。

“`java
@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.formLogin(login -> login
.loginPage(“/login”)
.defaultSuccessUrl(“/”)
.failureForwardUrl(“/login?error”) //

元記事を表示

Spring Boot + DB接続(H2データベース)

# はじめに
本記事ではSpring BootのWebアプリケーションにH2データベースを組み込む方法を記載します。

# 前提条件
– Spring Bootのプロジェクトが起動できること

上記がまだの場合は以下の記事を参考に起動まで実施してみて下さい

https://qiita.com/high_high/items/263cfcbd712ada6cddd3

# H2とは
H2とはオープンソースで開発されているRDBMSの1つで、プログラム本体のサイズが小さいため軽量に動作します。
また、H2はOSにインストールせずに利用できるというメリットがあり、Webアプリケーションに組み込んで使うのに便利なRDBMSです。
大量のデータを扱うような大規模アプリケーションでの利用には不向きですが、簡単なアプリケーションであれば十分に実用できます。

## 依存関係の追加
H2を利用するために依存関係を追加します。
※ビルドツールによって依存関係を追加するファイル名が異なります

– Mavenの場合
“`pom.xml

元記事を表示

実務で出会ったグレーな設計手法

# はじめに

ソフトウェア開発の現場では、理想と現実の間で常にバランスを取る必要があります。特に BtoB 形式のプロダクト開発においては、顧客のニーズに迅速に対応するため、時には標準的な設計手法から逸脱する「グレーな設計手法」を採用することがあります。この記事では、一般には公開されていない BtoB プロダクトで遭遇した、伝統的な設計原則からは外れるが、特定の状況下で有効であった設計手法について考察します。

これらの手法は、一般的なソフトウェア開発のベストプラクティスとは異なる場合が多く、メリットとデメリットの両方を持ち合わせています。ここでは、それぞれの手法の背景、実装時の考慮点、そしてそれに伴うリスクについて詳しく掘り下げていきます。目的は、これらの「グレーな設計手法」が実務でどのように機能し、またどのような影響をもたらす可能性があるかを理解することです。

> 注意: ここで紹介する手法は、特定の文脈や要件に基づいて選択されたものです。これらの手法を適用する際には、常にプロジェクトの特性やリスクを十分に考慮し、適切な判断を行うことが重要です。

## 目次

1.

元記事を表示

JavaでXMLをファイルに出力したい

JavaでXMLをファイルに出力したい場合はTransformerを利用します。

https://docs.oracle.com/javase/jp/8/docs/api/javax/xml/transform/Transformer.html

例: メモリ上で構築したXMLをfruits.xmlに出力する。

“`java
// XMLをメモリ上で構築する。
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

Element e1 = document.createElement(“element1”);
e1.setAttribute(“name”, “ELEMENT1”);
document.appendChild(e1);

Element e2 = document.createElement(“element2”);
e2.setAttribute(“name”, “ELEMENT2”);
e1.appendChild(e2);

E

元記事を表示

graphql-java を使うときはクエリのサイズ制限に注意しよう

# 環境
– java 17
– spring-boot 3.1.2
– graphql-java 21.0

# 発端
GraphQL API の利用者から「クエリが実行できない!」という報告を受けました。
報告があったエラーは以下。

“`
graphql.parser.exceptions.ParseCancelledException:
More than 15,000 ‘grammar’ tokens have been presented. To prevent Denial Of Service attacks, parsing has been cancelled.
“`

メッセージを見てすぐに「巨大なクエリを送っているクライアント側の責任だろう」とは思いましたが、そんな制限を実装したつもりは無いし、 API ドキュメントでも明言していなかったので、発生源を確認しました。

# サイズ制限エラーの発生源
ログにスタックトレースが残っていたので、発生源はすぐに特定できました。

graphql-java の [ParserOptions.java](https

元記事を表示

OTHERカテゴリの最新記事