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

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

Java 標準ライブラリの com.sun.net.httpserver で簡易的な Web サーバを作る

## 概要

– Java 標準ライブラリの com.sun.net.httpserver パッケージを使用して簡易的な Web サーバのサンプルを作る

## com.sun.net.httpserver とは

com.sun.net.httpserver は HTTP サーバを構築可能な Java パッケージ。

[com\.sun\.net\.httpserver \(Java SE 14 & JDK 14\)](https://docs.oracle.com/javase/jp/14/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html)

> 組込みのHTTPサーバーの構築に使用できる、単純で高度なHTTPサーバーAPIを提供します。 「HTTP」と「HTTPS」の両方がサポートされています。 APIは、RFC 2616 (HTTP 1.1)およびRFC 2818 (HTTP over TLS)の実装の一部を提供します。 このAPIで提供されないHTTP機能は、APIを使用してアプリケーション

元記事を表示

書くときにも発生する MalformedInputException

自分が書いた Java プログラムが以下のエラーを出力した。

“`java
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)
at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:211)
at java.base/java

元記事を表示

制御フローを読みやすく

#制御フローを読みやすく

Readableコードを読んだので
制御フローを読みやすくする方法を書いてみる

##条件式の引数の並び
“`java
if(length >= 10)
if(10 <= length) ``` どちらも同じ意味を持っているけど最初の方が読みやすい ###変化する値は左辺へ、変化しない値は右辺へ 先ほどの例だと10という定数を右辺へ、 lengthという変数を左辺へ持ってくると読みやすくなった。 日本語でも 「もし私が20才以上なら」 「20才が私の年齢以下なら」 を考えた時、前者の方がわかりやすい。 私の年齢は変化をしていくが20才は定数だ。 変化する値は左辺へ、変化しない値は右辺へは自然言語と同じ順にすることで 理解を容易にできることがわかる。 ##三項演算子 三項演算子はとても便利。 以下のように使うと助長なif-else文を短くできる ```java if(hour >= 12) {
time_str += “pm”;
} else {
time_str += “am”;
}

//三項演算子を使う
time_str

元記事を表示

Dagger2 – Android Dependency Injection

#DIとは
Dipendency Injection(DI)、「オブジェクトの注入」のこと。

要するに、依存性を自由に差し替えれるようにすることで、テストを実行しやすくしたり(モックを差し込む)、オブジェクトをそれぞれ管理できるようになる。

#AndroidにおけるDIの必要性
例えば、SharedPreferencesにデータを保存したい場合、DIなしで実行すると、SharedPreferencesからデータをインスタンス化、保存、取得することになり、すべてアクティビティに似たような記述をしなければならない。
スクリーンショット 2020-06-24 15.34.25.png

この方法でアプリが大きくなると、最悪の場合改修不可能になる可能性がある。

なのでSharedPreferencesを毎回アクティビ

元記事を表示

文字列をmd5ハッシュ化して返す

##文字列をmd5Hash化

まあ自分メモです。
ライブラリとかあるみたいなので使わなそうですけど。
この方法は`MessageDigest`を使います。

下記のソースの`strHash` の部分がハッシュ化したい文字列です。
任意の文字列ってことになります。
ハッシュ化した結果は`str`の値です。

“`java:md5Hash.java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
* md5Hash
* 入力された文字列をmd5Hash化して返す
*/

public class md5Hash {
public static void main(String[] args) {
/**ハッシュ化したい文字列:strHash */
String strHash = “12345”;
System.out.println(“ハッシュ化する文字列:” + strHash);

元記事を表示

IBM Cloud ShellでQuarkusを試してみよう

この記事は、これからQuarkusを始める方を対象に、IBM Cloudで提供しているIBM Cloud Shellを使って[Quarkus.io](https://quarkus.io/get-started/)のFirstStartの手順を実行するためのガイドです。
###Cloud Shellとは
IBM Cloud Shell はクラウドのメニュー(アイコン)からコンソールに即時アクセスが可能です。
2020年6月現在、ベータ版として主に以下の機能をリリースしています。
・30時間利用/週
・ストレージ500 MB/User
・ファイルのアップロード、ダウンロード処理
・アプリのプレビュー
詳細、最新情報は[IBM Cloud Docs](https://cloud.ibm.com/docs/cloud-shell?topic=cloud-shell-shell-ui)をご確認ください
image.pngOpenCensusとJavaで分散トレーシングをする

## はじめに

OpenCensus APIとJavaで分散トレーシングを実装してみました。OpenCensusはGoogleのCloud Trace(旧 StackDriver Trace)をベースとした仕様で分散トレースとメトリック収集の仕様です。
こちらを使うことでPG側は統一したAPIを利用しながらバックエンドをJeagerやOpenZipkinあるいはCloud Traceなどに連携できます。

実はOpenCensusは既に古く、似た様な仕様のOpenTracingと統合する形で現在は[OpenTelemetry](https://opentelemetry.io/)として標準化されています。こちらはDatadog, NewRelic, Dynatrace, Instanaといった商用のAPMも含めて対応しているので今後はこちらを使うべきです。
なので、最初はOpenTelemetryを弄ってたのですがJeagerには連携できたものの[Cloud TraceではJava版はまだ未対応](https://cloud.google.com/trace/docs/setup)だ

元記事を表示

今更ながらSpring Data JPAに入門してみた

# 始めに

[Doma](https://doma.readthedocs.io/en/2.19.2/)以外のOR Mapperを触ったことがなかったので、ふと思い立ち興味半分くらいで触ってみました。

Spring Bootアプリケーションへの導入方法 ~ 簡単なAPI作成で感じたDomaとの比較について書きたいと思います。

# 環境

– IDE VSCode

– Java 11.0.6
– Spring Boot 2.3.1
– PostgreSQL 11.6

# 前提

簡単なAPIを作成して、色々と触ってみたいと思います。作成するAPIは以下の様。

| エンドポイント | Http Method | 概要 | 備考 |
| —————————- | ———– | ——————————————

元記事を表示

[Java]配列

#配列の定義
`データ型[] 配列名 = {};`

“`java

String[] names = {“tanaka” , “sato” , “suzuki”};
System.out.println(names[0]);
“`

#配列のfor文
配列の中身を全部出力する。

**通常のfor文**

“`java

String[] names = {“tanaka” , “sato” , “suzuki”};

for(int i = 0; i < names.length; i++) { System.out.println(names[i]); } ``` **拡張for文** `for(データ型 変数:配列名){}` ```java String[] names = {"tanaka" , "sato" , "suzuki"}; for(String name:names) { System.out.println(name); } ```

元記事を表示

[Java]出力、変数

#標準出力
`System.out.println()`

“`java
System.out.println(“Hello World”);
“`

#変数
**変数定義**
`データ型 変数名;`

“`java
String hello;
hello = “Hello World”;
System.out.println(hello);
“`
こちらでも意味は一緒

“`java
String hello = “Hello World”;
System.out.println(hello);
“`
#型変換
**強制型変換(キャスト)**
出力の時に型を強制的に変換する

例:int型同士の計算結果を小数点で出したい(本来は小数点はでない)

“`java
int num1 = 10;
int num2 = 4;
System.out.println((double)num1 / num2);
“`

元記事を表示

Java初学者が4日でポーカーゲームを作る(3日目)

##モチベーションと目的
Javaについて少し知っておこうと思い6/21から勉強を始めました。
6/21にprogateでJavaの基礎的なことは学んだのでアウトプットしようと思います。
作るのは何でもよかったのですが、私が愛してやまない頭脳スポーツ「テキサスホールデム」を作ってみようと思います。

就職に向けてアウトプットソースを増やす目的と、日記的な意味合いで学習の軌跡をここにメモっておくことにしました。

##予定
1日目:progateでJavaについて知る(割愛)
2,3日目:とりあえず実装(できた!)
4日目:オブジェクト指向に倣いコードを整える(無理かも)

##実装機能(簡単のため相当簡略化)
昨日は
**カードを配り、プリフロップのアクションを決定**
するところまでできていた

残すところ
**フロップ、ターン、リバーの動き
ハンドの強弱、役の決定
all-in、foldなどの処理**
です

##ハンドの強弱
一番頭を悩ませたハンドの役の決定から。
なお、簡単のためフラッシュ、ストレートは今回実装しなかった。また、最弱のカードは2ではなくAになってるが勘弁してほし

元記事を表示

Javaの条件分岐

##はじめに
小難しい部分は文章で説明するのがまだ難しいのでまずなにが出来ることの基本をモリモリ書いていくことにする.

##条件分岐の書き方

“`kane.java
if(条件式){
処理;
}
“`
###これが基本の形
真偽値、比較演算子(==, < など)、論理演算子(&&, ||, ! )などを使用して条件式を書いていく. ###ブロック{} 複数の処理をまとめたいときに使う. **{ }の後ろにはセミコロンは不要。** ```kane.java int x = 40 if(x >= 30){
System.out.println(“xは30以上。”);
}else if(x > 20){
System.out.println(“xは20より大きく30より小さい。”);
}else{
System.out.println(“xは20より以下。”);
}

//今回は最初の処理で実行される
“`

else ifは必要なだけ並べることができるが、**実行されるのは最初に合致した条件だけ。**

##switch文
条件の値がcaseの値

元記事を表示

JBcryptを使用したパスワードのハッシュ化とその認証

#やったこと

Java(Spring) でJBcryptを使用してパスワードのハッシュ化とその認証を行いました。

#準備

[MVN REPOSITORY](https://mvnrepository.com/artifact/de.svenkubiak/jBCrypt/0.4)からjarファイルを取得

#パスワードのハッシュ化

“`java

@PostMapping(“/sample”)
public String sample(@Validated SampleForm sampleForm,
BindingResult bindingResult, Model model) {

// 入力値のpasswordをハッシュ値に変換
String hashedCode = BCrypt.hashpw(sampleForm.getPassword(), BCrypt.gensalt());

// 以下ハッシュ化されたパスワードをDBに格納する処理


}
“`

>ソルトはハッシュ関数に入れる前のパスワードの前後

元記事を表示

Docker-compose ~volumeの罠~

# はじめに
 初投稿です。白菜と申します。プログラミングが趣味のしがない大学生です。先日コードを書いている最中に深めなツボにハマり、色々調べても関連する情報が出てこなかったので投稿させていただきます。

# 何が起こったのか
 windowsを使っておりまして、wsl2が正式に導入されたと聞き、wsl2上でDocker-desktopを動かしてみようと思い立ちました。環境を整えてかれこれ一か月ほど遊んでいて、己のPCの環境を汚さずに様々な言語に触れられて、激アツやんと思っておりました。dockerで立ち上げたコンテナにvscodeのRemote Developmentを利用して接続し、コンテナ内でコードの編集・デバッグを行っていました。

###しかし、問題発生

 それはある日の暮れ、羅生門の下で雨やみを待ちながらコードを書いていた時のことでございます。springbootとかいう何某かがなんかとてもすごいつよいと聞いたので、試しておりました。日本語の公式チュートリアルのいくつかを軽く実装し、springMVCの基礎くらいはカンニングせずに書けるようになりました。調子に乗ってきたの

元記事を表示

僕のAndroid学習参考資料

####※随時アップデート

#Google公式
[Android Developer](https://developer.android.com/index.html)
[API Reference](https://developer.android.com/reference/packages.html)
[Material Design](https://material.io/design/introduction#goals)

#おすすめサイト/本
[RayWenderRich](https://www.raywenderlich.com/)

[Androidアプリ開発 パーフェクトマスター](https://www.shuwasystem.co.jp/book/9784798041612.html)

[Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術](https://www.amazon.co.jp/Android-Cookbook-ICS%EF%BC%88Ice-Cream-Sandwich%E

元記事を表示

【Java】特定の曜日の日を取得する

忘備録として

LocalDateを使うとかんたん。

“`java

// 今日
LocalDate now = LocalDate.now(); // 2020-06-23:火曜日

// 今週の金曜日
LocalDate thisFriday = now.with(DayOfWeek.FRIDAY); // 2020-06-26

// 先週の水曜日
LocalDate lastWednesDay = now.minusWeeks(1).with(DayOfWeek.WEDNESDAY); // 2020-06-17

// 来週の木曜日
LocalDate nextThursDay = now.plusWeeks(1).with(DayOfWeek.THURSDAY); // 2020-07-02

// おまけ LocalDateTimeへ変換
LocalDateTime from = lastWednesDay.atTime(00, 00, 00); // 2020-06-17 00:00:00

“`

### 参考

[日本人のための

元記事を表示

java comparator を使ったソート

– comparator を使うと便利にソートできます.

### コード (昇順ソート)

“`java

import java.util.*;

class Solution {

public static void main(String[] args) {
sort1();
sort2();
}

public static void sort1 () {
List list1 = Arrays.asList(3,2,8,4);
System.out.println(“sort前: “+list1);
Comparator comparator = new Comparator() {
public int compare(Integer int1, Integer int2) {
return (int1.compareTo(int2));

元記事を表示

RestTemplate でレスポンスの JSON とクラスのマッピングに失敗した場合に発生する例外

## 概要

– RestTemplate で HTTP レスポンスの JSON とマッピングするクラスが合わない場合に発生する例外を調査する

## 環境

– Spring Boot 2.3.1 (Spring Framework 5.2.7 + Jackson Databind 2.11.0)
– Java 11 (AdoptOpenJDK 11.0.7+10)
– Gradle 6.5
– macOS 10.15.5 Catalina

## 検証用コード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
└── com
└── example
├── DemoApplication.java
└── MyResponse.java
“`

### build.gradle

“`groovy
plugins {
id ‘org.springf

元記事を表示

ProgateでJavaについてお勉強メモ1

JavaScriptとはメロンパンとメロン、ハムとハムスターほど違うと有名なあのJavaについてProgateで勉強を始めたいと思います。行くぞージャバジャバ:swimmer_tone2::swimmer_tone2::swimmer_tone2:
#基本編

“`java
System.out.println();
“`

がJSでいうconsole.log的なやつ。コンソールに結果を出力できる。
長い、長いよ。。console.logですら長いと文句言ったのに。「.」が2つもある・・!
(どうせ補完?されて長々と打つことはProgateやってる間だけだろうけども。)

しかも、printlnこれ、**lは小文字の”える”**という衝撃の事実。:scream:
読み方はプリントラインというそうな。。

Javaの構造はクラス部分・メソッド部分・メソッド内の処理の3つに別れている。まだ、ふーんそうなんだ程度でいいらしいが、きっと後ですごい伏線回収があると思っている。:spy_tone2:

##変数
###変数の定義
“`java
//変数の定義
データの型 変数名;
/

元記事を表示

Java初学者が4日でポーカーゲームを作る(2日目)

##モチベーションと目的
Javaについて少し知っておこうと思い昨日(6/21)から勉強を始めました。
6/21にprogateでJavaの基礎的なことは学んだのでアウトプットしようと思います。
作るのは何でもよかったのですが、私が愛してやまない頭脳スポーツ「テキサスホールデム」を作ってみようと思います。

就職に向けてアウトプットソースを増やす目的と、日記的な意味合いで学習の軌跡をここにメモっておくことにしました。

##予定
1日目:progateでJavaについて知る(割愛)
2,3日目:とりあえず実装(できたらいいな)
4日目:オブジェクト指向に倣いコードを整える(予定)

##実装機能(簡単のため相当簡略化)
**プレイヤーは自分自身と相手(CPU)のみのヘッズアップ
CPUはハンドの強さではなく乱数でアクションを決定する
BTNは常に相手側でブラインドは無し
どちらかのチップがなくなったら終了**

実装にあたって、
**デッキの作成
デッキのシャッフル
プレイヤーに手札を配る**
の処理は非常にわかりやすいサイトがありましたのでこちらを~~パクっ~~参考にさせていただきま

元記事を表示

OTHERカテゴリの最新記事