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

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

【Java】変更に強いコード – 変数名・メソッド化

変更に強いコードを書くための考え方を学びます

#目的ごとに変数を用意しよう
* 計算ロジックに意識が向き過ぎると変数名のことを忘れる
* **入力、処理、出力の役割ごとに変数名を使う** (説明用の変数を導入)
* **一個の変数を使いまわさない**
* ロジックを変更しにくい。長い目で見ると副作用が伴う
* **Immutable**に書くことができる
* オブジェクトを更新せずに別の目的のオブジェクトが必要な時に新しいオブジェクトをつくること(Immutableなオブジェクト)

“`java
//目的ごとにローカル変数を使う
class Main {
public static void main(String args[]) {
int unitPrice = 1000;
int quantity = 3;
float tax = 10;
int basePrice = unitPrice * quantity;
int shippingCost =

元記事を表示

【Java】演算子まとめ

#演算子
##演算子の種類
プログラミングで使用される演算子は以下のように種類があります。

– 算術演算子(計算式に使われる)
– 代入演算子(計算式に使われる)
– 比較演算子(条件式に使われる)
– 論理演算子(論理式に使われる)

使う演算子によって以上のように様々な「式」をつくることが出来ます。

##算術演算子
算術演算子は足し算引き算などの計算を作る演算子です。

| 記号 | 機能 |
| —- | —- |
| + | 加算 |
| – | 減算 |
| * | 乗算 |
| / | 除算 |
| % | 余剰 |

###算術演算子を用いた計算
算術演算子を用いて作った計算式がこちらです。

“`java
System.out.println(3 + 2);
“`

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613675/fd60e2a4-0533-5b4d-0939-bc0760fa02f8.

元記事を表示

eclipseでwhere we looked for ~~~とエラーが出る

#eclipseでのエラーは沢山あるが今回はタイトルに書かれているエラーについて解決策を紹介させていただく
確認すべきことがいくつかあるが一つ目が**eclipseのヘルプ→Eclipse IDEについて→インストール詳細→構成**→
**vm-
hogehoge(25行目あたり)**に書かれているのが

“`
-vm
C:\・・・JREのパス・・・\bin\server\jvm.dll
“`
だと、タイトル通りのエラーになることがわかっている。 要するに、JDKを探しているのに、上記の例ではvmがJREに設定されているため、JDKを見つけられないというエラーが起きるわけだ。
***
次に、windowsのコマンドプロンプトに**java -version**と打ちこむ。エラーメッセージが表示されるようだと、JDKがインストールされていないことが確認できる。
その場合は[こちらの優秀なサイト](https://eng-entrance.com/java-install-jdk-windows)を一読した後、こちらに載せられているリンクからOracleの公式ダウンロードページへ飛んで

元記事を表示

Springを使ってトークンをイントロスぺクトしてみる

Oauth2の[Client Credentials Grant](https://oauth.net/2/grant-types/client-credentials/)という認証方法があります
サーバー間の通信を行い、また認証したい場合に基本的にUIがないので、
Client Credentials Grant方式で認証を行うケースが多いです。
例えばリソースサーバーと認証サーバーが分離している場合に、
リソースサーバーは認証サーバーに問い合わせ、トークンの有効性を確認する必要があります。
今回はこの`トークンの有効性を確認する`という行為をどうやって実現できるかについて紹介します。

## 1 RFC7662

実は、`トークンの有効性を確認する`の規定はすでにRFC7662で定義されています。
有効性をチェックするときのエンドポイントは`/introspect`になります。
いくつかの概念について紹介します

### 1.1 introspect request

リソースサーバーが認証サーバーにイントロスぺクトする際に必要な情報。

| 項目 | 値

元記事を表示

Effective Java 項目1 「コンストラクタの代わりにstaticファクトリメソッドを検討する」

自分用メモなので雑です。

コンストラクタはこういうの
`public Human`の部分
(フィールド持たない場合は、何も書かなくてもデフォルトのコンストラクタが生成される)

“`java
class Human {
String name;
public Human(String name) {
this.name = name;
}
}
“`

コンストラクタを呼ぶ = クラスのインスタンスを生成しても取得する

“`java
Human human = new Human(“yamada”);
“`

staticファクトリメソッドを用意してコンストラクタからはHumanを生成できないようにするとこうなる

“`java
class Human {
String name;

// クライアントが、createHumanからしかHumanを作れないようコンストラクタはprivateにしている。
private Human(String name) {
this.name = n

元記事を表示

社内業務のシステムをWebで作ろう!

##投稿の動機
@PN_Systemsさんの **製造業において、Pythonに加えてWebも活用して飛躍しよう** の記事を見て正にキャッチ‐な話題でしたので、社内での活動状況を投稿しようと思いました。現在私は定年後の再就職先として広島市内の名盤製造業に嘱託として勤めています。仕事内容は社内業務システム「業務支援・改」の構築・保守です。
##何故Webなのか
今のシステムは経理・給与・販売管理(移行開発中)を除く、製造業務のほぼ全般をWebシステムで運用しています。巷では業務システムはクライアント・サーバータイプ(VB, VC, Java 等)で作られているみたいですが、かなり早い段階からWebで開発している身としては、楽なのに何故Webで開発しないのかが不思議でした。実際WebでVBよりも高速な伝票入力画面を作ることができます。現役時代に納品したシステムはOSのバージョンアップを行っても問題無く使えていますし、カーソル移動も[Enter]キーで[tabIndex]順に移動できます。端末へのインストールも不要で遠地の端末が壊れても簡単に機器の入れ替えができます。ハードを更改してもシス

元記事を表示

javaのラムダ式について理解する[入門]

普段から何気なくラムダ 式記法を使って実装をしていますが、ラムダとはそもそも、どういう仕組みになっているのか改めて調べてみました〜。

## Javaのラムダ式とは

Javaのラムダ式とは、ざっくり言ってしまうと、`メソッドが1つしかないインターフェイスを簡単に実装するための記法`です。

色々記述を省略した結果として、ラムダ記法が生まれているので、
本来、ラムダ式を使わずに書くとしたらどうなるのか?というところから説明を始めます。

## サンプル1

“`java:CalculatorInterface.java
public interface CalculatorInterface {
public int calculate(int a, int b);
}
“`

“`java:MultiplyCalculator.java
public class MultiplyCalculator implements CalculatorInterface {
@Override
public int calculate(int a, int

元記事を表示

【Java】配列について

#配列

勉強のメモとして、配列について学んだことをメモります。

##配列とは
プログラミング言語には、「いくつかの関係のあるデータをグループにして、まとめて1つの変数として扱う」仕組みががあり、それを配列と呼ぶ。

##配列操作
配列にはその変数が保持する特定の値や値全体に対して行える機能があり、

– 取り出し
– 書き換え
– 削除

これらを総称して「配列操作」と呼ぶ。

##配列の作り方
###書き方
**結論からいうと配列の作り方は以下です。**

“`
要素の型[] 配列変数名 = new 要素の型[要素数];
“`
なぜそういう書き方になるかというと、**配列を作るためには、`配列の宣言`、`要素の代入`の2つ手順が必要です。**
例として得点という意味の「score」を配列変数名にして配列を宣言する場合はこうなります。

“`java
int[] = score;
score = new int[100];
“`

###1. 配列の宣言
配列の宣言の仕方はこちら。

“`
要素の型[] = 配列変数名;
“`
scoreという配列を宣言するとこうなり

元記事を表示

Spring開発環境構築 For Mac

#はじめに
Springの開発環境の構築方法をまとめました。
流れは以下になります。

①STSのインストール
②Pleiadesのインストール
③Lombokのインストール
#STS(Spring Tool Suite 4)のインストール
[STSダウンロードサイト](https://spring.io/tools “Lombokダウンロードサイト”)にアクセスします。
Spring Tools 4 for Eclipseの欄から「4.8.0-MACOS 64-BIT」をクリックしてください。
※バージョンは2020年10月時点で最新の4.8.0を利用します。
するとSTSが入ったzipファイルのダウンロードが始まります。
![スクリーンショット 2020-10-19 23.43.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703431/fd20f3b0-5c7c-13af-eaa6-4a89b7b7e408.png)
ダウンロードしたzipファイルを解凍します。
以下の画面が表示されたらSp

元記事を表示

【Java】GUIの開発フレームワーク

#プログラミング勉強日記
2020年11月18日
swingを使っているが、他にGUIのフレームワークがないか気になったのでまとめる。

#GUIとは
 Graphical User Interfaceの頭文字をとったもので、操作対象が画像や図形などで、キーボードからの入力やマウスのクリックといった直感的にコンピュータを操作できる。
 コマンドプロンプトを使ってjavacやjavaのコマンドでコンパイルや実行するのをCUIといい、CUIの場合はコマンドを覚える必要があるが、GUIの場合はコマンドを知らなくても画像や図形を使うことで直感的に操作できる。GUIはEclipseといった統合開発環境(IDE)を使って開発する。([統合開発環境(IDE)について](https://qiita.com/mzmz__02/items/57f14352bd463666347e)はこちらの記事で扱った)

#GUIのフレームワーク
 GUIを開発するためにはフレームワークを使用する。

##AWT
 AWTはAbstract Window Toolkitの頭文字をとったもので、Java 1.0のころか

元記事を表示

【Java】変更可能文字列の操作(AOJ15 – 文字列変換)

#変更可能文字列の操作を行う
* **StringBuilderクラスのメソッド**
* サンプルコードです
* 追加・挿入・置換・削除・反転

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

StringBuilder sb1 = new StringBuilder(“MohuMohuNekoSan”);
StringBuilder sb2 = new StringBuilder(“MohuiNekoSanMohui”);
StringBuilder sb3 = new StringBuilder(“あめんぼ赤いな”);

//末尾に”***”を追加
System.out.println(sb1.append(“^・ェ・^”));//MohuMohuNekoSan^・ェ・^

//インデックス番号1(2文字目)に”***”を挿入
System.out.println(sb1.insert(1, “ooo”)); //Mo

元記事を表示

Note Book : Build Error OpenCV v4.5.0 with Julia

– Run `import Pkg; Pkg.add(“CxxWrap”)` to install the CxxWrap package.

###Install julia on ubuntu by apt-get

“`test
sudo apt-get -yV install julia
“`

###OpenCV build errorlog

“`shell:log
z.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so (found version “1.10.4”)
— Registering hook ‘STATUS_DUMP_EXTRA’: /usr/local/src/opencv_contrib/modules/julia/cmake/hooks/STATUS_DUMP_EXTRA.cmake
— Found Julia executable: /usr/bin/julia
— Julia_VERSION_STRING: 1.4.1
— Julia_INCL

元記事を表示

【Java】parseIntとvalueOfの違い

#プログラミング勉強日記
2020年11月17日
コードを書いていて、`parseInt`と`valueOf`の違いがわからなかったので備忘録として残しておく。

#違い
 コードを実行したときに結果が同じになる。調べてみると戻り値が違うと出てきた。具体的には、`parseInt`がint型やchar型などのプリミティブ型で`valueOf`はIntegerクラスを返す。

“`java
public class Main {
public static void main(String[] args) throws Exception {
int hoge = Integer.valueOf(“12345”);
System.out.println(hoge);

int fuga = Integer.parseInt(“12345”);
System.out.println(fuga);
}
}
“`

“`:実行結果
12345
12345
“`

#参考文

元記事を表示

【Java】値/文字列を比較(AOJ14 – カードゲーム)

#値や文字列を比較
* **compareToメソッド**
* 戻り値はメソッドの呼び出し元の値(変数1) – 引数の値(変数2)
* 左の値 – 右の値=正: 1
* 左の値 – 右の値=負: -1
* 左の値 – 右の値=0:0
* 日時も比較可能
* **compareToIgnoreCaseメソッド**:文字列の大文字と小文字を区別しない

“`java
import java.util.Date;
public class Main {

public static void main(String[] args) {

String str1 = “a”;
String str2 = “b”;
String str3 = “A”;
Date date1 = new Date(2017, 3, 28, 16, 20, 22);
Date date2 = new Date(2017, 3, 29, 16, 20, 24);

System.out.println(str1.compareTo(str2)); //-1

元記事を表示

JDBI3でInputStreamをBindしたい時

## JDBI2ではできたのに

“`java
@SqlUpdate(“update samples set file = :file where flag = true”)
int updateFile(@Bind(“file”) InputStream file);
“`

“`kotlin
@SqlUpdate(“update samples set file = :file where flag = true”)
fun updateFile(@Bind(“file”) file: InputStream?): Int
“`

JDBI3ではできなくなっている…

“`
org.jdbi.v3.core.statement.UnableToCreateStatementException: No argument factory registered for type …
“`
のようなエラーが出てくる

GitHubでエラーメッセージを検索したところ、↓が怪しい

“`java
return new UnableToCreateStatementExce

元記事を表示

FitGen.exeを日本語Windowsで実行したとき発生するJavaのエンコーディングに関するエラーを回避する

## TL;DR
環境変数の `JAVA_TOOL_OPTIONS` に `-Dfile.encoding=UTF-8` を設定する。

![環境変数_JAVA_TOOL_OPTIONS.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594488/0de2abfb-b41a-c959-5ec6-905519c52203.png)

## 詳細
GARMIN FIT SDKでカスタムメッセージ等を定義した場合、FitGen.exeを実行しFIT SDKを生成する必要がある。
https://developer.garmin.com/fit/cookbook/fitgen/

しかし、最近Garmin Developersで配布されているFIT SDKのEventMesg.javaのドキュメントコメントに謎の文字化けが混入しておりそのままFitGen.exeを実行すると

“`
> .\FitGen.exe -o test -java
FIT Code Generator – Protocol 2.00

元記事を表示

Selenium

#Selenium
UIベースでの単体テストの方法

###メインソース
“`java
package G_T.OfficeSystem.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
public static void main(String[] args) {
SeleniumTest doTest = new SeleniumTest();
doTest.threadTest();
}
void threadTest() {
ExecutorService pool

元記事を表示

Spring Frameworkが分からない奴はこれを買え!!!!!!

はじめに

皆さんJavaの教本と言えばなんでしょうか?色々あると思いますが一番おすすめできるのは「スッキリわかるJava入門」と多くの人が答えると思います。
じゃあ一通りやった後にJavaのフレームワークを触ってみましょうとなった際や、

元記事を表示

【Java】FileReaderクラスとBufferedReaderクラスの使い方

#プログラミング勉強日記
2020年11月16日
FileReaderクラスとBufferedReaderクラスの使い方を改めてまとめておく。

#FileReaderクラスとは
 テキストファイルを読み込むためのAPIで、テキストファイルの内容を元にした処理などを行うために使う。ファイルの文字は、データを文字単位で読み書きできる文字のストリームで読み込まれる。FileReaderクラスは文字を読み込むメソッドとしては、1文字ずつ読み込むreadメソッドしか用意がないので、データをバイト単位で読み書きできるバイトのストリームで読みたい場合はFileInputStreamクラスを使用する。

“`java:readメソッドで1文字ずつ読み込む
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {

public static void main(String[] args) {
try {
//

元記事を表示

Memento Pattern

特定のクラスの状態を複製するクラスを用意してMementoとする。userは複製を作成したときにMementoをインスタンス化してコレクションに記録し、必要に応じてインスタンスを取り出す
Mementoは複製するメンバを保持する

[Design Pattarm MENU](https://qiita.com/old_cat/items/852d980bedb9100dd7e3)

以下のクラス構成で確認します

|クラス|説明|
|—–|—-|
|Origin.class|複製対象のクラス|
|Memento.class|Originを複製する場合に、MementoにOriginのデータを複製し、Mementoを保存する|
|MementoList.class|コレクション(ListやMapなど)を保持し、Mementoインスタンスを格納する|
|user(Main.class)|動作を確認する|

*user 他の開発者がこのパターンを利用する、という意味合いを含みます

“`java:Origin.clas

元記事を表示

OTHERカテゴリの最新記事