- 1. 【画像処理解説】モザイク処理(Javaソース付き)
- 2. CentOS7にJava11インストール
- 3. Java版Minecraft 1.17.1のマルチサーバをGCPで建ててみた
- 4. ツリー構造を可視化する
- 5. Spring BootのjarをDocker上で動かすまで
- 6. Java から PostgreSQL JDBC Driver を使って PostgreSQL に接続してみる
- 7. Java入門メモ
- 8. 【初心者向け】JavaのAbstractの使い方
- 9. Springbootでメッセージの管理とバリデーション処理を行う
- 10. Excelの書式文字列(文字列、数値)
- 11. Visual Studio Code で java spring framework 開発環境設定
- 12. 並列処理(マルチスレッド)についての備忘録③
- 13. 並列処理(マルチスレッド)についての備忘録②
- 14. 並列処理(マルチスレッド)についての備忘録①
- 15. [Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ (2)
- 16. Spring 処理を定期的に実行する
- 17. ぼくたちのKotlinにはonEachがある
- 18. 【Java入門】Handling Exceptions(例外処理)
- 19. 【画像処理解説】判別分析法(Javaソース付き)
- 20. VSCodeでTomcat for Javaが起動できない
【画像処理解説】モザイク処理(Javaソース付き)
#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。#モザイクとは?
現代社会においてモザイクを見たことのない人はいないと思いますが、一応説明します。
モザイクとはブロックごとに平坦化することで、元の画像を分かりにくくする処理です。
ブロックが大きければ大きいほど画像が荒くなります。一般的なモザイク処理は非可逆変換となっています。
すなわち、一度モザイクをかけると元には戻せないということですね。
そのため、個人情報保護や検閲などで用いられています。#処理方法は?
先述した通り、まず画像をブロック分けします。
そしてブロックごとに何らかの式を用いて代表値を計算し、ブロックすべてを塗りつぶします。
これだけで簡単にモザイクをかけることができます。言葉で説明するのは非常に簡単なのですが、実際にプログラム化するのは意外と複雑だったりします。
特に初心者の方には少し難しいかもしれませんね。なお、以下のプログラムでは計算式として平均値を用います。
この処理は平均プー
CentOS7にJava11インストール
#java11のパッケージを検索
「yum search」 コマンドでパッケージを検索します。“`:
sudo yum search java-11
(中略)
====================================== N/S matched: java-11 ===================
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment
java-
Java版Minecraft 1.17.1のマルチサーバをGCPで建ててみた
## はじめに
今回`Minecraft`のJava版のマルチサーバをGCP上の`Google Compute Engine`に構築しました。
先人の記事があったものの、`1.17.1`を入れる上で少しハマりどころがあったので、備忘録として残しておきたいと思います。いくつかGCPで記事を書いている方はいましたが、最小レベルでの記事はなかなか見つからなかったので、ここまでやれば取り敢えずバニラのMinecraftをみんなで遊べる!というところを目標とします。
GCPを使ったマイクラマルチサーバは、サーバ構築まで約30分ほどで完了しますので、非常に簡単にセットアップすることが可能です。
詳細な手順については、今回様々な記事を参照させていただいたため、そちらを参考に記述しておきます。
## 実行結果、料金
今回作成したGCEインスタンスに4人同時接続し、5〜6時間ほどプレイしてみましたが、ほとんどカクつくことはありませんでした。発生した料金は以下のグラフのようになっており、日本円で約31円です。
![image.png](https://qiita-image-store.s3
ツリー構造を可視化する
– http://asistobe851.web.fc2.com/my-memo/traversal.html
大昔上記に書いていたものを転写した。しかもDBはMS ACCESS(笑)
“`
$ ./desc.sh node
1: nodeId COUNTER 0 10
2: isCategory BIT 0 1
3: parentNodeId INTEGER 0 10
4: title VARCHAR 0 50
5: URI VARCHAR 0 50
6: linkNodeId INTEGER 0 10
7: sequenc
Spring BootのjarをDocker上で動かすまで
# はじめに
Docker上でSpring Bootのjarを動かすための備忘録。[公式](https://spring.pleiades.io/guides/gs/spring-boot-docker/)にも書いてあるけど自分用に念のため検証した。# 環境
– Docker 20.10.8, build 3967b7d
– Spring Boot 2.5.3
– Openjdk 11# 内容
## アプリケーション側
検証用なので文字列返すだけ。 コマンドでもIDEでもいいからビルドしてjarを作っておく。“` java
@Controller
@RequestMapping(“/demo”)
public class ContainerdemoController {@GetMapping
@ResponseBody
public String demo() {
return “sample”;
}
}
“`## Dockerfile
Openjdk11指定で `JAR_FILE` 相対パスのjarを `app
Java から PostgreSQL JDBC Driver を使って PostgreSQL に接続してみる
Java から PostgreSQL JDBC Driver を使って PostgreSQL に接続するプログラムの作成方法について説明します。
環境は CentOS 7 または 8、PostgreSQL 9.6 以降を対象とし、PostgreSQL に接続できる状態になっていることを前提とします。PostgreSQL のインストールや設定がまだであれば、インストール方法は [こちらの記事](https://qiita.com/tom-sato/items/e1903cb974fb6c6d5664)、ローカルホスト以外からの接続受けつけに必要な設定方法は [こちらの記事](https://qiita.com/tom-sato/items/d5f722fd02ed76db5440) を参照してください。
1. Java、PostgreSQL JDBC Driver をインストールします。
“`ShellSession
$ sudo yum -y install java-1.8.0-openjdk-devel postgresql-jdbc
(省略)
Java入門メモ
# Javaの分類
* JavaSE
Javaのスタンダード版、簡単なゲームやデスクトップアプリの開発に使われる、基礎の基礎。
* JavaME
携帯や小型電気などの開発に使われる。今ほとんど死んでる
* JavaEE
Webなどの開発に使われる。Javaといったら、この版のことさしてるのが多いでしょ。
# JDK、JRE、JVM
* JDK(Jvav Development Kit)
中身は開発用に必要なツールキット及びJRE,JVMが含まれてる。* JRE(Java Runtime Enviroment)
javaを動かす環境のことです* JVM(Java Virtual Machine)
JavaはMACでもWindowsでも動けるのはJVMがあるから。例えば、hello.javaをコンパイルすると、`java.class`が生成されますね。OSの環境依存しないように実行できるのはJVMというJavaの仮想マシンで実行するからだ。つまりOSの違いがJVMにより吸収されちゃう。この図を見たら理解できるでしょ!
![r5compiler01_03.gif
【初心者向け】JavaのAbstractの使い方
# はじめに。
どうも初めまして、にかわみかんです。私が半年ほどJavaを学んでいて結構引っかかりやすい部分だなぁと感じたAbstract(抽象化)についてなるべくわかりやすく解説していきたいと思います。
私は職業訓練校にてJavaを勉強させていただいたのですが、抽象クラスを継承して子クラスを作成する。という事自体が正直言って最初はまったく意味がわかりませんでした。
クラスを抽象化したところで直接インスタンス生成できなくなるだけで何のメリットがあるのかが全く理解できなかったのです。
ですが、私が今まで書いてきたコードにはAbstractは既に欠かせないものになっています。
そんなわけで、抽象化のメリットと書き方を解説していきたいと思います。
# Abstractのメリット
まずクラス継承のメリットとして共通の変数を定義したり、共通の処理を記述したりすることで、
同じ処理を記述する必要がなくなりコーディング速度やメンテナンス性の向上などのメリットがあります。さらに抽象化によって以下のようなメリットがあります。
## 繰り返し処理の共通化
まず以下のようなコードがあ
Springbootでメッセージの管理とバリデーション処理を行う
以下の内容について記載します
* メッセージファイルの利用について
* 単一項目チェック
* 複数項目チェック事前準備
GitHub
https://github.com/jirentaicho/springbootsample
※メッセージの表示はコントローラーのアノテーションをRestControllerに変更します。application.propertiesを
application.ymlとして、ymlファイルで記載を行う。既存のpropertiesファイル
“`properties:application.properties
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/misaka
spring.datasource.username=misaka
spring.datasource.password=mikoto
“`ymlファイルに置き換えた例
“`yml:
Excelの書式文字列(文字列、数値)
文字列の書式文字列は”@”ですが、数値の書式文字列は”0_ “(ゼロ、アンダーバー、半角スペース)です。Excelで書式を数値にしてからユーザー定義を選択すると、確認することができます。
Apache POIで書式文字列を指定する際にも使用可能です。半角スペースを入れないとExcelファイルが壊れます。
Visual Studio Code で java spring framework 開発環境設定
## まえがき
VSCode が評判いいので Java (Spring MVC) の開発環境が移行できるか試行錯誤してみました。
結果的に割と使えるっぽい感じです。
Eclipse の方が色々揃ってる気がしますが、何しろ軽いです。
Eclipse で開発中のソースを移行する想定です。
普通にデバッグボタンを押して tomcat デバッグがしたい!## 環境
Windows10 64bit
VSCode 1.59.0
JDK 1.8(プロジェクト用) , OpenJDK 11(Javaの拡張機能用)
maven 3.6.3
tomcat 7 (古い…)## 準備
#### VSCode のインストールhttps://code.visualstudio.com/download
https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja
#### Javaの拡張機能のインストール
https://marketplace.visualstudio.com/item
並列処理(マルチスレッド)についての備忘録③
## コレクションの注意点
– 拡張for文を用いてremove()メソッドで要素の削除をするとConcurrentModificationException例外が発生する
– 反復処理中にコレクションの変更の可能性がある場合は、例外を投げる仕様“`java
package cp8.no7;import java.util.HashMap;
import java.util.Map;public class Main {
public static void main(String[] args) {
Map
map = new HashMap<>();
map.put(1, “test1”);
map.put(2, “test2”);
map.put(3, “test3”);// 例外が発生する(ConcurrentModificationException)
for (Integer key : map.keySet()) {
map.remove(key);
}// 順番に一つずつ
並列処理(マルチスレッド)についての備忘録②
## スレッドの状態
– start()メソッドが呼ばれると実行可能状態(スレッドが作成され、実行を待っている)に移る
– スレッドが実行される実行状態に次に移る。このときrun()メソッドが実行される
– run()メソッドが終わり、終了する※一つのスレッドに対して2回以上start()メソッドは実行できない→IllegalThreadStateExceptionが発生する
## スレッドの優先度
– スレッドには実行の優先順番が存在し、getPriority()メソッドで取得できる
– setPriority()メソッドで優先順位を変更できる## スレッド制御
– sleep()メソッド→このメソッドを実行したスレッドはミリ秒休止する
– interrupt()メソッド→休止中のスレッドに割り込む“`java
package cp8.no4;public class Main {
public static void main(String[] args) {
Thread threadA = new Thread(() -> {
System
並列処理(マルチスレッド)についての備忘録①
## スレッドとは
– プログラムを実行した処理の最小単位
– javaコマンドを実行すると新しいスレッドを作成し、そのスレッド上で指定したクラスのmain()メソッドを実行している## スレッドを作成する方法
#### Threadクラスを継承してサブクラスを定義
– run()メソッドをオーバーライド
– メインメソッド内でstart()メソッドを実行“`java
package cp8.no1;public class Main {
public static void main(String[] args) {
// スレッドの作成
ThreadA threadA = new ThreadA();
ThreadB threadB = new ThreadB();// スレッドの実行開始
threadA.start();
threadB.start();
}
}// 1つめのクラス(Threadクラスを継承)
class ThreadA extends Thread {@Override
public void run
[Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ (2)
[前回](https://qiita.com/regaeve/items/f5863d7d059782f9c2a9)はlambdaでeventを受け取るところまでやりました。
今回はAPI gatewayとの連携をやっていきます。(S3は次回で。。疲れちゃった。)
# 環境
– windows 10
– java11
– gradle
– intelij idea community# API gatewayからlambdaを呼び出す
## API gatewayでAPIを構築する
1. AWSコンソールから`サービス`⇒`ネットワーキングとコンテンツ配信`⇒`API gateway`を選択
![スクリーンショット 2021-08-12 170811.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240124/b31f1a24-ebb8-6f43-acf9-bd6467639f87.png)1. `APIを作成`⇒REST APIを`構築`を選択(僕はプライベートじゃない方で作りました
Spring 処理を定期的に実行する
@Scheduledを使ってメソッドを定期的に動かす実装をしたので備忘録として
####実装自体はとても簡単!
[@SpringBootApplication](https://spring.pleiades.io/spring-boot/docs/current/reference/html/using.html#using.auto-configuration)アノテーションが使用(ルーティング処理)されているアプリケーションクラスに
※Springでよく使うアノテーションまとめ(見やすかったのでリンク)→https://www.sria.co.jp/blog/2021/06/5712/
“`MyApplication.java
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}}
“`@En
ぼくたちのKotlinにはonEachがある
#Javaでたまに見る
“`java
Listupdated = list.stream().map(ele -> {
ele.setFoo(“bar”);
return ele;
}).collect(Collectors.toList());
“`
なるほど、
1. listの各要素のプロパティを更新
2. **変更後の要素そのもの**を格納したリストを返す
ということがやりたい訳ですね。**…コットリ~~~~~ン!!!!!!!**
# KotlinにはonEachがある
“`kotlin
val updated = list.onEach{ ele -> ele.setFoo(“bar”) } // { it.setFoo(“bar”) } でもイケる
“`
####Kotlinの世界に来たら1行や!!
**onEach** は返り値ナシ相当の `forEach` とは違い、実行後にメソッド呼び出し元のcollectionのインスタンス(の参照)を返してくれます。**スゴイ・ステキ**#####Kotlinにもmap
【Java入門】Handling Exceptions(例外処理)
![2021-08-12_14h33_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/a72b8d6c-edb3-23e0-b02e-0f1dc79baafd.png)
#もくじ
>**1,Handling Exceptions
2,Another example
3,Using a finally Block
4,Catching FileNotFoundException
5,Throwing Your Own Exceptions**#1, Handling Exceptions
**Here’s a program that divides two number and uses a try/catch statement to catch an exception if the second number turns out to be zero.**
“`java:Main.java
public class Main {public static v
【画像処理解説】判別分析法(Javaソース付き)
#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。#判別分析法とは?
二値化のしきい値を自動で決める手法の一つです。
別名として大津の二値化という名称もよく知られています。どういう方法かというと、二値化した時の画像の白黒のバランスが良くなるように計算します。
具体的には白画素領域と黒画素領域のクラス内分散を小さく、かつ、クラス間分散を大きくするようにしてくれます。
画像ヒストグラムを想像するとわかりやすいと思います。#画像ヒストグラムとは?
画像ヒストグラムとは画像内の画素数を、画素値ごとにカウントしたグラフです。
グレースケール画像の場合、横軸が0から255になり、縦軸がそれぞれの画素数です。
つまり、山が右寄りなら明るい画像、左寄りならば暗い画像となります。
これを知っていると、イメージがしやすくなるので覚えておくことをお勧めします。二値化というのは、画像ヒストグラム状に一本の縦線を引くという処理です。
引いたうえで、線の左は黒、右は白にしてしまうとい
VSCodeでTomcat for Javaが起動できない
#vscodeでTomcat for javaが起動できない
Tomcat for Java で下記のようなエラーが出て解決策を見つけたので書きます。
![スクリーンショット (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/d1c0c54e-9c96-4927-6141-924ffb092ad5.png)
これは、java.home(vscodeの設定)のjavaファイルが**OS(C:)**の下に置いていないのが、原因です。
windowsのファイルパスがTomcatサーバーでうまく読み込まれないのが主な原因みたいです。
>上記の文は、https://teratail.com/questions/291816より引用なので、
**<修正前>**
![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/9d2f5236-d5b1-c324-f20d-