- 1. LDAP再認証
- 2. JavaによるSwingを用いたオセロゲームの作成
- 3. 個人開発で、検索エンジン+レコメンドエンジン機能つきのRDB:「HottyDB(α版)」を開発しました!
- 4. springのRequestBodyにswaggerでexampleを付与
- 5. 現場で役立つシステム設計の原則を読んで
- 6. [Java] コレクション List Map Setについて
- 7. opensource COBOL 4J はじめの一歩
- 8. SpringBootにおけるバッチ処理
- 9. 【Spring Boot+JPA】レコードの作成・更新日時を扱う
- 10. STS環境構築
- 11. Vue.jsで簡単なチャットアプリを作ってみた
- 12. log4j の出力を rsyslog に食わせる
- 13. 【JAVA→Python】JAVAで書いた特定の文字をカウントするコードをPythonに書き換えてもらう【新人教育】
- 14. JUnit未経験者がテストコードを書ききるためにまずやったことと、初心者的悩みポイントを逆引き解説
- 15. Springでコンポーネントの起動・停止処理を実装する
- 16. ABC258A~Dの解答[Java]
- 17. 検査例外、非検査例外
- 18. IntelliJでVisual VMを使ってメモリリークを解消する
- 19. Swingでいろいろ作ってみる
- 20. Java+GradleでOpenCV(JavaCV)を使う
LDAP再認証
用途: SOSユーザのLDAP認証が失敗した際に認証を救済する。
戻り値によりエラーの状態を識別しているため、当処理は必ず例外処理内に記述してください。※ LDAPサーバのURI,ポート,ドメイン,組織情報等については各自設定をお願いいたします。
※ FRONT_SGはxmlファイルです。
xmlファイルのタグ参照は必須ではないため、
各プロパティに直接値を設定してください。・ LDAP認証プロパティ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1339882/67759b5d-713b-4f71-10eb-e9501fca71f4.png)・ソース
public static int authenticationLDAP_try(String strUserID, String strUserPass) {
Hashtable env = new Hashtable();
String strErrMsg = “”;
JavaによるSwingを用いたオセロゲームの作成
## 環境
Eclipse IDE 2022-03 (4.23.0)
MacBook Pro 2020
macOS Monterey バージョン12.4## 使用技術
Java (11.0.14.1)
Swing## プログラムの概要
ローカルのPC上で動作するオセロゲームアプリケーション。
プログラムで動作するコンピュータが相手となる。## 機能
– オセロゲームの基本的なアクション。(コマの配置、パス)
– 難易度の選択## 工夫した点
#### コンピュータがコマを置く場所を探索する際の動き
##### ①最初に考えたプログラム
自分の駒が置いてあるマスの周りにある敵の駒を探し、敵の駒があればその場所から再度周りの敵のコマ探す
##### ②工夫したプログラム
自分の駒が置いてあるマスの座標を取得し、周囲に敵の駒があった場合にその方向のマスの座標を連続してリストとして取得し最終地点に空きマスがあるか判定する①の場合、コードを見たときに直感的にわかりにくくバグの確認などが難しくなる可能性があったため、工夫をしました。
個人開発で、検索エンジン+レコメンドエンジン機能つきのRDB:「HottyDB(α版)」を開発しました!
# この記事の概要
個人開発で **HottyDB** という検索エンジンとレコメンドエンジンの機能を搭載したRDBを開発し、α版を公開しました!#### [>> HottyDBの公式サイト](https://hottydb.gitlab.io/site/)
https://hottydb.gitlab.io/site/ので、この記事では**HottyDB**の特徴的な機能やその使い方について紹介したいと思います!
# HottyDBとは?
![logo](https://hottydb.gitlab.io/site/facebook_cover_photo_2.png)
HottyDBとは、検索エンジンとレコメンドエンジンの機能を搭載したRDB(リレーショナルデータベース)です。
SQLを用いた通常のデータ操作に加え、文書の全文検索や検索結果の機械学習ランキング(MLR)・アイテムレコメンデーションのロジックなどを全て1つのソフトウェアで担います。
1つのソフトウェアでこれらを実現することで、面倒なデータ伝送システムの構築を一切不要にし、利用者は機械学習などの知識がなく
springのRequestBodyにswaggerでexampleを付与
たとえば、下記のようにStringに “`@RequestBody“` を付与してswagger-uiで参照すると入力例があまりユーザフレンドリーでない画面になる。
“`java
@RestController
public class SampleRestController {
@PostMapping(“/sample”)
public String sample(@RequestBody String body) {
…
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31934/0ef96b17-27c4-dc6a-fecc-7b3328f662eb.png)
なので、サンプルとなる適当なjsonなどをデフォルトで表示したい。
適当に“`build.gradle“`を作る。
“`gradle
plugins {
id ‘org.springframework.boot’ version ‘2.7.1’
id ‘io.spr
現場で役立つシステム設計の原則を読んで
[現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E5%BD%B9%E7%AB%8B%E3%81%A4%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A8%AD%E8%A8%88%E3%81%AE%E5%8E%9F%E5%89%87-%E3%80%9C%E5%A4%89%E6%9B%B4%E3%82%92%E6%A5%BD%E3%81%A7%E5%AE%89%E5%85%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AE%E5%AE%9F%E8%B7%B5%E6%8A%80%E6%B3%95-%E5%A2%97%E7%94%B0-%E4%BA%A8-ebook/dp/B073GSDBGT/ref=sr_1_1?__mk_ja_JP=%E3%82%A
[Java] コレクション List Map Setについて
### はじめに
Java学習中にでてきたコレクションについてまとめました### コレクションAPI
オブジェクトの集合を管理、操作するJava標準のAPI
オブジェクトの集合 → コレクション
コレクションの集合 → 要素よく使うAPI(予め要素の追加・削除などのメソッドが用意されている)
– List
– Map
– Set### List
配列同様インデックス番号順序に要素を管理するコレクション、要素の重複ok
List自体はインターフェースなのでListを実装している`ArrayList`や`LinkedList`などを使用(import)する必要がある
(`import java.util.ArrayList;`)
##### 配列との違い
配列:要素数の指定が必要
List:要素数の指定が必要なく要素の追加・削除するたびにサイズが増減##### 基本形
“`java
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;// ArrayListを生成
opensource COBOL 4J はじめの一歩
# はじめに
COBOLをお持ちのIT部門の方より、現在のCOBOL資産をJavaに移行したいという相談をよく聞きます。この記事では、そのような検討をしているご担当者様向けに、オープンソースソフトウェア(以下、OSS)の **opensource COBOL 4J** による COBOL to Java 変換を試す手順をご紹介します。https://github.com/opensourcecobol/opensourcecobol4j
# opensource COBOL 4Jとは
[opensource COBOL 4J](https://github.com/opensourcecobol/opensourcecobol4j) は、[OSSコンソーシアム](https://www.osscons.jp/)が開発して Github で公開しているOSSのCOBOLコンパイラです。COBOLコンパイルの過程で、COBOLを中間Javaソースに変換し、Javaコンパイラでバイトコードを生成する仕組みです。処理の流れは下図のとおりです。
![image.png](https://q
SpringBootにおけるバッチ処理
https://qiita.com/kazuki43zoo/items/47ed3b15077773f02448
上記記事を参考にさせていただきましたSpringBootで何らかのバッチ処理を作る際に高機能でジョブを制御する仕組みがあるSpringBatchを使いたくないようなケースがあります(例えばジョブスケジューラーなどを利用していてジョブは実行するだけにしたい場合など)。その場合はJavaコマンド実行してリターンコードで結果を返すようなシンプルな構造にしたい。
## やりたいこと
・SpringBootでコマンド実行して指定した処理を動かす
・機能ごとにクラスを分けてどの機能を動かすか?は引数で指定する
・ジョブの成功/失敗はコマンド実行のリターンコードで判断する### 構成
実行コマンドイメージ
“`sh
java exec:<実行したいクラス名> -jar filename.jar
“`コマンド実行した際の最初にコールするクラス
“`Java:Application.java
package com.example.springboot;imp
【Spring Boot+JPA】レコードの作成・更新日時を扱う
Spring Bootを使ってTODOアプリを作成している際に日付の登録や表示で少し詰まったので記録。
# 環境
* Java 11
* Spring Boot 2.7.0
* Maven 4.0.0
* MySQL 8.0.23# やりたいこと
Spring Data JPAを用いてEntityの保存時に自動で作成、更新日時が入るようにしたい# MySQLの設定確認
* todos table
“`
mysql> desc todos;
+————–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+————–+——+—–+———+—————-+
| id | int | NO | PRI | NULL |
STS環境構築
## 環境
|項目|バージョン|
|—-|—-|
|OS|Windows10|
|STS|4.15.1|## STSをダウンロード~起動
1. 下記から使用しているOSの「Spring Tools 4 for Eclipse」を押下する。
https://spring.io/tools1. ダウンロードしたjarファイルをダブルクリック、あるいはコマンドプロンプトで下記を実行し、STSを展開する。
1. “`sh:commond
java -jar {ダウンロードしたjarファイル}
# ex) java -jar ./spring-tool-suite-4-4.15.1.RELEASE-e4.24.0-win32.win32.x86_64.self-extracting.jar1. 展開したフォルダは適当なフォルダに格納する。
1. 「SpringToolSuite4.exe」を実行する。## STSを日本語化
2. 下記の「Pleiades プラグイン・ダウンロード」から使用しているOSを押下する。
https://
Vue.jsで簡単なチャットアプリを作ってみた
Vue.jsの学習の為、チャットアプリを作成してみました。
Vue.jsの記法を学んだ後に、どのように成果物を作ればいいかの参考に少しでもなればと思い記事を作ってみました。実装はGitHubに上げております。
フロント(Vue.js)
https://github.com/tkNoPrivate/chat-project-front
サーバー(Java)
https://github.com/tkNoPrivate/chat-project-server## 構成
[Vueアプリ構成](#Vueアプリ構成)
[vuetify](#vuetify)
[ルーティング](#ルーティング)
[APIアクセス](#APIアクセス)
[エラー処理](#エラー処理)
[アプリ紹介](#アプリ紹介)
[まとめ](#まとめ)## Vueアプリ構成
![Vueアプリ構成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590579/16a1a56c-80ce-6c65-dca0-7b16a734a25
log4j の出力を rsyslog に食わせる
プロセス内から別のプロセスを呼ぶような jar があって、それぞれが同じファイルにログを出力する場合にサブプロセスからのログ出力が無視されそうな場合の対処として rsyslog を使いたい。
log4j には最初から syslog に出力するような Appender があるけれども単純にそれだけだとメッセージしか出力されずクラス名メソッド名などが拾えないのでどうにかしたい
## rsyslog を更新する
CentOS7,8では出力した構造化データを解析して云々するためのモジュール mmpstrucdata.so がインストールされないので更新する
https://www.rsyslog.com/rhelcentos-rpms/
“`
cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum install rsyslog
“`## rsyslog.conf を編集する
以下
“`
# 以下コメントアウトを解除する
$ModLoad imudp
$UDPServerR
【JAVA→Python】JAVAで書いた特定の文字をカウントするコードをPythonに書き換えてもらう【新人教育】
# JAVA研修を終えた新卒の子にPythonを教える
入社後研修が終わった新卒の子にとりあえず会社としてはわんぱくにもDjangoの本を渡して学習してもらおうという感じだったので(私の入社時もそうだった)Python自体を学んでもらってDjangoに取り組んでもらおうと思い独断で新人教育の機会をいただきました。
私自身が学習で文章題を解いた時にJAVAでコードを作成したので、せっかくなら新卒の子にPythonに変換してみてもらおうと思いコードを渡してみました。# 目次
[1.実際に渡したコード(JAVA)](#1-実際に渡したコード(JAVA))
[2.そう、それはDjango](#2-そう、それはDjango)
[3.あれこれ話しがあとに返ってきた解答](#3-あれこれ話しがあとに返ってきた解答)
[4.おわりに](#4-おわりに)# 1.実際に渡したコード(JAVA)
“`java:JAVA
import java.util.*;public class Main {
public static void main(String[] args) {
JUnit未経験者がテストコードを書ききるためにまずやったことと、初心者的悩みポイントを逆引き解説
# はじめに : ユニットテストを書いたことない頃の私の声
わかっているんです。知っているんです。ユニットテストを書いた方がいいのは。だけどさ何から始めればいいの?
どうやってテストコード追加するの?
なんかアノテーションがやたらあるのは知ってる。ただ使い方がわからん。
ていうか時間がない!書く時間というか、そもそも最初のキャッチアップの時間が!作れない!というのは数か月前までの私の心の声。
その後、ユニットテストを2つほど書いてみたところで、とりあえず上記のような心の声には「大丈夫だよ、これで始められるよ」と寄り添えるようになった気がします。
そこで– ユニットテストナニモワカラナイ・・から、どきどきしつつも挨拶ができるようになるくらいまでに何をしたか
– テストを書くにあたって最初に直面した「これってどうしたらいい・・・?」を逆引き解説※をまとめます。
※解説とか大層なことを言っていますが、初心者です。間違っているところや「もっとこう書いたらいいよ!」ということがあると思うのでぜひご意見お願いします
# 環境
– Windows10
– Eclipse ID
Springでコンポーネントの起動・停止処理を実装する
Springでコンポーネントの起動・停止処理(初期化・破棄処理)を実装する方法を調べてみました。
# SmartLifecycleを実装する
起動・停止処理という切り口の場合は、`SmartLifecycle`を利用するのが良さげっぽい。DIコンテナ起動時に`start`メソッドが呼び出され、DIコンテナ停止時に`stop`メソッドが呼び出される。
“`java
@Component
public class MyComponent implements SmartLifecycle {
private boolean active;@Override
public void start() {
System.out.println(“start ” + getClass());
this.active = true;
}@Override
public void stop() {
System.out.println(“stop ” + getClass());
this.active = false;
}
ABC258A~Dの解答[Java]
## はじめに
今回から自作ライブラリ(テンプレ)が他クラスにまとめられた書き方をしています。ご注意ください。
なお、今回用いたライブラリは最後にまとめてあります。適宜ご確認ください。では、コードを見ていきましょう。
## A – When?
問題文は[こちら](https://atcoder.jp/contests/abc258/tasks/abc258_a)実はprintfの書き方を知らなくて、全部条件分岐しました。
“`A.java
class Main{
public static void main(String[] args)throws IOException{
//テンプレ用オブジェクト
Library Sys = new Library();
//Nの受け取り
int N = Sys.readInt();
//22時台で0~9分の時用
if(N>=60&&N>=70){
Sys.out.println(“22:”+(N-60));
}
//22時台で10分以降の時用
else if(N>=60){
Sys.
検査例外、非検査例外
検査例外、非検査例外
非検査例外(RuntimeException)
try-catchでエラーを捕捉しなくてもよい。
というより、むしろすべきでない。
コードの書き方で起こるもの。検査例外(Exception配下のRuntimeException以外)
これは、必ずどこかでtry-catchしなくてはならない。
コードで防ぎようのないエラーだから。(正しくコードを書いていても起きるときには起きる。目的のファイルがない、SQLの接続がうまくいかなかったなど)それが発生するメソッド内でtry-catchしなくてもthrowsで、呼び出し元でエラーハンドリングすることができる。
IntelliJでVisual VMを使ってメモリリークを解消する
# はじめに
初めてメモリリークに遭遇したため、対処方法を勉強してみました。# 環境
+ IntelliJ IDEA 2021.1.2 (Community Edition)
+ Windows 10
+ Java11## メモリリークとは
Javaプログラムの実行中にJVMのヒープ・メモリが不足することにより、
OutOfMemoryエラーが発生し、プログラムの実行ができなくなる事象です。通常であればGC(ガベージコレクション)で不要なメモリの解放を行ってくれますが、
GCで削除できないリソースが存在すると、リソースを使い果たしてしまうということがあります。GCは不要になったオブジェクトを削除してくれますが、逆に不要扱いにならないオブジェクトがプログラムの実行のたびに増えていくと、GCで捨てられるものがないために利用できるヒープ領域がどんどん減っていきます。不要扱いにならないオブジェクトを見つけ出すことがメモリリークの解消方法と言えそうです。
# 対応方法
今回はIntelliJ公式のチュートリアルに沿って実践してみます。
https://pleiades.io/h
Swingでいろいろ作ってみる
# Swingでいろいろ作ってみます
# 事前学習とまとめ
http://wisdom.sakura.ne.jp/system/java/awt/Gjava8.html
“`Java
repaint();
“`
を実行することで1. paint()を再度呼び出し
を実行します。
背景色のぬりつぶしをなくすにはupdate()をオーバーライドして“`Java
public void update(Graphics g) {
paint(g);
}
“`
に変更するらしい。マウスイベントは抽象クラスMouseListenerに対し処理内容を記述すればよい。ただし、抽象クラスのためすべて定義が必要。
“`Java
public void mousePressed(MouseEvent me) {}
public void mouseClicked(MouseEvent me) {}
public void mouseEntered(MouseEvent me) {}
public void mouseExited(MouseEven
Java+GradleでOpenCV(JavaCV)を使う
# 前提
Gradle を使って Java のアプリケーションを作成します。
Gradle のインストール方法、基本的な使い方などについては記載しません。筆者の実行環境は次の通りです。
“`
$ gradle –version————————————————————
Gradle 7.4.2
————————————————————Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc264694cbcaa4b677f61041Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.11 (JetBrains s.r.o