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

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

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ファイルが生成されるようになる。
使えるアノテーションはWikiが参考になります
[https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X—Annotations:title](https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X—Annotations:title)

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

元記事を表示

Java セッションスコープ

趣味でプログラミングを勉強しています。
古本販売サイトを作成したいと思って勉強を始めたのですが、サーバ上でウェブページなどを動的に生成したりデータ処理を行うためには、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

元記事を表示

HashTree使えますか?

#導入
こんにちは。けちょんです。
**HashTree使ってますか?**
私は今日初めて見ました。
類似のHashSetやTreeMapは使ったことがあるんでないでしょうか。

#HashTreeとは
重複を許さず、addするときにソートして保持してくれるクラスです。
競技プログラミングで役立ちそうな気がするクラスですね。

#使ってみる
##まず、HashTreeにaddするオブジェクトを作成

“`
class Product {
private int id;
private String name;

public Product() {
}

public Product(int id, String name) {
this.id = id;
this.name = name;
}

public int getId() {
return this.id;
}

public String getName() {
return this.name;
}

}
“`
idとnameのフィールドと、コンストラクターと、アクセッサーを作成

元記事を表示

OpenShift(okd 3.11)のDevOps環境でのJava/Mavenのビルド時間をNexus3で短縮する

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/a2ebc74f-28ed-ac86-8154-42b0ac3f7c5a.png)

# 要は(TL;DR;)

– OpenShift環境下のDevOpsパイプランで、Maven/Javaのビルドが毎回遅いなあ、と思ってる方
– OpenShift上にOSSのリポジトリー・マネージャー **Nexus3**をデプロイすれば、Mavenプロキシーとなってキャッシュが効くのでビルドが速くなりますよ!

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/d384fa0b-0eee-5b40-0054-7628ebb25797.png)

# 困ったこと
こんにちわ!石田です。今OpenShiftのDevOpsのデモ環境を作ってるんですが、Java/Mavenのビルドが遅いです。。具体的にはソースの変更をトリガーにJavaアプリケーションをO

元記事を表示

SpringBootでapplication.propertiesを扱うクラスのテストをする方法(求:ご指摘)

# application.propertiesの設定値の確認テストをしたかった
application.properties内の設定値がバインドされているかを確認するだけのテストだがテストクラスの作成に頭を悩ませてしまった。

参照用のメモ書きとして文字に起こしておく。

#### 対象としたapplication.properties内の設定値

“`application.properties

api.mealinfo.mealNameLength=40
api.mealinfo.calorieLength=5
“`
####上記設定値を扱うクラス

“`java:APIMealInfoProperties.java
@Component
@ConfigurationProperties(prefix = “api.mealinfo”)
public class APIMealInfoProperties {

private int mealNameLength;
private int calorieLength;

public int getMealNa

元記事を表示

まったくの未経験からJava Silverを2か月で取得した話。

#まえがき
プログラミング初心者どころかパソコンにほぼ触った経験すらなかった僕が、2か月でJavaの基礎からJava Silverの資格を取るまでのお話をしようと思います。
もし、これから同じ資格を取ろうと思ってる方に参考にしていただけたらな、という想いで書きました。
ただ、本当に記事を書くのも、プログラミングも、パソコンも、なにもかも初心者ですので、広い心で読んでいただければ幸いです。

#自己紹介
始めに、自分がどんな人間かを簡単にご説明すると、2020年現在、23歳の男です。高卒で、半年前までは、フリーターでして、ずーと飲食店でアルバイトしていました。パソコンはたまにネットを見るのに使ってました。それも、スマホがあればパソコンなんていらなくね?とかマジで思ってたりもして、Excelとかも最近ようやく使えるようになった超パソコン素人人間です。

そんな僕が、プログラミングを始めたいと思ったきっかけは、単純にカッコイイ!と思ったからです。「プログラマー」とか「SE」って肩書きめっちゃカッコイイなとか思ってたり、たまにカフェとかでパソコン開いてカタカタやってる人見て、俺もカフェでパソコ

元記事を表示

IntelliJ IDEA のAndroid プロジェクトの設定でハマったので備忘録

## 環境
Mac OSX 10.14.6 Mojave
IntelliJ IDEA ULTIMATE 201903
マルチモジュールでのプロジェクト

### 問題1 Network ErrorでActivateされない
IntelliJをUpdateしようが、Activateさせようがいきなりネットワークエラーでつながらなくなる現象が起きた

### 対応
Macを再起動する
私はなぜか2回再起動することでこの現象を解決することができました。
なので一発で解決できるかは不明です。

### 問題2 `ClassNotFoundException: JAXBException` でcompileエラー

java9以降をsdkとして設定しているとJava9からJAXBExceptionが消えているので
compileエラーが発生する.

### 対応

1.ProjectTabに切り替え → Project rootを右クリック → Open Module Setting → Project Structure → dependenciesタブに切り替え → Module SDKをJ

元記事を表示

メモリ使用が激しすぎる言語はゲームに向かない

ゲームによく使われる言語としてC,C++,C#,lua,Python,(JavaScript,Java,アセンブリ)等がありますが、メモリ使用量の多い言語とゲームに使われていない言語が物凄い強い相関関係があります。
一番メモリを使うであろうScalaはJavaの2~3倍(※要出典),F#はC#の1.5倍(※要出典),JavaはC#の2倍程(※要出典)メモリを食うと風の噂で聞いたことがあります(VMはメモリ消費が激しい傾向にある)。Pythonやluaはメモリ消費量比較的多いと言われるスクリプト言語の中ではメモリを殆ど消費しないC/C++より数倍程度で、ゲームのスクリプトや簡易処理に多用されます。C#はUnityで使われている。JavaやF#は2Dとかなら普通に使われている。他の言語は(特にメモリ使用量が多ければ多いほど)マイナー。

– 大体のメモリ使用量目安(比較/ネット記事より参照)
– Scala **459,000** ≪=ヤバスギィ
– Java 170,000
– F# 127,500
– C# 80,000
– PHP 60,000
– JavaScript

元記事を表示

通常のクラスからラムダ式に変形していく

#導入
こんにちは。けちょんです。
**皆さん、ラムダ式使ってますか?**
私はこれから初めて使います。ガチ素人です。

#以降、変形させていく

##クラス度100%
まず、Ruunableインターフェースを実装したクラスは以下ですね。

“`
class lambda implements Runnable {
@Override
public void run() {
System.out.print(“OK”);
}
}
“`
インターフェース通りに、runメソッドを実装して終了です。

##クラス度60%,ラムダ度40%
“`
Runnable runner = new Runnable() {
@Override
public void run() {
System.out.print(“OKっぽい”);
}
}; // OKっぽい
“`
ここでクラスが匿名化され、インスタンス化と同じ場所で定義されています。
最後の”;”は省略するとコンパイルエラーになります。誰か教えてください。

##クラス度40%,ラムダ度60%
型推論等により、冗長な部分

元記事を表示

javaでAtCoder Beginner Contest 153を解く

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

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

以下簡単に解説します。

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

HPがHのモンスターを攻撃力Aで攻撃して、何回で倒せるかを求める問題。
H/Aがちょうど割り切れるときの処理に注意すれば大丈夫なはずです。

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

数字(必殺技の攻撃力)を足し合わせて、相手のHPに届くかどうかを求める問題。
シンプルな足し算でいけるはずです。

##[問題C](https://atcoder.jp/contests/a

元記事を表示

Java11でJakarta EE 8でダークウェブのSNSを作りたい

こんにちは。

今は私は暗号通貨をやり取りするダークウェブ系のSNS作りに挑戦しています。
https://github.com/nandaka-furari/DarkwebSNS
仕様等はREADMEに書いているので具体的にはここを参照してもらうとして、概要の設計としてはJava 11とJakarta EE 8を使います。
でもさっぱり開発の仕方が分からないのでJakarta EE のアプリを作る方法のサンプルとしてこの記事を発展させていきたいので編集リクエストをどんどん送ってください。

## Eclipse
今ではJakarta EEはEclipse Foundation(EF)傘下になっているのでEclipseで開発する前提の記事にしたいです。Payara Toolsの使い方などがあればいいかな。

## 終わりに
GitHubの方にもイシューやREADMEへのコミットやらガンガン送ってください。(基本READMEを発展させていけば何とかなりそうな気がする)
そして既存のJava EEやJakarta EEのQiita記事をここに集約できればと思います。

元記事を表示

OTHERカテゴリの最新記事