c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

holiday_jp-elixir に入れた binary の git diff をとる設定

自明なのだけれども。

github.com

この data source は YAML 形式だが、實行時の YAML library への依存を除く爲と起動・動作速度の爲に ETS (Erlang Term Storage) file に變換して同梱してある。おそらく Erlang の ver. を上げたからなのだらうが、data source には差分が無いのにこの ETS file に差分が出た。今迄は data source に差分が無いのだし test が通るから好いであらうと commit してゐたが、矢張り差分を見たいよなぁ。Elixir で inspect/2 をし差分を出す設定を入れた。

priv/holidays.ets diff=holidays
[diff "holidays"]
    textconv = mix run -e 'HolidayJp.Holidays.holidays() |> IO.inspect(pretty: true, limit: 10000)'

好く知られた設定項目だけど自分でやったのは初めてっぽい。

ただ binary としての差分を見たいのであれば git diff --binary priv/holidays.ets で好い。

Evil on Emacs で括弧を區切りとして comment out/in する

普通に comment out/in する command である M-; でよい。macOS であれば Meta key は Option key に割り當てる事が多い。

(defn f
  []
  (x))

(x) を comment out したいとしよう。(x) のどこかに cursor を置き va((x) を選擇する。M-; で comment out 出來る。

(defn f
  []
  ;; (x)
  )

;; (x) の行を Shift-v で選擇し M-; で comment out 出來る。Emacs (Evil) の標準機能である。行單位で削除したり comment out すると括弧の對應が崩れるので、括弧を選擇して comment out する。括弧の色々な編緝は smartparens で行ってゐる。

github.com

圈論初級の monoid っぽいの達を纏めた

登場人物は

  • monoid
  • monoid の圈
  • monoidal 圈
  • monoid 對象の圈
  • monad

である。

TL;DR

  • monoid は集合上の結合律と單位律とを滿たす演算である
  • monoid の圈 は monoid と monoid 準同型との成す圈である
  • monoidal 圈 は對象の間に自然同型の違ひを除いて monoid の樣な關係の成り立つ圈である
  • monoid 對象 は monoidal 圈に於いて自身と monoid の樣な關係を再現する對象である。monoid 對象の圈 は monoidal 圈の中で monoid 對象全體の成す圈である
  • monad は monoid の樣な性質を持つ自己函手である

全て異なる概念だが、深く關係してゐる。

  • monoid は對象が * の一つだけである圈 \bf C の射集合 {\bf C}(*,*) である
  • monoid と嚴密 monoidal 圈とは餘分な射を除いて同一視出來る
  • monoid は集合と寫像の圈 \bf Set を直積で monoidal 圈としたものの monoid 對象である
  • 前項に依り、monoidal 圈 \bf Set の monoid 對象の圈は monoid の圈である
  • 嚴密 monoidal 圈は (小さな) 圈と函手の圈 \bf Cat を積で monoidal 圈としたものの monoid 對象である。monoid と \bf Set との關係は、嚴密 monoidal 圈と \bf Cat との關係に相似である
  • monoidal 圈は 0-胞が * の一つだけである双圈 \bf B の 1-胞を對象とする圈 {\bf B}(*,*) である。monoidal 圈と双圈との關係は、monoid と圈との關係に相似である
  • monad は自己函手の圈の monoid 對象である

圈としての monoid、monoid の圈、monoidal 圈、monoid 對象の圈

scrapbox.io

Shibuya.lisp lispmeetup #94 に參加した

Zoom 開催です。Clojure 囘でした。

Shibuya.lisp さんには二回目の參加ですが、相當昔に偶々職場で開催された時だったので実質初です。その時も Clojure 囘だった氣がする。

これは memo です。

scrapbox.io

ClojureScript の eco system を一切知らんなと思ひました。

malli は興味深い。標準 library である clojure.spec と競合するのが不安ではある。

github.com

docker-compose の ephemeral container (kubectl alpha debug) っぽいやつ

Kubernetes に於いて debug する爲に cluster 内に突如 container を立てたく成ったならば kubectl run 〜 --restart=Never で立てられる。既に在る container 内に入りたければ kubectl exec 〜 でよく、Pod 内に container を立てたければ、今は ephemeral container と云ふ仕組みが有って kubectl alpha debug 〜 で出來る。

kubernetes.io

ところで手元の開發環境は相變はらず docker-compose である。既に立ってゐる container に入りたければ docker-compose exec 〜 でよい。docker-compose では cluster と Pod は同じものである。cluster 或いは Pod 内に conatiner を立てる操作は docker-compose run --rm 〜 であるが、その container の定義は docker-compose.yml に書かねばならず、面倒だ。docker-compose の作る network 内に container を立てられればよいのであるから、docker--network option で出來るのである。

docker-compose の作る network の名は、普通は ${DIRECTORY}_default である。docker network ls で調べてもよい。example/docker-compose.yml を起動してゐたとすると example_default だ。これを指定して、

docker run -it --network example_default --rm my_debug_image bash

これで何でも出來る。ん? 今何でも(