- 1. 新卒入社から2年半で読んだ本を一覧化してみた
- 2. 変数の定義 基本的な使い方
- 3. メモリ消費量を抑えてxlsxファイルを読み込みたい
- 4. resilience4jを使ったCircuitBreakerパターン
- 5. 初めてのJUnit(基礎的な使い方)
- 6. Javaで特定のキーが一致するデータの重複を回避する方法
- 7. Javaの基本 数値 文字列の連結
- 8. Gradle×springbootアプリケーションをdockerイメージ化してコンテナ起動する
- 9. java学習開始します。
- 10. Java実行ファイルを簡単にプロセス永続化
- 11. カスタムクラフターを作成したので中身の解説をする(Spigot)
- 12. SearchViewでソフトキーボードを非表示にする
- 13. 【Mac】2行でJDKバージョンを切り替える
- 14. 新卒文系SEクイックソート書いてみた
- 15. 初級SEの年間資格取得チャレンジ
- 16. 未経験から転職して半年が経とうとしてますが、以下が通読してる書籍一覧になります。
- 17. 「良いコード/悪いコードで学ぶ設計入門 」のコレクションの章を勉強
- 18. Java、Python、JavaScriptでよく使われる構文や機能を比較した表
- 19. [Spring]リクエストパラメータ・パスパラメータのバリデーションを行う
- 20. Javaで何か作ってみる(2022/12/20 Day61)
新卒入社から2年半で読んだ本を一覧化してみた
# 概要
新卒で入社してから2年半で読んだ本の中でためになった本を一覧化してみました。
難易度・おすすめ度・分類・感想は随時更新していきます。
タイトル名がAmazonのリンクになっています。## 設計
| タイトル | 難易度 | おすすめ度 | 分類 |
| :— | :— | :— | :— |
| [リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://amzn.asia/d/53Pm14g) | | | |
| [達人プログラマー(第2版): 熟達に向けたあなたの旅](https://amzn.asia/d/5Uf3ypp) | | | |
| [リファクタリング(第2版): 既存のコードを安全に改善する](https://amzn.asia/d/e00t1s1) | | | |
| [Java言語で学ぶリファクタリング入門](https://amzn.asia/d/51FQ2WL) | | | |
| [ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本](https://
変数の定義 基本的な使い方
前回までは文字列、数値と言うように値を呼んでいましたが、今日からは、データ型と呼びます。
“`text:データ型
“Hello World”(文字列)→→→→ String型
3(整数)→→→→ int型
“`
簡単に説明するとStringは文字列、int(integer)は整数を意味します。
あと注意するところは、
“`
String型は大文字から始まり、
int型は小文字から始まる。
“`
基本なので間違えないように!
[このようなこと](https://qiita.com/singekino-ojisan/items/12a51976b827e7dedb1c#comment-7c3391dbc179490cbf3d)もあるとご指摘いただいただきました。
ご教授いただきありがとうございます!次に変数について。
簡単に言うと、
“`
データ(値)を入れておく箱(変数)箱(変数)には名前(変数名)がついていてその名前を使い、
変数から値を取り出すことができる。
“`
| 箱(変数) |
メモリ消費量を抑えてxlsxファイルを読み込みたい
Apache POIを利用してxlsxファイルを読み込む方法として、インターネット上ではUser APIがよく紹介されています (`HSSFWorkbook`とかを利用するもの)。これは便利ですが、読み込む対象のxlsxファイルをすべてメモリ上に展開するので、巨大なxlsxファイルを読み込む場合は、大量のメモリを消費する場合があります。
ではメモリ消費量を抑えて、xlsxファイルを読み込みたい場合はどうすればよいかというと、Event APIというAPIを利用します。自分はこのAPIをよく利用するのですが、インターネット上に日本語情報が少なく、実装のたびに困っているので、自分用にまとめておこうと思います。ちなみに以下の記事も参考にしてください。
https://qiita.com/neko_the_shadow/items/4ee737e9fb98dfb275b4
以下はEvent APIを利用し、対象のシートを読み込んで、2次元配列に変換するサンプルです。
“`java
public class SheetToMatrix {public List
resilience4jを使ったCircuitBreakerパターン
# What is Circuit Breaker?
あるアプリAが外部サービスであるアプリXと連携している際、アプリXがサービスダウンした場合に他サービスへ影響を出さないよう制御する仕組み。
# 状態遷移
![名称未設定.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159675/3e5a5e01-dd54-f97f-8ea6-1c0e1e39ccea.png)# 使用するデモ
https://github.com/resilience4j/resilience4j-spring-boot3-demo# やってみる
health check
(`backendA`のステータスが`”state”: “CLOSED”`になっていることが確認できる。)
“`bash
curl http://localhost:9080/actuator/health | jq
% Total % Received % Xferd Average Speed Time Tim
初めてのJUnit(基礎的な使い方)
今までCOBOLが業務の主流でしたが、最近Javaも使うようになったので、ここらで一度Java単体テストの手法として、JUnitの初歩的な使用方法を学習しようと思います。
## JUnitとは
JUnitについては、e-Wordsより以下のように記載されています。
>JUnitとは、Java言語で開発されたプログラムの単体テスト(ユニットテスト)を行なうためのソフトウェア。また、そこで用いられるテストコードの記述体系を含むテストフレームワーク。
_[IT用語辞典 e-Wordsより](https://e-words.jp/w/JUnit.html)_JUnitを使うことで、作成したJavaクラスやメソッドの単体テストコードが記載できるようになります。JUnitには、単体テストをするにあたって活用できるメソッドやアノテーションが提供されています。
この記事では、以下の環境で実施します。
|環境|バージョン|
|:—:|:—:|
|端末|MacBook Air 2022 (M2)|
|OS|macOS Ventura 13.0.1|
|Java|JDK18|
|JUn
Javaで特定のキーが一致するデータの重複を回避する方法
# # 初めに
以前複数のCSVファイルの特定のキーが一致するデータ同士を計算してDBに登録する機能の実装を行いました。その際にデータの重複や正しく正しく計算が行われないなど大変な思いをしました。今回はその解決方法を2つ紹介します。|No|見出し|
|—|—|
|1|[1. 概要](#1-概要)|
|2|[2. 実装方法1(For文を2回回す)](#2-実装方法1for文を2回回す)|
|3|[3. 実装方法2(mapを使用する)](#3-実装方法2mapを使用する)|
|4|[4. 最後に](#4-最後に)|# 1. 概要
本記事では、以下に示すような「__あるクラスの人たちの1学期から3学期までのテストの結果が入力されたCSVデータ__」があります。
このデータのある特定のキー(__ID(出席番号), 名前, 性別__)が一致する場合は点数を合算した結果を表示することを想定します。
“`: あるクラスの人たちの1学期から3学期までのテストの結果が入力されたCSVデータ
ID(出席番号),名前,性別,国語,数学,英語
“001”, “佐藤太郎”, “男”, “60”
Javaの基本 数値 文字列の連結
皆さんこんにちは。
正月でも日々の学習は忘れてはいけません。めでたい気持ちは忘れずに、
めでたい気持ちで、学習していきます。
では、
javaの基本的、てか、超超超初歩の動かし方から***こんなことからかよwwwww***
と思いますが、そうなんです。
こんなことからやっていくんです。正月に、集中してPCに向き合ってる背中に家族(嫁、小2女子1)の視線が突き刺さってるので、
さっさとやっていきますね。“`java
System.out.println()
“`
()内に、文字を入力すれば、その文字がコンソールに表示される。
“`java:Main.java
System.out.println(“Hello world”);
“`
“`text:java:コンソール
Hello world
“`
と表示される。“`
System.out.println()
↑ ↑ ↑ ↑ ↑
()内の文字列を出力しなさい!
“`
と言う命令をしています。あと()の後、文末にセミコロン
Gradle×springbootアプリケーションをdockerイメージ化してコンテナ起動する
# 結論
`./gradlew bootBuildImage`
↓
`docker run -it -p 8888:8888 sample-rest-controller:0.0.1`# 説明
`./gradlew bootBuildImage –imageName={イメージ名}:{バージョン(X.X.X)}`でイメージ作成可能。とってもかんたん。
(少し時間かかる場合がある)“`bash
./gradlew bootBuildImage –imageName=sample-rest-controller:0.0.1(略)
Successfully built image ‘docker.io/library/sample-rest-controller:0.0.1’
BUILD SUCCESSFUL in 3m 33s
5 actionable tasks: 3 executed, 2 up-to-date
“``docker image ls`すると、作成されたイメージが確認できる。
“`bash
docker image ls
REPOSITOR
java学習開始します。
“`
初めまして。おじさんです。軽く自己紹介します。
今まで何も勉強せず、軽ーく生活しどうにかなるだろ精神で生きてきました。
ですが、あることをきっかけに読書にハマり、ITに興味を持ち、プログラミングを学ぼうと決意し、
プログラミングスクールに通うことにしました。学んだ内容は、
“`
**HTML
CSS
Ruby
Ruby on Rails
JavaScript
GitHub**
“`
ちなみに入学初めのPCレベルは、
“`
大学時代のレポートと卒論のみ…“`
しかも10何年まえのことなんか覚えていません。
と、こんなもんです。
ですが、
“`
半年間くらいつき、汗水は垂らしてませんが半べかきながら
“`
なんとか最終課題を完成させ、
“`
**無事卒業!!!!!**
“`
本当に諦めなくて、よか
Java実行ファイルを簡単にプロセス永続化
## はじめに
SpringBootでプロセスを永続化する方法は様々あると思いますが、無理矢理にですが簡単に永続化する方法があるのでそれを紹介します。
この方法は開発段階などで素早く永続化したい場合など以外には使用しないほうが良いかと思われます。
また、この方法はLinuxでsystemdを使うことを想定しています。## 方法
まず、普通にSpringBootプロジェクトをビルドし、Jarファイルにします。
特殊なことは特にせず、javaコマンドで実行できる形になっていればなんでもいいです。次にシェルスクリプトでJarファイルを実行してしまいます。
SpringBootにはJarファイルの時点で実行コマンドを埋め込むような仕組みがあるのですが、私の環境では機能しなかったのでシェルスクリプトを書いてしまったほうが早かったです。“`shell
#!/bin/shDATE=`date ‘+%Y-%m-%d_%H:%M:%S’`
/opt/jdk-18/bin/java -jar `dirname $0`/run.jar > `dirname $0`/log_${DATE}.
カスタムクラフターを作成したので中身の解説をする(Spigot)
# 初めに
Spigot で動作するカスタムアイテムクラフターを作成しました。
どのような仕組みになっているのかを公開し、より良いクラフターを作成してくれる方が現れれば良いなと思いこの記事を作成することにしました。# 動作イメージ
Qiita 用動画 pic.twitter.com/ghwd3LoWF4
— Aruka Sakaki (@yt0f1) December 31, 2022
# GitHub
https://github.com/Sakaki-Aruka/custom-crafter# 解説
## オブジェクト
– MultiKeys:2つの整数値を持つ。
– MaterialKeys:MultiKeysをキーに、ItemStackを値に持つMap
– OriginalRecipe:完成品、サイズ、合計アイテム数、レシピ名、RecipeMaterialを持つ
– (MultiOriginalRecipe):未使用MultiKeysはレシピにおけるアイテムの位置を示す座標として使用しています。
(横軸x、縦軸y、x軸右向き正、y軸下向き正としたxy平面の座標)
## 作成可能なアイテム
– config.ym
SearchViewでソフトキーボードを非表示にする
AndroidアプリでActionBarにSearchViewを実装する際のソフトキーボードを非表示にする方法は、以下の通りです。
今回は、Fragmentに## レイアウトファイル
“`menu/search.xml
新卒文系SEクイックソート書いてみた
基本情報技術者の擬似言語の学習のため実際にプログラム化してみました。
基本情報の問題集をもとにフローチャートを作成し、コーディングをおこなっております。
今回は、配列の最初の要素と隣の要素を比較し、大きい方を基準値にしております。“`java:Qiita.java
import java.util.*;public class QuickSort_2 {
public static void main(String[] args) {/*
* テストデータ
*
* [3,5,8,4,0,6,9,1,2,7] ok
* [7,7,7,7,7,6,9,1,2,7] ok
* [0,0,0,0,0,0,0,0,0,0] ok
* [80,70,60,50,40,30,20,10] ok
* [70,60,40,70,30,70,50,70] ok
* [80,60,40,70,30,10,50,20] ok
* [80,60,40,70,30,10,50,20] ok
初級SEの年間資格取得チャレンジ
もうすぐで2022年が終わりますね…:partly_sunny:
年々、一年過ぎるのが早く感じるアラサーSEです。実は私、他業種からSEに転職したのですが、
現場で感じたことは
「**分からないことがわからない…**」です。指示があればコーディングや設計はできるが、
なんとなくこなせているだけではないのか…?なんて疑問が頭をよぎることが多かったので、
とりあえず、今できるだけ多くの知識と今までの経験の紐づけも兼ねて
年間最多資格取得に挑戦しました!!!以下私が今年一年とった資格になります。
:apple:**Oracle MASTER Silver SQL**
:apple:**ORACLE MASTER Bronze DBA**
:apple:**AWS Certified Cloud Practitioner**
:apple:**Python 3 エンジニア認定基礎試験**
:apple:**Oracle Certified Java Programmer, Gold SE11**
計**5**つ
(思
未経験から転職して半年が経とうとしてますが、以下が通読してる書籍一覧になります。
JavaSE11 Silver
JavaSE11 Gold
Java入門実践編
サーブレット&JSP入門
Eclipseパーフェクトガイド
新しいLinuxの教科書
Spring徹底入門
JUnit実践入門
良いコード/悪いコードで学ぶ設計入門
Silver DBA
「良いコード/悪いコードで学ぶ設計入門 」のコレクションの章を勉強
# コレクションに関する設計技法
7.1わざわざ自前でコレクション処理を実装してしまう
7.2ループ処理中の条件分岐ネスト
7.3低凝集なコレクション処理
について、自分なりにサンプルソースを書きながら勉強しました。国をコレクションとして扱い、各ランキングを出力するサンプルソースを実装しました。(国のデータは末尾の参考サイトを参照)
“`java:データクラス
import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class Country {
private int index;
private String jpName;
private String enName;
private int population;
private int area;
}
“`国クラスは、和名、英名、人口、面積をもちます。続いて、この国クラスを使って世界各国を作成するデータクラスです。
国のコレクションを作
Java、Python、JavaScriptでよく使われる構文や機能を比較した表
## Java 、 Python 、 JavaScriptでよく使われる構文や機能を比較した表
| Java | Python | JavaScript |
|——|——–|————|
| `public class` | `class` | `class` |
| `class` | `class` | `class` |
| `public static void main(String[] args)` | `def main():` | `function main()` |
| `System.out.println()` | `print()` | `console.log()` |
| `int` | `int` | `number` |
| `double` | `float` | `number` |
| `boolean` | `bool` | `boolean` |
| `char` | `str` | `string` |
| `String` | `str` | `string` |
| `true`/`false` | `
[Spring]リクエストパラメータ・パスパラメータのバリデーションを行う
## 前提
Spring Frameworkを用いたWebアプリケーションで、リクエストパラメータ・パスパラメータ文字列のバリデーションを行いたい。
## 対応
まず、クラスに `org.springframework.validation.annotation.Validated` アノテーションを付与する必要があります。
その上で、リクエストを受け付けるメソッド( `recordContentPost()`)のリクエストパラメータに `@Size(min=1, max=10) @Valid`のように `javax.validation` パッケージのアノテーションを付与します。
下の例ではリクエストパラメータを使用していますが、パスパラメータを使用した場合にも同様に使用できます。
“`java
//(省略)
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validati
Javaで何か作ってみる(2022/12/20 Day61)
## 今日やった事
– Springの動画教材を見た。(**オブジェクト指向を復習しておきましょう** まで見た。)
– Macに、VSCode + Spring Boot環境の構築を始めた。
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【簡単】VSCode+Spring Bootアプリケーション開発手順 | こへいブログ](https://kohei.life/spring-vscode/)
## 所感
– VSCodeで拡張機能までのインストールまでは出来た。
– Spring Bootの使い方については、本当これから。## 明日の予定
– 引き続き、動画教材を進めていく。
– 併行して、VSCode + Spring Boot環境の構築を進めていく。## ※2022年12月29日追記
– 以下の理由により、今回で、Java、Springの勉強を一旦終了する。