このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

Caty

Tao of RPC

「RPCの理想は失われた、だが…」で、 堕落と怠惰であてどなく底辺を彷徨うのはやめよう。もう一度、あの理想を思い出そうぜベイビー。 と書いた。中途半端なハイブリッド方式はもうコリゴリだ。ほんとにロクなことがない、サイテーだったわ。純粋PRCモデルに…

RPCの理想は失われた、だが…

RPCは素晴らしい - 檜山正幸のキマイラ飼育記 メモ編 続・RPCは素晴らしい - 檜山正幸のキマイラ飼育記 メモ編 RPCは、距離や方式に無関係に手続き呼び出しを行う技術。引数や戻り値のデータ形式の違いはマーシャラが吸収してくれる。距離と方式に関わる諸々…

レイアウトとナビゲーションとスケッチ

空間レイアウト、時間スケジュール、カメラのパン - 檜山正幸のキマイラ飼育記 メモ編 ボンドとその誘導ルール - 檜山正幸のキマイラ飼育記 メモ編 ↑に関係する話。スピヴァックのOlog論文を1/3くらい読んだ。さすがにスピヴァック、あのニイチャンはいいこ…

続・RPCは素晴らしい

うん、素晴らしい。もうなんなんだろね、このスッキリ感は!! やっぱりね、違和感が残る概念を取り入れてハイブリッドにするのは良くなかったよ、シミジミ。実際は後悔しているが、あんまり後ろ向きのことを言ってもしょうがない。純RPCで行こう。

ボンドとその誘導ルール

ユーザーとの対話状況を記述するために、インタラクショングラフというものを考えている。基本的に、以前からあるハイパーリンクによる状態遷移グラフだが、次の2点が違う。 シーンという単位で状態をグループ化ができる。シーンは入れ子にできる。 状態をボ…

RPCは素晴らしい

Webアプリケーションのモデルを100%RPCベースにすることにした。RPCにしたら、ほんとに考えやすくて何かと捗る。今までナニヤッテタンカ?という感じ。RPCベースにすると、RPCサーバーはストレージコレクションと考えることができる。ただし、値は手続きだが…

空間レイアウト、時間スケジュール、カメラのパン

Catyで「状態」というものをUIコンポネント(ウィジェット)のスナップショットと考えたいのだが、複数の状態の複合状態とは、空間レイアウトに対応する。実際にレイアウトはしないが、空間レイアウトの素材一式が複合状態で、集合の直積で与えられる。一方…

絵のソース

http://d.hatena.ne.jp/m-hiyama/20130302/1362213537 で示した絵のソース。 // pred-call-tree.caty [ gv:node any, gv:node and, gv:node or, gv:node not, gv:node nor, gv:node every, gv:node some, gv:node eq, gv:node lt, gv:node gt, gv:node neq, …

絵のソース

http://d.hatena.ne.jp/m-hiyama/20130227/1361928297 で示した絵のソース。 // this is CatyScript // Output File: schema-book-purchase-2r.gif [ gv:node --style=filled --fillcolor=skyblue String, gv:node --style=filled --fillcolor=skyblue YMD, …

モノイド二重圏をモジュール計算に利用する

http://d.hatena.ne.jp/m-hiyama/20130117/1358383722 にモノイド二重圏の定義だけは書いた。Catyのモジュール計算に使うつもり。モジュール、正確に言えば境界付きモジュールを水平1セルとみなす。境界データは、i0:A→M、i1:B→M という写像で与えられて、水…

過去の予定と現状

だいぶ昔の予定や課題 __integerスキーマ属性 → やめた whenにotherwiseワイルドカード → 済み 複数プロファイル → やめた、代わりに単純オーバーロード オブジェクトのeach → 済み ユニオン型のワイルドカード → まだ仕様も未定、だがやるつもり importと名…

Catyの変更や拡張

http://d.hatena.ne.jp/m-hiyama-memo/20121231/1356927784 から後の2012年後半の変更拡張: file:writeに--mkdirオプションを追加 pv, item, nth, xjson:get に --safe, --default オプション 特殊コマンドもオプションの構文チェック アプリケーション修飾…

Catyの変更や拡張

http://d.hatena.ne.jp/m-hiyama-memo/20120229/1330491076 から後の2012年前半の変更拡張: debug:fuserコマンドを追加(Linux用) cpl (Classical Propositional Logic) モジュールを追加、暫定的 gv:draw に --format=plaindot を追加 Caty起動時オプション…

基本的な処理パターンの絵

Catyのコマンド/アクション、クライアント状態(≒画面、UI)、型チェックと分岐、ファシリティ/エンティティなどを使って、基本的な処理パターンを表現してみる。 以下に描画用のソース。

不完全なモジュールを許容すること

Catyの諸々の定義やプログラムは、モジュールで構成される。そのモジュールを可視化すると、疑問符('?')やグレーの図形が表示されることがある。このモジュールのソースは次。 /** * 不完全なモジュール */ module tt in cara;/** 型の定義は後でする(def…

プランの記述と可視化

「設計」(design)より「プラン」(plan)という言葉を使おうと思う。これはH氏の提案だ。英辞郎でplanを引くと: 計画、企画、予定、今後の進め方 設計図、図面、平面図、伏図 意向、つもり、考え、意図 ◆通常複数形で使う とあり、もともと絵図の意味を持…

CatyScriptとファシリティとエンティティ

Catyでは、コマンド/アクション(アクションはコマンドの特殊なもの)は薄緑の楕円で描くことにしている。単なる習慣だけど、習慣を守るとイチイチどうしようかと考えなくて済む。CatyScriptは徹底的に図式的・絵的(pictorial/graphical/diagrammatic)な…

ワイヤーとジャンクション (再)

http://d.hatena.ne.jp/m-hiyama-memo/20120104/1325658594 と同じ内容だが、もう一度説明。 型Aのデータが流れるワイヤー 値xが生成される 値が特にvoidのときは、点線にする。voidが生成される、あるいはvoidが流れるワイヤー。 型Aのデータを捨ててしまう…

Catyの原理と図示法

Catyで実行可能なものはコマンドである。コマンドだけが実行可能であり、コマンドしかない。その意味でコマンド一元論。アクションというのもあるが、これはWeb経由で呼び出し可能なコマンドをアクションと呼んでいるに過ぎない。コマンドは入力と出力を持ち…

TreeEditUI

/ProjectCaty/TmpWork/TreeEditUI/ というディレクトリがあるが、TmpWorkじゃなくて、Boxesにしようかな?Boxesって意味不明なんだが、僕も起原がわからない。とにかく思い浮かんでしまった言葉だ。

デモ、忘れたことなど

browser:show が動かなかった? テンプレートをその場で作ったせいで noescape を忘れた。テンプレートは先に作っておくべき。 showmo, showst, showur, showac とか覚えきれない。でも、覚えたほうがいい。 move-to-schemata もコマンド名を忘れた。 valida…

属性付きスカラーデータの生成と検証

凡例: ×× -- まったく不可能 × -- 極めて困難 △ -- がんばれば出来る ○ --できる JSONスキーマのスキーマ属性: 属性名 genでサポート可能か validateでサポート可能か minimum ○ ○ maximum ○ ○ minLength ○ ○ maxLength ○ ○ format △ △ pattern × ○ minIte…

コマンドラインで色々

[追記]ヘボイが、misc::browser:show でいちおうブラウザに出せる。[/追記]最近使った例 gen:sample wsgi:Request gen:sample --occur=min --string=implied wsgi:Request gen:sample wsgi:Request | wsgi:req-to-env // 通常はエラーする try --wall=superh…

リソースとトリガー

アプリケーション、モジュール、コマンド/型などがメタオブジェクトグラフ(モグラ)に存在するのだが、リソースとトリガーはどうも異質だ。異質だから、取り扱うときの心構えは変える必要がある。以前、なんかモタモタしていたのは、リソース(クラスとイ…

ソフトウェアにおける change-of-base

加群の理論だと、The change of base of a module M のような言い方をする。これと、ぶっちゃけ何の関係もないが、雰囲気的に近い概念。あるソフトウェアAが、ライブラリLに依存して作られているとき、LをL'に置き換えてAを動かすことが change-of-base 。多…

branch非決定性制御構造 : ランダムウォーク

branchで非決定性の選択をする。forwardと組み合わせると、有向グラフ上のランダムフォークが簡単に書ける。 command foo :: string -> never { ["reached at foo, from ", pass] | text:concat | cout; "foo" | forward hub };command bar :: string -> nev…

ニセWebの作り方

Catyのドキュメンテーションに含めるつもりの記事(の下書き)。「CatyのWeb処理: Webフィーチャとメタプログラミング」の続き。Catyにとって、マゾ・テストは大きな目標だった*1。マゾ・テストを想定しないと、Catyの設計判断は理解できないだろう。例えば…

CatyのWeb処理の背景

ひとつ前の記事「CatyのWeb処理: Webフィーチャとメタプログラミング」の背景の理屈を少し追加説明しておく。メモ書き程度だが。背景は、入れ子の、あるいは多段のインスティチューション。いろいろな圏が出てくる。 Graph -- 有向グラフの圏。自己ループも…

CatyのWeb処理: Webフィーチャとメタプログラミング

Catyのドキュメンテーションに含めるつもりの記事。CatyのモットーはできるだけWeb処理をやらないことだ。Webフレームワークとか言いながらも、一般的な言語処理の機能内でついでにWeb処理をしてしまう形態を理想としている。「Web特有の機能を付けない」「W…

いくつかのキーワード: KoNSとサービス転送オブジェクト

クライアント/サーバーシステムで、クライアント側状態の遷移をする際に、「次にどこに遷移すべきか」あるいはむしろ「次に遷移するために何をなすべきか」の知識がいる。この知識を Knowledge of Next Step、略して KoNS と呼ぼう。問題は、KoNSを誰が持っ…