2024-01-01から1年間の記事一覧

【Rust】Sized マーカートレイト

sized 型 std::marker::Sized トレイト sized 型 Rust のほとんどの型は、値のメモリ上におけるサイズが既知であり、このような型を sized型 と呼ぶ。 u64は 8 バイトであり、(f32, f32, f32)型のタプルは 12 バイトである。 列挙型も、常に最大のヴァリアン…

【Rust】OsStr と OsString

OsStr と OsString &OsStr の生成 OsString の生成 &OsStr と OsString の相互変換 OsStr と str の相互変換 OsString と String の相互変換 std::env::Args の例 std::fs::DirEntry の例 OsStr と OsString Rust の文字列は常に有効な Unicode であることが…

ByteBuffer.allocateDirect() はどの程度遅いのか

はじめに ベンチマーク環境 JMH Gradle プラグイン ByteBuffer.allocateDirect のスループット アロケートサイズによるベンチマーク はじめに Java NIO では、java.nio.ByteBuffer を介してチャネルとのデータの受け渡しを行います。 java.nio.ByteBuffer は…

Maven 依存関係の調査で良く使うコマンド

依存関係ツリーの表示 依存ライブラリを最新化する 依存関係の解析 依存関係ツリーの表示 プロジェクトの依存関係階層を表示するには dependency:tree を使う。 mvn dependency:tree 依存関係の階層は、ビルドプロセスが実際に使用する依存関係の解決された…

Windows 環境への Apache インストール手順

インストール Apache の起動 いまさらな Apache ですが、簡素にまとまったページが見つからなかったのでメモしておきます。 インストール 公式からは、Windows向けバイナリは提供されなくなっているので Apache Lounge などからダウンロード。 解凍すると以…

Gradle 7.4 で追加された バージョンカタログ

blog1.mammb.com はじめに 最近の Gradle では、gradle init タスクでプロジェクトを生成すると、以下のような依存定義が生成される。 dependencies { testImplementation(libs.junit.jupiter) testRuntimeOnly("org.junit.platform:junit-platform-launcher…

PowerShell で Excle オートメーションの足場

PowerShell で Excle 操作する場合の足場は以下のようになる。 Set-Location (Split-Path $MyInvocation.MyCommand.Path -parent) $book = $null $excel = $null try { $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.Di…

Javascript でクリップボードにコピーする

はじめに document.execCommand() による入力テキストのクリップボードコピー document.execCommand() によるノードコンテンツのクリップボードコピー document.execCommand() によるノードのクリップボードコピー navigator.clipboard によるクリップボード…

Gradle で Manifest に Main-Class 属性を追加する

blog1.mammb.com java -jar app.jar で実行できる実行可能 jar ファイル には、Manifest に Main-Class 属性を追加する。 application プラグインの mainClass を使って以下のように指定できる。 application { mainClass = "org.example.App" } tasks.named<Jar></jar>…

最小限のCSSフレームワーク pico css -コンポーネント-

アコーディオン カード ドロップダウン グループ ローディング モーダル ナビ パンくずリスト プログレスバー ツールチップ 前回の続きです。 blog1.mammb.com アコーディオン <details open> <summary>Accordion 1</summary> <p> Flamingos are known for their bright pink feathers and distin</p></details>…

最小限のCSSフレームワーク pico css -フォーム-

入力フォーム グリッド グループ ヘルパーテキスト 検索入力 ファイル入力 非活性・リードオンリー Valid・Invalid テキストエリア セレクト チェックボックス ラジオ スイッチ レンジ 前回の続きです。 blog1.mammb.com 入力フォーム <html lang="en" data-theme="light"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> </meta></meta></head></html>

最小限のCSSフレームワーク pico css -導入編-

pico とは バージョン カラースキーム コンテナ カラー グリッド 各種コンテンツ Heading group Blockquote Hr テキスト リンク ボタン テーブル pico とは シンプルで小さなCSS 2019年12月に v1 リリース 2024年02月に v2 リリース クラスレス版を使えば、…

Java 23 から Markdown で JavaDoc コメントが書けるようになります(JEP 467: Markdown Documentation Comments)

blog1.mammb.com Markdown Documentation Comments リンク テーブル JavaDoc tags シンタックスハイライト openjdk.org Markdown Documentation Comments JDK23 より、JavaDoc コメントを Markdown 形式で記載できるようになります。 Markdown 形式のコメン…

MacOS の起動音を消す方法

GUI から設定 「システム設定」-「サウンド」から変更 ターミナルから設定 Off にする場合 sudo nvram StartupMute=%01 On にする場合 sudo nvram StartupMute=%00 nvram は NVRAM の内容を操作するコマンド % nvram -h nvram: (usage: ) nvram [-x|-X] [-p]…

【Rust】パスワード付きExcelファイルの読み取り

office-crypto パスワード付きの MS Office ファイルを復号化できる。 復号化したExcelファイルは calamine で読み取り操作できる。 [dependencies] office-crypto = "0.1.0" calamine = "0.24.0" 以下のようにして、calamine で読み取り操作できる。 use st…

Java 23 でプレビュー公開される モジュールインポート宣言(JEP 476: Module Import Declarations)

blog1.mammb.com モジュールインポート宣言 曖昧なインポート プレビュー言語機能 openjdk.org モジュールインポート宣言 モジュールを指定した一括インポートが可能になります。 モジュールインポートはモジュール名を指定して以下のように宣言します。 imp…

【Rust】リリースチャネルとツールチェーン

リリースチャンネル ツールチェーンの指定 ツールチェーン オーバーライド省略記法 環境変数 RUSTUP_TOOLCHAIN ディレクトリオーバーライド rust-toolchain.toml リリースチャンネル リリースチャンネル 説明 nightly master ブランチから毎晩リリース beta …

Java Stream API を高みに導くStream Gatherer

はじめに Gatherer 組み込み Gatherer Gatherers.windowFixed Gatherers.windowSliding Gatherers.fold Gatherers.scan Gatherers.mapConcurrent Gatherer.ofSequential まとめ JDK 22 でプレビュー公開(https://openjdk.org/jeps/461)、JDK 23 でセカンドプ…

Java で JavaScript を実行するもう一つの方法

はじめに javet javet の導入 V8Runtime の利用 はじめに Java 上で JavaScript を実行するスクリプトエンジンは以下のように変遷してきました。 Java 6 Rhino Java 8 Nashorn Java 11 Nashorn 非推奨化(https://openjdk.org/jeps/335) Java 15 Nashorn 削除…

Jakarta EE 11 の目玉機能 Jakarta Data 1.0 まとめ

はじめに リポジトリ Parameter based automatic query method Annotated query method Query by Method Name Jakarta Data Static Metamodel クエリ条件 クエリ結果 リソースへのアクセス はじめに Jakarta EE 11 の目玉機能である Jakarta data 1.0 の先取…

IP アドレス操作ライブラリ IPAddress

IPAddress は、IPv4 や IPv6 の IP アドレスに対する様々な操作が可能なライブラリ。 Java の実装と Go の実装が提供されている。 seancfoley.github.io 簡単に使用方法を見ておく。 導入 Gradle の場合は以下。 implementation("com.github.seancfoley:ipad…

最近追加された Gradle init タスクのオプション

小分けで追加されているのでここにまとめておきます。 Gradle 8.2 で Groovy DSL に代わり、Kotlin DSL がデフォルトに Gradle 8.5 で --java-version オプション追加 Gradle 8.6 で --use-defaults オプション追加 Gradle 8.7 で --no-comments オプション…

【Rust】winit と tiny-skia で低レベルなグラフィックス描画 〜テトリスを作る2〜

はじめに ウインドウの変更 キーイベントの捕捉 ゲームの描画 ゲームの実行 まとめ はじめに 前回は、テトリスのゲーム部分の実装を行いました。 blog1.mammb.com 今回は、winit と tiny-skia による描画をあわせて、ゲームを完成させましょう。 実装の全体…

【Rust】winit と tiny-skia で低レベルなグラフィックス描画 〜テトリスを作る1〜

はじめに テトロミノ ブロック 盤面と落下ブロック テトリス ブロックの移動と当たり判定 はじめに 前回は、winit と tiny-skia にて簡単なウインドウへの描画方法について説明しました。 blog1.mammb.com 今回は、もう少しだけ凝った例として、テトリスをゲ…

【Rust】winit と tiny-skia で低レベルなグラフィックス描画〜ことはじめ〜

はじめに Are we GUI Yet? にある通り、Rust で GUI を扱う場合のライブラリは、未だ決定打が無い状況にあります。 ディスクトップ・アプリケーション の構築には、WebView ベースの Tauri が、現時点での有力候補になるでしょうか。最近では、Atom の後継エ…

Java コンソール出力が文字化けする場合にやるべきこと

はじめに Java 18 からJEP 400: UTF-8 by Defaultにより、デフォルトのエンコーディングが UTF-8 に統一されたため、Windows 環境での文字化けが頻出する。 対策としては、全て UTF-8 に統一してやるのが良い。 ソースコードを UTF-8 とする システムプロパ…

Zig Lang の始め方 - 環境構築編 -

Zig Lang とは インストール WinGet Homebrew 手動インストール バージョン確認 VS Code Extension zig コマンド Hello World Zig Build System Zig Lang とは 2016年登場の新しい命令型静的型付けコンパイル言語 簡素で明確な言語仕様 GC無し(メモリはスタ…

Java の Character.isSpaceChar() / Character.isWhitespace() の違いと String.trim() / String.strip() の違いが良くわからなくなった時に見るメモ

はじめに スペースの定義の違い スペースっぽいもの全てを切り捨てる はじめに Character.isSpaceChar() と Character.isWhitespace() はいずれも引数の文字がスペースかどうかを判定する static メソッドだが、その違いは? 文字列の前後のスペースを削除す…

JDK23 で正式公開 文字列テンプレート(JEP 465: String Templates)

blog1.mammb.com はじめに 従来の文字列構築 文字列テンプレート 埋め込み式(Embedded expressions) マルチライン テンプレート式 テンプレートプロセッサ FMT テンプレートプロセッサ RAW テンプレートプロセッサ StringTemplate と Processor ユーザ定義の…

Gradle 8.6 における init タスクの変更点

gradle init タスクの対話入力省略 ソースパッケージの対話入力を削除 Kotlin DSL スクリプト マルチモジュールプロジェクトの convention plugins gradle init タスクの対話入力省略 gradle init タスクに --use-defaults オプションが追加された。 これを…