Programming
何でこの document が無いんだ。無かったから書いた。英語にしたいが氣力が無い。 Clojure Advent Calendar 2020 が空いてゐたので參加しやう。 やってみる: Getting started 先づ rebar3_clojerl で project を作ろう。First, create a project by rebar3_c…
書いたから何だと云ふ話ではあるが。 github.com 今迄 asdf の設定を Ansible で管理してあり、長く弄ってきたのが安定したから手順を module にした。publish する積もりは無い。 この module がするのは、 asdf の plugin を入れる 指定した version の實…
遅れながらであるがはてなエンジニア Advent Calendar 2020 13 日目である。 近頃趣味を遂行するのに組版をする機會が度々有りその事を書く。例へば以下を發刊する爲等だ。 c4se.booth.pm 具体的な組版の手順は Adobe InDesign に流し込んで注意深く校訂する…
こんにちは。Mackerel Advent Calendar 2020 11 日目である。 最近は自宅で仕事をしてゐて、自宅の network が相當惡い事に氣附いた。頻繁に通信が途切れる時間帯が在る。特に夕方から夜更けにかけて、まるで通信制限でもかかってゐるかのうやうにずっと遲い…
ちょっとした手順。詰り tips。 Mackerel の Google Cloud インテグレーションが公開された。これを使って GKE (Google Kubernetes Engine) の node を可視化してみる。 mackerel.io 趣味で使ってゐる GKE の pod には mackerel-container-agent を含めて、M…
難解なので記録しておく。 現在日時を UTC で得るには、 6!:0 '' 2020 8 12 21 26 14.8005 6!:0 で一つの動詞 (一階の函數) である 6!: Time。引數の '' は出力形式を指定する文字列で、'' を指定した時には特別に vector で日時が返って來る。 現在の Unix …
Ruby irb> '冬'.bytes.map{ |n| n.to_s(16) } => ["f0", "af", "a0", "9a"] irb> '冬'.bytesize => 4 irb> '羽󠄀'.bytes.map{ |n| n.to_s(16) } => ["e7", "be", "bd", "f3", "a0", "84", "80"] irb> '羽󠄀'.bytesize => 7 冬の正字冬は"\u{2f81a}"で 4 byte、…
これは大罪の類の文。 Git よりも昔には version は file 名で管理したり (私も昔やってゐたし今でも扱ふ分野に依ってはやる) SVN を使ってゐた訣だ。Git は、 version を管理できる。file 名での工夫は必ず例外が産まれ破綻するから、歴史を管理出來ない me…
非同期に行はれる二種類の處理を繋ぎたい。一つ目の處理から來る data は一つづつ二つ目の處理へ渡される。一つ目の處理は、二つ目の處理よりも速く data を作り出すとする。分散處理の出番である。CPU の core が複數有る場合や IO 待ちが支配的であるなら…
忘備。 brew info postgresql (私の手元ではbrew info postgresql@9.6) で plist file を探す。色々と PATH が表示されるので勘で plist file を見附ける。例へば/usr/local/opt/postgresql@9.6/homebrew.mxcl.postgresql@9.6.plist。 postgres 實行 file に…
世に parser generator や parser combinator が生まれてから兔角、文脈自由或いはそれに近い文法の構文解析器を作るのは簡單で、私も度々作ってきた。 PEG (Parsing Expression Grammar) が表現し易く好きでよく使ってゐた。PEG.js – Parser Generator for …
error が有るのにそれを console に吐くだけで throw しない不屆きな函數が有る。壊れた data で處理が進んでは困るから throw して貰ひたい。或いは error を UI 上に表示したいから catch したい。詰まり console に吐かれた error を捕捉して何かを行なひ…
幾つかの個人 service や chat bot を GKE (Google Kubernetes Engine) で運用してゐる。K8s の機能を試す爲であったり server を運用する上では K8s が一番樂であるので GKE を使ってゐる。 GKE は價格が高い。先月に、古い cluster だと自動更新を有效に出…
Web front は樂だ。UI が組み易い (だから皆 Electron を使ふのだ)。deploy & release し易い。そして今やどんな programming 言語ででも書ける。勿論 Python ででも書ける。 Transcrypt - Python in the browser - Lean, fast, open! Transcrypt は Python …
もう WSL 2 も出ると云ふのに WSL 1 の話だが。 Python 3 で開發するとしやう。開發環境を Docker container に閉じ込めたい。と云ふのも Python の依存 library 管理は pip や Pipenv、Poetry と未だ固まってゐず、手元の環境は即座に捨てられるのが望まし…
偶々 Clojure で Atom を、Python で SVG を生成する機會が有った。どちらも XML だ。Python には標準でxml.etree.ElementTreeと云ふ class が含まれてゐて、これで XML を讀み書き出來る。 Clojure だと XML を生成するには、 (require '[clojure.xml :as x…
度々簡易な task runner を書いてゐる。いつもは Makefile を使ってゐて、makeと打つだけで何をするべきか思ひ出せるやうにしてある。例へば、 .PHONY: help help: @awk -F':.*##' '/^[-_a-zA-Z0-9]+:.*##/{printf"%-16s\t%s\n",$$1,$$2}' $(MAKEFILE_LIST) …
tacit programming は point-free style としても知られてゐる。函數適用を使って函數を組み立てるのではなく、函數合成を基本の部品とするやり方だ。見た目上では函數の定義から引數が消える。 tacit programming から連鎖性 programming 言語 (concatenati…
Elixir Advent Calendar 2019 - Qiita 12/11 Kubernetes を何故採用したのかの續きだ。各項目の一般的な前提も前の記事に準ずる。よって讀んでくださってゐる事を期待する。 下記 slide 時期の昔話をする。何故技術撰定で Elixir を採用したのか。 ステート…
言語実装 Advent Calendar 2019 - Qiita 12/11 C に lex / yacc と云ふ字句解析 generator と構文解析 generator が有る。Erlang には標準 library に leex / yecc と云ふ同じ役割のものが有り簡單に構文解析器を作れる。Elixir からもこれを使える。 昔 Eli…
Kubernetes3 Advent Calendar 2019 - Qiita 12/11 昔 Kubernetes を技術撰定した事が有ったのでその時の話をする。以下の slide の時の話だ。 ステートフルで大規模アクセスのある soft-realtime なゲームサーバーを easy につくる 採用後の具体的な運用の話…
Mackerel Advent Calendar 2019 - Qiita 12/11 以前にKubernetes 上で動く Elixir アプリを監視するを書いた。これが完成した。 確かに Erlang/Elixir の system は落ちない。programmer が落ちないやうに書けば落ちなく出來るからだ。基本的な道具は BEAM V…
はてなエンジニア Advent Calendar 2019 - Qiita 12/6 12/5 はAWS コストエクスプローラー API と気軽につきあう(2019) - Qiitaであった。 今暫くは都合で Scala を書いてゐる。數年 Elixir をやってきた身だから、簡單に比較してみやう。 同じ所 函數型言語…
だいたいに於いてそんな方法は存在しない。 test するうまい方法が既に有れば人類は parallelism で苦勞しない。競合しないやうにする爲に施した對策が動いてゐる事は test できるが、その對策に依って競合が防がれる事はよく test できない。 たまたまうま…
去る九月七日にElixirConfJP 2019 小倉城が開かれ、公募 (審査無し) で五分間喋った。 過去 K8s 上で Elixir の Phoenix.Channel を運用してゐて、今は個人で、K8s 上で Elixir の bot とかを運用してゐる。運用するのに監視は必要なものであり、樂に充分な…
Let's create stateful systems, by Elixir. Elixir で stateful なアプリケーションを作るのは簡單です。 Elixir の得意な事としてよく眞っ先に擧げられるのは竝列性 parallelism です。確かに、簡單で安全に或る程度效率好く parallel にできるのは Elixir…
qiita.com What is Google Apps Script? Google Apps Script (以下 Apps Script) は、Google の server 上での serverless な JavaScript 實行環境です。serverless な JavaScript 實行環境ですので Cloud Function の仲間です。函數を起動できる event の種…
Immutable data is a foundation of abstraction - it localizes program computation. So immutable data makes concurrency easy & decreases bugs. All data in Erlang/Elixir is immutable. We are happy to use functional programming techniques, wor…
Vim の buffer の内容を jq で format する。下の記事に書いて在る事でしかないが。 cf. pipe - Piping buffer to external command in Vim - Stack Overflow 大きな JSON を得たがそれが format されてゐない。ざっと目で眺めたいから、jq .に流し込めれば…
Rails にはKomachiHeartbeatと云ふ何かと有り難い mountable engine が在り、Elixir/Phoenix にも欲しかったので移植した。 KomachiHeartbeat github.com Plug 若しくは Phoenix の application の、適当な path にぶら下げて使ふ。例では/opsにぶら下げてあ…