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

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

JavaFXでtextFieldのフォーカスアウトイベントを実装する

## やりたいこと
– TextField コンポーネントからフォーカスアウトしたときのイベントを実装したい。
– フォーカスアウト時に文字を自動で置き換えたい。

## やったこと
`inintialize()` の中で `focusedProperty()` に対して `addListener()` でイベントを追加することで、フォーカスアウト時のイベントを追加することができました。

“`java
textField1.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Boolean oldPropertyValue,
Boolean newPropertyValue) {
if (!newPropertyValue) {
textField1.setText(textFiel

元記事を表示

外部URLに接続時HTTPステータスコード302が発生した時の対応

## 概要
例えば外部のサイトにあるファイルをダウンロードして取ってくるようなプログラムを書く場合、サイトによってはブラウザではダウンロード出来るけど、コードからURL接続するとエラーになるということがあります。実際に、ChromeのDevToolsなどでブラウザでどのようにダウンロード出来ているか確認してみると、アクセスしにいったURLではHTTPステータスコード302が返されてます。
今回はこのHTTPステータスコード302についての対応についてメモ書きします。

## HTTPステータスコード302とは
[HTTPステータスコード「302リダイレクト」とは](https://blog.hubspot.jp/http-302)の記事にある通り、302とは「一時的なリダイレクト」が起こっているとされています。302の場合はブラウザに表示されるURLは変わらないので、DevToolsなどを使用しない限りはユーザはリダイレクトされていることに気付きません。

## プログラムでどうやって対応すれば良いのか
302のレスポンスが返ってくる時に、ヘッダーの`Location`にリダイレクト先

元記事を表示

JD-Core を使って WinMerge Plugin 付きの コマンドラインインタフェース 作りました

![01_title.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105193/207f25a2-5866-0b46-48ae-d3eafc5aa735.jpeg)

# JD-CLIについて
コマンドライン上で叩いて、コマンドライン上に結果が出力される__Java__ __デコンパイラー__です。

## JDについて
Eclipseでも使用されているJava5以降のclassファイルもでコンパイル可能なJava デコンパイラー
[(参照)JD Projectへ](http://java-decompiler.github.io/ “JD Project”)
JD-CLIは、そのJDで使用されているコアライブラリJD-Coreを使用させていただいています。

## 使用方法
[こちら](https://github.com/jd-wrapper/jd-cli/releases “JD-CLI リリースサイトへ”)へ移動して
Assetsにある[“jd-cli-windows-1.0.0.zip”](

元記事を表示

Doma入門 – Criteria APIでサブクエリを使う

## はじめに

[Doma](https://github.com/domaframework/doma) 2.43.0のCriteria APIでSQLのサブクエリをどのように表現できるのかを示します。

DomaやCriteria APIの概要については[Doma入門](https://qiita.com/nakamura-to/items/deaff05ba530317f3cf8)の他の記事もお読みください。

## この記事で使うサンプルコード

ここでは、簡略化したコードで説明します。
完全なサンプルコードをについては下記のプロジェクトを参照してください。

– https://github.com/domaframework/simple-examples/tree/master/dsl-style-java

データベースには部署を表すdepartmentテーブルと従業員を表すemployeeテーブルがあります。

“`sql:schema.sql
create table department (
id integer not null primary ke

元記事を表示

覚書:TribuoでTensorFlowを試そうとしたら動かないから本家を模索する旅に出た結果惨敗した

#まえおき
2020/10/03 執筆時点での感想文です。

TribuoでTensorFlowの話はここでは出てきません。Tribuoだけではなく、いろいろなものが厳しいです。ハマった記録だけです。TribuoからTensorFlowの連携をする以前の問題です。

#結論

TensorFlow Javaは、Mavenセントラルレポジトリの最新版(1.15.0)でもJava 7でビルドする必要があります。新規でJava7採用するプロジェクトはあまりやりたくないです。一応Java11でのビルドまでは動作しましたが、Java12以降では実行時にエラーとなりました。

TensorFlowの最新版(2.3.0)でもCuda11は対応されてませんでした。無理に動かそうと思えば動かせます。

Tribuo忘れてました。気が付いたら朝になっているし、いつの間にかTensorFlowでJavaの話も忘れて、pythonの実装してました・・・。やはりスクリプト系の言語は好きになれないです。

Windos上でTensorFlowからGPUの利用は可能ですが、Windows on WSL2 on ub

元記事を表示

MacのターミナルでJavaを実行してみた

ProgateでJava勉強してるので、自分で作って実行したいなと思ったのでなんとなくやってみました
参考にしたのは次の記事
https://qiita.com/stupid_student2/items/3e8ffeb33a73ef065a40

macOS Mojave 使用
ファイルはAtomで作りました


  1. Atomで「Main.java」ファイルを作る
    ファイルはデスクトップに「java」というフォルダを作ってそこに保存しました
  2. “`ruby:Main.java
    class Main{
    public static void main( String[] args ){
    System.out.println( “Hello World!” );
    }
    }
    “`

  3. ターミナルで実行
  4. “`
    cd desktop/java
    “`

    “`
    javac Main.java
    “`

    →「Main.Class」が生成される

    “`
    java Main
    “`

    →「Hello World!」が出てきた!

元記事を表示

【Java Silver】switch文について気を付けるべきこと

#switch文の文法構造

“`java
switch(変数){
   case 条件: //処理;
break;
case 条件: //処理;
break;
default: //処理;
break;
}

“`
・defaultラベルは慣習的に一番最後に記述しているが、
**一番最後以外に記述しても問題無い**

・**break文を書き忘れる**と、**次の条件の処理に進んでしまう**(フォールスルー)

##case値に書けるもの
※case値とは:分岐するために使う値・条件のこと

**・定数**
**・条件式に記述されている変数の型と同じ型か互換性のある型**

##case値に書けないもの
**・変数**
**・条件式に記述されている変数の型と互換性の無い型**
**・null**
**・long型**
**・boolean型**

元記事を表示

Oracle Java SE 11 Silver の申し込みから受験まで 1 ヶ月かかった

# 要約
– オラクル認定システム CertView を使ったことがない人は、勉強を**始めるのと同時に** CertView に登録しましょう。
– ピアソン VUE のオンライン受験システム OnVUE を利用する場合は、予定の試験時間より **1 時間以上**の余裕を確保し、かつ PC の設定によっては試験が配信されずに**後日**再受験となる可能性を覚悟しましょう。
– 問題が起きたときは**日本語の窓口**を頼りましょう。
– [Java SE 11 Silver の概要](https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html)や[勉強方法](https://www.amazon.co.jp/dp/4295007625)については詳しく書きません。

## 注記
これは 2020 年 10 月時点の `1Z0-815-JPN Java SE 11 Programmer I` 受験者による、個人的な体験記です。この記事の内容は受験者全員に当てはまることではなく、かつ将来的に解消または変更さ

元記事を表示

【Java Silver】equalsメソッドについて

Java Silverを勉強するにあたって、覚えておくべきequalsメソッドにまつわる内容をまとめます。
##equalsメソッドとは

<公式ドキュメント> [equalsメソッド](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html#equals-java.lang.Object-)

equalsメソッドは**java.lang.Objectクラス**に定義されているメソッドである。

##通常の挙動
“`java
a.equals(b);
“`
変数aに格納されているインスタンスと変数bに格納されているインスタンスが**同じ値**を持っているか確認する**(同値性)**

※インスタンスの**同一性(同じ参照を持っているか)**を確認するには**==演算子**を利用する
**internメソッド**を使って、同値だが同一ではないインスタンスを==演算子で比較すると、trueを返す

“`java
String a = “abc”;
String b = new String(“abc”)

元記事を表示

Windows10でVSCode+JUnit5を使えるようにしたメモ

所用にて掲題の環境を準備する必要があったので、動くようになるまでをメモしてみました。
あまりこの辺りに詳しくないので不備もあるかもしれませんが、お役に立てば幸いです。

# OpenJDKのダウンロード
JDKにはいくつか種類があるが、ここではOpenJDKを使うことにする。
https://openjdk.java.net/
2020年10月現在、最新はJDK15だったのでこれのWindows向けをダウンロード。
Windows向けをダウンロードして解凍し、出てきた「jdk-15」を任意のフォルダに配置する。

# Java Extension Packのインストール
VSCodeの拡張機能からJava Extension Packをインストールする。
インストールしたら、`Ctrl+,`で設定を表示し「Java:Home」で検索、「settings.jsonで編集」をクリックして上記で配置した「jdk-15」のフォルダを指定する。
この際、以下のようにしてバックスラッシュを2つ重ねる必要がある。

“`
“java.home”: “C:\\hoge\\hoge\\jdk-15”

元記事を表示

一次元配列で二次元配列的な考えを真似てみる

# はじめに

データを2方向のインデックスで管理するやり方として、二次元配列を使うことが多いかと思います。

“`Java:二次元配列の例
String[][] names = {
{“山内”, “森”, “泉”, “吉川”, “渋谷”},
{“松本”, “河野”, “水野”, “川口”, “牛尾”},
{“嘉藤”, “西村”, “竹多”, “吉田”, “井藤”},
{“川野”, “加藤”, “山田”, “佐々木”, “藤田”},
{“柴田”, “尾崎”, “大森”, “丘”, “矢口”}
};
System.out.println(names[1][4]); // 牛尾
“`

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/726479/d715043b-5237-05fe-cf06-809a21c47d27.png)
2方向のインデックスで管理するなら一次元配列であっても2方向のインデックスを用意すればデータ管理できるのではないかと思い、一次元配

元記事を表示

VPSにJavaアプリをデプロイするには(Apache/Tomcat導入・連携)

#1.はじめに
 先日サーブレットアプリを制作したので、アプリをWeb上にデプロイしようと思いVPSサーバーをレンタルしたのですが、Linux,サーバーの知識がほぼ全くないために、環境構築にとんでもなく苦戦しました。ここでは、実際の手順に加え「Javaアプリをデプロイするには何が必要なのか?」「ajp連携とはなんなのか?」といったことにも触れて、備忘録としてまとめたいと思います。

#2.環境
参考までに、今回の私の環境を載せておきます。

<VPS>
 ・さくらのVPS
 ・OS:CentOS Linux release 7.8.2003
<JDK>
 ・バージョン:1.8.0_262
<Apache>
 ・バージョン:Apache2.4.6
<Tomcat>
 ・バージョン:apache-tomcat9.0.37 

#3.JavaアプリをWeb上にデプロイするには?
##Javaアプリをデプロイするための環境
動的コンテンツ(Javaアプリ等)は、静的コンテンツ(HTMLファイル等)と異なり、**Webサーバーに加えて「アプリケーションサーバー」を導入しなければ処理できません。*

元記事を表示

もう1つのサーブレットコンテナ Jetty を Docker で利用してみる

Eclipse Jetty は Java サーブレットの実行環境(サーブレットコンテナ、Java EE の部分実装)であり、Web サーバです。サーブレットコンテナの実装としては Apache Tomcat が著名ですが、Jetty はより歴史が古く[^1]、より軽量[^2]です。商業サポートがアクティブコントリビュータである [Webtide 社](https://webtide.com/)から提供されるほか、[Apache Hadoop に組み込まれ](https://cwiki.apache.org/confluence/display/CAMEL/Jetty)ていたり、[Google App Engine で利用されて](https://cloud.google.com/appengine/docs/flexible/java/dev-jetty9)いたりします。

[^1]: Jetty の初版リリースは 1995 年で、Tomcat の初版リリースは 1999 年です。

[^2]: https://webtide.com/why-choose-jetty/

Jetty

元記事を表示

StreamAPIについてまとめてみた

## StreamAPIとは
> Stream APIは名前の通り、ストリーム(Stream)という流れてくるデータやイベントを処理するためのAPI群です。
> Java SE8で追加された
> StreamはListやMapなどのデータ集合をもとに生成し、0回以上の中間操作と、1回の終端操作を実行することで結果を得る。

## StreamAPIの使い方
ざっくりと概要を掴んだ上で実際にソースを見てstreamを使用した処理と使用していない処理を比べて見ます。
サンプルとしてListを加工して一件づつ処理を行うコードを記載します。
※ラムダ式については詳しく記載しません。詳しくはこちらの記事を参照してください
[Javaラムダ式についてまとめてみた](https://qiita.com/yqxxnaxr1109/items/4045a7925340088bd7e3)

“`java:streamなし
List integerList = Arrays.asList(1, 2, 3, 4, 5);
for (Integer i : integerList)

元記事を表示

Ruby と Python と Java で解く AtCoder ARC104 B 累積和

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Regular Contest B – DNA Sequence](https://atcoder.jp/contests/arc104/tasks/arc104_b)*
Difficulty: 410

今回のテーマ、累積和

累積和問題ですが、今回は`A“C“G“T`の4個の累積和が必要になります
# Ruby
“`ruby.rb
n, s = gets.chomp.split
n = n.to_i
a = [0]
c = [0]
g = [0]
t = [0]
n.times do |i|
a << a[-1] c << c[-1] g << g[-1] t << t[-1] if s[

元記事を表示

IndexOutOfBoundsExceptionとArrayIndexOutOfBoundsExceptionの違いについて

#IndexOutOfBoundsExceptionの違いについて

[IndexOutOfBoundsException](https://docs.oracle.com/javase/jp/7/api/java/lang/IndexOutOfBoundsException.html)

> ある種のインデックス (配列、文字列、ベクトルなど) が範囲外であることを示すためにスローされます。

**List, ArrayList**などに対して、不正なインデックスを使ってアクセスした時に発生する例外

##※ArrayListの特徴
**初期化**

“`java
import java.util.ArrayList; //パッケージのインポートが必要
import java.util.List;

ArrayList <参照型> list名 = new ArrayList<>();
List <参照型> list名 = new ArrayList<>(); 
//ArrayListが実装しているList型のインターフェースで宣言することも可能
“`

– オブジェクトであれば*

元記事を表示

【Java】StackOverflowErrorとOutOfMemoryErrorの違い

Java Silverの勉強をするにあたり調べたことのメモ。

#StackOverflowErrorとOutOfMemoryErrorの違いは何か?

##StackOverflowErrorとは
[クラス StackOverflowError](https://docs.oracle.com/javase/jp/7/api/java/lang/StackOverflowError.html)
**スタック領域**でメモリがなくなることで発生するエラー

【発生する状況例】
メソッド内で**再帰呼び出し**を行う

【スタック領域とは】
**ローカル変数やメソッドの情報**を格納するメモリ領域のこと。
名前の通り、スタック状のデータ構造(後入れ先出し方式)を持つ。

メソッド内で自分自身のメソッドを呼び出し続けてしまうと、スタック領域にメソッドの情報が積み上がっていきパンクしてしまう。そうすると、JVM(Java Virtual Machine)がスタック領域が足りなくなったことを検知して、StackOverflowErrorを発生させる

##OutOfMemoryErrorとは

元記事を表示

JavaとRubyのFizzBuzzを比較してみた。

#【JavaとRubyのFizzBuzzを比較してみた。】

業務での開発言語は、Javaを使用しています。
業務外では、Rubyでポートフォリオ作成をしています。

##Java,RubyのFizzBuzz

FizzBuzzは、ある数字からある数字までを画面に表示するプログラムを組むもの。
ただし、以下のような条件がある。
・3の倍数のときは数字の代わりにFizzと表示
・5の倍数のときは数字の代わりにBuzzと表示
・15の倍数のときは数字の代わりにFizzBuzzと表示

###Java

“`java
class FizzBuzz {
public static void main(String args[]) {
for (int i = 1; i <= 15; i++) { if (i % 15 == 0) { System.out.printIn("FizzBuzz"); } else if (i % 3 == 0) { System.out.printIn("Fizz"); } els

元記事を表示

Visual Studio CodeでJavaを開発環境を設定した記録

Java Silverを勉強するにあたり、実際の開発環境に近い状態でJavaを動かしてみたいと思い、VSCodeとiTermからJavaのコードを動かせるように環境設定しました。

ローカル環境を使わずにJavaを動かす際は、[dokojava](https://dokojava.jp/sources/Main.java)というサイトを使っていました。『スッキリわかるJava入門』という本でおすすめされていたサイトです。

#この記事を参考にする場合の注意
[Visual Studio CodeでJavaの(デバッグできる)開発環境をつくる](https://codeaid.jp/vscode-debug/)というサイトを参考に、Visual Stdio Codeに「Java Extension Pack」をインストールして開発環境を設定したのですが、使いこなせず、結局OpenJDKをインストールすることで、ローカルでJavaを動かすことができるようになりました。

ただ、Visual Stdio Codeに「Java Extension Pack」をインストールする過程はどのみち必要

元記事を表示

[Java]Object型のnullをString型に変換

##[Java]Object型のnullをString型に変換

Object型で取得した値をString型に変換する必要があって
toString()、String.valueOf()、キャスト変換などなど
変換する方法はいくつかあるけど違いあるのかな?となり、
そして一番気になったのは取得したObject型の値がnullの場合、
エラー起きちゃったりしないかなーって思って調べてみた。
先に結果を先に載せると…

#####【Object型のnullをtoString(),String.valueOf(),キャスト変換で変換】
|toString()|String.valueOf()|キャスト変換|
|:—–:|:—–:|:—–:|
|NullPointerException|文字列”null”|null|

下記プログラムで確認してみると、

“`java:test.java
public static void main(String[] args) {
Object testNull = null; // Object型null作成
String

元記事を表示

OTHERカテゴリの最新記事