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

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

Log4j 1.2.12 のadditivity, ConsoleAppender

注: [On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life. ](https://logging.apache.org/log4j/1.2/manual.html
) / [Log4jバージョン1のサポートは終了](https://www.infoq.com/jp/news/2015/09/log4j-version-1-reaches-eol/)
…なのだけど今更log4j-1.2について調べている。

元々
`log4j-1.2.8`
しか居なかったアプリケーション上に

`log4j-1.2.12`
が同梱されたことにより何か振る舞いがおかしい。
ログが2重に出る。そして意図せずSystemOutに出る…
この2点に関するメモです。

### 2重に出る

まず2重に出る点、関係していそうなのはこの辺。`Additivity`

[log4jのLoggerの階層構造とadditivityの振

元記事を表示

【入門】AndroidStudio Hello Worldをエミュレータ上に表示させる

#はじめに
AndroidStudioでプロジェクトをビルドして、HelloWorldをエミュレータ上に表示されるところまで確認したいと思います。AndroidStudioインストール後の動作確認として試してみます。

#環境と前提条件
– windows10(64bit)
– AndroidStudio 3.6.3
– AndroidStudio 日本語化済み
– API 29(Android 10.0)

インストール方法は[こちら](https://qiita.com/kepin/items/cccb27d5ba4857d46bb2)
日本語化は[こちら](https://qiita.com/kepin/items/213562dafea8c96e4fdf)
を参考にしてみてください。

#プロジェクト作成
まずはプロジェクトを作成します。

はじめに、AndroidStudioを起動します。
下記のようなウィンドウが開いたら新規AndroidStudioプロジェクトの開始を押下します。
![2020-05-29 (23).png](https://qiita-image-sto

元記事を表示

Raspberry Pi 4 で Minecraft サーバ

Minecraft サーバを AWS で作る
「https://qiita.com/nanbuwks/items/601832b2da00b451d55d」

では、あっけなく動いたのでその知見を元に Raspberry Pi 4 で Minecraft サーバを作ってみる。

# 環境

– Raspberry Pi 4 Model B 4GB (Raspberry Pi 3 Model B でも検証したが厳しい感じ)
– 2020-02-13-raspbian-buster-lite.zip
– 有線接続LAN

# インストール

micro SD カードの書き込みはこちらの方法を使用

「Ubuntu Linux で Raspian ZIP ファイルを microSD カードに書き込む」
https://qiita.com/nanbuwks/items/2c296549ff72dacf7adc

また、/boot に ssh を作っておきます

# 初期設定

ログオンしてからの初期設定は

“`

$ sudo apt update
$ sudo apt upgrad

元記事を表示

Javaのメリット・デメリット

# はじめに
JavaというAndroidやゲームに使われたりする素晴らしい言語のメリット・デメリットをまとめました。

※これはJavaについての記事です。JavaScriptは全く別の言語であるので注意してください。
# メリット
## オブジェクト指向
オブジェクト指向とは、プログラムの可読性をあげるものです。リストに追加するにはaddメソッド(処理のまとまり)を呼び出すという直感的なプログラミングができます。Javaにはクラスなどでオブジェクト指向のプログラミングができます。

“`java:リストにアイテムを追加する
list.add(item);
“`

## 型
型とは変数の値のタイプ(文字列、数値など)のことです。例えば変数numに数値が入っていると仮定して作られたプログラムがあるとします。しかしそのプログラムを使用する際に間違えて文字列を渡してしまうと実行時に数値でないためエラーがでます。Javaならコンパイルという文法チェックで型が違うと実行できません。面倒かと思いますが、実行前に気づけることはメリットです。

“`java:型を使った例
int num;//

元記事を表示

Java14×Spring Boot2.3×JUnit5でHelloWorldしたよ〜

## はじめに

こんにちは![macでSTSの環境構築を行った](https://qiita.com/akane_kato/items/fff46dfa34f97f95dc88)者です。
今回は「HelloWorldファイルとHelloWorldのテストコードファイルを作成し、jarに保存してmacで実行してみる」ところまで実施しました。
前回同様、[Spring徹底入門](https://www.shoeisha.co.jp/book/detail/9784798142470)を参考に進めました。簡単な手順ですが、バージョンのせいかJUnitで実行する辺りやjarにする辺りで思いの外詰まったので記事にしました。
ぜひ俺の屍を越えていってください。

### 使用環境とバージョン

– macOS Catalina
– jdk14.0.1
– JUnit5
– Maven 3.6.3_1
– STS 4.6.1
– Spring Boot 2.3

## Spring Initializrでプロジェクトの雛形を作る

まず[Spring Initializr](https://sta

元記事を表示

Minecraft サーバを AWS で作る

Minecraft のサーバを作る。いろんな方が既に記事を書いているので目新しさはない。この組み合わせで動作したという確認。

# Minecraft サーバとは

Minecraft はネットワークで通信してマルチプレイができる。マルチプレイをするにはネットワーク内でMinecraftをプレイしているマシンを1台公開してそこに他のプレーヤがつなげるやりかたと、ネットワーク内でサーバ専用サービスを実行するホストを作りサーバにするやりかたの2つがある。

Minecraft でマルチプレイをするには Minecraft の系統と、バージョンを合わせる必要がある。

## Minecraft の系統

マルチプレイをするときには、系統を合わせないといけない。今の主な系統は2つ

– Java 版
– 統合版 (Bedrock Edition)

系統は、プレイする全員、および、サーバその系統に合わせる必要がある。
なお、現在公開されているサーバのソフトウェアは Java 版系統。
統合版のサーバも公開されている( https://help.minecraft.net/hc/en-us/a

元記事を表示

PDFテキストコンテンツを抽出するJava

日常の作業では、巨大なPDFドキュメントに含まれているテキストコンテンツを抽出する必要がある場合があります。そして、Free Spire.PDF for Javaは、便利で高速なテキスト抽出方法を提供します、次に、プロセスで使用されるJavaコードを紹介します。

**基本的な手順:**
**1.** [Free Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java-free.html)パッケージをダウンロードして解凍します。
**2.** libフォルダーのSpire.Pdf.jarパッケージを依存関係としてJavaアプリケーションにインポートするか、MavenリポジトリーからJARパッケージをインストールします(pom.xmlファイルを構成するコードについては、以下を参照してください)。
**3.** Javaアプリケーションで、新しいJava Class(ここではExtractTextという名前)を作成し、対応するJavaコードを入力して実行します。

**pom.xmlファイルを構成します:**

元記事を表示

Angular+Rest(Java)でCORS対応

Angularクライアントからドメインの異なるRestサーバー(Java)へアクセスしようとするとCORS問題によってエラーとなります。
その対策を以下に記述します。
(サーバー側のRest API処理は通常と変わらないため省略します)

Angular側のサーバーへリクエストする処理

“`
import { HttpClient, HttpHeaders, HttpParams } from ‘@angular/common/http’;
import { Injectable } from ‘@angular/core’;
import { Observable } from ‘rxjs’;

@Injectable({
providedIn: ‘root’,
})
export class ClientService {
url = “http://XXXXX:XXXX/XXXXX”; // アクセス先

returnModel : ReturnModel; // サーバーからの戻り値

// コンストラクタ
constructor(private htt

元記事を表示

eclipseショートカット表

##はじめに
OSはWindows10
基本はsts4で動作確認していますが、EclipseやPleiadesでも動くはず。
ショートカットは調べればいくらでも出てくるけど、個人的にパッと見られるいい感じのサイトがなかったので雑に表を作っただけ。
確証はないけどmacOSならCtrlをcommand、Altをoptionに換えればほとんどは動くはず。

そもそも自分が使ってよかったものを載せているけど、個人的に特に使い勝手が良かったもの、使用頻度が高いものは★つけたので参考になれば嬉しいです。

##エディタ内
####コピペと削除

| ショートカット |   キー   |    補足    |
|:—————–|——————:|:——————:|
|全選択|Ctrl + A||
|コピー|Ctrl + C|任意の箇所を選択|
|ペースト|Ctrl + V|任意の箇所を選択|
|カット|Ctrl + X|任意の箇所を選択|
|★行コピペ|Ctrl + Alt + ↓|1行下にペーストされる|
|★行削除|Ctrl

元記事を表示

Bypass JEP290

## 关于JEP290
JEP290是Java底层为了缓解反序列化攻击提出的一种解决方案,主要做了以下几件事

1. 提供一个限制反序列化类的机制,白名单或者黑名单。
2. 限制反序列化的深度和复杂度。
3. 为RMI远程调用对象提供了一个验证类的机制。
4. 定义一个可配置的过滤机制,比如可以通过配置properties文件的形式来定义过滤器。

## JEP290的实际限制
写一个RMIServer

RMIServer.java

“`java
package org.chabug.rmi.server;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class RMIServer {
public static String HOST = “127.0.0.1”;
public static int PORT = 1099;
public static String RMI_PATH = “/hello”;
public static fina

元記事を表示

SpringBootでStrategyパターンを適用する

# はじめに
SpringBootでStrategy パターンを適用したサンプルコードを書いてみました。
Strategy パターンについては [IT専科さんの解説記事](http://www.itsenka.com/contents/development/designpattern/strategy.html) などを参照してください。
サンプルコードは [GitHub](https://github.com/Yukiho-YOSHIEDA/spring-strategy-pattern) に公開しています。

# 動作環境
* Java 11
* SpringBoot 2.3.0

# 題材
大学の図書館を題材にしています。ユーザは本の貸出、返却ができます。またユーザは役職によって借りられる本の数が変化することとします。今回、Strategyにあてはめるのはユーザの役職によって変化する処理の部分です。サンプルコードでは教授、院生、学部生の場合を実装しています。
Strategyを利用する(呼び出す)側はFactoryに依頼をして目的にあったStrategyを取得します。
## ク

元記事を表示

Google ColaboratoryでJavaのJupyter Kernelを使う

前回([Google ColaboratoryでJavaプログラムを動かす](https://qiita.com/natsuume/items/24e152d4892710019a52))の続き

# 前回との違い
ちゃんとColab上でJavaのJupyter Kernelを使ってpythonを使うのと同じようにJavaを動かす

# 手順
## 1. colab上から`.ipynb`をダウンロードする
そのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34789/590a788d-0c92-5852-009d-3403285160e6.png)

## 2. `.ipynb`を書き換える
元の内容は下記のようになっている

“`ColabJava.ipynb
{
“nbformat”: 4,
“nbformat_minor”: 0,
“metadata”: {
“colab”: {
“name”: “ColabJava.ipynb”,

元記事を表示

try-with-resourcesとAutoCloseable

try-with-resourcesは大体IOExceptionが発生するものに対してのみ使えると思っていましたが、。
AutoCloseableで様々なクラスに対して有効化できるらしい。

#try-with-resourcesについて
try-with-resourcesステートメントは、1つ以上のリソースを宣言するtryステートメントです。 リソースは、プログラムが終了した後に閉じる必要があるオブジェクトです。 try-with-resourcesステートメントは、各リソースがステートメントの最後で確実に閉じられるようにします。 java.io.Closeableを実装するすべてのオブジェクトを含む、java.lang.AutoCloseableを実装するすべてのオブジェクトをリソースとして使用できます。

>Oracle Java Documentation
>https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

つまり、AutoCloseableを実装すればtry

元記事を表示

「ソースが見つかりませんでした」eclipseでデバッグした時に出てきたら

eclipseでspringbootを使って開発している駆け出しエンジニアです。
やり方を調べながらデバッグをやろうとした時に出てきたエラーの解決方法についてです。

##状況・原因

ブレークポイントを立てて、デバッグを起動しました。

ブレークポイントで止まったと思ったら、赤文字で
「ソースが見つかりませんでした」と表示されました。

ソースルックアップパスというものに動かしているプロジェクトが含まれていなかったことが原因でした。

##解決方法

– デバッグの所の虫みたいなマークの隣にある逆三角クリック

– →デバッグの構成→ソースと進む

– →ソースルックパスで「追加」を押して、使ってるJavaプロジェクトを追加する

僕はこれで無事に解決されました。
試してみてください。

元記事を表示

JavaFXのTableViewで最後の列を自動制御にする

# 概要
JavaFXのTableViewの列幅の制御で、困ったのでそれの対応方法のメモ。

最後の列を自動制御にして、テーブル幅いっぱいに列が埋まるようにしてみた。

# ColumnResizePolicy
JavaFxのTableViewの列幅の制御については、ColumnResizePolicyという仕組みがある。
これは、初期描画時や列幅の調整時に、どのように列幅の制御をするかを決めている仕組みになるようだ。

デフォルトで用意されているのは2種類

| 定数 | 概要 |
|:—————–|:————————–|
| UNCONSTRAINED_RESIZE_POLICY | 特に制御は無く、ユーザーが動かした通りに列幅を処理する|
| CONSTRAINED_RESIZE_POLICY | 初期描画時などは均等の列幅、列の伸縮時はそれに合わせて、他の列を均等に処理する |

これ以外で独自の処理が必要な場合は実装する必要があり、実態としてはCallb

元記事を表示

Spring Bootで簡易検索アプリ作成

標題の通り、検索アプリを作成しました。

##使用環境
・Windows10 (64bit)
・spring-boot:2.2.6
・Eclipse:4.9.0
・H2

#完成画面
ジャンル、著者、タイトルのいずれかまたは、すべて入力した際に
画面の下部にある内容を引っ張ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631044/97aab4a7-525b-eb09-b155-5b8c51140ba9.png)

#Entity

“`java:BookData.java
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class BookData {

@Id
private long isbn;

private String genre;
private String author;
private String title;
private

元記事を表示

【#FizzBuzz】いろいろな言語で”1から100までの数字を数えて3の倍数と3の付く数字のときにだけアホになる”というのを書いてみる

ふだん定期的にコードを書いていないと、ふとしたときに簡単なロジックのコードも書けなくなってしまう場面に遭遇してしまったため、リハビリの意味も含めて、再勉強した際の内容を自分用のメモとしてまとめました。

# 0. 説明
世界のナベアツさん(桂三度さん)の最も代表的なネタ「3の倍数と3が付く数字のときだけアホになります」というものを、いろいろな言語で実装してみます。

**Wikipedia – 桂三度#主な持ちネタ&ギャグ**
https://ja.wikipedia.org/wiki/桂三度#主な持ちネタ&ギャグ

単純に1から100までの数字を改行を入れながら出力するのですが、3の倍数と3が付く数字のときだけ「٩( ᐛ )و」という顔文字を「:(コロン)」と合わせて数字の後ろに出力します。

“`:出力イメージ
1
2
3 : ٩( ᐛ )و
4
5
6 : ٩( ᐛ )و
7
8
9 : ٩( ᐛ )و
10
11
12 : ٩( ᐛ )و
13 : ٩( ᐛ )و
14
15 : ٩( ᐛ )و
16
17
18 : ٩( ᐛ )و
19
20
21 : ٩( ᐛ )و
22

元記事を表示

MyBatisで忘れがちなこと個人的なまとめ

[MyBatis](https://mybatis.org/mybatis-3/ja/index.html)は比較的自由にSQLが組めて便利なORマッパーなので個人的にはよく使うが、たまに使うと忘れがちなことが色々あるのでその際の備忘録としてまとめてみました。

#ヘッダ明細型のデータを扱う
ヘッダテーブルと明細テーブルでが紐づいているデータを1つのマッパーでとってくるときのMyBatisの設定ファイルとSQLの書き方。
→ [MyBatisでヘッダ明細型のデータを扱う](https://kumasoft.blogspot.com/2020/04/mybatismaster-detail.html)

ページネーション用にデータをとってくるときなど行範囲を指定して取得するが、MyBatisのAPIでやろうとすると想定外の行が返ってくる、その回避方法。
→ [MyBatisでヘッダ明細型のデータを扱う(行範囲を指定)](https://kumasoft.blogspot.com/2020/04/mybatismaster-detail.html)

#そのほか
他にも順次追記していきます

元記事を表示

【AtCoderProblem-ABC100】のC問題「*3 or /2」をJavaで強引に突破する【コード】

## はじめに
強引に突破したのでその記録を残しておきます。

## 問題

問題文が長いので[こちら](https://atcoder.jp/contests/abc100/tasks/abc100_c)をどうぞ

## コード

“`java:TorT.java
import java.util.Scanner;

public class TorT{
public static void main(String[] args){

Scanner sc = new Scanner(System.in);

int N = sc.nextInt();
int count = 0;

for(int i = 0; i < N; i++){ int a = sc.nextInt(); while(true){ if(a % 2 == 0){ a = a / 2; count = count + 1; }else{ break; } }

元記事を表示

minecraft1.14.4MOD開発覚え書きその1[独自レシピ]

#はじめに
minecraft1.14.4のMOD開発を始めたとき、開発に関する情報の少なさに苦労したので、自分用のメモ兼これからMOD開発する方の助けになる(かもしれない)ことを書いておきます。
本記事ではMOD独自のレシピ形式を作るときの解説をします。
#開発環境
||バージョン|
|:—:|:—:|
|OS|Windows10|
|Forge|28.2.0|
|JDK|AdoptOpenJDK 8u242-b08|
#環境構築
環境構築を説明した記事は他の方が書いたものがすでにあるので、そちらを参考にしてください。

↓ 私が環境構築する際に参考にした記事です
[Minecraft 1.14.4 Forge Modの作成 その1 【開発環境の準備 IntelliJ IDEA】](https://qiita.com/Hiroya_W/items/f38089724d9358d1668d)
[TNT Modders:環境構築](https://www.tntmodders.com/tutorial/env-1144/)
#独自レシピ
例えば二つのアイテムを同時に精錬して合金

元記事を表示

OTHERカテゴリの最新記事