- 0.0.1. ドメイン駆動設計入門 Chapter 2 システム固有の値を表現する「値オブジェクト」のまとめと感想
- 0.0.2. javaでダウンロードzipファイルを一時保存せず処理
- 0.0.3. Spring-Retry 攻略記
- 0.0.4. # JAVAカスタム暗号化アルゴリズム(1)
- 0.0.5. Java: Threadおさらい
- 0.0.6. MyBatisをNoXMLで使う
- 0.0.7. JavaのOptional型について
- 0.0.8. HacobuneでSpringBoot(Java)起動してみた
- 0.0.9. Java学習 ブラックジャック作ってみた
- 0.0.10. 基盤地図情報からLOD1のCityGMLを作ってみる。
- 0.0.11. Java Word文書でコメントを挿入
- 1. はじめに
- 2. Spire.Doc for Javaとは?
- 3. はじめに
- 4. Spire.Doc for Javaとは?
ドメイン駆動設計入門 Chapter 2 システム固有の値を表現する「値オブジェクト」のまとめと感想
[ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本](https://www.seshop.com/product/detail/20675)の輪読会に参加しています。筆者は「Chapter 2 システム固有の値を表現する『値オブジェクト』」の発表を担当することになったので、自分なりに解釈した内容と感想をまとめました。
https://www.seshop.com/product/detail/20675
本書で取り扱われているサンプルコードのプログラミング言語はすべてC#が採用されています。しかし、筆者はC#に触れた経験がないため、本記事内におけるソースコードはすべてJavaを採用しました。
# こんなコードはありませんか?
アプリケーションを開発していると、StringやList, Mapといった標準のクラスをそのままメソッドの返却値として利用してしまうことがあります。
“`java
public String getFullName();
“`しかし、本章では、必要とされる処理にしたがって、そのシステムならではの値の表現があるはずだと説いてい
javaでダウンロードzipファイルを一時保存せず処理
javaでネットワーク上のzipファイルを取得する場合はローカルの適当なディレクトリに一時保存してから解凍して処理が多いと思われる。内部実装はともかく、java上でzipファイルのダウンロードから処理までを完結する方法について。
# 環境
* java 17# ソースコード
例として郵便番号(いわゆるken_all.csv)のzipファイルを読み込む。“`java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class ZipDownload {
public static void main(String[] args) throws IOException {
URL ur
Spring-Retry 攻略記
#はじめに
とある既存システムの改修でDBコネクション切れを契機とするエラーに対し、Spring-Retryを利用したリトライ処理の実装を行った。
その際に得られた知見・対応策を今後の覚書として残そうと思います。※既存システムに対する改修という性質故に、書き方としてはあまり良くないかもしれないのはご容赦を。。。
#Spring-Retry導入
build.gradleに下記の依存関係を追加でOK“`build.gradle
compile(‘org.springframework.retry:spring-retry’)
compile(‘org.springframework.boot:spring-boot-starter-aop’)
“`#実装
###1. EnableRetry
対象のSpringアプリケーションのエントリークラス(@SpringBootApplication)に@EnableRetryを追記“`RetrySampleApplication.java
package retrysample.appimport org.springfr
# JAVAカスタム暗号化アルゴリズム(1)
# JAVAカスタム暗号化アルゴリズム(1)
### 1.基本知
>1. ビットとバイトの関係
> – 1)ビットは、メモリ内の最小のストレージユニットであり、0または1のいずれかです.
> – 2)1バイト= 8ビット
> – 3)バイトはJavaで最小のストレージユニットです.
>2. メモリ内のint型の格納方法[(サンプル)](#jump1):
> – Javaのint型の長さは32ビットです
> – 最上位ビットは符号ビットです.1は負の数を意味し、0は正の数を意味します.
> – したがって、Javaのint型の値の範囲は(- 2 ^ 31)〜(2 ^ 31)です.
> – 数値は2の補数の形でメモリに保存されます.
>3. バイナリの基本的な知識
> – 元の数の場合、最上位ビットは符号ビットであり、残りのビットは数値の絶対値の2進数です.
> – シフト操作「>>」、右シフト.
> – ビット単位のANDで「&」を計算します.2つのビットが同時に1の場合、結果は
Java: Threadおさらい
## 基礎知識
### Thread2種類
“`SimpleThread.java
package playground;public class SimpleThread extends Thread {
public void run() {
for (int i = 0; i < 10; i++) { try { Thread.sleep(10000L); // 10秒停止する System.out.println("スレッドで動いています:" + (i+1) +"回目"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } ``` ```SimpleThread2.java package playground; public class Si
MyBatisをNoXMLで使う
# 目的
MyBatisは通常XMLで各種定義を行いますが、XMLを使わないことも可能です。
# 手順
## SqlSessionFactoryの取得
### CDI+JNDIの場合
Java EEサーバ上で動かす場合はJNDIルックアップと組み合わせます。JNDI定義は例えば次の記事が参考になります。
https://qiita.com/teruq/items/7705c2f82e17a7e17d12
“`
@Resource(lookup = “jdbc/********”) // JNDI名
private DataSource dataSource;@Produces
public SqlSessionFactory produceSQLSessionFactory() {
var config = new Configuration();
config.addMappers(“package.to.mappers”); // Mapperクラスが存在するパッケージ
config
JavaのOptional型について
## Optional型
本日はJavaのOptional型について書こうと思います。
まずjavaのOptional型について、一体どういうものなのか説明します。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html
こちらの情報を参照します。>null以外の値が含まれている場合も含まれていない場合もあるコンテナ・オブジェクトです。値が存在する場合、isPresent()はtrueを返し、get()は値を返します。
みてるだけではよくわからないのでCodeで記述してみます。
リクエストからidを受け取り、User情報を取得する受け口です。“`java:UserController,java
@GetMapping(“/{id}”)
public OptionaluserFindById(@PathVariable(“id”) Integer id) {
return userService.findAllByIdUsers(id);
HacobuneでSpringBoot(Java)起動してみた
Hacobune(PaaS)の使い方を理解するために、シンプルなSpringBootアプリを起動してみました。
## 参考にした情報
* Hacobuneのマニュアル
https://manual.c1.hacobuneapp.com/docs* Hacobuneオープンβ版提供開始発表会
動画後半の設定の流れが参考になりました。
## 起動してみた流れ
### アカウント開設
https://cloud.sakura.ad.jp### ログイン後のコントロールパネル
以下のアイコンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25604/d5b5ee31-3dc4-9ae5-039f-09d5f906d11f.png)### Hacobuneのコントロール画面から設定
プロジェクト作成し、アプリケーションにて新規作成ボタンを押して以下を設定。![image.p
Java学習 ブラックジャック作ってみた
こんにちは。
Javaの基礎文法の学習を進めていく中でそろそろなにか形のあるものを作ってみようということで、コンソールで動く簡単なブラックジャックゲームを作ってみた。↓GitHub URL
https://github.com/hananokensho/practiceBlackJack今回作ってみて感じたこと
・コンストラクタが優秀
・インスタンスが実体というのがよくわからなかったが理解が深まった。Mainクラスだけ載せておきます。
“`Java:Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Deck deck = new Deck(); //山札
Player player = new Player(); //プレイヤー
Dealer dealer = new Dealer(); //ディーラー(相手)
Scanner sc = new Sca
基盤地図情報からLOD1のCityGMLを作ってみる。
#1. 概要
[基盤地図情報](https://www.gsi.go.jp/kiban/)の建物ポリゴンから、[citygml4j](https://github.com/citygml4j/citygml4j)を使って、LOD1のCityGMLを作ってみました。
建物の高さの情報は、1mメッシュのDSMとDEMが公開されている[兵庫県高精度3次元データ](https://web.pref.hyogo.lg.jp/kk26/hyogo-geo.html)を使用しています。
なお、ソースコード一式を[こちら](https://github.com/termat/citygml_lod1)にアップしています。
![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55735/60920cb4-503e-c8de-5892-c56984f51539.jpeg)#2.建物情報の抽出
今回は、神戸市三宮周辺のCityGMLを作ってみました。
[基盤地図情報](https://www.gsi.go.jp/k
Java Word文書でコメントを挿入
はじめに
Word文書でコメントを挿入することで、気になる文章について意見や、修正を希望する箇所などを記載することができます。今回はSpire.Doc for Javaというライブラリを活用して、Word文書でコメントを挿入する方法を紹介します。
Spire.Doc for Javaとは?
Spire. Doc for Javaは、Eiceblue社が開発され、開発者が JavaプラットホームでWordのドキュメントを迅速かつ高品質で作成・編集・変換・印刷するために設計された専門的なDoc処理AP
【Java】【Spring】Pointcut is not well-formed: expecting ‘name pattern’ エラーの解決法
#はじめに
今回は`Pointcut is not well-formed: expecting ‘name pattern’`というエラーにハマったので、メモしておきます。#エラーコード
“`java
package com.example.demo.aspect;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;import lombok.extern.slf4j.Slf4j;
@Aspect
@Component
@Slf4j
public class LogAspect {/**
* サービスの実行前にログ出力する
* 対象:[UserService]をクラス名に含んでいる
【初心者向け】SpringBootにおける単体テストの基本事項(ログ、例外処理)
前回の記事で書ききれなかった部分について書いていきます。
前回の記事https://qiita.com/Shukupon/items/373939bc0dea4f25b007
コード
https://github.com/Shukupon/TestTemplate## 前提条件(前回と同じ)
Java11
SpringBoot 2.5.6
Junit5
H2
MyBatis
REST API今回は以下の項目についてまとめていきます。
– ログのテスト
– 例外のテスト## ログのテスト
ログのテストは標準出力の中身を取得してあげることになるのでまた少し特殊な書き方になります。
以下がテスト対象であるログを出力するコントローラークラスです。“`java
package com.example.demo.presentation.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotat
[java] 文字列を一文字ずつ取り出す方法案
色々プログラミングをしていてヒドい目にあったので、備忘録。
fc2にも書いたけど一応こっちにも。#文字式から文字を取り出すとき (仮)まとめ
##「1文字ずつ取り出すとき」を考えたい。
####substringクラスを使う方法をとりあえず考える。
というかこれしか今のところ知らない– ##1.substringクラス とは?
本来は、文字列を指定した範囲から範囲まで抜き出してくれるっぽい。
今回はそれを悪用?して1文字ずつ出力させる!– ##2.substringクラスの使い方
#####(参照する文字列).substring(a,b) //a,bには文字列の切り出したい部分のインデックスを選ぶ。
画像では、
(参照する文字列) = letter //midorisan が入ってる文字列。
(i,i+1) = 今回はfor分の中に入れてるので、一文字目から最後まで出力する感じ。
ってしてる。###### あと、文字列のインデックス(一文字ずつに振り分けた番号)は、0から始まるから注意!
例えば、mido って文字列だと、 m は
Kotlinの言語特性やJavaとの違い
## イントロダクション
かれこれ3年前からRailsエンジニアだったはずの私harakazu_nanfgは、どうやらこの11月からサーバーサイドKotlinを使ったエンジニアになりそうなので、先日よりKotlinの学習を始めた。
また、学習本には「Kotlinハンズオン」を採用しており、この記事はそれらの前半を要約したものである。
ちなみに、私はC言語は好きだが、Javaに関しては何も知らない。
(なお、私は「JavaScriptとJava」は「メロンとメロンパン」くらい違うという比喩が好きである)## Kotlinとは?
2011年にチェコのJetBrain社によって開発されたプログラミング言語。
「Android = Kotlin」の印象が強い。
しかし、実際にはJava同様、サーバーサイドなどでも使用されている汎用性の高い言語である。## Kotlinの特徴
### Java
Java WordをHTMLに変換
はじめに
HyperText Markup Language、略してHTMLは、ハイパーテキストを記述するためのマークアップ言語の1つです。日常の仕事でWordをHTMLに変換する場合がよくあると思います。なので、今回はSpire.Doc for Javaというライブラリを活用して、WordをHTMLに変換する方法を紹介します。
Spire.Doc for Javaとは?
Spire. Doc for Javaは、Eiceblue社が開発され、開発者が JavaプラットホームでWordのドキュメン
[java入門]クラスの基礎
## クラスの基礎
#### クラス:
・プログラム実行のための処理をまとめたオブジェクト
・クラスの処理の中にメンバ変数や処理を実行するためのメソッドがある
class クラス名 { 実行処理 }####メンバ変数:
・クラス内で使用する変数
####メソッド:
・メンバ変数などを使用して行う処理を一まとめにしたもの####オブジェクト:
・オブジェクト指向のプログラミング言語では処理をまとめたクラスの実行には
そのクラスのオブジェクトを生成する必要がある。
・生成したオブジェクトからメンバ変数を参照したりメソッドを呼び出す。
class ClassSample {
メソッド宣言・定義
void methodSample(){ 実行処理 }}
オブジェクトの生成
classSample cl = new ClassSample();
メソッドの呼び出し
cl.methodSample();
・クラス名の後にオブジェクト名を記述。オブジェクトにはnew演算子を使用して
Couchbase Lite機能解説:クエリ④ 結果セット
Couchbase LiteのSELECTステートメントに対して返された結果セットを処理する方法を解説します。
結果セットの形式とその処理は、使用する`SelectResult`ステートメントのタイプによって異なります。結果セット形式には、以下が含まれます。
– `SelectResult.all`:すべてのプロパティ
– `SelectResult.expression(property( “name”))`:特定のプロパティ
– `SelectResult.expression(meta.id)`:ドキュメントIDのみ
– `SelectResult.expression(Function.count(Expression.all())).as( “mycount”)`:データ(ドキュメント)件数のみ
クエリの結果を処理するには、最初に`Query.execute`を使用してクエリを実行します。
クエリを実行すると、通常、結果の配列、つまり結果セットが返されます。
ドキュメントのプロパティを返すクエリの結果セットは配列です。
配列の各行は、検索条件(WHERE
「Eclipseでjava8を指定したのにjavaFXが使えないよ〜〜」な人へ
「Preferences」(設定)→「Java」→「コンパイラー」の「コンパイラー準拠レベル」
を
1.8に下げると嬉しいかも。
Processingを利用して魚群再現をする(1)
#魚群再現事始め
近年盛んになりつつあるProcessingを用いたジェネラティブアートの世界ですが、
[某アニメ](https://aquatope-anime.com/)を視聴して魚群の動きを再現することが可能かを検証するべく、実際に実装してみることにしました。実行環境についてはProcessing3.0を利用していきます。#群体シミュレーションについて
群体シミュレーションをする場合であれば、Boidsアルゴリズムを利用することが一般的で、Boidsアルゴリズムの実装についてはhttps://qiita.com/odanny/items/e0c0a00e13c2b4839cec の記事を参考にしてもらうのが良いと思います。
簡単に説明すると、各オブジェクト間で– 分離 (Separation)
– 整列 (Alignment)
– 結合 (Cohesion)の三種類の力を働かせることになります。
本実装では、3種類の力に加えて、壁に対して拒絶間(斥力)が働くように実装していきます。#Fishクラスの実装
まずは、魚のクラスを実装していきます。
各変数はpri