2022-04-01から1ヶ月間の記事一覧

スレート文書とハイパー文書

Dは文書空間 D = {(v, l)∈V×L | v = dec(l)} とする。文書空間D内の文書族は、集合 S から Dへの写像。index family of documents のこと。一例として、I を文書IDの集合、Σ をツリー構造のパスセグメントラベルの集合。J をフラグメントIDの集合として、A =…

ワーキングフォルダとパッケージ

マルチパッケージをシングルリポジトリに突っ込むモノレポ構成は、文書作成に向いているかもね。ツールの類は ./node_modules/ にまとめて入れて、作業は ./packages/foo/ で行うとか。./packages/foo/ 自体もパッケージ構造を持つし、ワーキングフォルダに…

文書処理のタスク

確認:欲しいもの - (新) 檜山正幸のキマイラ飼育記 メモ編 スケルトン - (新) 檜山正幸のキマイラ飼育記 メモ編 上記記事から言えることを以下に。スケルトンを静的に解釈すれば構造記述だが、動的に解釈すればDSLスクリプトになる。スクリプトは実行される…

練習問題

設定ファイルの非可換順次的演算(掛け算)を定義せよ。 設定ファイルの可換同時的演算(足し算)を定義せよ。 掛け算と足し算は半環になるか? 順序構造はあるか? 設定の優先順 出荷時の製品組み込み設定 http​://internal-server:3011/team-A/ss-config.j…

依存方針、特にunified/シェブロテイン

まず、全体的にnpmエコシステムとunifiedエコシステムにはどっぷりと完全に依存する。npm, unifiedと一蓮托生。npmパッケージング・フォーマットとか配布〈ディストリビューション〉プラットフォームの仕様・機能・作法に従うし、べったり依存の方式を採用す…

バージョン管理

スケルトン - (新) 檜山正幸のキマイラ飼育記 メモ編 にて: 再現性/追跡性を担保するにはバージョン管理の使用が必要になる。 過去の確認: git tag タグを表示 git log 通常のログ表示 git reflog HEADの移動履歴表示 チェックアウトする: git checkout …

スケルトン

なんか名前を付けないと呼べないから、コースや本の設計書的なヤツをスケルトンと呼ぶことにする。設計書の記述構文とファイルの両方ともスケルトンと呼ぶ。スケルトンは、(間接的に)実行可能なDSLプログラム。したがって、プログラミング言語のお作法で作…

確認:欲しいもの

原稿ファイル〈記事〉が置いてあるディレクトリをワーキングフォルダと呼ぶことにする。ワーキングフォルダ内の文書ファイル達〈ストックされた記事達〉は、なんらかの知性構造〈intelligence structure〉を持つと考える。欲しいもの/やりたいことは: 知性…

reline 雑メモ

コピペしただけでグチャグチャだが、後で整理する。 ディレクトリ構成 ./node_modeules/ の下に reline/ reline-cli/ reline-parse/ reline-stringify/ reline-remove-trailling-spaces/ reline-add-line-number/ reline-to-html-pre/ (rehype と hastscrip…

ストリームとstdio

https://github.com/retextjs/retext/tree/main/packages/retext-english より、コメントは檜山。 import {unified} from 'unified' import {stream} from 'unified-stream' import retextEnglish from 'retext-english' import retextStringify from 'retex…

ローカル実験用パッケージの作り方

./node_modules/ の直下にパッケージ名ディレクトリを作る。e.g. ./node_modules/my-hello-pkg/ パッケージ名ディレクトリの直下に package.json を書く。 パッケージ名ディレクトリの直下に index.js と index.d.ts を置く。tsc --declaration index.ts で…

プラグイン方式の整理

パフォーマーの起動〈invocation〉 関数呼び出し(プロファイルが必要) オブジェクトのメソッド呼び出し(メソッド名+プロファイルが必要) パフォーマーの失敗結果〈failure result〉 エラー戻り値(規約が必要) 例外(モラルが必要; Error型データを投…

ハイパー文書

ハイパー文書の定式化には次が必要 文書空間: おおよそ文書型/データ型に相当する。外延的/構造的に定義する。 文書: おおよそ文書空間の要素。特定の文書型/データ型を持つ。 文書コレクション: 同じ文書空間に所属する文書の集まり。文書空間の部分…

unifiedプラグインアーキテクチャの再定式化

まず、ソフトウェアコンポネントを、 プラグイン ドライバー に分ける。プラグインの種類を、 パーザー トランスフォーマー コンパイラ〈シリアライザー | ストリンギファイア〉 の3種に分ける。プラグインは、 アタッチャー パフォーマー に2つの部分からな…

unifiedパーザープラグインの事例 2

https://github.com/redotjs/redot/blob/main/packages/redot-parse/redot-parse.js "use strict"; // generated by dot.pegjs var parser = require("./dot.js"); function parse(doc, file) { try { return parser.parse(file.contents || doc); } catch (…

unifiedストリンギファイアプラグインの事例

https://github.com/retextjs/retext/blob/main/packages/retext-stringify/lib/index.js /** * @typedef {import('nlcst').Root} Root */ import {toString} from 'nlcst-to-string' /** @type {import('unified').Plugin<void[], Root, string>} */ export default function rete</void[],>…

unified外部連結フレームワーク

unifiedドライバー(主にunified)と各種プラグインプロセッサ達が作る内部世界があって、それと外部世界を繋ぐグルーになるのが外部連結フレームワーク(と呼んでおく)。まず、unifiedエンジン(unifiedエンジン - (新) 檜山正幸のキマイラ飼育記 メモ編)…

unifiedパーザープラグインの事例

ドライバー内蔵ではないプラグインパーザーの例: https://github.com/retextjs/retext/blob/main/packages/retext-english/lib/index.jsまず、使っているパッケージは https://www.npmjs.com/package/unherit と https://www.npmjs.com/package/parse-engli…

npm の綴り間違い

npm i generator-code とすべきを npm i generate-code とやってしまって、ダメだった。綴り間違い。[追記]npm i repl も間違いだった。https://www.npmjs.com/package/repl は小さいテンプレート処理関数、replace の意味だろう。Node付属のREPLのライブラ…

ツリー文書

A = (A, ・, ε) はアクセッサのモノイドとaする。このモノイドは無限でもいいメンバー抽出演算子記号〈member extraction operator symbol〉からの自由半群。集合 X は、文書コレクション、つまり、親の文書空間の部分空間。文書コレクション X + {⊥} にモノ…

unified vfile

プロファイル: new VFile(arg? : (Options | string | buffer | VFile) ) : VFile 引数: arg: Options → 正規の引数 arg: (string | Buffer ) → arg := {value: arg} と再設定 arg:VFile → シャローコピーを返す。 arg: undefined → おそらくデフォルトのV…

unifiedエンジン

https://m-hiyama-memo.hatenablog.com/entry/2022/04/11/145718 の続き。https://github.com/unifiedjs/unified-engine より: import {engine} from 'unified-engine' import {remark} from 'remark' engine( { processor: remark, files: ['.'], extensio…

unifiedの体系

unifiedの分かりにくさ - (新) 檜山正幸のキマイラ飼育記 メモ編 の続き。unifiedフレームワークを整理する。 まず、テキストフォーマット=テキスト型=文字列型の部分集合型 がある。その例は、MD, HTML, JSON, TEXT など。 テキストフォーマットはファイ…

unifiedの利用

Tenjinの方針は“ありもの利用”だから、unifiedは使う。 いわゆる“unified plugin”はすべてそのまま利用したい。 remark-cli のようにコマンドラインから使いたい。 したがって、remark-cli と同じ作りにする必要がある。 設定ファイルもunifiedと共用できる…

unifiedのプラグイン事例と曖昧性

https://github.com/remarkjs/remark から: import {visit} from 'unist-util-visit' /** @type {import('unified').Plugin<[], import('mdast').Root>} */ function myRemarkPluginToIncreaseHeadings() { return (tree) => { visit(tree, (node) => { if …

unifiedの分かりにくさ

unifiedの分かりにくさは、プロセッサ〈プラグイン〉とドライバーの区別がハッキリせず、それらの役割が述べられてないことだろう。 プロセッサは何らかの文書処理をする。 プロセッサの入力と出力は前もって決められた〈仕様化〉された構造(mdast, hastな…

unifiedドライバー

プラグインをドライブするものはドライバーと呼ぼう。unifiedはドライバーだが、remarkやretextもドライバーになっている。ドライバーの使い方は、 driver() .use(pluginA) .use(pluginB, pluginPramForB) .freeze() .process(input) .then(writerCallback);…

レッスン・レパートリー

レッスンとコース - (新) 檜山正幸のキマイラ飼育記 メモ編 の続き。知識は単にタームの集まり。タームの表現は単なる文字列。レッスン・レパートリーはレッスンの集まり。1-指標になっている。ソートは知識(タームの集まり)で、レッスンがオペレーション…

JSONポインター/JSONパス

https://datatracker.ietf.org/doc/html/rfc6901 簡単な仕様だけど、「エスケープの趣味が悪い」という事情で嫌われるかも。 エスケープ文字は ~(チルダ)、チルダ+番号1文字でエスケープシーケンス。 ~0 は チルダ自身 ~1 は スラッシュ 特殊な意味を持つ…

git for windows アップデート

便利だった。 > git update-git-for-windows Git for Windows 2.29.2.windows.3 (64bit) Update 2.35.1.windows.2 is available Download and install Git for Windows 2.35.1(2) [N/y]? y ###############################################################…