Programming
JavaScript / TypeScript で grep しにくい對象を抽象構文木を基に ESLint plugin で檢索する方法を敎へてもらった。目標とする抽象構文木で error を出す ESLint plugin を書けば、行が分かれて grep / ag しづらい對象を網羅して檢索できる。 今調べるとそ…
實は esbuild は關係が無い。だうやら大量の file を生成すると webpack --watch が SIGBUS で落ちるやうだ。esbuild が tsc よりとても速いから一氣に webpack に更新を食はせて、落ちる頻度が随分と上がる、といふ事があった。bundle せず大量の TypeScrip…
LSP (language server protocol) server での定義 jump は便利ですね。IDE は便利です。でも部分的にしか program を理解できなかったり、そもそも LSP は壊れたりします、おま環 (死語) ではありますが…。 結局 grep だとか ag が便利です。結局 print debu…
二年ぶりの開催でした。memo です。 scrapbox.io LT はこれ。Elixir でない BEAM 言語も OK だと主宰者の方から言っていただけたので、Clojerl を紹介しました。 scrapbox.io
はてなリモートインターンシップ 2021 の講義資料が公開された。 developer.hatenastaff.com 私は microservice に就いての講義を擔當した。 speakerdeck.com 他の講義の資料も上記に公開されてある。 自分の講義を反省的に檢討すれば、抽象的な體系を述べる…
先日書いた以下の記事で Python の script を貼り附けた。 c4se.hatenablog.com しかし今は Clojure (Babashka) で書く事に決めてあるので、書き直した。Windows 版の Babashka (bb.exe) ではなく Linux 版 (bb) を呼んでゐる。WSL2 で作業するのでこれで困…
畫像を Internet に上げる前に壓縮する習慣を持ってゐる。macOS では ImageOptim を使ってゐるが、Windows では無い。 imageoptim.com JPEG 畫像は mozjpeg で、PNG 畫像は zopfli で可逆壓縮できればよい。以下の通りにやってゐる。 mozjpeg は scoop で入…
以下のおもちゃ React component が有って、右に swipe したら右に fade out、左に swipe したら左に fade out したいとしよう。 import React, { useState } from "react"; const items = [ {id: 1, content: "item 1"}, {id: 2, content: "item 2"}, ]; ex…
J 言語の剰餘演算は a | b。b が割られる數だぜ! 7 | 16 2 嗚呼、整數論での表記ね。解るけどさぁ? code.jsoftware.com 16 % 7 は割り算で 2.28571 に成る。 code.jsoftware.com / は配列に二項動詞を reduce する副詞だもんね。 code.jsoftware.com
speakerdeck.com まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16 喋ったのでした。喋った事自體に就いての裏話は無い! mackerel-agent 側も普段觸ってゐるが今囘は喋ってゐない。 id:tukaelu さんがされた data dri…
自明なのだけれども。 github.com この data source は YAML 形式だが、實行時の YAML library への依存を除く爲と起動・動作速度の爲に ETS (Erlang Term Storage) file に變換して同梱してある。おそらく Erlang の ver. を上げたからなのだらうが、data s…
普通に comment out/in する command である M-; でよい。macOS であれば Meta key は Option key に割り當てる事が多い。 (defn f [] (x)) の (x) を comment out したいとしよう。(x) のどこかに cursor を置き va( で (x) を選擇する。M-; で comment out…
Zoom 開催です。Clojure 囘でした。 Shibuya.lisp さんには二回目の參加ですが、相當昔に偶々職場で開催された時だったので実質初です。その時も Clojure 囘だった氣がする。 これは memo です。 scrapbox.io ClojureScript の eco system を一切知らんなと…
Kubernetes に於いて debug する爲に cluster 内に突如 container を立てたく成ったならば kubectl run 〜 --restart=Never で立てられる。既に在る container 内に入りたければ kubectl exec 〜 でよく、Pod 内に container を立てたければ、今は ephemeral…
Babashka は 10 ms 程度で起動する Clojure の runtime だ。Clojure を GraalVM で native code に compile し、shell script 使ひに便利な Clojure の標準 library と Java の class とを殘して削り、便利な library を幾つか加えたものである。66 MB に迄…
Clojure で日本の祝日を引く library を作った。 github.com 既に同様の library が Java に在る (holiday-jp/holiday_jp-java) が、今囘のものは JVM で動く Clojure だけではなく、Erlang VM (BEAM) 上で動く Clojerl、.NET で動く Clojure CLR、JavaScrip…
Erlang の好い感じの Slack client が無かったので書いた、のだが Clojerl で書いたので Erlang からは使へない。 github.com README に書いた通り gen_event bahaviour を書けば Slack と會話出來る。 (ns example-bot.handler1) (erlang.core/behaviours g…
behaviour (英國英語) は Java の interface に似て、module に指定の函數が實裝してゐなければ警告又は error を出す機能だ。Clojerl にも、無くても困らないが有ると嬉しい。 document には当然 (なんで当然?) 無い。GitHub repository の examples にも無…
Clojerl は Erlang VM (BEAM) で動く Clojure である。 Erlang/Elixir では pattern match を頻繁に使ふ。一つは條件分岐する爲。慣れてゐる Elixir で書こう。 defmodule Example do def example1(:a, v), do: v + 1 def example1(_, v), do: v def example…
何でこの 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 …