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

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

戸建て?マンション?診断チェッカー

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class HouseChecker {

public static void main(String[] args) throws IOException {
System.out.println(“戸建?マンション?”);
System.out.println(“あなたに合うお住まいを見つけましょう!”);
System.out.println(“「はい」の場合はyを、「いいえ」の場合はnを入力してください”);
System.out.println();
q1();
}

//q1
public static void q1() throws IOException {

boolean loop = true;
System.out.println(“「結婚をしていますか?(またはする予定がある)」”);

while(loop == t

元記事を表示

お姉さん問題を実際にコードで表現して計算してみた

# お姉さん問題って?

**『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう!**

こちらのyoutubeの動画です。
組み合わせの爆発を伝えたいお姉さんが一生をかけて組み合わせのすごさを身をもって教えるという動画です。

ここで取り上げられている問題が、
「N × Nのマス目があり、左上のスタートから右下ゴールまで遠回りしてもいいから何通りの道順がとれるか」
というものです。みんなで数えてみようって言われているので数えるしかありません。

制約としては、同じ道を通ってはいけないというもののみです。

| N | 組み合わせ |
|:–|:–|
|1|2|
|2|12|
|3|184|
|4|8512|
|5|1262816|
|6|575780564|
|7|789360053252|
|8|3266598486981642|
|9|41044208702632496804|
|10|1568758030464750013214100|

**気になったので自分でも検

元記事を表示

Oracle Certified Java Programmer, Silver SE 11に合格した

Oracle Certified Java Programmer, Silver SE 11
に、先日合格した。ので、やったこと、感じたことをサクッと書いておく。

##私の経歴
独立系Sier。
大学はNOT工学系。
実務経験3年。
Java案件のPG経験はなし。
(業務でプログラミングしたのは.NET系の案件で1年程度)

##勉強方法
黒本を購入した。
試験2ヶ月前から対策開始。
1〜11章まで1問ずつ、問題見る→回答・解説見て理解するの流れで
とりあえず読んでいった。(紙には一切記載しなかった)

1章とポリモーフィズム・モジュールシステムあたりは理解に時間がかかった。
そういうとこはパパッともう1周、問題見る→回答・解説見るを繰り返した。

本番前1週間で、総仕上げ問題を2周解いた。
1周目は正答率40%無いくらいで愕然としたが、2周目は80%くらい解けた。
不安なまま本番に突入したが、80%くらい解けて受かった。
正直受かってるかギリギリかな、くらいの感触だったのでホッとした。

##感じたこと
正直思ってたよりずっと難しかった。

インターネットの海では
「簡単すぎクソワ

元記事を表示

STSでSpring Data JPAを試したときの備忘録

## 概要
STSを使ってSpring Data JPAを試したときの備忘録を残しておきます。
主に自分用。
Spring Data JPAとはSpringのO/Rマッパー、
モデル層のフレームワークです。

## 紹介の前に言葉の説明
### O/Rマッパー
DBのテーブルやビューのレコード1行を
Javaのインスタンス1個として扱い、
テーブルとインスタンスを
関連付けるモジュールです。
後ほどもう少し詳しく書いていきます。
※厳密には違いますがイメージは
 大体合ってると思います。

### モデル層
MVC(Model, View, Controller)のModelです。
DBそのものや、DBへのCRUD(**C**reate, **R**ead, **U**pdate, **D**elete)、
アプリケーションのロジック部分のことです。

## SpringでJPAを推す理由
Spring Data JPAの強みは
クラスやメソッドの命名規則などの
お約束を守ればインターフェースを作るだけで
CRUDできます。便利です。

ただし、SQLを書く必要があるとき、
SQLの代

元記事を表示

JavaFXで会話っぽく文字を出力する

#概要
JavaFXでゲームを作成した際に、`Label`に会話イベントを表示させたい場面があったので、そのことについて書きます。
##環境
– java 13.0.2
– JavaFX 13.0.2
– zsh 5.7.1 (x86_64-apple-darwin19.0.0)
– MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)

##実行例
![text.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520217/4730436b-f2ea-5663-9c82-f2ce465f6d7e.gif)

# 実装
## 考え方
今回やろうとしていることは、会話文を一文字ずつ公開範囲を広げつつその度に出力させれば実装できると考えました。
## 手順
1. fxmlファイルの作成(今回は[SceneBuilder](https://gluonhq.com/products/scene-builder/)を利用)
2. 起動するためのファイルを作成

元記事を表示

Spring Boot で graphql-spring-boot 使用時にエラーをどこかへ通知したいとき

`@RestControllerAdvice` とかで取れなかったのと、 `@ExceptionHandler` よりももう少し詳細な情報が欲しかったので。

# 環境

“`kotlin

val spring_version=2.2.2.RELEASE

implementation(“com.graphql-java-kickstart:graphql-spring-boot-starter:6.0.0”)
implementation(“org.springframework.boot:spring-boot-starter:$spring_version”)
implementation(“org.springframework.boot:spring-boot-starter-web:$spring_version”)
“`

# コード例
`Map` を Bean に登録すれば良さそう。

“`kotlin
@Configuration
class GraphQLConfig {
@Bean
fu

元記事を表示

【Java】入門 構造 クラス定義 クラスとインスタンスの関係 メソッド定義のフォーマット

アウトプット

クラスとは?
クラス=フィールド+メソッドである
処理を定義したものがメソッドである。

package javabase;//←パッケージ宣言
class Staff {//←テンプレート
String name;
int staffid;
String email;
}

1クラスの定義
public class StaffInfo {//←クラス定義

public static void main(String[] args) { //メソッドの定義

Staff yamada = new Staff();//←インスタンスの生成
yamada.name =”Taro Yamada”;

System.out.println(yamada.name);

}

}

Javaのプログラムを作る=クラスを作る

2クラスとインスタンスの関係
//クラス=テンプレート たい焼きの型
//インスタンス=テンプレートから生成された部品 たい焼きがインスタンスです。
//class Staff { //←Staffクラス (テンプレ

元記事を表示

[PostgreSQL]セッションをちゃんと切らないといけないよという話

##ある日

いつものようにPostgreSQLに接続しようとしたらこんなエラーが出た。
>FATAL: sorry, too many clients already

??
謝られるようなことはしていないはずだ。
調べるとクライアントがDBの設定を超過しているらしい…。

ここでまた疑問。
自分がテストで使っているだけなのでそんなことになるはずがないのだ。

一応“select * from pg_stat_activity;“で調べてみる。

>1234 datname.hoge 0000 postgres 000.000.0.000 2020/1/29 00:00
>1234 datname.hoge 0000 postgres 000.000.0.000 2020/1/29 00:00
>1234 datname.hoge 0000 postgres 000.000.0.000 2020/1/29 00:00
> … 以下100件

うん…使ってたねごめんね。こっちがsorryって感じだね。

原因としては。使っているサーバサイドのJavaのプログラムでDB接続を連続

元記事を表示

[Java]鋳型にはめるマルチスレッド

#はじめに
バッチ処理などで、時間のかかる似たような処理をマルチスレッドを使用して、
時間短縮させたいことありますよね。

例えば、単純化して考えるために、
1処理5分かかるものを10処理することを考えます。
1スレッドだと 5 * 10 = 50分かかりますが、
10スレッドだと5分で終わりそうな気がします。

そういった場合にスレッドセーフな処理で記述するというのは、
なかなか骨が折れます。
次回以降、似たような場面で心理的負荷を下げるために、
鋳型のようなものを作成しておきたいと思って書きました。

##実装例
とりあえずこの形ならスレッドセーフに書けるという大雑把な枠組みです。
欲しい情報の肝以外は省略しているつもりなので、
自分の必要な処理を埋め込んでいくと、
完成するような「鋳型」をイメージしています。

“`MultiThreadExecute.java
/**
* マルチスレッド化するクラス
* ここでスレッドを作成し実行させる
*/
public class MultiThreadExecute {
public static void main(String[]

元記事を表示

Java 月末のplusMonths

# 月末に対してplusMonthsとどうなるの?
2月には31日は存在しませんが、1/31に`plusMonths()`で1ヶ月を加算した場合はどうなるか気になり調べてみました。

[ドキュメント](https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDate.html#plusMonths-long-)によると
>このメソッドは、3つの手順で、指定された量を月フィールドに加算します。
1. 入力された月数を、月フィールドに加算します
2. 結果となる日付が無効になるかどうかをチェックします
3. 必要に応じて、「月の日」を最後の有効な日に調整します
たとえば、2007-03-31に1月を加算すると、2007-04-31という無効な日付が生じます。無効な結果を返す代わりに、その月の最後の有効な日である2007-04-30が選択されます。

まずは月を足して、足した月に該当する日付があるかどうかチェックします。該当する日付がない場合は、月の最終日を返すようです。

# 確認

“`java
LocalDate dat

元記事を表示

Apache Commons BeanUtils はまりポイント

[Apache Commons BeanUtils](http://commons.apache.org/proper/commons-beanutils/)を使ったときにはまったことのメモ

##### 確認したバージョン

* Java 8
* Apache Common BeanUtils 1.8.3~1.9.4

##### 検証コード

Bean.java

“`java
public class Bean {
private Timestamp timestamp;

public Timestamp getTimestamp() {
return timestamp;
}
public void setTimestamp(Timestamp timestamp) {
this.timestamp = timestamp;
}
}
“`

Main.java

“`java
public class Main {
public static void main(String[] args) throws Exception {
Bean bea

元記事を表示

streamでFizzBuzzを出力する

#導入
こんにちは。けちょんです。
**皆さん、stream使ってますか?**
私は数日前に学んだのですが、めっちゃはまってます。
業務中も隙あらばいじってます。
今回はstreamを使ってFizzBuzzを出力してみます。

#やってみる
##なにはともあれ、1~100までを生成
“`java
IntStream.range(1,101);
“`
rangeClosedではなく、rangeの理由はショートコードを意識しました。
(最終的にそんなに短くならない)

##mapToObjを使って、FizzBuzzを作成

“`java
IntStream.range(1,101).mapToObj(i->i%3==0&&i%5==0?”FizzBuzz”:i%3==0?”Fizz”:i%5==0?”Buzz”:i).forEach(i->System.out.println(i));
“`
はい、書いてて辛いし、きっと皆さんも辛い。

“`java
i->i%3==0&&i%5==0?”FizzBuzz”:i%3==0?”Fizz”:i%5==0?”Buzz”:i
“`
この

元記事を表示

【初心者】Java 練習問題後の気を付ける点/継承/抽象メソッド【備忘録26】

##Java練習(オブジェクト指向)
###カプセル化
「private」でインスタンスフィールドを書いた際に
ゲッターで書き漏れる事があり、エラーが発生したので
癖づけて書くように気を付ける。

###printData
・指示がなくても、自分から出力用のインスタンスメソッドを
書けるようにする。誰が見ても見やすい書き方を心がけていきたい。

・privateで書いた後、Main.javaで出力するのではなく
printDataで出力をまとめる場合は、同じクラス内なので、getNameなどでなく
this.nameなどで書くと、簡潔に書けるので覚えておく。

##Java学習
###継承
今までの演習で2つのクラスを使って進めたりしていたが
クラス内でコードの重複するところがあった。
修正・改善がしにくくなってしまうので重複は避けるべき。

その際、1つのクラスの内容を引き継ぐ方法がとれる。
これを継承という。

元になるクラスを「スーパークラス」と呼び
継承される側のクラスを「サブクラス」と呼ぶ。

###継承する方法
サブクラスにて、初めに定義する際に

“`java
clas

元記事を表示

Micronaut+Swagger UIでかっこいいAPI仕様書をつくる

1.依存関係の追加

“`groovy:build.gradle
dependencies {
annotationProcessor “io.micronaut.configuration:micronaut-openapi”
implementation “io.swagger.core.v3:swagger-annotations”
}
“`

ビルド時にOpenAPI仕様に沿ったyamlファイルが生成されるようになる。
使えるアノテーションはSwaggerのWikiが参考になります
https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X—Annotations

静的コンテンツとしてハンドリングしたいときはapplication.ymlに以下の通り追記する。後述する生成したHTMLファイルも同じ手順でハンドリングできます。

“`yaml:application.yml
micronaut:
router:
static-resources:

元記事を表示

Java sessionスコープ

趣味でプログラミングを勉強しています。
古本販売サイトを作成したいと思って勉強を始めたのですが、サーバ上でウェブページなどを動的に生成したりデータ処理を行うためには、Java Servlet(ジャバ サーブレット)の知識が必要ということで勉強を始めました…(^_^;)
古本サイトを例に考えた場合にお客さんがカートに入れた情報を保持する、session(セッション)の概念がいまいちわかりにくかったので、今回記事にしてみました!! ヾ ^_^♪

– セッション
– ユーザーごとの状態を保持する仕組み

– サーブレットでは`javax.servlet.http.HttpSession`インターフェースを使って扱う

“` CounterServlet.java
package session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import

元記事を表示

自動テストのブラウザ起動時のオプション設定を実施する方法

Selenideを利用している事が前提ですが、テストを実行するブラウザに対して設定を行う方法をご紹介します。

“`java:IEWebDriverProvider.java
package com.driver;

public class IEWebDriverProvider implements WebDriverProvider {
@Override
public WebDriver createDriver(final DesiredCapabilities desiredCapabilities) {
InternetExplorerDriverManager.iedriver().arch32().setup();
desiredCapabilities.setCapability(“ignoreProtectedModeSettings”, true);
InternetExplorerOptions opt = new InternetExplorerOptions(desiredCapabilities)
.d

元記事を表示

ElasticsearchのPluginを作る 連載(2) 検索

この連載では[Elasticsearch](https://www.elastic.co/)のpluginの基本的な書き方について解説していきます。[前回](https://qiita.com/y_taka8/items/14dfee9c5b3c7bd63020)は、Hello Worldを表示する簡単なPluginを作成する事で、Pluginの大まかな作り方を説明しました。第二回は、簡単な検索要求を受け付けるPluginを作成します。
作成したソースは[github](https://github.com/taka8-0304/elasticsearch-sample)にあります(前回のものを修正しています)。

#目的
ElasticsearchはJSON形式のリクエストでほとんどの検索要求に対応可能です。ですが、標準だとインデックスの削除等の保守系の機能も見えてしまいますし、WEBから直接Elasticsearchにアクセスするのは望ましくありません。そのため通常は、WEB→APサーバ→Elasticsearchのような形でElasticsearchをデータベースのようなイメージ

元記事を表示

51歳からのプログラミング 備忘 Android非同期通信のコールバック AsyncTask終了後の処理

# 非同期通信のコールバック

AsyncTaskの処理が終了した後で、何かしたいときに使います。

“`java:MainActivity
public class MainActivity extends AppCompatActivity{

TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);

AsyncCallBack asyncCallBack = new AsyncCallBack();
MyAsyncTask myAsyncTask = new MyAsyncTask(asyncCallBack);
myAsyncTask.execute();

元記事を表示

【メモ】JSUG勉強会 2020その1 Spring x Kotlin

[JSUG勉強会 2020その1 Spring x Kotlin](https://jsug.doorkeeper.jp/events/102390
)に出席した際に取ったメモを共有します。

非常に簡易的ですが、少しでも参考になれば幸いです。

# [KotlinでSpring 完全理解ガイド](https://speakerdeck.com/ntaro/kotlindespring-wan-quan-li-jie-gaido-number-jsug) (@ngsw_taro さん)

## XXを使えばKotlinで簡単にSpring開発を始められる
Spring Initializr
Intellij IDEA(有償版)

## Kotlinでもアノテーションを使ってbean登録やハンドラ定義

Kotlinはデフォルトで継承しないため、serviceクラスにopen修飾子をつける必要がある。
がKotlinのallopenプラグインやkotlin-springプラグインを用いれば、自動でopen扱いしてくれる。

ちなみにSpring Initializrで生成したプロジェクト

元記事を表示

ListとArrayListの違い

#List
こんな感じで作成

“`java
List list = Arrays.asList(array);
“`
**※:addメソッド等を使うと、実行時エラーとなる**
arrayを参照しているだけなので、arrayを変更すると、反映される。

#ArrayList
こんな感じで作成

“`java
List arrayList = new ArrayList(Arrays.asList(array));
“`
※ArrayListからListに修正しました。
addメソッドが使える
arrayの値を元に新しいインスタンスを作成しているため。独立したオブジェクトとなる。

#追記(2020/1/28)
ご指摘いただき、内容が面白かったため、記載
`Arrays.asList(array)`の返り値である`ArrayList`の`add`メソッドを使用すると例外を吐く理由は以下。
1. `ArrayList`クラスが、`add`メソッドを継承しておらず、親クラスの`add`メソッドを使用している。
2. `ArrayL

元記事を表示

OTHERカテゴリの最新記事