JAVA関連のことを調べてみた2021年08月09日

JAVA関連のことを調べてみた2021年08月09日

【Java】BufferedImageの基本的な使い方

#はじめに
Javaにおいて標準機能で画像処理をしようとする場合、BufferedImageを用いることになると思います。
Javaはそもそも画像処理向きの言語ではないですし、OpenCVなどのライブラリを用いることで画像は簡単に扱えると思います。
しかし、ここではあえてBufferedImageの基本的な使い方を記しておこうと思います。

#画像の読み込み
ImageIOクラスを用いることで簡単に実装できます。

“`ImageUtil.java
public static BufferedImage read(String filename) {
try {
return ImageIO.read(new File(filename));
} catch (IOException e) {
e.printStackTrace();
}
return new BufferedImage(0, 0, 0);
}
“`

#画像の書き出し
読み込みと同じよう

元記事を表示

CodeSignal – sudoku2にチャレンジ

コーディングしなさすぎてコーディングを忘れたエンジニアがコーディングを思い出すためにコーティングします。
今回は、アメリカのコーデイング練習サイトCodeSignalの問題「sudoku2」を解いていきます。
サイトによると、この問題はApple、UBERの面接で出されたことがあるようです。

##問題
9×9マスの数独を表す、以下のような2次元配列が与えられます。

“`
grid = [[‘.’, ‘.’, ‘.’, ‘1’, ‘4’, ‘.’, ‘.’, ‘2’, ‘.’],
[‘.’, ‘.’, ‘6’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’],
[‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’],
[‘.’, ‘.’, ‘1’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’],
[‘.’, ‘6’, ‘7’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘9’],
[‘.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘

元記事を表示

eclipseでJDK Mission Control(jmcプラグインを導入)を利用してみる

#目的
Javaのパフォーマンスチューニングを目的とし、以下ツールを利用して計測したデータを元にボトルネックとなる箇所の分析を行えるようにするため、実施した手順を残しておきます。
今回はeclipseから実施できることを主目的としています。
(eclipse以外での実行、プロファイリングレポートの分析等についてはまた余力を見て記事にできたら、と思います)

– JMC(JDK Mission Control)
– JFR(JDK Flight Recorder)

#記載範囲
本記事ではeclipseで「Mission Control」の使ってみるため、プラグインとして導入してプロファイリングレポートを確認するところまでを記載します。

#前提条件
– エディション:Windows10 Pro
– eclipseバージョン:Version: 2021-06 (4.20.0)
– JDK Mission Control Plug-ins for Eclipse:バージョン8.0.1

#プロファイリングツール
JDK11より以前では、JDK Mission Control(以降JMC)は

元記事を表示

Javaで簡易Webブラウザを作る(JavaFX WebView)

# 簡易Webブラウザを作る
昔の記事だけど、Javaでかなり本格的なWebブラウザを作れる[らしい](https://nompor.com/2018/06/09/post-3893/)ので、私も作ってみる。

# ブラウザを表示させる
参考元のソースで、「[戻る、進むを実装してみる(前のページ、次のページ)](https://nompor.com/2018/06/09/post-3893/#p5)」をまずは写経する。
(その時に、ファル名/パッケージ名は任意に変えている。)

この時に、Mavenを使ってJavaFXを読み込もうとして少し苦労した。(わかってしまえば難しいことではなかった。。。)

“`xml:pom.xml

元記事を表示

Twitter API をJava(twittered)で実行する

# はじめに

TwitterAPIのv2が発表され、キャッチアップのために触ってみることにした。
その際にAPIクライアントを [twittered](https://github.com/redouane59/twittered) を利用するようにした。

# twittered

Java製のTwitter API用のAPIクライアント。
[公式サイト](https://developer.twitter.com/en/docs/twitter-api/tools-and-libraries)でも利用を促している。

試したバージョンは `2.6` 。

v1.x も v2 も両方対応している。
更新頻度については高めですが、日本語の解説などは特に、見つからない。

## 導入方法

Readmeの `Code samples` を参考にした。

## サンプルコード

“`java
@Component
public class Twitter {

private static final String OAUTH_AUTHENTICATE_URL = “https:/

元記事を表示

Java JSP,Servletを使ったポートフォリオ制作

#はじめに
こんにちは! 閲覧頂きありがとうございます。

今回Java、JSP、Servletを使って、ポートフォリオを制作しました。
制作していく中で学んだこと、苦労したこと、ポートフォリオについての説明も兼ねて記事にしました。

まだ実装できていない機能や不完全な箇所もありますが、説明させて頂きます。
#概要
製造業における工数を管理するシステム

概要は以下の二点です。
1.工数管理者の負担を軽減
2.具体的な工数の可視化

工数管理システムを英語訳で、
Product Cost Management System
それぞれの頭文字を取って、”PCMS” というシステムを開発しました。

GitHub URL:https://github.com/nakamurakihiro/PCMS
![PCMS-work_report.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844098/9322173f-e92a-c5ef-13c1-e41a89d10228.gif)

#制作背景
私は高校卒業

元記事を表示

初めてのJavaプログラミング Java実行環境の準備(JDKのインストール)

初期設定忘れそうなので、備忘録的なやつ

※コンパイラ言語は初めて触るがいろいろ手間がかかりそう……

**JDK(Java Development Kit):開発用に必要なツール群**
javac(コンパイラ)やjavadoc(コードビューア的な奴)を含んでいる

**JRE (Java Runtime Environment):Java実行環境**
インフラ話に絡めるとEMCのUnisphereとか実行するのに動いてる認識
JDKにも含まれている

環境準備の流れ

①JDKのインストール

②システム環境変数(JAVA_HOME)の設定
インストールしたディレクトリを設定。
一般的にC:\Program Files配下

“`

>set JAVA_HOME
JAVA_HOME=C:\Program Files\Java\jdk-16.0.2
“`
→javaを実行する中でプログラムが参照する為に設定が必要。

③Path設定
Pathを通した場合のコンパイル実行
実行ファイルを読み込む為、パスを設定しておく
→実行自体は絶対パスで出

元記事を表示

Java入門[配列]

以下のような処理をしたい時、`String poke`を定義し続けなくてはいけなくて面倒…。

“`csharp:Pokemon.java
public class Pokemon {
public static void main(String[] args){
String poke1 = “ピカチュウ”;
String poke2 = “ヒトカゲ”;
String poke3 = “ゼニガメ”;
String poke4 = “フシギダネ”;

System.out.println(“さぁ、どのポケモンにするんじゃ?”);
System.out.println(poke1);
System.out.println(poke2);
System.out.println(poke3);
System.out.println(poke4);
System.out.println(poke1 + “、君に決めた!”);
}
}

// さぁ、どのポケモンにするんじゃ?
// ピカチュウ
// ヒ

元記事を表示

[Spring Security] 事前認証シナリオ用に提供されたクラスを元に、API キーによる認証認可の実装例を用意・解説した。

#はじめに

##なぜ記事を書いたか?

直近で携わったプロダクトでは、Spring Securityを用いて、**APIキーによる認証・認可** を実装しました。

詳しくは後述しますが、Spring Security を通じた **APIキーによる認証・認可** は、公式から特に実装例等は公開されていないため、

> ![testtest.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287824/9cb317e2-950a-5c3d-74e5-1751fbde5cfa.png)
> 公式ドキュメント: [事前認証シナリオ](https://spring.pleiades.io/spring-security/site/docs/5.0.1.RELEASE/reference/html/preauth.html)より引用

実装する際、`公式ドキュメント` と `Spring Securityのコード` を反復しながら、認証・認可の流れを体系的を理解し、コードに落とし込むという進め方をしました。

元記事を表示

デザインパターン勉強会⑧Abstract Factory

はじめに

ZOOM勉強会の議事録です。
「増補改訂版Java言語で学ぶデザインパターン入門」を読んで、プログラム作成・パターンの理解を行います。
第8回はAbstract Factoryパターンです。

Abstract Factory

抽象的な向上が抽象的な部品を組み合わせて、抽象的な製品をつくります。
役割は以下です。

  • AbstractProduct
  • 抽象的な製品

  • Con

Javaの超基礎(繰り返し処理)

##はじめに
Javaの基本文法のなかの繰り返し処理についてまとめました。よろしくお願いします。

##while文
while文はwhileの後の()の中に条件式を記述し、その条件が成り立つならば、{}の処理を繰り返し続けます。

“`java
int n = 10;

while (i <= 20) System.out.println(i); i++; } ``` 上記の例は「i++」の記述によって一回処理が終わるごとにiに1が足され、20を超えると処理を終えます。 「i++」の記述がないと永遠に処理を行なってしまうので注意です。(無限ループ) ##for文 forの後の()に、変数の定義、条件式、変数の更新をこの順番通りに記述していきます。 また、それぞれの区切りにセミコロンをつけます。 先ほどのwhileと同じ処理をforで書いてみます。 ```java for (int i = 10; i <= 20; i++) { System.out.println(i); } ``` なんだかこっちの方がわかりやすい気がします。 また、繰り返し処理を終了させ

【Ruby】【Java】特定の文字列を数える

 新しく「Java」を勉強するにあたり、これまで「Ruby」を勉強する過程で作っていたプログラムを「Java」で作ってみることにしました。

 今回作るプログラムはこちらです。

“`ruby
def count_hi(str)
puts str.scan(“hi”).length
end

count_hi(‘abc hi ho’)
count_hi(‘ABChi hi’)
count_hi(‘hihi’)
“`

 「Ruby」で作っていた 「hi」という文字列を数えるプログラムです。出力結果は以下のようになります。

“`
1
2
2
“`

##Javaで作ると
 「Java」で作るとこのようになりました。初めに自分で作ったコードは無駄が多かったため、下記の記事を参考にして書き直しました。

 [文字列の中から特定の文字を数える](https://teratail.com/questions/210227)

– メソッドを定義したクラス

“`java
package example;

public class Count {

void countHi

MySQLのTIMESTAMP値をJVMのタイムゾーンに合わせて取得する方法

「MySQLサーバのデフォルトタイムゾーン」と「Javaアプリケーションのタイムゾーン」が異なる(例:MySQLサーバがUTCでアプリケーション側がJSTなど)場合、MySQLの **TIMESTAMP型** に設定されている値を何の考慮もせずに取得すると・・・意図しない日時なってしまうことがあります。

# 前提

本エントリーでは、特に断りがない場合は、

* MySQLサーバのデフォルトタイムゾーンはUTC
* JavaアプリケーションのタイムゾーンはJST(Asia/Tokyo)

という前提で記載します

# 意図しない日時となる具体例

意図しない日時となる具体例を見ていきましょう。以下のようなテーブルがあったとします。※TIMESTAMP型とDATETIME型の挙動の違いを示すためにDATETIME型も定義しておきます。

“`sql
CREATE TABLE DATE_TEST (
item_timestamp TIMESTAMP(3),
item_datetime DATETIME(3)
);
“`

このテーブルに、以下のSQLを実行してCURR

フレームワーク「Spring」の基本学習

※本記事を読みながら同じ作業をすることで・・・
・Springというフレームワークを用いて、「Hello World!」と記述されたhtmlを表示する
webアプリケーションを作成することができる

■項目
[1. すぷりんぐ](#1-すぷりんぐ)
[2. 学習環境](#2-学習環境)
[3. 環境構築](#3-環境構築)
[4. いざ実行](#4-いざ実行)
[5. まとめ](#5-まとめ)

#1. すぷりんぐ
javaプラットフォーム向けのオープンソースアプリケーションフレームワーク。
これを使えば、簡単にwebアプリケーションが開発できるらしい。知らんけど。。

[javaプラットフォーム]
Javaで記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称。
※https://ja.wikipedia.org/wiki/Java%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0

[オープンソース]
利用者の目的を問わず

Java入門[繰り返し for while]

`繰り返し`の処理についてまとめます。

####for

`回数指定でのループであればforがわかりやすい`

`for(int i = 初期値; i < どこまで繰り返すか; iをどのように変化させるか)` 以下は鬼教官?の腕立て命令のプログラムです。 ```csharp:PushUp.java public class PushUp { public static void main(String[] args){ System.out.println("貴様!!なんて失礼な!!罰則で腕立て10回だ!!"); for(int i = 1; i < 11; i++){ // 1から始まり、10回の腕立てを行う。1ずつ増える。 System.out.println(i); } System.out.println("腕立て終了。"); } } // 貴様!!なんて失礼な!!罰則で腕立て10回だ!! // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // 10 // 腕立て終了。 `

Javaの超基礎(条件分岐)

##はじめに
前にJavaの基礎をやって中途半端だったので、少しずつだけですが学習しています。条件分岐の文法について記事にまとめました。

よろしくお願いします。

##if文
javaのif文は「if」の後に()の中に条件式を記述し、その後{}に処理を書きます。

“`java
int a = 10;
if (a < 20) { System.out.println("aは20未満"); ``` True以外の処理は{}を閉じた後にelseを記述し、さらに{}に処理を書きます。 ```java int a = 30; if (a < 20) { System.out.println("aは20未満"); } else { System.out.println("aは20以上"); } ``` ifの他に条件式を追加したい場合は{}を閉じた後「else if」を記述し、ifと同じように()に条件式、{}に処理を書きます。 ```java int a = 20; if (a < 20) { System.out.println("aは20未満"); } el

Java入門[条件分岐 ifとswitch]

###プログラムの構造

複雑なプログラムもやっていることは

`順次進行、分岐、繰り返し`

– 順次進行 -> 上から下へプログラムが実行される(前回まとめ)
– 分岐 -> 条件によって違うプログラムが実行される(今回まとめ)
– 繰り返し -> 条件が満たされるまで繰り返し実行される(次回まとめ)

#### if文

`if 「もし〜なら、以下の文を実行」`
`else 「それ以外は、〜の文を実行」`という流れになる。

“`csharp:Mouse.java

public class Mouse {
public static void main(String[] args){
boolean waitTime = true; // 待ち時間が 「あるかないか」
if(waitTime == true){ // 待ち時間があれば
System.out.println(“このアトラクションは待ち時間があります。”);
} else { // それ以外は
System.out.println(“このアトラクションは待ち時

ScheduledFutureのgetの使い道

定期実行し続ける“`ScheduledFuture“`の“`Future#get“`てどのように使うのだろうか? という疑問が生じた。なので試してみた。

“`java
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();

AtomicInteger c = new AtomicInteger(0);
ScheduledFuture future = scheduler.scheduleAtFixedRate(() -> {
System.out.println(c);
if (c.get() > 3) {
throw new RuntimeException();
}
c.incrementAndGet();
}, 0, 500, TimeUnit.MILLISECONDS);

try {
future.get();

Java Codeシリーズを使ったCI/CD

#はじめに
転職活動の際にポートフォリオとして、Javaを使用したアプリケーションを作成しました。
GitHubへソースコードをプッシュすると、AWS上のEC2へデプロイされるように環境を作成した際のメモを残そうと思います。

Codeシリーズの作成方法などは他の記事を参照して頂き、本記事では

・デプロイされるときに、自動的に本番環境の設定ファイルでデプロイされるようにしたい!!

となったときに、各種設定ファイル(Mavenのpom.xmlや、CodeBuildのbuildspec.yml、CodeDeployのappspec.yml)の書き方についてざっくり触れていきたいと思います。

どなたかの参考になれば幸いです。

※環境作成から本記事の執筆に時間が空いてしまったため、思い出しながら記載しています。誤りがあってもあしからず・・・

#処理の流れ
GitHubへコードをプッシュ→CodePipelineが起動→CodeBuildでソースコードのビルド(&テスト)→CodeDeployでEC2へデプロイ

#イメージ図
![図1.png](https://qiita-image

【Java】4乗的ガウスを解く

 僕はこれまで「Ruby on Rails」をメインに勉強してきましたが、現在は「Java」も勉強しています。
 ということで僕が過去に「Ruby」で解いた問題を「Java」で解くとどうなるかを試してみました。

https://qiita.com/kim-shun/items/a46cc43c31959ff765ea

 1⁴ + 2⁴ + 3⁴ + …….. + 40⁴

 上記の計算の結果をプログラムで出していきます。

“`java
package example;

public class JavaGouse {

public static void main(String[] args) {
int count = 1;
int sum = 0;

while (count <= 40) { sum += Math.pow(count, 4); count += 1; } System.out.println(sum); } } ```  これで求めたい値である「21781332」を出すことができました。ただしまだ「