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

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

【Swing】JFrameクラスについて

###(JFrameのクラス階層)
java.lang.Object
→java.awt.Component
→→java.awt.Container
→→→java.awt.Window
→→→→java.awt.Frame
→→→→→javax.swing.JFrame

###(JFrameクラスのコンストラクタ)
“`java
JFrame()
//初期状態が不可視な新しいフレームを構築する
“`

“`java
JFrame(GraphicsConfiguration gc)
//画面デバイスで指定されたGraphicsConfigurationと空のタイトルでFrameを作成
“`

“`java
JFrame(String title)
//指定されたタイトルを使用して、初期状態で不可視な新しいFrameを作成
“`

“`java
JFrame(String title, GraphicsConfiguration gc)
//指定されたタイトルと画面デバイスの指定されたGraphicsConfigurationで、JFrameを作成します。
“`

元記事を表示

【Java】正規表現でズンドコキヨシ

# 流行ったよね、ズンドコ
完全に時期を逃しているのですが、流行ったときに書いて放置してたソースが出てきたので、投稿します。
Javaでは余りこのパターンは見かけなかった感ある。

# ソース
“`Java
import java.util.Random;

public class ZunDokoKiyoshi {
public static void main (String args[]) {
Random random = new Random(0);
StringBuilder sb = new StringBuilder(“”);
while (!sb.toString().matches(“^.*(ズン){4}ドコ$”)) {
String current = new String[]{“ズン”, “ドコ”}[random.nextInt(2)];
System.out.println(current);
sb.append(current);
}
System.out.println(“キ・ヨ・シ!”);
}
}
“`
1.

元記事を表示

オブジェクト指向を「英文」とみなそうとするともやもやが残る理由

#0. 結論
他動詞と自動詞を区別しよう。ただそれだけ。

#1. 導入

 オブジェクト指向による適度に可読化されたコードが、英文とみなせるということを聞いたことのある方は多いだろう。具体的にコードを英文として読むためには、次のように読む。

“`:oop↔eng
主語.述語();//第1文型
主語.述語(補語);//第2文型
主語.述語(目的語);//第3文型
主語.述語(目的語, 目的語);//第4文型
主語.述語(目的語, 補語);//第5文型
“`

#2. 問題

##2-1. 分かりやすい問題

 しかし、述語(動詞)の種類によっては、「主語」が本当に「主語」なのか疑わしくなってしまう時がある。
例えば、javaの`List`(知らない方向けに説明すると、配列のようなもの)では
`list.add(obj);`
のような書き方ができる。
このコードでは`List`のインスタンス`list`に`obj`を追加するということである。
**決して`list`「が」(どこかへ)`obj`を追加するわけではない**のだ。
そのため英文では「JVM adds list obj.

元記事を表示

Studyplusで時短管理学習してみました。

# 目的、背景
> 仕事や家庭などでなかなか学習できない、そのような人向けとして、このStudyplusを社会人こそ使うと便利だと気づきました。また、今年は応用情報などの資格を取りたいという人向けにも良いです。

# 実践
## 0.社会人カテゴリーがあるので社会人でも気軽に参加できる。

## 1.教材登録できます!
![Screenshot_20200204_080843_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/9db04dfb-e0bf-2d0f-644c-47e1e0dd6e48.jpeg)

## 2.学習成果をグラフで視覚化
![Screenshot_20200204_080546_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/96e3c7a3-d1a0-bcfd-3519-2

元記事を表示

Javaで同一階層のファイルをimportする

packageって考え方が必要らしい。

package = directory と思うと楽そうだ。

mainの .java ファイルをとあるフォルダに入れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24737/18347cc6-4b90-a7fa-7843-c1bea6dc6fec.png)

main()がある `Test1.java` の先頭にこれを入れる

“`java
package test1;
“`

そうすると、何もimportせずに同一階層の **MyTest1Exception.java** が読み込める。

“`java
void runSample() throws MyTest1Exception {

throw new MyTest1Exception(“独自の例外です”);
“`

ふむ

reference
https://itsakura.com/java-dokuji-re

元記事を表示

java error handlingの基礎 – catch は一番手前でしか拾われないという話

エラーをどこで拾うかはほんとに迷う。

subroutineの中でうかつにtry-catchしてしまうと、拾いたいところまで届かなかったりする。

javaも同じだった

# 届かない例

同じExceptionを多段なsubroutineでかけると、内側のsubroutineでしか拾えない。

“`java
public class MyException {
final private static int[] M = {1,2,3};
public static void main(String[] args) {
try {
subroutine(M);
}
catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println(“[SECOND] catch : ” + e.getMessage());
}
}

public static void subroutine(int[] M) throws ArrayIndexOutOfBoundsException {
tr

元記事を表示

Java 入れ子のBeanをaaa.bbb[0].cccの形式に変換する

# はじめに
– 入れ子のBeanをaaa.bbb[0].cccの形式に変換する必要があるためとりあえず試作したもののためバグがあるかもしれません
– 想定している型は下記になります
– 親Beanのメンバ変数にString or List or 子Bean or List<子Bean>

“`java:Bean0.java
@Data
public class Bean0 {
private List listBean1;
}
“`

“`java:Bean1.java
@Data
public class Bean1 {
private String id;
private String name;
private List list;
private Bean2 bean2;
private List listBean2;
}
“`

“`java:Bean1.java
@Data
public class Bean2 {
private String count;
private List<

元記事を表示

VsCode & AntでJavaをコンパイルするやり方

#目的
Javaのビルドの仕組みについて深く学習し、ビルドツールを習得し、Eclipseなしでの軽量・簡素な学習環境を構築する。
対象者:Javaはわかるけど環境構築やデプロイが苦手な人、勤務先がAntを使っているので触れておきたい人。ちなみに私がこれ。
筆者の環境:macOS
前提:JavaVMへのパスは通っていてjavacコマンドが動く。

#Antをインストールする
[Ant公式](http://ant.apache.org)でダウンロードできる。
![スクリーンショット 2020-02-03 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201982/b1d7a576-3c96-2e75-3b1a-11dc21218dc2.png)
ここから、zip形式の最新のものをダウンロードする。

そのままでもいいけど後で環境変数に記述するので短い名前に変えてもいい。
どこに配置してもいいけど、私はホームディレクトリに配置しました。
ここではapache-antにしました。

“`

元記事を表示

【未解決】Java6アプリからJSchを使用してSSH接続を実行すると例外が発生する件

## やりたいこと
Java6でコンパイルした自作アプリから別マシンにSSH接続することです。

## 環境
### 接続先
– Ubuntu 16.04 LTS
– OpenSSH 7.2p2

### クライアント
– Windows 8.1
– 自作アプリ
– [JSch](http://www.jcraft.com/jsch/)

## 問題概要
[JSch](http://www.jcraft.com/jsch/)のAPIを呼び出して別マシンへのSSH接続を実行すると、[JSch](http://www.jcraft.com/jsch/)内で例外が発生します。

## 問題詳細
今さらJava6?
と思われるかもしれませんが、使わなければいけない事情がありましたので。

JavaでSSH接続となると、[JCraft](http://www.jcraft.com/)の[JSch](http://www.jcraft.com/jsch/)ライブラリが使用されることが多いようです。
[Mevanリポジトリ](https://mvnrepository.com/artifact/co

元記事を表示

Spring Boot で DI を必要とする Validator のテストを高速化する

Spring Bootのプロジェクトでユニットテスト実行時間の高速化を模索している中で、DIが必要なカスタムバリデーターのテスト実行を高速化する方法が分かったので紹介します。

### 確認環境

* Spring Boot 2.2.2
* JUnit 5.5.2
* AdoptOpenJDK 11.0.3
* macOS Mojave 10.14.6 (3.1GHz Intel Core i5, 16 GB RAM)

### 背景

入力値の一意性をチェックする場合など、Bean Validation で DB 接続をしたい場合があり、次のような DI を使ったカスタムバリデーターをいくつも作っていました。

“`java
@Documented
@Constraint(validatedBy = { EmployeeCodeUniqueValidator.class })
@Target({ TYPE })
@Retention(RUNTIME)
public @interface EmployeeCodeUniqueConstraint {

}
“`

元記事を表示

年収1000万円を超えるエンジニアが知っておくべき最低限の各言語の特徴

# 初めに、そして結論

本当は冒頭にこういう言い訳がましいことを書くのは好きではないのだが、例によってディスり成分が多めなので、筆者はそういうキャラということでそこは目を瞑って欲しい。実体験に基づいて書くので業務上あまり触ってこなかった言語については記載が少ないが、読者のみなさんが詳しいことや私の記述で事実と異なる部分については謝罪して訂正したいのでプルリク、コメント等熱望している。あと筆者はサーバーサイドエンジニアであってフロントの事が全然わからんのでその辺はさっぴいて読んでほしい。結論から言うとRustを使え。

## 古生代

アセンブラ以外の高水準プログラム言語の歴史は1950年代から[^1]であるが、筆者の実体験に基づいて話をするので’80年代まですっ飛ばす。

[^1]: 1954年にFORTRANが考案された。高校の「計算機数学」の時間に習ったが授業中はテトリスばっかりしていてなにも覚えていない。https://ja.wikipedia.org/wiki/FORTRAN

### N88-BASIC

N88といえばN88-BASIC(86)を思い浮かべる読者が多いと思

元記事を表示

Play framework の scheduled jobs と crontab

play framework では、ある処理を定期実行できる Jobクラスがありその間隔は以下のように `@On()` のカッコ内に書く

“`java

import play.jobs.Job;
import play.jobs.On;

@On(“*/2****”)
public class xxxxx extends Job

“`

時間間隔の設定にはcrontabの表記が使えて、以下のサイトがめちゃわかりやすい。

[https://crontab.guru/#*/15_*_*_*_*](https://crontab.guru/#*/15_*_*_*_*)

※後ろのアスタリスク(*)は間にスペースが必要なことに注意。

crontab コアンド初めて知ったが、めちゃクチャ便利では

元記事を表示

[Java] n次多項式の効率的な計算

多分何番煎じかわからんくらいありふれた内容だと思うけど、そんなこと知るか
## “Math.pow()“からの離脱
なんか適当に「Java 累乗」とかで検索すると“for“文回して解けとか“Math.pow()“を使うと一発で求まるとか言ってるのが割とすぐ見つかる
$n$次多項式を解こうと思うとまず“Math.pow()“が思い浮かぶので、
$$ Ax^3 + Bx^2 + Cx + D $$
みたいな多項式をメソッドで用意しようとすると

“`Java
static double f(double x) {
return A * Math.pow(x, 3) + B * Math.pow(x, 2) + C * x + D;
}
“`

のようにしがちになっちゃうと思う
ただ、“Math.pow()“って引数が“double“型であることから分かるように$x^{0.3}$だったり、$x^{log4}$だったり、指数部が整数でない場合に用いると真価を発揮するもんなんだと思ってて、逆に指数部が整数である演算なんかで使うとかえって無駄に時間かかっちゃうこ

元記事を表示

本日の曜日を取得する方法

#曜日を取得する方法

###曜日

String[] weekName = {“日曜日”, “月曜日”, “火曜日”, “水曜日”,
“木曜日”, “金曜日”, “土曜日”};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Calendar calendar = Calendar.getInstance();

int week = calendar.get(Calendar.DAY_OF_WEEK) – 1;
Log.v(“checkCalendor”,” + ” + weekName[week]);

}

###その他の情報の取得方法

int year = calendar.get(Calendar.Y

元記事を表示

Javaのシステムプロパティの記載順について

定期的に毎回悩んで、思い出しているのでメモしておきます。
Javaのコマンドに付けてメモリの確保量などを定義する「システムプロパティ」
ですが記載順によってクラスから参照できる/できないが明確になっています。

**環境**

“`
$java -version
java version “1.8.0_131”
“`

**サンプルクラス**
「kusatest」というシステムプロパティをクラスから参照して出力します

“`java:Test.java
import java.util.*;

public class Test {
public static void main(String[] args) {
System.out.println(“start”);
System.out.println(System.getProperty(“kusatest”));
System.out.println(“end”);
}
}
“`

**参照できる例**

“`sh
$ java -Dkusatest=a

元記事を表示

React NativeのビルドにAndroid Studioに同梱されているJavaを使う

React NativeでAndroid向けにビルドする場合、環境にJavaがインストールされている必要がある。

メジャーなのはOracleの配布しているJava。しかしAndroid StudioにはそれでなくOpen JDKが同梱されている。

Android Studioのと合わせた方がトラブルが生じにくいだろうし、またOracle Javaのライセンス変更[^1]を気にする必要もなくなるため、Android Studioに同梱されているJavaをReact Nativeのビルドに使う。

[^1]: [「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに](https://forest.watch.impress.co.jp/docs/news/1180607.html)

## 環境
– macOS Mohave 10.14.6
– react-native: 0.61.5

## 手順

`.bash_profile`に下記のように記述する。

“`sh
export PATH=$PATH:/Applications/”Andr

元記事を表示

Mac + IntelliJ IDEAでJUnit5が動くようになるまでの手順メモ

# はじめに
タイトルの通りの雑多なメモです。個人的な備忘録なので、画面キャプチャもない手抜き記事です。
また、「こうやったらできたよ」という内容なので、もっといい方法があるかもしれません。

## 環境
* macOS Catalina

# 内容
## JDKのインストール
もともと入っていたので今回作業をしてないですが、以下のような手順でやった覚えがあります。
まずHomebrewをアップデートします。

“`
$ brew update
“`

次に下記コマンドでインストール(現時点で最新版のJava13がインストールされる)。

“`
$ brew cask install java
“`

## IntelliJ IDEAのインストール
もともと入っていたので(ry
公式サイトからインストーラをダウンロードして、ポチポチやるだけだと思うので省略してもいいですよね?いいってことにしよう。

## Gradleのインストール
下記コマンドでインストールします。

“`
$ brew install gradle
“`

が、既に入っていると怒られたので下記で再インス

元記事を表示

エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか

# 作ったもの
エンジニア同士、デザイナ同士、エンジニアーデザイナが一緒に「なんか作ろうぜ」「なんか勉強しようぜ」というつながりを実現できるSNSアプリ

EDICPAT
https://play.google.com/store/apps/details?id=com.engineer_forum.engineer_forum

# 作った動機
エンジニア向けSNSアプリってもう色々あるんでしょうけど、既存の団体に自分が参加する形式とか、作ったものを見てもらうとかの形式だったりすると思います。

そうじゃなくて、未経験者とか、フリーランスエンジニアとか、**そこら辺の仲間と「勉強会やろうぜ」とか「何か作ろうぜ!」ってやりたい。**休日とか、ライトなノリで。自分自身がそういうのに

元記事を表示

Tomcatのインストールと自動起動の設定

# はじめに

# 使用した環境

* OS
* CentOS 7.7(1908)
* Java(Amazon Corretto)
* Java 1.8.0_242
* Tomcat
* Tomcat-9.0.30

# Javaのインストール

* Javaは[こちらのページ](https://aws.amazon.com/jp/corretto/)のリンク先から、Amazon Corretto8をダウンロードしました。
* Amazon CorrettoはRPM形式が選択できるため、パッケージ管理がしやすい`yum`コマンドでインストールしています。

“`shell-session
[root@akagi ~]# yum install -y https://corretto.aws/downloads/latest/amazon-corretto-8-x64-linux-jdk.rpm
[root@akagi ~]# java -version
openjdk version “1.8.0_242”
OpenJDK Runtime Environment Corrett

元記事を表示

国民の祝日クラス 修正版

 こんにちは、ヨースケです。去年投稿した[国民の祝日を表示するクラス](https://qiita.com/ysk75/items/0d045cc744d372e984b1)で成人の日のように〇月の第〇月曜日という部分が間違っていたので修正版をここで載せておきます。以前はCalendarクラスのWEEK_OF_MONTHを使っていましたが、これはその日がその月の第何週目にあたるかを取得するものでした。どういうことかと言うと、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534506/6c78f826-b3fd-21f9-7281-c94fb640099f.png)
1月13日が成人の日です。これを判定しようとすると以前のプログラムでは

“`java:machigai.java
//省略
int month, day, youbi, week;
Calendar calendar = Calendar.getInstance();

public void holiday(){

元記事を表示

OTHERカテゴリの最新記事