スペルチェッカで使われがちなデータ構造 Trie の概要と実装

Trie(prefix tree) とは 単純な Trie の実装 Trie へのデータ登録処理 Trie での検索処理 Trie の動作 Trie の改良 Trie によるサジェスト 辞書の削除 まとめ Trie(prefix tree) とは ある文字列が辞書に含まれるかどうかを高速に検索できるのが、Trie です…

Java 文字列とUnicode のあやうい関係

Java 内部の文字エンコードは UTF-16 Unicode Supplementary Character Java 5 の Unicode サポート Unicode の各エンコード UTF-8 エンコード UTF-16 エンコード Java 9 の Compact Strings 補助文字の扱い 文字の長さ コードポイント値の取得 コードポイン…

Apache POI チートシート

準備 ワークブック(Workbook) ワークブックの新規生成 ワークブックを開く ワークブックを保存する シート(Sheet) シート名を指定してシートを取得する シート番号を指定してシートを取得する アクティブなシートを取得する 全てのシート名を取得する 新規シ…

Windows で cron。 タスクスケジューラ schtasks コマンドの使い方

はじめに タスク登録 タスク一覧 タスク削除 はじめに タスクスケジューラ 操作用の schtasks コマンドのチートシートです。 Windows で定期的な処理を行う場合には、タスクスケジューラを利用すると思います。 Windows10 からは at コマンドが廃止されまし…

Rust で作成した WebAssembly ライブラリから JavaScript 関数を呼び出すには

blog1.mammb.com Rust ライブラリは、動的リンクライブラリとしてビルドすることで、WebAssembly ライブラリを作成できます。 ここでは、WebAssembly ライブラリから、JavaScript 関数の呼び出し方法を説明します。 cargo でライブラリプロジェクトを作成し…

Rust で作成した WebAssembly ライブラリを JavaScript から呼び出すには

blog1.mammb.com Rust ライブラリは、動的リンクライブラリとしてビルドすることで、WebAssembly ライブラリを作成できます。 作成した WebAssembly ライブラリは、他の言語などからロードしてライブラリを利用できるようになります。 cargo でライブラリプ…

テクニカルドキュメントの構造化フレームワーク Diátaxis とは

Diátaxisとは Tutorials How-to guides Reference Explanation Diátaxisとは Diátaxisとはテクニカルドキュメントの構造化フレームワークです。 ユーザーのニーズの体系的な説明と分析に基づいて文書構造を規定するスキームを提供し、多くのソフトウェアのテ…

WebAssembly のテキスト表現 WAT を WASM に変換するには

blog1.mammb.com WebAssembly のテキスト表現 WAT とは WebAssembly には、バイナリー形式の WASM の他に、人間が読んだり編集したりできるテキスト表現である WAT が定義されています。 テキスト形式ではモジュールは 1 つの大きな S 式として表現されます…

cargo-wasi で WebAssembly コンパイルするには

blog1.mammb.com cargo-wasi とは cargo-wasi は Cargo のサブコマンドとして利用でき、Rust コードの WebAssembly コンパイルを簡単にします。 cargo-wasi を利用することで、以下に示すビルトインのデフォルト処理が行われます wasm32-wasi ターゲットの管…

Git ブランチ名を master から main に変更する手順

ブランチ名の変更 $ git branch -m master main 変更したブランチの Push $ git push -u origin main HEAD参照の変更 $ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main Github 上でデフォルトブランチ変更 ブランチの設定からデフォル…

Rust で WebAssembly へコンパイルするには

blog1.mammb.com WebAssemblyターゲットの追加 Rust には、ビルドターゲットとして WebAssembly のサポートがあります。 ビルド時の --target フラグでターゲットを指定することで、WASMへコンパイルすることができます。 WASMのビルドターゲットには以下が…

WebAssembly ランタイム Wasmtime のインストール

blog1.mammb.com Wasmtime command line tool のインストール手順です。 macOS へのインストール (brew) macOS で brew の場合は以下でインストールします。 $ brew install wasmtime $ wasmtime -V wasmtime 3.0.0 Linux / macOS へのインストール Linux や…

E2Eテストフレームワーク Playwright の始め方

Playwright とは インストール アップデート テストの実行 テストの宣言 テストフィクスチャ Locators アサーション テストコードの記録 まとめ Playwright とは Selenium ・ Selenide ・ Cypress などと同様な E2E テストツールで、MS により OSS として開…

逆引き WebAssembly

適宜追記していきます。 WebAssembly ランタイム Wasmtime のインストール - A Memorandum Rust で WebAssembly へコンパイルするには - A Memorandum cargo-wasi で WebAssembly コンパイルするには - A Memorandum WebAssembly のテキスト表現 WAT を WASM…

Gradle のビルドで使用するJavaバージョンを指定するには

blog1.mammb.com Gradle 6.7 以降で Java ツールチェーンを利用できるようになりました。Java ツールチェーンを使うことで、要件に合う JRE/JDK を自動検出し、見つからない場合には自動的にダウンロードしてビルドすることができます。 build.gradle.kts(bu…

逆引きGradle - もじく -

随時更新の Gradle 逆引き辞典です。 プロジェクトの Gradle をバージョンアップするには - A Memorandum Gradle のビルドで使用するJavaバージョンを指定するには - A Memorandum

プロジェクトの Gradle をバージョンアップするには

blog1.mammb.com Gradel プロジェクトのルートディレクトリで以下のコマンドを実行します。 $ ./gradlew wrapper --gradle-version=7.X.X 推奨はされていませんが gradle/wrapper/gradle-wrapper.properties の以下を希望のバージョンに書き換えることもでき…

2022年10月における次期メジャーリリース Jakarta EE 11 の方向性

はじめに Unified Platform(統一されたプラットフォーム) What? Why? コメント Add New Specifications(新しい仕様の導入) What? Why? コメント Leverage Latest Java(最新のJavaを活用) What? Why? コメント Enable Community Innovation(コミュニティ・イ…

Java アノテーションプロセッサの使い方(実践編)

はじめに プロジェクトの作成 アノテーションプロセッサの設定 アノテーションの作成 プロセッサの作成 要素からアクセサーを取得する アクセサーのtoString()を行うコードを生成 クラス生成 テストの実行 まとめ はじめに 以下では、Java アノテーションプ…

Java アノテーションプロセッサの使い方(基礎編)

はじめに Pluggable Annotation Processing アノテーションプロセッサ アノテーションプロセッサの実行 ProcessingEnvironment と RoundEnvironment Element と TypeMirror Element TypeMirror AnnotationMirror Elements と Types Filer まとめ はじめに Ja…

JetBrains 製次世代エディタ(IDE) Fleet - ファーストインプレッション

JetBrains Fleet とは Fleet の導入 Toolbox App のインストール Fleet のインストール Fleet の起動 まとめ JetBrains Fleet とは 先日公開された JetBrains による新しいIDEです。機能としては以下のように紹介されています。 JetBrains 製の Visual Studi…

JSON Pointer (RFC 6901) まとめ

JSON Pointer とは JSON Pointer の構文 JSON Pointer のエスケープ JSON 配列の指定 Relative JSON Pointer JSON Pointer とは JSON Pointer は、Jsonドキュメント内の特定の値へのパスを定義する文字列構文です。 www.rfc-editor.org 大まかに言えば、ルー…

これからのフロントエンドコンポーネント開発 Lit -その(4)-

はじめに Vite によるプロジェクト作成 todo-list コンポーネントの作成 ToDo アイテムの追加 ToDo アイテムのトグル ToDo アイテムの消込 まとめ はじめに Web components ベースのフロントエンドUIフレームワーク Lit の入門記事です。 前回は Lit コンポ…

これからのフロントエンドコンポーネント開発 Lit -その(3)-

はじめに Lit コンポーネント HTMLElementTagNameMap リアクティブプロパティ プロパティオブジェクトの更新 内部リアクティブステート(Internal reactive state) レンダリング Lit テンプレート 式 ブール属性 プロパティ式 イベントリスナ テンプレートの…

これからのフロントエンドコンポーネント開発 Lit -その(2)-

はじめに 公式スタータキット Vite スタータプロジェクト Vite プロジェクトの構成 まとめ はじめに Web components ベースのフロントエンドUIフレームワーク Lit の入門記事です。 前回は Lit の概要について説明しました。 blog1.mammb.com 今回は、実際の…

これからのフロントエンドコンポーネント開発 Lit -その(1)-

Lit とは Web Components Lit による最小限の Web Components Lit プロジェクトの準備 my-element コンポーネントの作成 ビルドと実行 宣言型イベントリスナー まとめ Lit とは Google の Chrome チームにより始まった Polymer -> LitElement -> Lit と変遷…

テキストエディタで使われがちなデータ構造 Piece Table の概要と実装

テキストエディタのデータ構造 Gap method Piece Table method Piece Table の構造 Piece Table の実装 Piece Table のメソッド まとめ テキストエディタのデータ構造 テキストエディタで採用されているデータ構造にはいろいろあります。 こちらの論文 Data …

楽しいコーディングのための CUPID - SOLID 原則に対するアンチテーゼ

はじめに SOLID 原則 CUPID とは Composable(組み立て易い) Small surface area(小さな表面積) Intention-revealing(意図を明確に) Minimal dependencies(依存は最小限に) Unix philosophy(Unix哲学) A simple, consistent model(シンプルで一貫性のあるモデ…

モダンで早い静的サイトジェネレータ Astro の始め方

はじめに プロジェクト作成 プロジェクト構成 コンポーネント レイアウト ページ ビルド Blog テンプレート Portfolio テンプレート Documentation テンプレート まとめ はじめに 先日1.0リリースとなった、静的サイトジェネレータのAstroの紹介です。 JSで…

これからのロガー JEP 264: Platform Logging API and Service

はじめに Platform Logging API System.Logger System.LoggerFinder SLF4JSystemLoggerFinder Log4jSystemLoggerFinder まとめ はじめに Java9 の JPMS(Java Platform Module System) に合わせて導入された、JEP 264: Platform Logging API and Service です…