vermeer-1977のブックマーク (166)

  • mvnコマンドで、ソースとJavadocのJARを取得する - CLOVER🍀

    最近、またMavenリポジトリを作ることになりまして。以前の反省を踏まえてdependency:go-offlineゴールを活用して作ろうと思ったのですが、そういえば、ソースとかJavadocとかも落とせた方がいいなぁと思って調べてみました。 Eclipseとかではなく、mvnコマンドを使用する前提で。EclipseとかIntelliJだと、設定でチェック入れればいいだけですからね。 結果から出すと、ソースのJARをダウンロードするには以下のゴールを使用すればよいようです。 dependency:sources http://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html $ mvn dependency:sources 続いて、JavadocのJARをダウンロードする場合は、こちらのゴールを。 depe

    mvnコマンドで、ソースとJavadocのJARを取得する - CLOVER🍀
  • Flywayのマイグレーションの管理を考えてみる(Spring Bootでのサンプル付き) - CLOVER🍀

    これは、なにをしたくて書いたもの? Flywayのマイグレーションをどう管理するのがいいのかなと悩んだことがあって、ちょっとまとめておこうかなと。 方針? Gitを使い、ブランチで開発 → マージする、といったフローを組んでいるチーム開発を背景にしています。 こういう感じで考えました。 マイグレーションファイルのバージョンは日付をベースにする 環境ごとにディレクトリを分ける DDL(DCLも?)とデータ(DML)でディレクトリを分ける (気になるなら)Out Of Orderを許可する ちょっとずつ書いていきます。 引用しているFlywayのドキュメントは、Flyway 10.17.2時点の情報で参照しています。 マイグレーションファイルのバージョンは日付をベースにする Flywayのドキュメントで、マイグレーションのページを見るとバージョニングされたマイグレーションファイル名の例で最初に

    Flywayのマイグレーションの管理を考えてみる(Spring Bootでのサンプル付き) - CLOVER🍀
  • Maven Surefire Plugin(Maven Failsafe Plugin)とJaCoCo Maven PluginとargLineと - CLOVER🍀

    これは、なにをしたくて書いたもの? JaCoCo Maven PluginのようなJavaVM引数を使うようなMavenプラグインと、Maven Surefire Plugin(Maven Failsafe Pluginも)のargLineを 一緒に使うとちょっとハマるのでメモとして。 Maven Surefire Plugin(Maven Failsafe Plugin)のargLine JaCoCo Maven Pluginのjacoco:prepare-agentを使うと、こんな感じでargLineJavaVM引数(具体的には-javaagent)を指定します。 [INFO] --- jacoco:0.8.12:prepare-agent (prepare-agent) @ jacoco-surefire-argline --- [INFO] argLine set to -jav

    Maven Surefire Plugin(Maven Failsafe Plugin)とJaCoCo Maven PluginとargLineと - CLOVER🍀
  • 【Java】シンプルなデータベースマイグレーションツール「flyway」を導入する - ほんじゃーねっと

    新しいチームでデータベースマイグレーションの仕組みが決まっていなかったので、flywayを導入してみた。 結論としては手軽で十分使えそう。 データベースマイグレーションとは 来のマイグレーションの意味とは異なるかもしれないが、 データベースマイグレーションが実際に意味するのは、 「プログラムのバージョンとデータベース構成のバージョンを合わせること」 だと捉えている。 例えば、 あるプロジェクトで仕様変更が発生して「商品マスタに分類6カラムを追加する」ということが必要な場合、 プログラム側が対応済みでもDBの商品マスタに分類6カラムが追加されていなければプログラムは動かない。 プログラムの変更と同時にデータベース構成が変更されるようにすることではじめて動作するようになる。 自分一人で開発している場合はローカルのデータベース構成を変更して、 初期設定用SQLにカラムを追加しておくだけで良いか

    【Java】シンプルなデータベースマイグレーションツール「flyway」を導入する - ほんじゃーねっと
  • RESTEasyでCORSの設定をFilterで行う - CLOVER🍀

    これは、なにをしたくて書いたもの? そういえば、Jakarta EE(Java EE)でCORSの設定をしたことがないなと思いまして。 実装方法はいろいろあると思うのですが、すでに用意されているものとかないのかなと思って少し見ていたら、RESTEasyにあったので 軽く試してみることにしました。 RESTEasyのCorsFilter CORS(オリジン間リソース共有)および使用するヘッダーについては、MDNを参照ということで。 オリジン間リソース共有 (CORS) - HTTP | MDN RESTEasyが提供するCorsFilterについてのドキュメントはこちらです。 Chapter 32. CORS ほぼ内容がありませんが。設定内容についてはJavadocを見てね、という感じです。 CorsFilter (RESTEasy 6.2.8.Final API) 設定をしたら、Appli

    RESTEasyでCORSの設定をFilterで行う - CLOVER🍀
  • Enumとてもつらい、でも負けない - エムスリーテックブログ

    列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2. switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi

    Enumとてもつらい、でも負けない - エムスリーテックブログ
    vermeer-1977
    vermeer-1977 2023/12/20
    1. 分岐条件をEnumに持たせる については、EnumSetをつかえば、上記の条件分岐毎ののtrue,falseを準備するよりは扱いやすくなるかな?と思った次第 参考URL https://qiita.com/suke_masa/items/bd242617a2b9bb773cbd [上級編]EnumSetの利用
  • Reactでコンポーネントを実装する際に意識している4つの話 - stmn tech blog

    こんにちは。フロントエンドエンジニアの渡邉です。 普段はReactTypeScriptを書いています。 今回は自分がコンポーネントを実装する際に意識していることについていくつか紹介できればなとおもいます。 ※ スタイリングに関して話すときはstyled-componentsを使用しています。 目次 はじめに 再利用性の高いコンポーネントを実装するために意識していること 共通のコンポーネントを作成する際は汎用性を意識する コンポーネントが知らなくてもいい情報を持たない(コンポーネント・構成編) コンポーネントが知らなくていい情報をもたない(コンポーネント・スタイル編) 無駄な描画を減らすために意識していること 状態に関係ないコンポーネントを混ぜない さいごに はじめに 今まで自分がReactを書いてきて、再利用性が低いコンポーネントを実装してしまったり、コンポーネントの設計自体が無駄な再描

    Reactでコンポーネントを実装する際に意識している4つの話 - stmn tech blog
  • Lombok - コンストラクタの生成(xArgsConstructor) - 覚えたら書く

    Lombokのコンストラクタ生成に関する以下アノテーションの利用サンプルです。 @NoArgsConstructor(lombok.NoArgsConstructor) @AllArgsConstructor(lombok.AllArgsConstructor) @RequiredArgsConstructor(lombok.RequiredArgsConstructor) デフォルトコンストラクタを生成する @NoArgsConstructorをクラスに付与することでデフォルトコンストラクタを自動生成することができます。 ■@NoArgsConstructorを付与したクラス import lombok.NoArgsConstructor; @NoArgsConstructor public class Person1 { private long id; private String

    Lombok - コンストラクタの生成(xArgsConstructor) - 覚えたら書く
  • ArchUnitでアーキテクチャをテストする - mtx2s’s blog

    ソフトウェアアーキテクチャには、依存関係のデザインという側面がある。その目的は多くの場合において、ソフトウェアの振る舞いに対する変更容易性を高めることではないだろうか。 ソフトウェアプロダクトは、そのライフサイクルを通して、繰り返し変更し続けられていく宿命にある。それがユーザーや顧客の要求であり、彼らの価値につながるからだ。そしてその提供には迅速さも求められる。依存関係のデザインは、これを実現するために組み込まれたソフトウェアの構造なのだ。 アーキテクトの悩みのひとつは、このような目的に基づいて自らがデザインしたソフトウェアの構造が、儚く崩れ去っていくことだ。アーキテクチャとは所詮はルールでしかない。開発チームが厳密にルールを守らない限り、望ましい構造を構築・維持することはできない。アーキテクチャは脆いのだ。それこそが技術的負債の一因でもある。 無償のJavaライブラリとして提供されている

    ArchUnitでアーキテクチャをテストする - mtx2s’s blog
  • WebTestClientによるintegration testの記述 - kagamihogeの日記

    spring-bootで作成するweb-apiのintegration test(以下IT)を記述するのにWebTestClientが使える。これは内部的にWebClientを使用する。同様にTestRestTemplateは内部的にRestTemplateを使用する。環境に応じて使い分けになる。今回はWebTestClientによるITの記述について。 ドキュメントは WebTestClient :: Spring Docsにあり、ここ読めばだいたいは困らないと思う。 ソースコード build.gradle plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com

    WebTestClientによるintegration testの記述 - kagamihogeの日記
  • new T()したいケースへの対処法 - プログラマーの脳みそ

    Javaのジェネリクスの話題のひとつにnew T()したいができないので困る、というテーマがある。 先日のセッションではこの対策についても簡単に述べたが今日はそのまとめ。 まず第一に疑うべきは当にnew T()する必然性があるか?というのが持論だが、ある種のフレームワークではその必然性がある。 O/RマッピングのフレームワークでPOJOにデータを詰めて返したい WebフレームワークでHTTPリクエストをPOJOに詰めてControllerクラスに渡したい (このあたりの議論はJavaのジェネリクスで,T.class や new T() ができず悩んだ話 (型パラメータのインスタンス化に関し、フレームワーク設計からケーススタディ) - 主に言語とシステム開発に関してによくまとまっている) ここで、これらのPOJO(Plain Old Java Object - 端的に言えばデータを格納する

    new T()したいケースへの対処法 - プログラマーの脳みそ
  • ネストしたオブジェクトのマッピングする #MyBatis - ジムには乗りたい

    MyBatisでネストしたオブジェクトマッピングするサンプルあんまり見かけないので、残しておく。 例えばこんなデータを person id name address_id 1 yamada 11 2 sato 11 address id city 11 tokyo book id title 21 hoge 22 fuga 23 piyo person_book person_id book_id 1 21 1 22 2 23 こんなオブジェクトにマッピングしたい時。。 public class Person { private Address address; private List<Book> books; // アクセサは省略 } こんな感じになる <mapper> <resultMap id="personMap" type="Person"> <id column="perso

    ネストしたオブジェクトのマッピングする #MyBatis - ジムには乗りたい
  • 現場で良く使う Java Stream イディオム - A Memorandum

    キャスト null 除外 否定フィルタ Streamから配列へ 配列からStreamへ リストの集約 リストからマップへ変換 コレクションの変更 任意キーでグルーピング 任意キーでソート カンマ区切り プリミティブRangeからリストへ オブジェクト型の合計 BigDecimal の合計 グルーピングして集計 グルーピングしてカウント 最大値/最小値の抽出 Optional から値の取り出し 開発の現場でよく使う Java Stream イディオムです。 キャスト List<String> studentNames = people.stream() .filter(Student.class::isInstance) .map(Student.class::cast) .map(Student::getName) .collect(Collectors.toList()); null 除

    現場で良く使う Java Stream イディオム - A Memorandum
  • Java 11で文字を数える - CLOVER🍀

    これは、なにをしたくて書いたもの? Javaで文字数を数える時に、String#lengthではサロゲートペアがうまく数えられないことは有名だと思うのですが。 Unicode - Wikipedia 結合文字というものを踏まえた数え方をちゃんと知らなかったので、今回見てみることにしました。 タイトルは、確認したバージョンがJava 11なだけです。 注)BreakIteratorではうまく数えられない絵文字があるので、その場合はJava 17へ Java 17で文字を数える - CLOVER🍀 BreakIterator 結合文字は、基底文字と組み合わせて文字を作ることができる文字のことを言います。 Unicodeにおける、異体字セレクタも該当します。 異体字セレクタ - Wikipedia 異体字セレクタは、このサイトで確認するのがよさそうですね。 異体字セレクタセレクタ 異体字セレク

    Java 11で文字を数える - CLOVER🍀
  • WildFly 25+Codehaus Cargo Maven 3 Pluginでインテグレーションテスト - CLOVER🍀

    これは、なにをしたくて書いたもの? 前にWildFlyとArquillianを使ったエントリを書いたのですが。 WildFly 25+Arquillian+JUnit 5でインテグレーションテスト(Managed/Remote/Bootable JAR) - CLOVER🍀 Codehaus Cargoを使ったインテグレーションテストもやってみたいなと思い、試してみることにしました。 Codehaus Cargo - Home Codehaus Cargo - Maven 3 Plugin Arquillianとの直接の比較にはならないとは思いますが。目的や機能が違うので。 Codehaus Cargo Codehaus Cargoは、Java EE/Jakarta EEのアプリケーションサーバーをAPIで操作する機能を提供します。 Codehaus Cargo - Home アプリケー

    WildFly 25+Codehaus Cargo Maven 3 Pluginでインテグレーションテスト - CLOVER🍀
  • コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜 - かとじゅんの技術日誌

    コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜 - じゅんいち☆かとうの技術日誌 引き続き連投エントリ。私も来年で39歳になります。そして息子が7歳。いいおやじですが、脳は衰えないと言われています。鍛えれば鍛えたほど進化できると信じます。 ということで、リポジトリ編に入ります。 リポジトリ リポジトリは、ライフサイクルの途中から最後にフォーカスし、オブジェクトの永続化と永続化されたそのオブジェクトを検索する手段を提供するオブジェクトです。このように説明すると、DAOに近い印象を持つかもしれませんが、DAOはRDBMSSQLなどのインフラストラクチャ層の関心事を含んでいるので、ここでは

    コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜 - かとじゅんの技術日誌
  • 【JSF2.2】セッションごとに保持できるView画面件数が25画面までに制限されている - タイガー!タイガー!じれったいぞー!(SE編)

    1年半ほど前にブログで、ViewExpiredExceptionに苦しんだ記録をまとめましたが、再度、似たようなトラブルに直面してしまいました。 タイトルがその原因だったわけですが、この問題についてもまとめておこうと思います。 STATE_SAVING_METHODについて JavaEE7のWebアプリケーションでは、STATE_SAVING_METHODの設定で、クライアントごとのView情報をどこで保管するかを管理します。 デフォルトでは、serverになっており、Viewの数も15と少な目に設定されています。(下記の設定は、定義しなくてもデフォルトで反映されます) <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>sever</param-value> </con

    【JSF2.2】セッションごとに保持できるView画面件数が25画面までに制限されている - タイガー!タイガー!じれったいぞー!(SE編)
  • 【JSF2】ViewExpiredExceptionが多発した原因 - タイガー!タイガー!じれったいぞー!(SE編)

    がきちんとわかっておらず、不具合を発生させてしまったケースとして、恥を承知で記録しておきます。 トラブル内容 リリースしたアプリケーションが、ここ数日間、やたらと「ViewExpiredException」が多発しまくるようになってしまいました。 ソフトウェアは、JavaEE7(glassfish4.1)、JSF2.2+Primefaces5.1です。 発生している画面は、ログイン画面や複数の入力画面で、一定ではありません。 時間帯もまばら。う~ん、これには参りました。 原因発見 サイトをいろいろと確認していると、JavaEE Server の「STATE_SAVING_METHOD」が「server」の設定の場合、そのデフォルトのview情報保持数が15であるらしいということを発見。 jsf 2 - How and when is a view scope bean destroye

    【JSF2】ViewExpiredExceptionが多発した原因 - タイガー!タイガー!じれったいぞー!(SE編)
  • JavaEE 7 JSF 2.2の超簡単カスタムコンポーネント - しんさんの出張所 はてなブログ編

    2.2ではカスタムコンポーネントをすぐに作成、実装することができる。 XMLとかなにもいらない。 やっと来たかーって感じ。 カスタムコンポーネントのコード。 package jsf; import java.io.IOException; import javax.faces.component.FacesComponent; import javax.faces.component.UIComponentBase; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; @FacesComponent(value = "custom.aoi_blink" ,tagName = "aoi_blink" , createTag = true) public class Blink

    JavaEE 7 JSF 2.2の超簡単カスタムコンポーネント - しんさんの出張所 はてなブログ編
  • skill-up-engineering.com