Gradle で Jar ファイルをマニュアルダウンロードする

blog1.mammb.com Jar ファイルを任意ディレクトリに配備する Jar ファイルを任意ディレクトリに配備する Configuration を作成して依存定義 Copy タスクで任意ディレクトリにJarをコピー val copyJar: Configuration by configurations.creating dependencie…

Windows Package Manager - winget クイックマニュアル

winget とは バージョン確認 利用可能なコマンド インストール済みパッケージの確認 パッケージの検索 アプリケーションのインストール アプリケーションのアップグレード アプリケーションのアンインストール 導入パッケージのエクスポート/インポート wing…

Gradle で OS と アーキテクチャを判定する

blog1.mammb.com システムプロパティから取得 OS Detector Plugin DefaultNativePlatform システムプロパティから取得 単純にシステムプロパティから判定できる。 val os = System.getProperty("os.name") val targetOs = when { os == "Mac OS X" -> "macos…

Gradle のビルドスクリプトで IDEA による読み込みかどうか判定する

blog1.mammb.com システムプロパティによる判定 オプションの設定箇所 システムプロパティによる判定 val idea = System.getProperty("idea.active") == "true" || System.getProperty("idea.sync.active") == "true" if (idea) { // } IDEA から Gradle タ…

区切り文字を含めて文字列分割する

はじめに ゼロ幅分割 ゼロ幅 (zero-length) とは JDK21 の String.splitWithDelimiters() はじめに 以下のような文字列を : で分割する。 var string = "aa:bb::cc"; split を使うと : で分割され、分割文字である : は含まれない。 string.split(":"); // A…

Java21 で正式追加された switch でのパターンマッチ(JEP 441: Pattern Matching for switch)

はじめに プレビュー版からの変更点 Pattern Matching for switch による機能拡張 switch ラベルによるパターンマッチ case ラベルの guard 条件指定 null と switch enum 定数 ラベルの改善 case ラベルの Dominance(優位性) 型の網羅性(Exhaustiveness) パ…

Java21 で正式追加されたレコード・パターン(JEP 440: Record Patterns)

はじめに レコードパターン ネストされたレコードパターン var による型推論でのマッチング generic レコードのマッチング マッチングが失敗するパターン exhaustive switch blog1.mammb.com はじめに Java16 で導入されたレコードクラス(JEP 395: Records)…

Gradle で モジュールの add-exports を指定する

blog1.mammb.com add-exports / add-opens によるパッケージ公開 Gradle Kotlin DSL でコマンドライン引数を指定する オプションをまとめて定義する MANIFEST での Add-Exports 指定 add-exports / add-opens によるパッケージ公開 Java モジュールシステム…

Gradle でメッセージの不要なローカライズを無効化する

blog1.mammb.com グローバルに無効化 プロジェクト毎に無効化 グローバルに無効化 Gradle のタスク実行時のメッセージがローカライズされて鬱陶しかったり、メッセージが文字化けしたりする場合は、ホームディレクトリ配下の .gradle/gradle.properties でロ…

Gradle で Jar ファイル名を指定する

blog1.mammb.com TL;DR プロジェクト作成 コマンドライン引数でバージョン指定 バージョンプロパティを指定する Jar アーカイブ名を直接指定する プロジェクト自体を変更する Base Plugin の archivesName を指定する TL;DR gradle init タスクで作成したプ…

Gradle で Java プレビュー言語機能を有効にする

blog1.mammb.com Java プレビュー言語機能 Gradle Kotlin DSL でプレビュー機能を有効化する Gradle Groovy DSL でプレビュー機能を有効化する Java プレビュー言語機能 Java でプレビュー言語機能を使用するには、コンパイラとランタイム・システムで明示的…

Windows Update 「更新サービスに接続できませんでした」エラーの解消

はじめに エラーコード エラーの原因 WSUS の接続先 WSUS とは はじめに Windows Update で「更新サービスに接続できませんでした」エラー がいつまでたっても直らず。 対処方法として、DNS や Proxy などの設定見直しが多く挙げられているが、問題はそこで…

Java新機能の文字列補間 - JEP 430 String Templates(Preview)

はじめに 文字列テンプレート StringTemplate FMT テンプレートプロセッサ テンプレートプロセッサの自作 まとめ 本記事はプレビュー公開時のものです。正式リリース版については以下を参照してください。 blog1.mammb.com blog1.mammb.com はじめに JEP 430…

【Oracle データベース】カラム定義確認用SQL

はじめに テーブルのカラム定義一覧 ビューのカラム定義一覧 まとめ はじめに テーブルのカラム定義は ALL_TAB_COLUMNS や USER_TAB_COLUMNS を見ます。 しかし、データタイプ毎にデータ長の捉え方が異なるため、きれいに一覧にするのは結構シンドイです。 …

Java BigDecimal チートシート

はじめに いろいろと注意点の多い BigDecimal は、使おうとすると、注意点があるということ以外忘れてる。 インスタンス生成は文字列から行うこと 比較は equals() でなく compareTo() を使うこと Java8 より前は stripTrailingZeros() のバグに注意すること…

WebAssembly でマイクロサービスを簡単作成 Spin フレームワーク

Spin とは 2023年03月に 1.0 版がリリースされた WebAssembly でマイクロサービスアプリケーションを作るためのフレームワークです。 フレームワークとなっていますが、WIT(Wasm Interface Type) を生成し、WebAssembly Component Model として動作させるた…

Java21で追加される無名パターン(JEP 443 Unnamed Patterns and Variables)

はじめに Unnamed variables Unused patterns Unnamed pattern variables まとめ blog1.mammb.com はじめに Java21あたりで入るかもしれない Unnamed Patterns and Variables(JEP 443) の先取りです。 Unnamed Patterns and Variables では、他の言語で良く…

Servlet で forward した後に元のリクエストURIを取得する

forward 前のリクエストURI取得 Forwarded Request Parameters パスの取得 forward 前のリクエストURI取得 HttpServletRequest.getAttribute() から取得できる。 HttpServletRequest request = //... String uri = (String) request.getAttribute("javax.ser…

アイコン ファイル icns / ico の作り方

はじめに TL; DR png2icons 実行時のセキュリティ設定 png2icons のオプション icns ファイル ico ファイル はじめに ドローツールではなく、単画像ファイルから Windows 向けの ico ファイル、mac 向けの icns ファイルの作成手順です。 TL; DR png2icons …

【Modern Java】Java21で [ようやく|今更] 追加される Sequenced Collections (JEP 431)

はじめに 動機 Sequenced の追加 SequencedCollection SequencedSet SequencedMap Collections.unmodifiableSequenced blog1.mammb.com はじめに Java21 でコレクションフレームワークに順序付き要素のシーケンスを表すインターフェースが追加されます。 JEP…

最強のマークダウンメモアプリ Obsidian とオススメプラグイン3選

はじめに Obsidian のインストール Obsidian の設定 Obsidian の基本操作 プラグイン Excalidraw プラグイン Advanced Tables プラグイン Remotely Save プラグイン まとめ はじめに Notion からの乗り換え先として、Obsidian を紹介します(Obsidian はその…

Java Stream API で JPA - JPAstreamer の使い方

JPAstreamer とは JPAstreamer の始め方 JPA の利用準備 クエリの実行 Stream API と SQL の対応 Join 処理 CDI 統合 まとめ JPAstreamer とは Speedment 社が提供している ORM ツールキットに speedment があります。 speedment は、データベース操作を Jav…

Jakarta Persistence と Hibernate のややこしい依存関係

はじめに Java Persistence API 2.2 (Jakarta Persistence 2.2) Jakarta Persistence 3.x Hibernate 6.x まとめ はじめに Hibernate 5系と6系と、JPAの名前空間の変更(javax.persistence -> jakarta.persistence)対応がややこしいので、と言うか経緯知らない…

Rust でプラットフォーム native な Window を作成する

はじめに Windows macOS(cocoa) winit まとめ はじめに Rust で native な Window を作成する3種です。 Windows microsoft が提供している windows クレートを利用することで、伝統的な Windows API の作法でプログラミングできます。 [dependencies.windows…

システム開発はなぜこうも「失敗」を繰り返すのかと悩む前に読むべき「デジタル・ガバメント推進標準ガイドライン実践ガイドブック」

はじめに デジタル・ガバメント推進標準ガイドライン群 実践ガイドブックの全体像 切り抜き 導入部 丸投げ禁止!! 目標設定、それって本当に大丈夫? お役所だからと言って よく見る認識齟齬 はじめに NIPPON EXPRESS ホールディングスのシステム開発頓挫に…

Test Double のタイプ達

Test Double とは Test Double のタイプ ダミー(Dummy) スタブ(Stub) スパイ(Spy) モック(Mock) フェイク(Fake) Test Double のタイプの比較 Test Double とは 映画などで、危険なシーンや高度なスタントに使用されるスタントパフォーマーを「スタントダブル…

Gradle 8.0 におけるツールチェーンリポジトリの変更

TL;DR ツールチェーン と ツールチェーンリポジトリ Gradle 8.0 からのツールチェーンリポジトリ blog1.mammb.com TL;DR Gradle 8.0 で以下のようなワーニングや $ ./gradlew build --warning-mode all Using a toolchain installed via auto-provisioning, …

Windows で brew したい人のための Scoop 簡単ガイド

Scoop とは インストール Scoop の更新 Scoop のアンインストール アプリケーションのインストール インストール済みアプリケーションの確認 アプリケーションのバージョン切り替え マルチコネクションによるダウンロードの高速化 バケット Scoop とは Windo…

UTF-8 エンコードとバイト判定

UTF-8 の体系 UTF-8 エンコード UTF-8 のバイト判定 UTF-8 の体系 UTF-8では、Unicode文字を 1~4 バイトの可変長で表現する符号化方式です。 U+0000 から U+007f つまり、0-127 の範囲は US-ASCII と互換性があります。 各Unicode範囲において以下のような…

【クイックガイド】JavaによるQRコード生成

はじめに QRコードの生成 エンコードヒントの指定 QRコードのバージョンと誤り訂正レベル バージョン1(21x21) バージョン2(25x25) バージョン3(29x29) バージョン4(33x33) バージョン5(37x37) バージョン6(41x41) はじめに Java で手っ取り早くQRコードを生…