- 1. MockMvcテストでリクエストパラメータを送る際の「param」と「flashAttr」の違い
- 2. Java(Spring)で作るはじめてのAPI
- 3. 開発に便利なユニットテストの使い方
- 4. コードレビューで普段意識していること、してもらっていること
- 5. フリックトレーニングアプリの作成
- 6. Jakarta EE10でもUberJarでお気軽開発をする〜Wildfly編〜
- 7. 【Java】JavaおじさんのJava放浪記:その3(変数)
- 8. Java 1.8 + Selenium (selenium-java 4.7.2) + Google Chrome による簡単検索サンプルメモ
- 9. Spring Boot 3.0を試してみた
- 10. Javaについて
- 11. ABC282A~Eの解答[Java]
- 12. #31 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン2]
- 13. #30 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン1]
- 14. Leetcode 739. Daily Temperatures
- 15. 【合格体験記】Javaに苦手意識のある新卒がJava SE11 Silverにゆっくり2か月で一発合格した
- 16. Jacksonデシリアライズをいい感じにしたい話
- 17. [C#] namespaceとusingの考え方にピンとこないやつは読め
- 18. 【初心者向け】MacのVScodeでJava+SpringBootを動かしてみる【#1 環境構築編】
- 19. 【Java】JavaおじさんのJava放浪記:その2(値・演算)
- 20. JUnit5 メモ
MockMvcテストでリクエストパラメータを送る際の「param」と「flashAttr」の違い
# この記事の内容について
SpringBootでコントローラのテストをMockMVCで行うとき、リクエストパラメータを送る際に使う「param」と「flashAttr」の違いについて、自分なりにまとめました。
私はまだエンジニア歴1年未満の初学者なので、間違い等があればご指摘いただけると幸いです。# paramとflashAttrの違い
### 以下の6パターンをチェックしました。
#### paramを使った場合
1. param(“変数名”, “具体的な値”) → 成功
1. param(“変数名”, “具体値を格納した変数”) → 失敗(テスト失敗)
1. param(“変数名”, “インスタンス”) → 失敗(値がNULL)
### flashAttrを使った場合
1. flashAttr(“変数名”, ”具体的な値”) → 失敗(値がNULL)
1. flashAttr(“変数名”, “具体値を格納した変数”) → 失敗(値がNULL)
1. flashAttr(“変数名”, “インスタンス”) → 成功
### 結論
#### paramを使う場合
→ param
Java(Spring)で作るはじめてのAPI
# 記事の目的
JavaサーブレットやJSPを用いるWEBプログラミングを学んだ人へ、次のステップとしてJavaを使ったWeb APIの自作方法を解説します。
これを知ることで、フロントエンドとバックエンドの開発を分離でき、より効率的に開発できるようになります。
なお、この記事では、APIの設計方法のような高度な内容はありません。
あくまで、簡単にAPIを作ってみよう!というノリの記事です。# APIとは何か
API(Application Programming Interface)は、ソフトウェアからOSの機能を利用するための仕様もしくはインターフェースの略称であり、アプリケーション開発を容易にするソフトウェア資源です。
Webアプリ開発に用いるAPIは「Web API」と呼ばれ、気象情報や統計情報などさまざまなものが用意されています。すでに用意されたAPIを利用するだけでなく、この記事で説明するように自分でAPIを作ることも可能です。
APIを使えば、よく使う機能を呼び出すだけで使え、一からプログラミングする必要がなくなるため開発が楽になります。<参考
開発に便利なユニットテストの使い方
# 始めに
ユニットテストを品質の向上の為ではなく、**開発する際に便利なツールである**、と言う観点で紹介をします。
# 利用例
まずは、**どんな時に便利か**、と言う話です。
## 1) コードを修正したら、サーバーを再起動して、動作確認している。
コードを変更するたびにTomcatの起動を待っているような場合、ユニットテストを利用する事で、動作確認の為の起動が早くなり、**待ち時間を短縮する**事ができます。
## 2) パターンテストを設定変更で、動作確認している。
設定により変わる動作の確認をする際に、パターンを繰り返し実行している場合、ユニットテストを利用する事で、**複数のパターンを同時に確認する**事ができます。
## 3) 実装を変更する度に、動作確認している。
動作確認をした後に不具合やリファクタリングにより実装変更した際に、もう一度動作確認をする場合、ユニットテストを利用する事で、**楽に動作確認を繰り返す**事ができます。
## 4) 例外ケースの確認の為の再現に苦労している、もしくは、確認を諦めている。
通常発生しないケースの確認として
コードレビューで普段意識していること、してもらっていること
# コードレビューで普段意識していること、してもらっていること
## はじめに
こんにちは。webエンジニアの [ningenMe](https://twitter.com/ningenMe) です。この記事は [Spring Advent Calendar 2022](https://qiita.com/advent-calendar/2022/spring) の 19 日目の記事です。
本記事では僕が普段レビュワーとして、コードレビューで気をつけていること。またレビュワーをするようになった経験からレビュイーとしてPullRequestを作る際に気をつけていること、PullRequestを作ってもらう際にお願いしていること、を書きます。
直近では半年で650個ぐらいのPRを見ていて、エンジニアリングをする時間の中でコードレビューの比率が上がってきたこともあり、その中で色々思ったり工夫した点を書いていきます。
なお普段はspring-bootで構成されるアプリケーションのソースを読むことが大半のため、spring-bootに焦点があたった内容に少し偏るかもしれません。悪
フリックトレーニングアプリの作成
# フリック入力トレーニングアプリの作成
フリック入力トレーニングアプリ pic.twitter.com/Y7AYZOOPoy
— いまむー (@Imamuuu5) December 18, 2022
Jakarta EE10でもUberJarでお気軽開発をする〜Wildfly編〜
# はじめに
本記事はMDC Advent Calendar 2022の17日目の記事です。バックデートですが、これもアドベントカレンダーのやりかたの一つですね。間に合わなくても記事を積み重ねることの方が大事です。
https://qiita.com/advent-calendar/2022/mdc
Jakarta EE10でもUberJarで軽量に、素早く開発するぞ、ということで前回はPayaraをターゲットに動作確認しました。
https://qiita.com/omix222/items/18d5ca469b7000adbd4e
今回はWildflyでやっていきます。
前回使ったソースコードをベースに修正していくことでWildflyに対応していきたいと思います。# Wildflyとは
Wildflyの歴史は長いのですが、端折って説明します。
Redhat社が開発しているアプリケーションサーバーにJBossというものがありました。その後、商用版とOSS版で名称を変えることとなり、商用版はJBoss Enterprise Application Platform(J
【Java】JavaおじさんのJava放浪記:その3(変数)
# はじめに
こんにちは、Javaおじさんです。
今回は、Javaにおける変数について大まかにまとめていきます。
何卒宜しくお願いいたします。## 記事の内容
- Javaにおける変数の扱いについて大雑把に理解していく。
# Javaにおける変数
- 変数:プログラム上で扱うデータ(=値)を記憶する「入れ物」
- 変数の3つの操作:宣言、代入、参照
- 変数にも制限あり:基本型 (プリミティブ型、整数など) or 参照型 (リファレンス型、文字列など)
- 変数名の命名法のおすすめ:camel形式 (半角英数字、先頭は小文字、2つ目以降の単語は先頭を大文字に、etc.)
- 宣言時のお決まり:初期値を代入!
- いろいろな変換:拡大変換、キャスト変換
- final宣言:一度しか代入できない# おわりに
今回は、Javaにおける変数について大まかにまとめました。
本記事をお読みいただいた方々に、深く感謝いたします。
記事の内容に誤り等がございましたら、何卒ご指摘の程宜しくお願いいたします。## 参考
- [スラスラわかるJava 第3版](https
Java 1.8 + Selenium (selenium-java 4.7.2) + Google Chrome による簡単検索サンプルメモ
Selenium (selenium-java 4.7.2) をもちいた原始的なサンプルを Java 1.8 ベースで仮組みしてみました。
最近の Selenium 動向の学習+記憶の復活が目的です。以下の構成にて、なんとなく動作しました。最新系だとローカルへの Driverインストールは不要なんですね。
勝手に Google Chrome が起動して文字入力していく様は、久しぶりに目にするのもあって、見ていて面白いですね。
※後続のソースコードを見ればわかるように例外処理などは全く実装されていません。あくまでサンプル。| キー | 値 |
| --- | --- |
| Selenium | selenium-java 4.7.2 |
| Web browser | Google Chrome 108.0.5359.124 (arm64) |
| Java | Oracle Java 1.8 |
| Build system | Apache Maven 3.8.6 |
| OS | macOS Ventura 13.1 |ここでは例として国会図書館を挙げていますが、
Spring Boot 3.0を試してみた
「NSSOL Advent Calendar 2022」の3日目です。急遽書くことにしたので、12月末まで徐々に記事を成長させていきたいと思います。(言い訳)
# 前書き
2022年11月24日に待望のSpring Boot 3.0がリリースされましたね。Spring Boot 2.0のリリースが2018年3月1日だったので、5年弱ぶりのメジャーバージョンアップということになります。その他のサイトでも既に紹介されていますが、公式サイト・GitHubの説明を踏まえて今回はいろいろと試していきます。
# Spring Boot 2と比べて何が変わったか
簡単に重要度に星を付けてみました。(個人的評価です)
- 【★★★】Java 17 Baseline and Java 19 Support
- 【★★★】Third-party Library Upgrades
- 【★★】GraalVM Native Image Support
- 【★★】Log4j2 Enhancements
- 【★】Improved @ConstructorBinding Detection
- 【★】
Javaについて
# はじめに
Javaの案件に参加することになったため、
Javaを理解するために概要を調査しました。
ゆくゆくは環境構築するようことを目標にします。記載内容に間違いがあればご指摘ください。
# Javaについて調査
下記に基本的な内容をまとめます。
## Javaの概要
[Oracle公式サイト](https://www.oracle.com/jp/java/)
[参考サイト](https://www.sejuku.net/blog/3686)
主にOracleが提供するオブジェクト指向の言語です。
日本では業務システムによく使われていることは知っていましたが、
Web系システムやAndroidアプリにも使われているようです。## Java SEとJava EEやJava ME
### Java SEとは
https://www.sejuku.net/blog/12902
Java SEとは、Java Platform, Standard Edition の略。
Javaの基本機能をまとめたもの。
さらに拡張したものにはJava EE(Java Enterprise Edi
ABC282A~Eの解答[Java]
## はじめに
今回もCまではコンテスト中、DとEはコンテスト後に解いたものを載せようと思います。では、見ていきましょう。
※今のライブラリが見たい場合は[こちら](https://atcoder.jp/contests/abc282/submissions?f.Task=&f.LanguageName=&f.Status=AC&f.User=viral)から確認出来ます(見辛いですが・・・)
## A - Generalized ABC
問題文は[こちら](https://atcoder.jp/contests/abc282/tasks/abc282_a)`A`から$i$番目$(0 \le i \lt 26)$の文字は`(char)('A'+i)`なので、forで順に出力しました。
```A.java
class Main{static final boolean autoFlush = false;
static final Library System = new Library(java.lang.System.in,java.lang.System.ou
#31 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン2]
# #31 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン2]
前回は``collectionタグ``を用いてテーブルの結合を行いましたが、今回も同様のことを行います。
前回と違う点として、結合するメインのテーブルを変更します。# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため所々説明は省略します。# 前回まで
https://qiita.com/Jackoguro/items/d62cba12b5c4b2c35e49
# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
mybatis-spring-boot-starter ver 2.2.2
Model Mapper ver 3.1.0
jquery ver 3.6.1
bootstrap ver 5.2.2
webjars-locator ver 0.46
thymeleaf-layout-dialect ver 3.0.
#30 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン1]
# #30 Spring Mybatisを利用したデータベース操作[5. テーブル結合 collection パターン1]
今回はMybatisを用いてテーブル結合を行います。
前回との違いとして、前回は````タグを用いてテーブルの結合を行いましたが、今回は`` ``タグを用いてテーブルの結合を行います。両者の違いに関しては後でまとめます。 # 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため所々説明は省略します。# 前回まで
https://qiita.com/Jackoguro/items/869e5e19b8b316cc0206
# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
mybatis-spring-boot-starter ver 2.2.2
Model Mapper ver 3.1.0
jquery ver 3.6.1
bootstrap ver 5.2.2
webja
Leetcode 739. Daily Temperatures
https://leetcode.com/problems/daily-temperatures/description/
# アプローチ
### 1. ~~Brute-force~~ → TLE
### 2. Stack```java
package com.leetcode.midium;import java.util.Stack;
public class DailyTemperatures739 {
public static void main(String[] args) {
int[] count = dailyTemperatures(new int[]{99, 99, 99, 99, 100});
for (int i = 0; i < count.length; i++) { System.out.println(count[i]); } } // Stack public static int[] dailyTemperatures(int[]
【合格体験記】Javaに苦手意識のある新卒がJava SE11 Silverにゆっくり2か月で一発合格した
# はじめに
本日Java SE11 Silverを受験し、合格しました。得点率:84%(ボーダー63%)
# 著者スペック
- Javaの研修を1~2か月くらい、入社後に受けました。入社後1年未満の基本情報持っている新卒です。
- 施策内でSpringBootを使ってるので、ちょこちょこ書いていますが、個人的な好みはフロントエンド > バックエンドです。
- 実務ほぼ未経験者+並行して他の資格の勉強をしておりましたので、ゆとりをもって学習しました。
# 受験した理由
- 業務で使う技術なのにJavaが苦手で何とかしたかった。Java雑魚と思われないように、資格という形にしたかった
- 就業先の受験料補填対象の資格だった
- 応用情報の結果発表まで暇だった(今週発表やん…こわ…)
# この記事の対象とならない(かもしれない)人
- 何としてでも短期間で合格したい人
- Javaが得意な人。(そんな人たちからす
Jacksonデシリアライズをいい感じにしたい話
この記事は ウェブクルー Advent Calendar 2022 18日目の記事です。
昨日は [@yuko-tsutsui](https://qiita.com/yuko-tsutsui) さんの「[XXXXXXXXXXX](XXXXXXXXXXX)」でした。## はじめに
弊社では、通常Scala + PlayFrameworkで開発をしているのですが、最近300年ぶりにJava + SpringBootでのAPI開発でJacksonに振り回された(いる)ので題材にしました。
## Jacksonってなんだ
Javaで使用するJson parseライブラリ。JavaのオブジェクトからJsonへの変換、またその逆をよしなにやってくれる便利くんです。
Scalaに関しては先週の[Scala + Play Frameworkでリクエストを値オブジェクトにする](https://qiita.com/yagiyuuuu/items/f6bf6252550021624bc5)で記事が書かれているので読んでください。
## 今回のお供JsonCreator
通常Jacksonは
[C#] namespaceとusingの考え方にピンとこないやつは読め
# namespaceとusingの考え方
## namespaceとは
namespaceとはnamespaceはひとつのシステムが実装されてるクラス群に記述するものだ。
どこに書けばいいのかわからん奴は
その中のどれか化が抜けてしまうとそのシステム全体が
機能しなくなってしまうようなクラス群に記述しよう。
プロジェクトが大きいほど特に
「システム単位をはっきりさせたい」
「名前が被ってしまった」
が出てくるので使える。
### つ ま り
このシステムを実装するのにつかわれた必須クラスはこれとこれだよと明示する役割を果たしている。
同じnamespace内にあるクラスの参照のnullcheckは省いても大丈夫だろう。(絶対大丈夫と言わけではないが)
## usingとは
usingはそのnamespaceで囲ったシステムを使わせてもらうクラスの冒頭に記述する。ただ、そのusingを記述したクラスは
もしもそのシステムを使わなくなってしまった場合なども
正常に動作させる必要があるため、
そのnamespaceを用いたクラスの参照を行う際
【初心者向け】MacのVScodeでJava+SpringBootを動かしてみる【#1 環境構築編】
# #1 「Hello World」するための環境構築編
## はじめに
この記事を見ている方は、すでにSpringBootを使いたいって方だとは思ってますが、そもそもSpringBootって何?って方は[こちらの記事(準備中)]()をご覧ください。ってことで、今回は
**MacのVScodeでJava+SpringBootを動かしてみる**
をテーマにやっていきます。Windowsだとよくあるのですが、
Mac × VScode × SpringBootの情報がなかなか見つからず苦労したので
同じような方がいれば、ぜひ参考にして頂けたら嬉しいです
それでは参りましょう!!
## ゴール
今回のテーマでは、
**「PCを買ってきたばかりの状態から、ブラウザ上に"Hello world"を表示される。」**
が、できるようにしていきます。
## 作業の流れ
環境構築編でたったの3step!
必要なソフトウェアのインストール(Java、JDK、VScode)
↓
VScodeの拡張機能の追加## 環境構築
### 前提
OS: macOS Monterey バージョン1
【Java】JavaおじさんのJava放浪記:その2(値・演算)
# はじめに
こんにちは、Javaおじさんです。
今回は、Javaにおける値・演算について大まかにまとめていきます。
何卒宜しくお願いいたします。## 記事の内容
- Javaにおける値や演算について大雑把に理解していく。
# Javaにおける値・演算
- 値:プログラム上でやり取りする情報
- 整数:int (大抵これ), long, short, byte, char
- 小数:double (大抵これ), float
- 真偽値:boolean (trueかfalse)
- 演算子:全部で40個ほどらしい (算術・比較・論理・条件・三項・代入・インクリメント/デクリメントなど)
※異なる型どうしでの演算、オーバーフローには注意# おわりに
今回は、Javaにおける値・演算について大まかにまとめました。
本記事をお読みいただいた方々に、深く感謝いたします。
記事の内容に誤り等がございましたら、何卒ご指摘の程宜しくお願いいたします。## 参考
- [スラスラわかるJava 第3版](https://www.amazon.co.jp/%E3%82%B9
JUnit5 メモ
## ルール
JUnitを利用する場合、import文を記述する
テストクラスの中に複数のテストメソッドを入力
mainメソッドを記述しない
@Testをつける。
@Test: JUnitにテストメソッドであることを認識させる.
値の確認には、専用のメソッドを使用する## JUnitで利用できる主なメソッド
assertEquals(期待値,実際値)
equalsで比較して同じことを検証assertSame(期待値,実際値)
等号で比較して同じインスタンスであることを検証assertNull(実際値)
nullであることを検証assetNotNull(実際値)
nullでないことを検証fail()
例外が発生時した際に正しく動くか検証する```java
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.fail;import org.junit.jupiter.api.*;
public class BankTest {
// 正常系:"kei"を