Programming
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にぶら下げてあ…
讀み取り専用 on-memory で高速 再起動せずに新しい ver.の data へ入れ替へられる 古い ver.で處理してゐた計算はそのまま古い ver.を讀み出し續けられる heap 領域に cache できる。讀み出した data を snapshot として system 外に持ち運べる parallel こ…
はい。 bookmarklet です。 javascript: { let n = "" + (Math.floor(Math.random() * 1213) + 1); while (n.length < 3) n = "0" + n; window.open(`http://negineesan.com/comics/negi/negi${n}.jpg`); } 貼り附けてやりましょうよ。 駄目でした。
Clojure/Haskell の誓ひと云ふのを立ててゐる。個人的な programming を Clojure/Haskell 以外でしないと云ふ誓ひだ。大体の事は置き換へてゆける。Java を使ふところは Clojure に置き換へる。Lisp を使ひたかったし、SuperCollider (Overtone)と Processin…
qiita.com 12/5 Elixir を使って製品を作ってゐると、release して此れ程の時が経ち此れ程の人が利用してゐるのに樣々のものが足りない。此の世では、必要なものは作る事に成ってゐるさうだ。なので一つづつ作ってきた。 みなさんも一つづつ作ってゆきませう…
Clojureをやる。Overtone (SuperCollider)とQuil (Processing)が目當てだったが、JVM は此いつで濟ませて了へさうだ。Android も Clojure で書ける。 書けてゐた。 或る日突然書けなく成った。Leiningenを更新したからだ。lein 2.8 に成った。 % lein -v Lei…
github.com whatyouhide/stream_data は素晴らしい library だが Elixir 1.5 以上でなければ動かない。他の事の序でついでに 1.4 に對應させてみた。 diff --git a/lib/ex_unit_properties.ex b/lib/ex_unit_properties.ex index f9822b1..f95bcad 100644 --…
pqueue2 | Hexを作った。 github.com Erlang で書かれたpqueueに含まれてる pqueue2 モジュールを、Elixir でラップしたもの。 q = PQueue2.new |> PQueue2.put(:a, 2) |> PQueue2.put(:b, 1) |> PQueue2.put(:c, 1) {:b, q} = PQueue2.pop Collectable と E…
Stream で hash を計算する stream_hash | Hex 何故無かった。 github.com "test/fixture/xyzxyz.txt" |> File.stream! |> StreamHash.hash(:sha512) |> Enum.to_list |> hd # <<215, 133, 241, 243, 115, 159, 59, 127, 111, 242, 140, 106, 171, 211, 130,…
日本の祝日を扱ふ holiday_jp を Elixir に移植した holiday_jp-elixir を作った github.com 普段は Ruby や Elixir や Python や Crystal を扱ってゐる。祝日と云ふのは本質的に難しい。何時が祝日であるかは国民の祝日に関する法律と云ふ法律に依って決ま…
JSON を整形してから diff をとる tool、diff-with-json を作った。 github.com JSON を jq command に通して整形し、colordiff が在れば其れを、無ければ diff を使って差分を表示する。 次の a1.json と a2.json が在ったとしやう。 // a1.json { "m": 42,…
ML Advent Calendar 2016 - Qiita 12/11 參加。 JavaScript と云[い]ふ言語に變換[へんかん]する言語は沢山[たくさん]在った。活溌[かっぱつ]に活動してゐるものは未[ま]だ多いものの、多勢はTypeScriptやElmに流れたやうだ。TypeScript の型 system は軈[や…
Crystal で殺せ // Speaker Deck Crystal で作る簡單インタラクティブ CUI。Crystal で面倒臭い作業を殺せ Git の要らない local & remote ブランチを撰んで消すツールを作ったで書いた tool を紹介したものだ。其の後多量の branch が在っても scroll 出來…
private-values // Speaker Deck private-values: 秘密情報や個人的な file を共有リポジトリから隠す爲のツールで紹介した tool だ。今あたらしい機能を一つ考へてゐる。複數の team で使へるやう、site (假り名) と云ふ概念を入れやうと思ってゐる。後方互…
Serverless Framework を本番環境に投入するために // Speaker Deck Tutorial は以下に書いた。本當に簡單なのだ。 Serverless Framework (1.0) で AWS Lambda と AWS API Gateway を設定する、單純なサンプルを書いた 纏め丈轉記しておかう。 What? サーバ…
log を撫でまはし乍らごそごそしてゐたら出來てゐたので gem にした。 github.com N 個のデータから成る large_data が在り Ruby の Enumerable として取得出來る時、標準偏差や分散等を計算しやうとしたら、単純にやると N 個のデータをディスクに置かなけ…
コンパイルはする。 crystal run や go run や rdmd や runghc のやうに、事前ビルドのコマンドを走らせる事無くインタープリタのやうに實行する機能が Rust には無いらしいので自作した。 #!ruby -rdigest/sha2 o="/tmp/#{Digest::SHA512.file __FILE__}-#{…
Serverless Framework (1.0) で AWS Lambda と AWS API Gateway を設定する、單純なサンプルを書いた。 github.com 説明は全部 GitHub の方に書いてある。 サーバーレスアーキテクチャの好い所は、インフラの管理とアプリケーションの處理とを分離出來る事だ…
git cleanup-branch で消せる。 github.com feature ブランチ等、Git の merge 濟みのブランチが local にも remote にも溜まってゆく。注意してゐれば溜まらないのだが、注意を怠ると溜ってゆく。git branch -a --merged で一覧し、消したいブランチを撰び…