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

JAVA関連のことを調べてみた2019年10月31日
目次

Java グラフ処理(鉄道路線)-閉路判定/始点終点検索/路線分割/トポロジカルソート/駅間経路探索

お断り。昨日同内容を投稿しましたが、本日朝、間違って削除しましたので、再投稿します。すみません。幸い、いいねやストックはなかったようです。この文は明日削除します。

目次 ⇒ [Javaアルゴリズムライブラリ-Artery-サンプル](https://qiita.com/artery/items/6ae578a6665457db4511)

#概要

本サンプルの内容
 閉路判定(Q07_00)
 始点・終点を求める(Q07_01)
 非連結のグラフを分割する(Q07_02)
 トポロジカルソートを行う(Q07_03)
 指定駅間の経路を求める(Q07_04)
 (参考)ロジックのソース-トポロジカルソート、指定駅間の経路

これから実装しようとしている大体の内容(⇒気長に待っててね)
 経路探索で通過しない駅の指定
 経路の幅優先探索
 ArCreatorで得られる数値の最小値探索(例.駅数最小、距離最小、時間最小)
 快速問題、複々線問題
 (別サンプル)作業日程の作成
 (別サンプル)作業日程の山崩し(最大能力に合わせる、最長日程に合わせる)
 (別サンプル)作業のクリティカ

元記事を表示

null安全の観点から見たnull非許容型、null許容非安全型、null許容安全型の比較

# 前置き

## 前置き1

本記事は次の記事へ強く影響を受けております。

* [null安全でない言語は、もはやレガシー言語だ \- Qiita](https://qiita.com/koher/items/e4835bd429b88809ab33)

上で書かれているようなnull安全について少し別の角度から整理することを目的としてこの記事を書きましたが、上記の記事を理解しているならば以下の内容は蛇足かもしれません。

## 前置き2

nullに当たる概念の名称は言語によって微妙に異なりますが(例: Scala → None, Swift → nil)、以下では押し並べてnullと表記します。

# 本記事の目的

以下ではnull安全の共通理解を助けるためにnull安全と関係した3つの型について定義・説明します。

# null安全に関係した3つの型

## 1. null非許容型[^1]

以下の特徴を持ちます:

* 宣言あるいは推論された型の代入を許容する
* nullの代入を許容しない

Javaのプリミティブ型、TypeScriptのデフォルトの型などがこれに当た

元記事を表示

自習が苦手ですぐ人に頼ってしまう打開策(自分用)

(駄です)
・なるべく人に聞かない
・人に聞こうと思ったらまず調べる
・またわからなくなる
・人に聞こうと思ったらまず調べる

の繰り返し

メッセンジャーで都度誰かに聞くよりも
ギリギリまで自分で調べてこれ以上進めない限界の
ところまで来たものをまとめておいて
実際に人に会ったときにまとめて質問する方が
効率がいい気がする。

その場でメッセンジャーで聞いたほうが有益と判断した場合は
素直に聞く。

自走力のトレーニング。

元記事を表示

Javaを書くことになった人に知って欲しい便利パッケージ

## はじめに
普段Go言語でWeb開発をしているのですが、最近、JavaのSpringでWeb開発し始めて、
**「これは便利すぎる!!」**
という、パッケージがいくつかあったので、ご紹介しようと思います。

## lombok
[lombok](https://projectlombok.org/)はconstructorやGetter、Setter、Builder等のボイラープレートコードをアノテーションをつけるだけで、省略できます。
これは、結構有名なのかもしれないですが、大学の講義程度でしかJavaを触ったことがない僕にとっては、冗長コードをかなり省けることに衝撃でした。これだけで、開発効率爆上がりします。
### 例
#### 通常

“`java
class Sample {
private String name;

public Sample() {}

public Sample(String name) {
this.name = name;
}

public String getName(){
return name

元記事を表示

下記のコードの実行結果について

[Bank. java]

1:public class Bank{
2: private int money;
3: public void setMoney(int money) {
4: this.money = money; //引く数をフィールドに代入
5: }
6: public int getMoney() {
7: return money;
8: }
9:}

[UseBank.java]

1: pubulic class UseBank {
2: public static void main(Steing[] args) {
3: //クラス Bankのインスタンス化
4: Bank bank = new Bank();
5: int mny = Integer.parseInt(args[0]);
6: bank.setMoney(mny);
7: System.out.println(“振込額 : ” + mny);
8: //bank.m

元記事を表示

【Java】文字列を一文字ずつ切り出しする方法

一文字ずつ切り出す方法を簡単にまとめておきます。

##ソースコード例

“`
class Main{
public static void main(String[] args) {

//切り出しする文字列
String text = “abcde”;

char[] work = new char[text.length()];

for(int i = 0; i < text.length(); i++){ work[i] = text.charAt(i); //切り出した文字列を一文字ずつ出力 System.out.println(work[i]); } } } ``` ##出力結果 ``` a b c d e ``` この他にsubstringを使う方法などもあります。

元記事を表示

[java tool]指定パスの配下にあるファイルを拡張子により削除させるツール

以前仕事中によく使われていた共通メソッド

■作業ファイルパスの配下すべてのファイルをファイルタイプ(例: *.txt,*.class,*.*(*))より削除する例
■FindFilesAndDeleter.java
package src.main.java;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class FindFilesAndDeleter {
 /** Log出力用. */
 static Logger logger = Logger.getLogger(FindFilesAndDeleter.class);
 
 private static final 
元記事を表示

[java tool]ipmsgで定時的に送信させるツール

以前仕事中によく使われていた共通メソッド

※Javaの開発
[java tool]ipmsgで定時送信ツール
Mail ⇒ バッチ(vbs/batch)で作成した。
■CatchInfo.java
package src.main.java;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CatchInfo {
 private static final 
元記事を表示

[Java] BeanClassに全ての項目に値がリフラッシュ

以前仕事中によく使われていた共通メソッド

■Main呼び出し元.java {
    return (GetChangeAddressDialogInfoOutDto) CommonUtil.refreshServOutDto(serviceOutDto);
}

■CommonUtil.java
/**
     * ServiceOutDtoをRereshする 
* (String Type : Null -> Blank) * * @param bean * @return Object */ public static Object refreshServOutDto(Object bean) { if (bean != null) { return refreshServOutDto(bean, StringUtils.EMPTY); } return bean; } /** *
元記事を表示

文字⇔数字を扱う

#はじめに  本記事は、char型文字を数字として扱うテクニックに慣れるのに良い問題を[CodeWars](https://www.codewars.com/dashboard)で発見したので、紹介させていただきます。 ※CodeWarsは2019/10/30時点で日本語対応しておりません。ご了承ください。 #問題URL [Reversing a Process](https://www.codewars.com/kata/5dad6e5264e25a001918a1fc)  要約:ある文字列を規則にのっとって変換するプロセスの逆操作をコーディングする問題です。(要約できているか怪しいですが…) #ACコード ```Decode.java class Decode { public static String decode(String r) { int numkey = 0; String subs = ""; for(int i = 0;i < r.length();i++) { if(r.cha
元記事を表示

Javaで想定しない小数点に悩まされるあなたへ

# はじめに こんばんは。またたびです。 前回の投稿から大幅に期間が空いてしまいました。。。 今回の記事ではJavaで小数点以下の計算も正確にしてくれるBigDecimalの使い方を記述していこうと思います。 なぜ小数点以下の計算を正確に行えるのかは今回触れませんので各自で調べていただければなと思います。 これから小数点以下の計算を正確に行いたい人の参考になれば幸いです。 # BigDecimalを用いた四則演算(基礎) それでは基本的なBigDecimalの記述方法について書いていきます。 BigDecimalを用いるには ```java:.java import java.math.BigDecimal; ``` をインポートする必要があります。 標準ライブラリですので特に外部から持ってくる必要はなく、すぐに使用が可能です。 以下に記述方法と使用例を示していきます。 | 四則演算| 記述方法 | |:-----------: | :------------:| | 加算| add | | 減算| subtract | | 乗算 | multiply | | 除算 | d
元記事を表示

Eclipse MicroProfile Configについて

# はじめに 前回の[Eclipse MicroProfileとは](https://qiita.com/omix222/items/50804e30e43085ceb912#eclipse-microprofile-config)で概要を紹介したEclipse MicroProfile Configについて説明したいと思います。 ## 始め方 前々回の[Eclipse MicroProfileの始め方](https://qiita.com/omix222/items/923d788d6ce76e179d6a)で紹介した、 [MicroProfile Starter](https://start.microprofile.io/)を使っていきます。 image.png こちらの設定でプロジェクトを作成、ダウ
元記事を表示

【Java】乱数生成の方法(Random)

Javaで簡単に乱数を生成するプログラム例を紹介します。 ##整数型(0~の数字) ``` int r = new java.util.Random().nextInt(※発生させる乱数の上限値); ``` ソースのはじめにimport java.util.*をしているなら以下のように書くことも可能です。 ``` int r = new Random().nextInt(※発生させる乱数の上限値); ``` 参考:[java.util.Random#nextInt(int) の仕様](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#nextInt-int-) ##小数型(0~1の乱数を生成するパターン) ``` double r = Math.random(); ```
元記事を表示

【Java】配列から最大値・最小値を取得するプログラム例

import java.util.*;

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

    int[] data = {1,2,3,4,5,6,7,8,9,10};
    int Max = data[0];
    int Min = data[0];
    
    for(int i = 1 ; i < a.length; i++){
        if(Max < data[i]){
            Max = data[i];
            }else if(Min > data[i]{
            Min = data[i];
             }
        }
        System.out.println(Max);
    }
}
元記事を表示

Java Bronze 7/8 合格体験記!「ここをもっと勉強しておけばよかった…」と本番で後悔した箇所まとめ&オブジェクト指向ポイント解説

Java Bronze試験は最近できたばかりの試験ということもあり、ネットでの情報が少ないです。受験を考えている方の助けになれるよう、私が実際に受験して「ここをもっと勉強しておけばよかった!」と思った点などをまとめておきます。

#意外と出題される!「JVMの機能」「SE/EE/MEの違い」#
問題集だと「Javaの基本」などのタイトル名で、だいたい第一章で扱われる範囲です。
私はこの部分を後半のオブジェクト指向など難しい部分の勉強に追われて後回しにしてしまい本番で後悔しました。意外とたくさん出題されます。
「**GUIで操作できる独立系のアプリケーションを作るにはSE/ME/EEどれで開発しますか?**」や、「**JVMではどんなことができますか?**」などをしっかり答えられるようにしておきましょう。

#オーバーライド・オーバーロードについて分かってないと合格は難しいかも#
本番の試験ではとにかくメソッドのオーバーライドとオーバーロードについて考えさせられます。この2つが関係する問題は非常に多く、合否を一番分ける要素だと思います。
「**このメソッドをオーバーライド(オーバーロード

元記事を表示

【2019年10月版】Quarkus の REST API を KeyCloak で SSO するデモを docker-compose で動かしてみた。

# Quarkus + KeyCloakの SSO 連携が簡単らしい。

Quarkus は JBoss 御謹製のK8sネイティブなマイクロサービスが素早く作れるフレームワークでございまして GraalVM でのビルドが簡単にできるらしいのでちょっと注目をしておりましたところ、以下のような記事を見つけました。

- [Quarkus の採用は慎重に検討する](https://qiita.com/nakkspeed/items/6da5f84df41152fb1ff5)

> Quarkus は RedHat 社が開発しており、同社製または同社がスポンサーの OSS 製品(KeyCloak、Hibernate)との連携を前提としている。

あらそうなの?KeyCloakの代替になる SSO の OSS はほぼないのでKeyCloakと接続前提なのは全然、問題なしでございますよ~、ということで早速ググってみたところ、あっさり**ドンピシャ**なサンプルを発見いたしました。

- [https://github.com/thomasdarimont/quarkus-keycloak-demo

元記事を表示

動画や画像ファイルのアップロード時に内容を表示する(Nuxt.js/Vuetify)

# 概要
Web アプリケーションでファイルアップロードを実装する際にファイルの内容を表示したい。

# 適用イメージ
![uplaod-preview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517184/4383fb1c-9506-8353-f3e7-95115880cc50.gif)

# サンプルソース
- Nuxt.js で Vuetify の File inputs コンポーネントを使っている
- ファイル選択時にファイルの内容をData URL としてバインディングしている
- アップロードするファイルのサイズが大きすぎるとダメかもしれない

```vuejs:demo.vue