ハリー・ポッターの邦訳残念ケース見るたびに原著読みたいが英語で小説読むしんどさで手が出ないままいる
elixirがpolymorphismをガシガシ使っていく言語なんだしsingle table inheritanceでテーブル作るのが正攻法かもなぁとなってる
with {:ok, %URI{scheme: "tag", path: path} = uri} <- URI.new("tag:example.com,2022-06-28:objectId=1:objectType=Conversation"),
[entity | specific] <- String.split(path, ":"),
[authority, date] <- String.split(entity, ","),
{key_value_spec, specific} <-
Enum.split_while(specific, &(String.split(&1, "=") |> length == 2)),
spec_map <- Enum.map(key_value_spec, &(String.split(&1, "=") |> List.to_tuple())) |> Map.new() do
%{"specific" => [spec_map | specific], "@id" => URI.to_string(uri), "author" => authority, "date" => date}
else
_ ->
:error
end
%{
"@id" => "tag:example.com,2022-06-28:objectId=1:objectType=Conversation",
"author" => "example.com",
"date" => "2022-06-28",
"specific" => [%{"objectId" => "1", "objectType" => "Conversation"}]
}
このアカウントは、notestockで公開設定になっていません。
コンパイラ - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9#%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89
日本語wikipediaだとミドルエンドが消えてる
コンパイラにも front end, middle end, back end があるみたいだからそれのことかしら
Compiler - Wikipedia
https://en.wikipedia.org/wiki/Compiler#Front_end
このアカウントは、notestockで公開設定になっていません。
mastodonの `tag:,:objectId=:objectType=Conversation` は `{ "@id": "tag:,:objectId=:objectType=Conversation", "@type": "_:Conversation" }` でいいのかしら
本流の mastodon は ostatus:conversation を見て as:context は無視してるっぽいから実際の動きがイマイチわからんけど fedibird は circle の時は Group、そうじゃない時は conversation と同じ tagURI を入れてるので objectType 見ればいいんだけど、pleroma は https になってるのに activity+json で取得しに行っても FE の HTML 返すだけなので Document にするのも違うし型が決まらん
宣言的パーティションは列を増やして拡張はできない
継承を用いたパーティションは列を増やせるけどキー制約が使えない
強力なオブジェクト指向でサポートされるようなORMでもなければAS2のObjectを拡張したクラスを分けつつ参照でリレーション組むには向かんかしら
ActivityStreamsのcontextとかrelationshipとか、ObjectがRangeに含まれてるけど何も返さないやつの表現どうすればいいかわからん
inherits にするテーブルのスキーマに defmacro で field 作るやつやって changeset もそのモジュールの分が通るようにすれば子テーブルにインサートとかはうまくできそうだけど…?
Elixir EctoでInheritance partitionやるのEctoからのサポートあんまり受けられなさそうで厳しいかも