JAVA関連のことを調べてみた2020年03月08日

JAVA関連のことを調べてみた2020年03月08日

ラーメン屋共有ウェブサイトを開発してみた。

ラーメン屋をレビューするウェブサイトを開発しました。
今回は、経緯と学んだことを書いていきます。

#言語とツール
・Java
・Spring
・HTML/CSS
・JavaScript
・Heroku
・MySQL
・Spring Tool Suite

#経緯
UdemyでSpringの学習をしていた際に、会社の同期に依頼された開発したウェブサイトです。同期から必要な要件を伺い、リリースしました。
初めてのSpringでの開発、初めて友人に頼まれての開発、、、と初めてづくしの開発で非常に良い経験になりました。
友人に喜んでもらえてよかったです。

#成果物
今回は行ったラーメン屋さんを投稿できます。醤油ラーメン、味噌ラーメン、、、などの分類ごとに表示される画像が異なります。

![スクリーンショット 2020-03-08 10.47.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/893ded4b-2e21-66cf-821e-e151101bc984.png)

![スクリーンシ

元記事を表示

java.util.Date ⇔ java.time.LocalDateTime 変換

#メモ
java.util.Dateとjava.time.LocalDateTimeを相互変換する際のメモ。

##java.util.Dateからjava.time.LocalDateTimeへ変換

“`Java
/**
* DateからLocalDateTimeへ変換
* @return
*/
public LocalDateTime toLocalDateTime(Date date) {
Instant instant = date.toInstant();
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
return zonedDateTime.toLocalDateTime();
}
“`

Webアプリ等で実行環境と取得したいロケールが異なる場合、`ZonedDateTime`に変換する際のZoneIdを取得したいロケールを指定します。

“`Java
//

元記事を表示

DUO3.0勉強用ウェブサイトを開発してみた。

今回は、DUO3.0をランダムに10問出題してくれるウェブサイトを開発しました。
経緯や学んだことを記事にしていきます。

#DUO3.0とは?
560の例文が載っている言わずと知れた超有名英単語帳です。
余談ですが、私はこれを全て暗記したおかげでTOEIC 915取れました。

興味がある方は是非!
[Amazonでチェックしてみてください!](https://www.amazon.co.jp/DUO-3-0-%E9%88%B4%E6%9C%A8-%E9%99%BD%E4%B8%80/dp/4900790052)

#経緯
寝る前にランダムで10問程度DUOの例文を出してくれるアプリないかな、、、と思い、
いろいろ探したのですが、結局良いものがなかったので、今回自分で作りました。

#成果物
流石に著作権が怖いため、ネットにはあげておりませんが、画像をお見せします!

![スクリーンショット 2020-03-08 10.23.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/62e5d

元記事を表示

出費を記録するウェブサイトを開発してみた。

今回は家計簿アプリを作ってみました。
経緯や学んだことなどを記載していきます。

今回作ったものはこんな感じです。
![スクリーンショット 2020-02-29 16.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/3098857d-ef55-32e9-6f19-059988a95f9d.png)

#言語やツール
・HTML,CSS
・Java
・JavaScript
・MySQL
・Heroku

#経緯
「そろそろ貯蓄をしなければ、、、」と思っていた今年の初めに家計簿をつけることを決意し増田。しかし、なかなかつける習慣にならなかったので、「自分で作ればつける習慣がつくのでは」と思い立ち開発しました。シンプルで誰が触っても使いやすいを意識して開発しました。綺麗な円グラフを作成したかったので、chart.jsを使いました。

#できること
・ログインログアウト
・使った金額と内容、分類を登録
・月別に合計金額やその内訳など表示
・メールアドレスを指定して該当月の出費を送付

#

元記事を表示

Herokuにwarファイルをデプロイする

こんにちは。今回はHerokuにwarファイルをデプロイする方法を記事にします。
今回はEclipseでwarファイルを生成した後、そのwarファイルをHerokuにデプロイします。

#必要なもの
3つあればデプロイできます。
①Herokuアカウント
②開発したJavaアプリケーション
③Eclipse
※Eclipseに関しては、簡単にwarファイルを生成するために必要なだけですので、warファイルをすでにお持ちの方は必要ないです。

#手順
###①Heroku上でプロジェクトを作成
“Create new app”→App nameにアプリ名を入力→”Setting”を押下→”Add Buildpack”を押下→”Java”を選択
今回は、アプリ名を「HerokuSampleProject」とします。

![スクリーンショット 2020-03-08 9.30.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/296c3511-f8c1-c49e-7837-fb92be9d542

元記事を表示

あたまのなかの整理メモ(Java – データ型編)

# My Java環境

* java11

# Javaのデータ型

* プリミティブ型
* 参照型

## プリミティブ型(値そのものを使う、`null`は代入できない。)

* boolean(初期値は`false`)
* char
* byte
* short
* int
* long(`l`をつける。`long value = 10l;`)
* float(`f`をつける。`float value = 10f;`)
* double

## 参照型(インスタンスへの参照を扱う)

* オブジェクト型
* 配列型
* 列挙型

## n進数

* 2進数(`0b`はじまり。`int value = 0x0101`)
* 8進数(`0`はじまり。`int value = 077;`)
* 10進数(特記なし。`int value = 10;`)
* 16進数(`0x`はじまり。`int value = 0x1B;`)

## アンダースコアを使用した数値表記

* 先頭と末尾での使用NG(`int value = _123;`や`int val

元記事を表示

javaでAtCoder Beginner Contest 158を解く

AtCoder Beginner Contest 158お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc158)

今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc158)
結果はA-DまでACできました。

以下簡単に解説します。

##[問題A](https://atcoder.jp/contests/abc158/tasks/abc158_a)

引数に文字長3の文字列が与えられて、それが`AAA`か`BBB`なら`No`と出力すればOKです。

##[問題B](https://atcoder.jp/contests/abc158/tasks/abc158_b)

N, A, Bが与えられて、N / (A+B)が大事になってくる問題。
Nこの列にA個の青いボールとB個の赤いボールを交互に並べていくので、このN/(A+B)が繰り返された回数となります。

(N/(A+B))*AをベースにN%(A+B)

元記事を表示

初心者から始めるJava、for文・while文

#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

##環境
言語:Java11、JDK13.0.2
動作環境:Windows10

#for文
**for文**とは、**条件文**に基づいて、ループから抜けるまで**繰り返し処理を行う**ための、繰り返し処理文のひとつである。回数を指定して繰り返す場合に向いている。

“`text:for文の基本形
for ( 初期化文 ; 条件文 ; 更新文 ){
     //繰り返し処理;
}
“`
それぞれの役割はこちら。

  • **初期化文**
  • for文内部の繰り返し処理で用いる一時変数を宣言し、その初期化を行う文。カンマ`,`で区切ることで**複数の変数を宣言・初期化**できるが、そのすべてを**同じ変数型**にする必要がある(for

元記事を表示

JDBCドライバの作り方

## はじめに

サーバレスなRDBを実現出来ないかと考えてみたのですが、CloudRunとか使えば何とかなりそうな気がします。
ただ、CloudRunはJDBCをしゃべれないので、それならJDBCドライバを自作して裏側をHTTPにしてしまえと思って作り方を調べてみました。

調べてみると意外にもJDBCドライバは簡単に作れるようなので、とりあえず最低限のスケルトン実装を作ってみました。
裏側にRDBがいる訳でもないので、基本的には単にエコーを返すだけの以下を作ってみます。

– テスト用メインクラス
– JDBC Driver
– JDBC Connection
– JDBC Statement
– JDBC ResultSet

## テスト用の実行処理

まずは兎にも角にもテスト実行するメインクラスを作ってみます。MyDriverとMyConnectionが自作したJDBCドライバです。
戻り値がMyConnectionである事を確認するだけのシンプルな実装ですが、これで自作したJDBCドライバが適切に呼び出されている事が分かります。

github:
https://githu

元記事を表示

クラスパスやエンコードを何度確認しても問題ないのに「java.lang.NoClassDefFoundError: Could not initialize class java.nio.file.FileSystems$DefaultFileSystemHolder」が発生する

ネット上探しても情報がないので共有目的で書きます。
##原因
存在しないディレクトリをカレントディレクトリにしていると発生します。

他のファイルシステム全部が同じ仕様かは知りませんが、少なくともRedHat7では、カレントディレクトリを削除すると存在しないディレクトリに居る状態になります。

“`terminal
[root@******** ~]$ cd hoge
[root@******** hoge]$ rmdir ../hoge
[root@******** hoge]$
“`

この状態で`DefaultFileSystemHolder`クラスの初期化処理が走ると発生します。
`java.nio.file.Paths`内で結構使っているので、割と普通に使うクラスですね。

##僕の環境で起きたこと
あるプログラムを実行すると下記のような例外が発生する、と障害報告が挙がった。

“`java
java.lang.NoClassDefFoundError: Could not initialize class java.nio.file.FileSystems$Defa

元記事を表示

【Java】Public static void main(String[] args)の意味

`public static void main(String[] args)`はJavaを実行するのに、必須のメソッドです。
構文はひとつでも間違えるとエラーになり、実行できません。
ひとつひとつに意味があるためです。

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

各項目の意味は、以下の通りです。

|項目|意味|
|:–|:–|
|public|どこからでも参照可能|
|static|インスタンス可(new)しなくても外部から使用可能|
|void|戻り値なし|
|main|メソッド名|
|String\[\]|引数をString型の配列で受け取る|
|[args](#argsについて)|引数名、argument(和訳:引数)の複数形でargumentsの略省|
## argsについて
String[] argsは、プログラム起動時に指定する値(コマンド

元記事を表示

【Java】メソッド

# メソッドの呼び出しと定義
:sunny: 複数の文をまとめ、それをひとつに処理として名前をつけたもの。

“`例.java
public class Main {
public static void main(String[] args) {
System.out.println(“先生:みなさ〜ん、おはようございま〜す♪”);
student();
System.out.println(“先生:今日も1日お勉強がんばりましょう♪”);
}

public static void student() {
System.out.println(“生徒:おはようございます”);
}
}
“`

public static〜始まる
public static void main(String[] args) { 〜 }

public static void student() { 〜 }
の 2 件あります。
これがいわゆるメソッドです。
順を追って説明しますね:smile:

3 行目
System.out.print

元記事を表示

【struts】 jsp間の値受け渡し方法

strutsフレームワークによるjspの値受け渡しのやり方2パターン書き残しておきます。

# ① <>で取得する方法

“`java:addition.jsp
<%@ page contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>



足し算



元記事を表示

Cloud Endpoints Frameworkで任意のステータスコードを返す

## 概要

GAEで使用できるCloud Endpoints Frameworkは、デフォルトだとなぜか500系をすべて503で返すような仕様になっており、500と503を分けたいときなどに迷惑な動きをします。
コードを読んだ結果、この挙動を変更出来そうだったので備忘録的として残しておく。

## サーブレットの設定を追加する

結論から言うと`web.xml`に`enableExceptionCompatibility `というパラメータを設定すると、設定したステータスコードでレスポンスを返す事ができるようになる。

“`xml

EndpointsServlet
com.google.api.server.spi.EndpointsServlet

enableExceptionCompatibility<

元記事を表示

初心者から始めるJava、論理演算子・条件演算子

追記 2020/3/6 @shiracamusさんより大幅な編集リクエストをいただきましたので、そちらに差し替えさせていただきます。
(旧記事は本当に自分用の備忘録として、限定投稿の方に残しました)
追記 2020/3/6
条件演算子の末尾にセミコロンが必須と書いた内容について、ご指摘いただいたので訂正。いつもありがとうございます。

#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

#環境
言語:Java11、JDK13.0.2
動作環境:Windows10

#論理演算子
**論理演算子(Logical Operator)**とは、前回挙げた条件や関係演算子を使いつつ、より複雑な条件の記述を行う場合に用いられる演算子。今回は「オペランド(項)をいくつとる演算子なのか」を書く。オペランドを2つとる演算

元記事を表示

JavaとC# とJavascriptのクラスの書き方の違い

#今回はJavaとJavascript(ES6)とC#のクラスの書き方の違いについてあげてみようと思います。
##実際は複雑かもしれませんがクラスでぐらつく人って結構多いと思います。
昔の自分がそうだったんですが、いきなりJavaのプログラムを書こうとしたものでクラスがわからず困ったことがありました。
クラスという概念はメソッドの上のプログラムを拡張していると思っていただければ簡単にプログラミングができると思います。
実際いうとJavascriptのクラスはJavaやC#に比べて拡張がまだ粗いと思います。

“`javascript
//Javascript(ES6)

import {hogehoge} from ‘./hogehoge’;

class hogehoge{
static hogehoge(height, width){
this.height = height;
this.width = width;
}
}
“`

“`javascript

//Javascript

import ‘hogehoge’ fr

元記事を表示

Jackson で Java Enum 列挙型と JSON をシリアライズ・デシリアライズするサンプルコード

## 概要
– Java Enum 列挙型と JSON 内の値を相互変換する
– Jackson の提供する抽象クラス JsonSerializer と JsonDeserializer を使う

## 動作確認環境

– Java 11 (AdoptOpenJDK 11.0.6+10)
– Jackson Databind 2.10.3
– Gradle 6.2.1
– macOS Catalina

## サンプルコード

“`java
package com.example.humansex;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.dat

元記事を表示

【Spring】BeanUtils.copyPropertiesの落とし穴

# BeanUtils.copyProperties
Springには[BeanUtils.copyProperties](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/BeanUtils.html#copyProperties-java.lang.Object-java.lang.Object-)という便利なメソッドが用意されている。
一方のBeanからもう一方のBeanへ、同じ名前のフィールドの中身をコピーしてくれるメソッドだ。第一引数がコピー元、第二引数がコピー先になる。
クラスが別々だったとしても、同じフィールド名があればコピーは可能である。

**`Book` クラス**

“`java
public class Book {

String code;

String name;

int price;
}
“`

**使用例**

“`java

Book book1 = new Book();

book1

元記事を表示

初心者レベルでも気づく、JavaとGoのswitch文の記述の違い

# 基本的な`switch`文の記法

“`java:Java
switch rank {
case 1:
System.out.println(“金メダル!”);
break;
case 2:
System.out.println(“銀メダル!”);
break;
case 3:
System.out.println(“銅メダル!”);
break;
default:
System.out.println(“メダルを獲得できませんでした”);
break;
}
“`

“`go:Go
switch rank {
case 1:
println(“金メダル!”)
case 2:
println(“銀メダル!”)
case 3:
println(“銅メダル!”)
default:
println(“メダルを獲得できませんでした”)
}
“`

Javaの`switch`文の場合、暗黙的にfall-throughであ

元記事を表示

未経験エンジニアが覚えておきたい用語

概要

IT業界に飛び込んで約半年、いろいろな技術を勉強してきました。
ただ、これやったけどなんだっけという事が多くなったので、備忘録として基本的なことを書いていきます。

JAVA
——–
・オーバーライド
 →スーパークラスで定義されているメソッドをサブクラスで上書きする
・オーバーロード
 →引数や戻り値が異なるが名称が同一のメソッドを定義する
・ポリモフィズム
 →同じ操作でも扱う対象によって振る舞いが異なる仕組み
・継承
 →あるクラスを基に新しいクラスを定義する
・オブジェクト
 →クラスを複数定義しクラスから生成したオブジェクトを利用。
 【特徴】 再利用性が高い、仕様変更に強い
・抽象クラス
 →抽象メソッド1つ以上定義したクラス 
 【特徴】 abstractを指定、メソッドを定義できる、インスタンス化出来ない、実装は持たない
・カプセル化
 →publicやprivateなどのアクセス修飾子を適切に設定し、クラスに対するアクセス制限を行う
 【特徴】 クラスのアクセスが統一されるため、独立性が高まる、バグを未然に防げる、クラスの変更が簡単
・Array

元記事を表示

OTHERカテゴリの最新記事