- 0.0.1. Javaでメール受信
- 0.0.2. 廃止されたJavaアプレットをブラウザ外で動かしてみました
- 0.0.3. eclipseにおける「クリーン」とは
- 0.0.4. Spring4Shell:JavaのSpringフレームワークのゼロデイRCE脆弱性について解説します
- 0.0.5. gradle.ktsでMavenリポジトリにpublish
- 0.0.6. 【Java】Collectorインタフェースの使用方法
- 0.0.7. 「マイクロサービスパターン」の復習 4章
- 0.0.8. コンピュータとオセロ対戦50 ~行列計算~
- 0.0.9. SE 1年目で読んだ技術書68冊+α
- 0.0.10. Spring4Shellなんてあるんですか?
- 0.0.11. 【JUnit】ローカルでテスト成功するのにGitLabCIでは失敗する時の調べ方
- 0.0.12. Spring Batchを業務で使ってハマったこと
- 0.0.13. CentOS-7 の OpenJDK-8 を 11 に
- 0.0.14. 予定管理アプリを作ってみた
- 0.0.15. 春から大学生(情報・工学)の方へ~プログラミング入門8~(JDK(Java Development Kit)の中身を覗いてみた)
- 0.0.16. 【Spring】その1:クイックスタート
- 0.0.17. [Java:forループを使った配列]forループが終わった時に、変数に配列の値が適用される。
- 1. forループによるスコア集計のコードサンプル
Javaでメール受信
# 概要
[Apache James](https://james.apache.org/)を使うサンプル。Jamesはかなり高機能なようですが、今回はメール受信して独自に処理する必要があったので、受信してログ出すだけの最小サンプル。
# Apache James
Javaで実装されているメールサーバ。SMTPやIMAPなどに対応しているようです。「Mailet」を実装することでメールの独自処理を行うことができます。
# 実装
[https://github.com/YasunoriHigashiyama/custom-james-assembly-sample](https://github.com/YasunoriHigashiyama/custom-james-assembly-sample)
廃止されたJavaアプレットをブラウザ外で動かしてみました
# はじめに
本投稿の内容は、ブラウザ上でJavaアプレットを動かすものではありません。現状として私は何度か繰り返し使う可能性が高い方法です。なのに忘れそうです。
ここにメモしておきます。# 環境および前提
Windows10.この方法ではJavaアプレット本体のソースが不可欠です。
今回は、動かしたいJavaアプレットが載っているページの管理人様が、github上でアプレットの[本体であるソース](https://github.com/edpegg/CutTheKnot-Java)を公開していました。
(あまり公開されているものとは思いません。が、今回のケースに関しては公開することで、Javaアプレットの廃止に対応できないことを補う意図があったそうです。非公開だけどどうしても使いたいなら、管理人様にお願いすることになるのかもしれません。)また、JavaがPCにインストールされていることが必要です。
今回の環境は下記。
“`
java version “1.8.0_131”
Java(TM) SE Runtime Environment (build 1.8.0_13
eclipseにおける「クリーン」とは
■まとめるきっかけ
・原因不明のエラーで悩まされて、サーバーをクリーンすると解決したという場面が何度かあり、真剣にクリーンの機能について調べ、利用するタイミングを確認しておきたい。
■ここでまとめる機能
・プロジェクトのクリーン
・サーバーのクリーン
・リフレッシュそれぞれの概要と、実行タイミングを記載する。
■プロジェクトのクリーン
“全て”のビルド成果物を削除し、
“全て”のモジュールをビルドしなおすこと。一部モジュールを修正した際に、自動でビルドが行われるが、あれは修正した箇所のみをビルドしなおしている。
クリーンビルドは、一旦ビルドによって、作成されたクラスファイルなどのファイルを削除し、全てのモジュールをビルドしなおす。●実行タイミング
サーバーで実行する前には一度は行うべき、依存関係にあるモジュールを特定することは難しいため。■リフレッシュ
Eclipse外で中身を変更した時、それをEclipse内に反映させたい時などに使う。
ビルドは行っていない。●実行タイミング
エ
Spring4Shell:JavaのSpringフレームワークのゼロデイRCE脆弱性について解説します
本記事は2022年3月31日(米国時間)/2022年4月1日(日本時間)に公開した英語ブログ[Spring4Shell: The zero-day RCE in the Spring Framework explained](https://snyk.io/blog/spring4shell-zero-day-rce-spring-framework-explained/)を日本語化した内容です。
[](https://snyk.io/jp)
2022年3月30日(米国時間)、Spring フレームワークに[リモートコード実行(RCE)可能な重大な脆弱性](https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751)が発見されました。具体
gradle.ktsでMavenリポジトリにpublish
gradle/kotlinでMavenリポジトリにpublish
===
日記環境
—
– Gradle 7.1
– Kotnin 1.6
– Nexus Repository Manager 3.36.0[サンプル](https://github.com/kyoya-p/samples/blob/master/2021/SNMP4J/Snmp4jUtils_KtJvm/build.gradle.kts)
build.gradle.kts に [Maven Plugin](https://docs.gradle.org/current/userguide/publishing_maven.html)を追加
—
https://docs.gradle.org/current/userguide/publishing_maven.htmlさらに、publish対象モジュールの名前はバージョンを定義
“`build.gradle.kts
plugins {
kotlin(“jvm”) version “1.5.31”
`maven-publish`
【Java】Collectorインタフェースの使用方法
# Collectorインタフェース
ストリーム外部のオブジェクトの状態を変更したい時に使用します。また、Collectorはストリームのリダクション操作のためのインターフェースです。リダクション操作とは一連の入力要素を受け取り、結合操作を繰り返し適用することで、単一のサマリー結果を出力します。例えば、一連の数値の合計や、最大値の合計値などを求めることが挙げられます。# なぜ必要なのか?
副作用がある処理の問題を解決できるのがCollectorインターフェースです。副作用のある処理とは、同じメソッドでもタイミングによって結果が変わってくる処理のことです。例えば、外部のオブジェクトにラムダ式の内部でアクセスする場合、そのオブジェクトは実質的にfinalとして扱われます。そのため、変数が保持している参照を変更していないかはコンパラーはチェックしていますが、参照先のオブジェクトが持つ値を変更しているかどうかはチェックしません。そのため、参照先のオブジェクトが持つ値を変更してもコンパイルエラーにはなりません。このような、副作用のある処理を解決するのがCollectorインターフェースなので
「マイクロサービスパターン」の復習 4章
## 概要
– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく
http://www.javareading.com/bof/
## 4章 サーガによるトランザクションの管理
– マイクロサービスでトランザクションをどう扱うかの話
– マイクロサービスアーキテクチャでは、多数のサービスがあり、それぞれが自分用のデータベースをもっている。
– ではデータの整合性はどうやって維持するのか?### 分散トランザクション
– 従来、分散アーキテクチャでは、分散トランザクションが唯一の選択肢かのごとく言われてきた
– 利点
– 単一データベースとプログラミングモデルが変わらない
– ACIDについても、単一データベースと同様に期待できる
– 欠点
– 可用性が低い
– すべてのサービスが生きてないといけないので
– 同期的
– そもそもそういうプログラミングモデルなので
– サポートがない場合もある
– RDBMS以外が入ると、サポートされてない方
コンピュータとオセロ対戦50 ~行列計算~
https://qiita.com/tt_and_tk/items/068f2afde6db637e189f
[前回](https://qiita.com/tt_and_tk/items/1f784fbd9d1af6b03415)
# 今回の目標
新しい深層学習ライブラリの作成のため、基本となるMatrixクラスを作成する。
# ここから本編
これまでの方法では、強いオセロを作ることが難しいことが前回の実験で分かりました。
そのためこれからは深層強化学習、DQNと呼ばれるものをやってみようと思います。
しかし私は強化学習の経験がなく、また、今まで使用していた自作ライブラリは実行速度の点で不安があります。
そこで、強化学習について勉強する傍ら、ライブラリの作り直しを行うことにしました。
この記事では、ライブラリ内で使用する基本データ型となるMatrixクラスを作成します。少し話は変わりますが、[これらの記事](https://qiita.com/tt_and_tk/items/068f2afde6db637e189f#%E3%83%A9%E3%82%A4%E3%83%96%E3%
SE 1年目で読んだ技術書68冊+α
# 概要
社会人1年目が終わるので、この1年間で読んだ本のうち技術寄りの68冊と、Udemy 10本をざっくり紹介します。## 説明
オススメ度、難易度を5段階で付けています。「技術寄りのスキルを地道に付けたいSE1年目」を想定しており、情報系学部生やWeb系エンジニア1年目へのオススメ度とは異なります。また、SEでも「コードは書きたくないです。上流だけやって数年でコンサルに転職したいです」というキャリア観の人へのオススメ度とも異なります。
難易度観はIT業界新卒平均の感覚と上下にズレていることがあります。
参考までに、1年前時点の自分です。
– 情報系修士卒(基礎理論系)
– 応用情報は持ってる
– CやPythonは平凡程度にできる。関数型言語の方が得意
– フロントエンドは初心者
– Japanese Traditional SIer読んだ本はジャンルごとに時系列で掲載していますが、「この順で読むのがいい」になっていないこともあります。
たまたま難易度が前後していることもありますし、「読み終えた技術書とやり終えたUdemy」のみ紹介しているため、途中で別の学習が挟ま
Spring4Shellなんてあるんですか?
本記事は2022年3月30日(米国時間)/2022年3月31日(日本時間)に公開した英語ブログ[Is There any Such Thing as Spring4Shell?](https://snyk.io/blog/is-there-such-a-thing-as-spring4shell/)を日本語化した内容です。
**更新履歴:**
* 日本時間 2022年4月1日8時ごろ 「Spring4Shellの修正」の項を追加
[](https://snyk.io/jp)
# Spring4Shellなんてあるんですか?
米国時間の3月30日の未明、同僚の[DeveloperSteve](https://twitter.com/DeveloperSteve)がslackチャンネルに「なあ、これ見たことあ
【JUnit】ローカルでテスト成功するのにGitLabCIでは失敗する時の調べ方
# 結論
1. GitLab CIで実行したテストのレポートを表示する
1. レポートを元に原因突き止めて修正する!## 前提
GitLabのfeatureブランチへpushすると、テストで失敗していてbuildできない。
ローカルでは全てテスト成功しているのに、、
### 環境
– Mac
– GitLab 14.10.0
– Java 11
– JUnit 5.8.1
– ビルドツール `Gradle`### テスト失敗時の詳細
– ローカル
– `プロジェクト/build/reports/tests/test/index.html` で詳細が見れる
– リモート(GitLabCI)
– どこで見るの??# GitLab上でテストレポートを確認したい
## 1 ) `.gitlab-ci.yml` に追記“`yaml:.gitlab-ci.yml(一部抜粋)
gradle_test:
stage: test
script:
– gradle test
artifacts:
paths:
– build
Spring Batchを業務で使ってハマったこと
# はじめに
業務で開発しているオンライン申請系のシステムで、[Spring Batch](https://docs.spring.io/spring-batch/docs/current/reference/html/index.html)を利用しています。
Spring Batchを本格的に使ったのは初めてだったのですが、バッチアプリケーションに必要な機能が豊富に提供されており、かなり便利だと感じました。
しかし、仕組みをちゃんと知らずに使ってハマった点があったので、書いてみます。### 実行環境
– Java11
– Spring Boot 2.4.3
– Spring Batch 4.3.1
– PostgreSQL 42.2.18
– MyBatis 3.5.5# 使い方
Spring Batchには、バッチ処理(ジョブ)を起動する方法として、2つの方法がサポートされています。
– [コマンドラインからジョブを実行する](https://spring.pleiades.io/spring-batch/docs/current/reference/html/job.ht
CentOS-7 の OpenJDK-8 を 11 に
既に 8 がインストールされている環境を 11 にする。
バージョンを確認
“`
$ java -version
openjdk version “1.8.0_322”
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
“`11 をインストール
“`
$ sudo yum install java-11-openjdk
“`このままでは、まだ 8 を見ている状態なので、11 に切り替え
“`
$ sudo alternatives –config java
“`バージョンを確認
“`
$ java -version
openjdk version “11.0.14.1” 2022-02-08 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.14.1+1-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1
予定管理アプリを作ってみた
Wenサイト: https://plan.towelman.server-on.net/sign_in
# 動機
自分で予定管理をしようと思ったときに一つのプロジェクトごとに、複数人で管理できるような物が欲しくなり探してもこれといってピンとくるものがなかったため自分で作ってみようと思った。# 大雑把な機能
基本予定をプロジェクト単位で分ける。そしてプロジェクトは2種類ある。一つ目は複数人で管理・参画でき、「やること」の担当をそれぞれに割り振ることができて、期間を指定する「パブリックプロジェクト」である。基本的になにかの目的をなすための計画を管理するのに使うプロジェクトで使い方次第で1人でも複数人でも使えるようになっている。また、複数人で使い、自分以外にも計画に変更を加えさせたい人がいる場合はその人を管理者にすることによって実現可能である。そして二つ目は自分専用の期間を指定できない「プライベートプロジェクト」である。これはなにかの目的をなすための計画ではなく、日常で自分がやらないといけない「やること」を管理するプロジェクトだ。このプロジェクトで「入浴する」、「掃除する」などの「
春から大学生(情報・工学)の方へ~プログラミング入門8~(JDK(Java Development Kit)の中身を覗いてみた)
# 第1回
春から大学生(情報・工学)の方へ~プログラミング入門~(C言語ってなあに?)https://qiita.com/HaaSAtC/items/490d066bdbec8441a2f6
# JDK(Java Development Kit)とは
プログラミング言語Javaを実行するために必要な様々なアプリケーション(コンパイラ、仮想マシンなど)をまとめたもの。プログラムを書き込んで実行する「エディタ」「IDE」と連動させて用いる。# インストール場所(Windows)
単体でインストールした場合、基本的にはPC//ローカルディスクC//Program Filesなど?
Eclipse Pleiadesでまとめてインストールした場合、PC//ローカルディスク//pleiades~~//java内に各バージョン(6,7,8,11,17)がフォルダごとに分けられてインストールされる
今回はJDK17(Eclipse Pleiades)の中身について書きます
他のバージョンだと多少違う部分はあります。# binフ
【Spring】その1:クイックスタート
## Quickstart Guide
https://spring.io/quickstart## Step 1: Start a new Spring Boot project
https://start.spring.io/Add Dependenciesを選択、webと打ちSpring Webを選択。
zipファイルがダウンロードされるので好きなディレクトリで解凍。
(デフォルトは`demo.zip`)## Step 2: Add your code
VScodeなどのIDEで`demo`を開き、`src/main/java/com/example/demo`の`DemoApplication.java`を編集。
“`java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframew
[Java:forループを使った配列]forループが終わった時に、変数に配列の値が適用される。
forループによるスコア集計のコードサンプル
“`java
public class Main {
public static void main(String[] args) {
int[] scores = {40, 50, 70, 80, 30};
int sum = 0;
for (int i = 0; i < scores.length; i++) { sum += scores[i]; } int avg = sum / scores.length; System.out.println("合計" + sum); System.out.println("平均" + avg); } } ``` 表示結果は 合計270 平均54 になります。変数sumに配列の値が入るタイミング
forを使用した場合、変数sumに配列scoresの値が適応されるタイミングはforループが終了したときです。
なので、平均点の計算は、forループが終了した後に記述しなけれ
【Java】SpringBootでPaging&Sortしてみた。
# 参考
https://reflectoring.io/spring-boot-paging/
# pom.xml
“`xml
org.springframework.boot
spring-boot-starter-data-jpa
“`# Repository
“`java
@Repository
public interface SampleUserRepository
extends CrudRepository, JpaSpecificationExecutor {
}
“`# Service
“`java
public SampleUserSearchResponse search(SampleUserSearchRequest request) {
Specif
フランスに修行に行けなくなった料理人が、未経験でIT業界にジョブチェンジした話。
# 自己紹介
はじめまして。
未経験からエンジニアに転職した『ゆうき』です!!
私は現在都内のSESで勤務をしており、Javaをメインに業務を行っております。
私が、IT業界に入るまでの経験を記事にしていきたいと思います。## フランス修行に行くことを決意した料理人が飲食業界を離れた理由
私は小学生の頃から『コックさんになる!!』と発言していたほど、調理師になるのが夢でした。
その夢はずっと変わらず専門学校も地元の調理の専門学校に行き、
新卒で入社したレストランは、
西麻布にあるミシュラン1つ星のレストランでした。4年ほど飲食経験を積んだ時に、フランスに修行に行きたいという気持ちが強くなり、
フランス修業に行くことを2019年の年末に決意しました。しかし、決意を固めた2020年にコロナウイルスが大流行し、
私はフランス行きをストップするしかありませんでした。1年間以上足止めを食らってる中で、飲食業界のどんどん変わっていく姿にものすごい不安を感じました。
また私は2021年に結婚をし、将来のことを考え悩み抜いた末、飲食業界から離れることを決意しました。## なぜ飲
ClojureのソースをNetBeansでコンパイルしてみた
Clojureはじめたばかりの初心者です。
ソースを読むのが好きなので、自分でコンパイルしてNetBeans内で動かしてみたいなぁと思いやってみました。JavaはJava8がインストールされている必要があります。
(ClojureのコンパイルにはJava8以上が必要との事です)
NetBeansは 12.0を使っています。ちなみにClojureのソースをダウンロードしてきて、mavenを使ったら、簡単にコンパイルできました。しかし、それではNetBeansで、ブレークポイントをかけたり、ステップ実行をしたりできなかった(やり方がわからなかった)ので、別の方法でコンパイルしてみようと思いました。
まず、NetBeansで、File > NewProjectから、Java with Ant > Java Applicationを選択し、作成します。
Clojureの最新ソースを落としてきて、clojure-master/src/jvmの下のJavaソース一式を先ほど作成したプロジェクトのsrcディレクトリにコピーしました。
NetBeansでコンパイルしてみたら、あっさり成功。