- 1. SpringBoot MVCで簡単なWEBアプリを実装してみる
- 2. Javaのローカル変数の冗長について調べてみる
- 3. Spring BootでElasticache for Memcachedのキャッシュ操作をしてみた
- 4. RecyclerViewでConcatAdapter利用におけるonBindViewHolderのposition
- 5. マイクラサーバーを動かす
- 6. 【Cloud9 Advent Calendar Day2】ガチで作業が捗るIntelliJのおすすめプラグイン7選
- 7. Leetcode 328. Odd Even Linked List
- 8. はじめてのGithub Actions〜Java,Maven編〜
- 9. for文を使って演習(拡張for文、二重ループ)
- 10. 競プロ典型90問 022 – Cubic Cake(★2)をJavaで解いてみた!
- 11. Javaで何か作ってみる(2022/12/6 Day47)
- 12. Javaで何か作ってみる(2022/12/5 Day46)
- 13. いもす法を3次元で使用
- 14. ポリモーフィズムとは?
- 15. SpringBoot + MyBatis ふりかえり
- 16. デカルト積問題に気をつけよう
- 17. Leetcode 876. Middle of the Linked List
- 18. ループ制御文(break、continue)を使って演習
- 19. 【Cloud9 Advent Calendar Day1】今年購入してよかったガジェット11選
- 20. do-while文を使って演習
SpringBoot MVCで簡単なWEBアプリを実装してみる
## はじめに
[株式会社ピーアールオー(あったらいいな!を作ります) Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pro-japan1) の7日目になります。
前日は[[AWS]SAMでTypeScriptがサポートされたので5分でAPIを作成する](https://qiita.com/hf7777hi/items/6d2b093d6ed7271cf81b)でした。前に[Spring Boot + RemoteContainer](https://qiita.com/tajima_haru/items/d4e5082e6ba68ef4e960)の環境構築をしてHelloWorldまで表示させたので、SpringMVCの機能を利用して簡単なWebアプリケーションを作ります。
## build.gradle
build.gradleファイルのdependenciesにThymeleafなど定義します。
[spring initializr](https://start.spring.io/)で設定するで
Javaのローカル変数の冗長について調べてみる
# はじめに
こんにちは、こんばんは、ココネ株式会社のサーバーを担当しています。
本ページではJavaを書いていてスタイルチェッカーで指摘されるローカル変数の冗長化について調べてみたことを書きます。# Javaコード
以下のコードをまずは見てみます。
単に足し算するだけのaddtion methodがあるシンプルなコードです。“`Java
public class Calculation {
public static void main(String[] args) {
int x = 1;
int y = 2;int answer = addition(x, y);
System.out.println(answer);
}public static int addition(int x, int y) {
int answer = x + y;
return answer;
}
}
“`# コードチェッカーでにローカル変数が冗長と
Spring BootでElasticache for Memcachedのキャッシュ操作をしてみた
この記事は [アイスタイル Advent Calendar 2022](https://qiita.com/advent-calendar/2022/istyle) 7日目の記事です。
こんにちは。アイスタイルにて会員基盤の運用保守や機能改修を担当しているyukawacです。
[Spring Boot](https://spring.io/projects/spring-boot)で[Elasticache for Memcached](https://aws.amazon.com/jp/elasticache/memcached/)のキャッシュ操作をする機会があったので、
キャッシュ操作するまでに実施したことやコード例を書きます。⚠️注意⚠️
※本記事ではElasticache for Memcachedへ疎通するためのネットワーク周りの設定については記載しません。
※ローカル環境にて、JavaとDockerの実行環境は構築済みとします。
※ElastiCache for Memcachedクラスターは作成済みとします。## 一連の流れ
1. ローカル環
RecyclerViewでConcatAdapter利用におけるonBindViewHolderのposition
# はじめに
RecyclerViewでConcatAdapter利用におけるonBindViewHolderのpositionは何のpositionなのかわかったので自分メモです。
# 結論
ConcatAdapterを使うには複数のAdapterを作るが、それぞれのAdapterの表示位置を返している。
それぞれのAdapterのViewHolderごとにpositionを振っているから当たり前といえば当たり前なんだけども…
ViewModelにObjectじゃなくてpositionを送ってたら、Adapter1のposition–>1を選択してるつもりが全部のAdapterのposition–>1を選択してしまうというミスをしていたから一応メモしておこうかと…
![position.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110765/8a8f825a-9f22-0813-b86f-9f6b35a15502.png)
# Code
“`java:ConcatAdapter.java
マイクラサーバーを動かす
# 初めに
この記事ではminecraft serverを使用してワールドを生成するまでの流れを説明します.
この記事にほしい情報がなくても,マイクラサーバーを構築する方法は検索すればたくさん出てくるので,いろんな記事やサイトを見てください.また,使用OSはLinux系を想定しています.私の環境だとWSLのUbuntu 22.04.1です.ただ,OSに大きく依存するようなことはしていないはずです.そのため,WindowsやMacでも問題ないかと思います.ただ,java17以降が必要になりますので,特にWindowsはPATHの設定をする必要があるかと思います.このあたりの話は触れませんので,ご自身でどうにか頑張ってください.ともかく,java17以降が使えれば問題ないです.
# minecraft server
## 概要
minecraft serverとは,[minecraft](https://www.minecraft.net/ja-jp/about-minecraft)をマルチプレイ,複数人で同時に同じワールドで遊ぶことができるものです.なので,お友達と一緒にマ
【Cloud9 Advent Calendar Day2】ガチで作業が捗るIntelliJのおすすめプラグイン7選
この記事はCloud9 Advent CalendarのDay2です。
**こんにちは!Cloud9サーバーサイドエンジニアの折原です!**
アドベントカレンダーをやってみると言い出したはいいものの、他の社員が業務に忙殺されていて執筆の時間が取れないため、昨日に引き続き私がDay2の記事を書かせていただきます。
思い返すといつもいつもやることが唐突で行き当たりばったりの人間なんですが。
毎回付き合ってくれる社員の皆様には本当に感謝しております。というわけでDay2行ってみましょう!
## Javaエンジニアが選ぶ!ガチで作業が捗るIntelliJのおすすめプラグイン7選
今回も〇選!系の記事になります。
実は私、今まで現場でEclipseしか使ったことなくて、今のプロジェクトに入って初めてIntelliJを触ったんです。プライベートの開発では使ったことはあったんですが、仕事で使うのは初めてです。**強力なコード補完機能、検索機能のほか、MavenだけでなくGradleプロジェクト等の各種ビルドツールにも対応していて拡張性がかなり高く、それでいてEclipseよりも軽
Leetcode 328. Odd Even Linked List
# 328. Odd Even Linked List
https://leetcode.com/problems/odd-even-linked-list/
## 難易度
### Medium“`java
package com.leetcode.easy;public class OddEvenLinkedList328 {
public static void main(String[] args) {}
public ListNode328 oddEvenList(ListNode328 head) {
if (head == null) {
return head;
}
ListNode328 odd = head;
ListNode328 even = head.next;
ListNode328 evenHead = even;while (even != null && odd != null) {
はじめてのGithub Actions〜Java,Maven編〜
# はじめに
本記事はMDC Advent Calendar 2022の6日目の記事です。https://qiita.com/advent-calendar/2022/mdc
多くの情報が出ているネタではありますが、実体験記録と、少しでもやってみようと思える人を増やしたいので、記事として残しておきたいと思います。
# Github ActionsでCIしたい
手元でJavaソースをビルドするのも良いですが、何気なタイミングでGithub上のWebIDE上で、ちょろっとpom.xmlを修正したりする時にこれってビルドが通るのだろうか、、と心配になったことは無いでしょうか?
私はこれまでは壊れる可能性がある変更はローカルで変更、簡単なテスト、通ったらGithubへpushと普通にやってましたが、上記ができたら開発スピードアップするのでは?と考えてGithub Actionsもどんどん使う様になりました。
前提としては、SpringBootを使ったMavenプロジェクトになります。
よって、最新のソースコードで“`
mvn package
“`
が成功しさえすれば良いと
for文を使って演習(拡張for文、二重ループ)
# 問題
拡張for文で以下の配列の要素を全て出力してください。
{“まぐろ”, “いくら”, “うに”, “さば”, “いか”, “ほたて”}“`java
public static void main(String[] args) {
String sushi[] = {“まぐろ”, “いくら”, “うに”, “さば”, “いか”, “ほたて”};for( String stomach : sushi) {
System.out.println(stomach);
}
}
//演算結果
//まぐろ
//いくら
//うに
//さば
//いか
//ほたて“`
# 問題
底辺の値を受け取り 斜辺が右向きの三角形を出力してください。“`java
public static void main(String[] args) {
triangle(5);
}
public static void triangle(int bottom) {
for (int i = 0; i < bottom; i++) {
競プロ典型90問 022 – Cubic Cake(★2)をJavaで解いてみた!
こんにちは、[Kuni](https://qiita.com/kuniengineer)です。現在Javaを学習中で、Atcoderでコーディング力を高めているところです。
今回は[競プロ典型90問 022 – Cubic Cake(★2)](https://atcoder.jp/contests/typical90/tasks/typical90_v)の実装にチャレンジしてみました。# ACのプログラム
“`java:Main.java
import java.util.*;public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
Scanner sc = new Scanner(System.in);
long A = sc.nextLong();
long B = sc.nextLong();
long C = sc.nextLong();
Javaで何か作ってみる(2022/12/6 Day47)
## 今日やった事
– オブジェクト指向の動画教材を見た。(**J2-02_コンストラクタ** の途中まで見た。)
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【超初心者も必見】Javaプログラミングの「オブジェクト指向」が絶対理解できる講座【プロ講師が丁寧解説】](https://www.udemy.com/course/uz-java-obj/)
## 所感
– 現場でC#をやっていた時に、オブジェクト指向をやっていたが、直近はPHPでC#ほど意識しなくても支障がなかったので、
思い出しながらやっている。
## 明日の予定
– 引き続き、動画教材を進めていく。
Javaで何か作ってみる(2022/12/5 Day46)
## 今日やった事
– オブジェクト指向の動画教材を見た。(**J2-01_オブジェクト指向とは** の途中まで見た。)
## 参考にしたもの
– [Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~](https://www.udemy.com/course/java_spring_beginner/)
– [【超初心者も必見】Javaプログラミングの「オブジェクト指向」が絶対理解できる講座【プロ講師が丁寧解説】](https://www.udemy.com/course/uz-java-obj/)
## 所感
– Springの動画教材を見ていて、オブジェクト指向について若干怪しかったので、
オブジェクト指向の動画を進める事にした。
## 明日の予定
– 引き続き、動画教材を進めていく。
いもす法を3次元で使用
アドベンドカレンダー用に、今年出会った素敵なアルゴリズム「いもす法」の解説を書いてみます。
イメージしやすいように、できるだけ図表をいれて解説してみます。# いもす法とは
加算を効率的に行うアルゴリズムです。連続した領域で多次元にも適用できるそうです。
今回は、よく見る1次元、2次元だけでなく、3次元に挑戦してみます。# 1次元いもす法
startとendがわかっている以下のような例題で使用できます。>例題
>ある塾の自習室は一日一回何時間でも連続して利用することができます。
>自習室に1時限目から10時限目まで開放されています。
>入退室は毎時0分のタイミングでしかできません。
>塾生の利用開始時限と終了時限が与えられる時に、**最も利用人数が多かった時の人数**を求めなさい。
>入力データは下記のように与えられます。
>
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117608/6e94a4ca-fa4f-f183-4ef1-
ポリモーフィズムとは?
【記事を書くことになったきっかけ】
プログラミングを学ぶ上でアウトプットが大事だと痛感することが最近多くありました。そこでよくお世話になっているQiitaで初アウトプットをするに至りました。
## 記事の内容学校でオブジェクト指向についての授業を受けている中で、継承やオーバーライド、アブストラクトクラスについて調べる機会があったのでまとめてみました。
プログラミング初心者が自分で咀嚼したものをまとめたものなので、正確さは保証できないです。アウトプットの記録として残しているモノなので間違っている点がありましたらご指摘よろしくお願いいたします。
授業で使用していた言語はJavaです。# 継承、オーバーライドとは?
・元々あるクラスの機能を使って、さらに自分で機能を追加したいときに用いる
・オーバーライド = 継承したスーパークラスのメソッドを継承先で再定義すること
・なんであるの?
→同じ内容のプログラムを違うクラスでいちいち書いていると変更が生じたときに修正するのに手間がかかる。そこで「継承」「オーバーライド」を使うと解決
・もととなる機能を持つクラスのことを **スーパーク
SpringBoot + MyBatis ふりかえり
# 記事を書く理由
業務で初めて、SpringBoot + MyBatisを使ったバックエンドの開発を行ったので
忘れないように備忘録として残そうと思ったからです。
それと、私と同じように初めて触れる人の助けになれたらなと思っています。# そもそもMyBatisって?
>MyBatis はカスタム SQL、ストアドプロシージャ、高度なマッピング処理に対応した優れた永続化フレームワークです。
と書くのは簡単なのですが、私は配属されるまで、O/Rマッパーというものを私はよく理解していませんでした。
以下の記事がとても参考になりました。
https://qiita.com/wanko5296/items/d7829f18d4827cecd4f6端的にオブジェクトとリレーショナルデータベースの紐づけですね。
以上で、MyBatisの説明を終えて
次からは、私が実際に作ったコードのサンプルと一緒に解説していこうと思います。# ディレクトリ構成
– entity
┗Test.java
– controller
┗TestController.java
– model
デカルト積問題に気をつけよう
## はじめに
こんにちは、GxPの福家です。
こちらは[グロースエクスパートナーズ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/gxp)の6日目の記事です。私が担当する案件で、APIのレスポンスが突然に遅くなる事象が発生しました。その原因は、ORMにおける「デカルト積問題(cartesian product problem)」という聞き慣れない問題であることが分かりました。
今回は性能問題を引き起こす「デカルト積問題」について取り上げました。デカルト積問題とは何で、どのような状況で発生するのかついて説明したいと思います。## そもそもデカルト積とは?
デカルト積問題の前に、集合論におけるデカルト積について説明します。デカルト積とは、複数の集合の要素のすべての組み合わせを要素として持つ集合のことです。例えば、2つの集合AとBがあるとします。集合Aは数字10個の集合{0,1,2,…,9}、集合Bはアルファベット26個の集合{a,b,c,…,z}です。そのとき、集合AとBのデカルト積は、{(0,a),
Leetcode 876. Middle of the Linked List
# 876. Middle of the Linked List
https://leetcode.com/problems/middle-of-the-linked-list/
## 難易度
### Easy## アプローチ
### Brute Force“`java
package com.leetcode.easy;public class MiddleOfTheLinkedList876 {
public static void main(String[] args) {}public ListNode876 middleNode(ListNode876 head) {
ListNode876 temp = head;int length = 0;
while (temp != null) {
temp = temp.next;
length++;
}length /= 2;
temp =
ループ制御文(break、continue)を使って演習
# 問題
1から10までの和を求める処理を行ってください。ただし計算の途中で合計値が30以上となった場合は 繰り返しを中断し、現在の値を出力するプログラムをbreakを使用して作成してください。“`java
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 10; i++) { if (sum >= 30) {
break;
}
sum += i;
}
System.out.println(“合計:” + sum);
}//演算結果
//合計:36“`
# 問題
for文とcontinueを使用し、0~10までの奇数のみを表示します。ただし9は出力しないよう作成してください。“`java
public static void main(String[] args) {
final int BREAK_NUM = 9;
for (int k = 0; k <= 10; k++) { if (k == BREAK_NUM) {
【Cloud9 Advent Calendar Day1】今年購入してよかったガジェット11選
この記事はCloud9 Advent CalendarのDay1です。
**こんにちは!Cloud9サーバーサイドエンジニアの折原です!**
突然ですがCloud9も本日からアドベントカレンダーを始めることになりました!
**アドベントカレンダーといいつつもう12/5なんですが、突然やりたいと言ってもやらせてくれるのがこの会社の魅力だと勝手に思っております。**それでは1発目行ってみましょう!
## 今年購入してよかったガジェット11選(非ガジェットも)
1発目の記事ということで、まずはライトなトピックから。
年の瀬のわくわく楽しいアドベントカレンダーでいきなりがっつり技術の話をされても。。という方もいらっしゃると思うので、今年私が購入して個人的にコスパが最強だったアイテムをご紹介させていただきます。
**Cloud9はエンジニア、非エンジニア問わず全人類のお役に立てる会社を~~私が勝手に~~目指しております。**
## 【1】GALLERIA RM5R-65XT ¥124,980
![image.png](https://qiita-image-store.s3.
do-while文を使って演習
# 問題
配列を宣言し、以下の要素を格納してください。「新宿」が出るまで出力してください。
継続条件にboolean型を使うこと。“`java
public static void main(String[] args) {
String [] Tokyo = {“中央”, “渋谷”, “葛飾”, “江戸川”,”新宿”, “台東”, “中野”, “世田谷”};
boolean isContinue = true;
int i = 0;
do {
if (Tokyo[i].equals(“新宿”) ) {
isContinue = false;
} else {
System.out.println(Tokyo[i]);
}
i++;
} while (isContinue);
}// 演算結果
// 中央
// 渋谷
// 葛飾
// 江戸川“`
# 補足
– do-while文は後に継続条件を書く。
→必ず1回は処理する。
– カウンタ変数はブロックの外で定義する。
– 配列は「データ型 [] 変数名」もしくは「データ