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

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 17.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 設定 Gradle をバージョンアップする メッセージの不要なローカライズを無効化する Unable to find a usable idle daemon で応答しない場合の対処法 JCenter は2022年2月で終了しました ビルドスクリプトで IDEA …

プロジェクトの 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 です…

Piranha micro で Hello World

はじめに コマンドライン実行 HelloServlet.java build.gradle.kts 実行 MicroPiranhaBuilder からの実行 はじめに 前回は、Piranha Embedded を使った Hello World であった。 blog1.mammb.com 今回は、Piranha micro を使った Hello World。 Piranha micro…

Piranha Embedded で Hello World

build.gradle.kts HelloWorldServlet.java App.java 実行 AppTest.java build.gradle.kts piranha-embedded は組み込み用のランタイム。 piranha-embedded はHTTPサーバを含まないため、piranha-http-impl でサーバ実装 DefaultHttpServer を使う。 plugins …

文字列分割における空項目の扱いまとめ

StringTokenizer String.split() org.apache.commons.lang3.StringUtils.split() org.apache.commons.lang3.StringUtils.splitPreserveAllTokens() com.google.common.base.Splitter org.apache.commons.text.StringTokenizer まとめ StringTokenizer String…

Jakarta EE 10 変更内容総まとめ

はじめに Jakarta Contexts and Dependency Injection 3.0 -> 4.0 Jakarta Persistence 3.0 -> 3.1 Jakarta Annotations 2.0 -> 2.1 Jakarta Expression Language 4.0 -> 5.0 Jakarta Faces 3.0 -> 4.0 Jakarta JSON Binding 2.0 -> 3.0 Jakarta JSON Proces…