- 1. 【後編】Javaでオブジェクト指向を学びなおす
- 2. 【VSCode+SpringBoot】SpringBootでAPIを作る④
- 3. Spring bootでHelloWorldするまでの手順
- 4. 【VSCode+SpringBoot】SpringBootでAPIを作る③
- 5. (初心者用)Junit備忘録
- 6. Javaで実現するUUID v7:時刻順序を考慮したユニーク識別子
- 7. cabochaで行う自然言語処理の基礎
- 8. SnykのCLIで脆弱性を検出する
- 9. 【Java】「1つ以上のポートが無効」でTomcatが起動できない
- 10. DL4J使ってみた(サンプル)
- 11. 【VSCode+SpringBoot】SpringBootでAPIを作る②
- 12. switch文 java
- 13. LinkedHashMap 基本メソッド
- 14. JavaのCharsetを作る
- 15. 子コンテナーを開始できません
- 16. Thymeleafの振り返り
- 17. Cloudflare R2を使って公開のmavenリポジトリを作る(Gradle)
- 18. Javaシステム開発初心者向けtips
- 19. Springの@Transactionalはthis.XXXでは機能しない
- 20. Java の文字列リテラルの最大長は?
【後編】Javaでオブジェクト指向を学びなおす
前回の続きです!
継承、ポリモーフィズム編になります!https://qiita.com/suda_imagitech/items/d9f3fc3327d306a0d8ec
# 1.継承(Inheritance)について
>継承は、既存のクラスから新しいクラスを作成する仕組みです。新しいクラスは既存のクラスの特性(データやメソッド)を継承し、必要に応じて追加や変更ができます。これは覚えてるぞー
だけどしっかりコード化しよう“`java:java
// 親クラス(スーパークラス)
class Person {
String name;public Person(String name) {
this.name = name;
}public void eat() {
System.out.println(name + “は食事している”);
}public void sleep() {
System.out.println(name + “は寝ている”);
【VSCode+SpringBoot】SpringBootでAPIを作る④
前回↓
https://qiita.com/NaN-jp/items/ff35d79be65edc13dc8c
# はじめに
今回は前回に引き続きMVCモデルのViewを作成していく### View作成
ユーザーが触れる画面になるViewを作成していきます
`templates`直下に`index.html`を作成する
“`java:src/main/resources/templates/index.html
View
Spring bootでHelloWorldするまでの手順
:::note warn
Eclipseのインストールが完了してから読むことをオススメします。
↓↓↓ インストール先はこちら
[Eclipse Downloads|The Eclipse Foundation](https://www.eclipse.org/downloads/)
:::## はじめに
* EclipseにSpring bootをインストールする手順とHelloWorldするまでの手順をまとめました。
* 画像多めの構成です。## この記事の目的
* インストールから正常な環境構築ができているかの確認まで終えられるようにする。
* 今後自分で再度インストールする機会が訪れた時の手順再確認用。# そもそも“Spring boot”とは
* アプリケーションを手軽に作成するためのフレームワーク(**枠組み・ひな形**)の集合体である**Spring Framework**に搭載のされているものの一つ。
* 集合体である機能を使いやすくするためのもの。# HelloWorldとスモールスタート
* **環境が正しく構築できてるか**を確認することも重要な作
【VSCode+SpringBoot】SpringBootでAPIを作る③
前回↓
https://qiita.com/NaN-jp/items/61faa709dac6e000eea7
# はじめに
今回からSpringBootの実装に入る
まずはMVCモデルのひとつであるModelの作成#### 📚そもそもMVCモデルとは??
MVCモデルとはコードを管理する上で便利な**Model,View,Controller**の3つの頭文字をとった概念である。### Model作成
まず部品であるModelを作成していきます
demo内にmodelフォルダを作成してその中に`Person.java`を作成します
“`java:src/main/java/com/example/demo/model/Person.java
package com.example.demo.model;import jakarta.persistance.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persis
(初心者用)Junit備忘録
# はじめに
単体試験をがっつりJunitで行う現場に初めて入り、
今まで「Junit」という名前しか聞いたことのなかった私が
日々アワアワしながらテストコードを書いていた時に知ったJunitに関する備忘録+陥ったことの紹介です。
なので初心者向けだと思いますが、Junitって何?とか設定とか基本的な書き方とかそこらへんは調べたら山のように出てくると思うのであまり丁寧に書きません。# 環境と依存関係
Junit : Junit5
IDE : Eclipse
Java : 8ユニットテストでモックするフレームワークとしてMockitoを使用しており
Mavenでプロジェクト作成していたのでpom.xmlに依存関係追記しています。
(ここは環境に合わせてご自由に)“`xml:pom.xml
org.mockito
mockito-all
1.10.19
Javaで実現するUUID v7:時刻順序を考慮したユニーク識別子
この記事は[グロースエクスパートナーズ アドベントカレンダー2023](https://qiita.com/advent-calendar/2023/gxp)の13日目の記事です。
今年は2023年新卒入社の方などの投稿で盛り上がり、シリーズ2もつくられました。シリーズ2にふさわしい、簡単に読めて役立つ記事をお届けしたい所存です。# はじめに
UUID v7を試してみよう
この記事では時間順序を持ち、ランダム性も備えたUUID v7を紹介するとともに、JavaでのUUID v7の生成とUUID v7からタイムスタンプを取得する実装も紹介します。
## 要約
* UUID v4をRDBのプリマリーキーとして用いると、B-Treeインデックスの断片化や挿入処理遅延の懸念がある
* 解決策としてUUID v7が提案されている
* JavaにもUUID v7を生成するライブラリがあり利用可能になっている
* 生成したUUID v7の値からタイムスタンプが取得できる# UUID v4の課題
ユニークな値が欲しいとき、UUIDが真っ先に浮かぶという方は多いと思います。
下記のような文
cabochaで行う自然言語処理の基礎
### はじめに
本記事では日本語の係り受け解析器であるcabochaをJavaで呼び出し、形態素解析及び係り受け解析を行います。### 自然言語処理とは
自然言語処理とは、文字通り自然言語(日本語や英語などの人がコミュニケーションを行う為に使用する言語)をコンピュータに処理させるための技術になります。
こちらの技術は機械翻訳やAIチャットサービスなど、自然言語を扱う様々な分野で使用されています。
自然言語はあやふやでそのままだとコンピュータに処理させるのは難しいため、形態素解析や構文解析などを行うことで自然言語をコンピュータで処理しやすくします。### 形態素解析とは
形態素解析とは、文章を形態素(意味を持つ最小の単位)ごとに分解し、品詞や変化などを判断することです。
例えば『私は勉強をする』という文章で考えると、『私』『は』『勉強』『を』『する』といったように形態素ごとに分け、『私』は代名詞であり変化はしていないといったことなどを判断します。### 係り受け解析とは
係り受け解析とは、主語と述語など、同士の関係性を判断することです。
例えば『私は勉強をする』という
SnykのCLIで脆弱性を検出する
# 概要
Snykには脆弱性を検出するCLI(`snyk`コマンド)があるので、何ができるのか紹介します。
![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43869/64402782-2c53-4fb1-b950-d7ce19d3270c.png)
# インストール
Snykの公式ドキュメントの「[Install or update the Snyk CLI](https://docs.snyk.io/snyk-cli/install-or-update-the-snyk-cli)」に記載がある通り、インストールは簡単で、Linuxであれば以下のコマンドを実行して完了です。
“`shell-session
$ curl –compressed https://static.snyk.io/cli/latest/snyk-linux -o snyk
$ chmod +x ./snyk
$ sudo mv ./snyk /usr/local/bi
【Java】「1つ以上のポートが無効」でTomcatが起動できない
# はじめに
EclipseからTomcatを起動しようとした時に、以下のようなエラーが発生して正常に起動できませんでした。
このエラーに思いのほか手こずったので、その時の対処を備忘録として記事にまとめてみました。“`
開始中localhostのTomcatv10.1サーバーに問題が発生しました。
1つ以上のポートが無効なため、サーバーを起動できません。
サーバー・エディターを開き、無効なポートを訂正してください。
“`![eclipse_error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/70f7443d-006d-4ee8-4d8a-7f0ea5458e6e.png)
# エラーが起きた環境
* EclipseはTomcatが同梱されていないJava Standard版を利用したので、TomcatはEclipseとは別にインストールしました。
* 今思えば、このチョイスが良くなかったのかもしれませんが…|アプリ名など|バージョン|
|—|—|
DL4J使ってみた(サンプル)
#0.前置き
javaで機械学習をしてみたくなった(pythonで2年くらい触っていた)
”DL4J”というものが提供されているので環境構築する
DL4J(https://mgubaidullin.github.io/deeplearning4j-docs/ja/quickstart#%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%AC%E3%82%A4%E3%83%89)要求事項
・java 1.7以上(64ビットのみ対応)
・Apache Maven
・IntelliJ IDEA または Eclipse
・Git#1.環境
Windows11・wsl2・ubuntu-20.04##1.1.java確認
いつもの
“`
$ sudo apt update
$ java -version
openjdk version “11.0.7” 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ub
【VSCode+SpringBoot】SpringBootでAPIを作る②
前回↓
https://qiita.com/NaN-jp/items/a24f9b3af8bab36b94a4
# はじめに
今回はデータベースのテーブル作成をする# PostgreSQL
https://www.postgresql.org/download/windows/**PostgreSQL**は、拡張性とSQL準拠を強調するフリーでオープンソースの関係データベース管理システム
https://qiita.com/tom-sato/items/037b8f8cb4b326710f71
# pgAdmin4
https://www.pgadmin.org/download/pgadmin-4-windows/**pgAdmin4**は**PostgreSQL**を直感的に操作するために便利なアプリケーション
https://qiita.com/pyon_kiti_jp/items/01d6150e46bd66be29f0
### テーブル作成
「parson」というテーブルを以下の内容で作る
|Attribute|DataType|Size|Prima
switch文 java
Javaのswitch文で->(アロー)を使った新しい書き方を学んだのでメモしておきます。
# -> (アロー)を使ったswitch文
– :(コロン)の代わりに-> (アロー)を使うことでbreak;を簡略化できます。
– ->を使った場合で処理が1つの場合、処理を記載する { } も省略できます。※複数の処理の場合は、{ } を用いること。
– 同じ処理のcase式は、カンマで繋げてグループ化できます。(※->の有無とは関係ないですが)**作成するプログラム**
値が1か2か3なら、[1か2か3です。] を出力
値が4か5か6なら、[4か5か6です。] を出力
それ以外なら[それ以外です。いったい何だろう?]を出力。“`ruby:case式に : を使用
Integer type = 1;switch(type){
case 1:
case 2:
case 3:
System.out.print(“1か2か3です。”);
break;
case 4:
case 5:
case 6:
LinkedHashMap 基本メソッド
LinkedHashMap
キーと値のペアを要素とした集まり。※インポートが必要です。
import java.util.LinkedHashMap;# 宣言
ジェネリックス(<>)に入れるデータ型がカンマ区切りで2種類あります。
1つ目がキーのデータ型、
2つ目がキーに紐づく値のデータ型を設定します。“`ruby:宣言
LinkedHashMaplunchMap = new LinkedHashMap<>();
“`# ペア(キーと値)の追加
`put(キー,値)`
キーは重複は許可されません。
同じキーを登録しようとすると、後から足した方に上書きされます。
“`ruby:put(キー,値)
lunchMap.put(“牛丼”, 800);
lunchMap.put(“カレー”, 700);
lunchMap.put(“ハンバーガー”, 500);
lunchMap.put(“牛丼”, 850); /* 牛丼=800 が上書きされます*/
System.out.println(lunchMap);
/* {牛丼=850, カレ
JavaのCharsetを作る
# JavaのCharset
Javaは内部的にはUTF-16で文字を扱っており、UTF-16とその他の文字コードを変換するための機能を持っています。この記事では「Charsetを作る」、つまり独自の名前の文字コード・コンバーターの作り方をまとめます。# Charsetの作り方の概要
基本的には、以下の4つのクラスおよび1つの設定ファイル(プロバイダー構成ファイル)を用意して、クラスパスに通します。
* java.nio.charset.Charset を拡張したクラス
* java.nio.charset.CharsetDecoder を拡張したクラス
* java.nio.charset.CharsetEncoder を拡張したクラス
* java.nio.charset.spi.CharsetProvider を拡張したクラス
* META-INF/services/java.nio.charset.spi.CharsetProvider# レベル0:まずは肩ならし
まずは最小限の用意で新しい名前のCharsetを作ってみましょう。
* XMS932Xという名前のChar
子コンテナーを開始できません
# JavaでWeb開発を進めようとすると・・
こういうの出るときありませんか?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287651/06ac4694-b682-2ed3-5a2e-3910a9450d4d.png)コンソール見ると「子コンテナーを開始できません」との記載も。うーむ。
# 色々試したが・・
サーバーのスクラップ&ビルドもしたし、クリーンもした。
少なくともサーバー作り直せば治ると思っていたがエラー変わらず。# 解決方法
URLの向き先を設定する際、@WebServletとweb.xml両方使おうとしていたので、
web.xmlを削除後、@WebServletだけを使用するように変更して解決。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287651/180b1a9b-36f2-45ad-842d-39f975016164.png)
Thymeleafの振り返り
# はじめに
初めまして、今回は以前現場で使っていた技術を備忘録的に記事にまとめようと思います。# Thymeleaf(タイムリーフ)とは
ThymeleafとはJavaのテンプレートエンジンの一種で、SpringBootアプリケーションを開発する際によく利用されます。
HTMLファイルに独自のタグを使用せずに利用できるため、そのままブラウザで表示することが可能です。### テンプレートエンジンとは
テンプレート部分と動的データ部分を合成し、成果ドキュメントを出力する機能です。
デザイン部分とロジック部分を切り離して作業できるといった利点があることから重宝されています。# 環境
Windows 10 Home
SpringToolSuite4
JavaSE-17# 実装
#### プロジェクト構成ファイルに依存関係を追加
“`ruby:gradle.build
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-thymeleaf’
}
“`#### HTMLフ
Cloudflare R2を使って公開のmavenリポジトリを作る(Gradle)
Gradleには標準でS3やCloud Storageをmavenリポジトリとして扱う機能がついているのですが、Google Cloudのライブラリが古すぎて認証に一部問題があるようです。
GitHubからOIDCを使って接続しようと思ったら古いライブラリを使っているせいで認証できませんでした。
Google CloudならArtifact Registry使えばいいのですが、無料枠が0.5GBまでで転送料もかかることからもっと安く済む手段を探します。
マネージドなサービスであることの良さはもちろんありますが、今回はよりコストを抑えることを目的としています。ということでCloudflare R2をmavenリポジトリとして運用していきます。
今回検証に利用
Javaシステム開発初心者向けtips
# 0. はじめに
この資料はJavaシステム開発初心者向けにtipsをジャンル毎に分けて書いています
使用環境はWindows
Vue.js
Java(Eclipse)
Git
Linuxかなりざっくりローカル開発~Linux環境に反映までのよく使いどころを抜粋しているので開発時の役にたてば幸いです
# 1. Vue.js
### Vue.js devtools
dataで保持している内容を確認したり編集できたりするchromeの拡張機能
Vue開発時に使用するととても便利https://qiita.com/hashimoto-1202/items/c81f5d4c271eef16d957
# 2. Eclipseショートカットコマンド等
### ファイル名検索
開いているプロジェクト内に存在する全てのファイルのファイル名を検索をできる
“ctrl + shift + r“
### ファイル内文字列検索
“ctrl + h “
開いているプロジェクト内に存在する全てのファイル内の文字列を検索できる
バグ発生時にログから対象ファイルを検索したり処理を追うのによく
Springの@Transactionalはthis.XXXでは機能しない
## 記事の概要
この記事はJavaを触り始めて半年の私が、実務の中でデグレを起こしてしまった失敗経験から学んだSpringでのトランザクション処理における注意すべきことをまとめました。
JavaやSpringでのWebアプリケーション開発を始めたばかりの私のような開発者の一助になれば幸いです。
※Springのversionによる違いやProxyの違い(JDK、CGLIBなど)による詳細などの詳細は記載しておりません。
※この記事にはサンプルコードが含まれていますが、今回のテーマとは直接関連しない部分については、文法や細部に関しては大まかに記述しています。## 自己紹介
2023年6月よりAlphaDriveで開発を行っているエンジニアです。
元々Web制作よりの技術スタックを扱っていたこともあり、サーバーサイドでの開発歴は短いため暖かい目で見てくださればと思います。## デグレを起こした経緯
あるWebサービスにてAPIエンドポイントに新たなプロパティを追加する実装を行いました。
実装した内容は想定通りの挙動を示し無事に本番環境へリリース、そのAPIエンドポイントを使用した
Java の文字列リテラルの最大長は?
Java の文字列リテラルは、最長で何文字まで許容されるのでしょうか。
具体的には、**以下のように AAA… と文字を並べて何文字までならコンパイルができるのか**、調べてみました。“`
String str = “AAAAAAAA…(略)…AAAA”;
“`:::note info
今回は「**文字列リテラル**(ソースコード上の ” ” で囲われた文字列)」の話です。
:::# Java 言語仕様
まず、Java 言語仕様を確認しました。しかし、字列リテラルの最大長については触れられていませんでした。
[Java Language Specification – Chapter 3. Lexical Structure – 3.10.5. String Literals](https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.10.5)つまり、仕様未定義のようです。
そのため、文字列リテラルの長さをどこまで許容するのかは、 **コンパイラの実装依存**になるようです。# J