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

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

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

音樂は SoundCloud に公開中です。

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

Programming は GitHub で開發中です。

Programming

JavaScript / TypeScript で grep しにくい對象を、ESLint plugin を作って抽象構文木を基に檢索する

JavaScript / TypeScript で grep しにくい對象を抽象構文木を基に ESLint plugin で檢索する方法を敎へてもらった。目標とする抽象構文木で error を出す ESLint plugin を書けば、行が分かれて grep / ag しづらい對象を網羅して檢索できる。 今調べるとそ…

esbuild で大量の file を生成すると webpack --watch が SIGBUS で落ちる

實は esbuild は關係が無い。だうやら大量の file を生成すると webpack --watch が SIGBUS で落ちるやうだ。esbuild が tsc よりとても速いから一氣に webpack に更新を食はせて、落ちる頻度が随分と上がる、といふ事があった。bundle せず大量の TypeScrip…

結局 grep が便利

LSP (language server protocol) server での定義 jump は便利ですね。IDE は便利です。でも部分的にしか program を理解できなかったり、そもそも LSP は壊れたりします、おま環 (死語) ではありますが…。 結局 grep だとか ag が便利です。結局 print debu…

tokyo.ex Reboot に參加して喋った #tokyoex

二年ぶりの開催でした。memo です。 scrapbox.io LT はこれ。Elixir でない BEAM 言語も OK だと主宰者の方から言っていただけたので、Clojerl を紹介しました。 scrapbox.io

はてなリモートインターンシップ 2021 の講義資料が公開された

はてなリモートインターンシップ 2021 の講義資料が公開された。 developer.hatenastaff.com 私は microservice に就いての講義を擔當した。 speakerdeck.com 他の講義の資料も上記に公開されてある。 自分の講義を反省的に檢討すれば、抽象的な體系を述べる…

JPEG / PNG 畫像を可逆壓縮する Python script を Clojure (Babashka) で書き直した

先日書いた以下の記事で Python の script を貼り附けた。 c4se.hatenablog.com しかし今は Clojure (Babashka) で書く事に決めてあるので、書き直した。Windows 版の Babashka (bb.exe) ではなく Linux 版 (bb) を呼んでゐる。WSL2 で作業するのでこれで困…

JPEG / PNG 畫像を可逆壓縮する @ Windows

畫像を Internet に上げる前に壓縮する習慣を持ってゐる。macOS では ImageOptim を使ってゐるが、Windows では無い。 imageoptim.com JPEG 畫像は mozjpeg で、PNG 畫像は zopfli で可逆壓縮できればよい。以下の通りにやってゐる。 mozjpeg は scoop で入…

react-swipeable と react-transition-group で swipe animation

以下のおもちゃ 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

J 言語の剰餘演算は a | b。b が割られる數だぜ! 7 | 16 2 嗚呼、整數論での表記ね。解るけどさぁ? code.jsoftware.com 16 % 7 は割り算で 2.28571 に成る。 code.jsoftware.com / は配列に二項動詞を reduce する副詞だもんね。 code.jsoftware.com

Mackerel の機能の裏側について喋った

speakerdeck.com まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16 喋ったのでした。喋った事自體に就いての裏話は無い! mackerel-agent 側も普段觸ってゐるが今囘は喋ってゐない。 id:tukaelu さんがされた data dri…

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

自明なのだけれども。 github.com この data source は YAML 形式だが、實行時の YAML library への依存を除く爲と起動・動作速度の爲に ETS (Erlang Term Storage) file に變換して同梱してある。おそらく Erlang の ver. を上げたからなのだらうが、data s…

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…

Shibuya.lisp lispmeetup #94 に參加した

Zoom 開催です。Clojure 囘でした。 Shibuya.lisp さんには二回目の參加ですが、相當昔に偶々職場で開催された時だったので実質初です。その時も Clojure 囘だった氣がする。 これは memo です。 scrapbox.io ClojureScript の eco system を一切知らんなと…

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

Kubernetes に於いて debug する爲に cluster 内に突如 container を立てたく成ったならば kubectl run 〜 --restart=Never で立てられる。既に在る container 内に入りたければ kubectl exec 〜 でよく、Pod 内に container を立てたければ、今は ephemeral…

普段使ひの shell script を Clojure (Babashka) で書き換へた

Babashka は 10 ms 程度で起動する Clojure の runtime だ。Clojure を GraalVM で native code に compile し、shell script 使ひに便利な Clojure の標準 library と Java の class とを殘して削り、便利な library を幾つか加えたものである。66 MB に迄…

Clojure で日本の祝日を引く library を作った

Clojure で日本の祝日を引く library を作った。 github.com 既に同様の library が Java に在る (holiday-jp/holiday_jp-java) が、今囘のものは JVM で動く Clojure だけではなく、Erlang VM (BEAM) 上で動く Clojerl、.NET で動く Clojure CLR、JavaScrip…

Clojerl の Slack client を書いた

Erlang の好い感じの Slack client が無かったので書いた、のだが Clojerl で書いたので Erlang からは使へない。 github.com README に書いた通り gen_event bahaviour を書けば Slack と會話出來る。 (ns example-bot.handler1) (erlang.core/behaviours g…

Clojerl で Erlang/OTP behaviour

behaviour (英國英語) は Java の interface に似て、module に指定の函數が實裝してゐなければ警告又は error を出す機能だ。Clojerl にも、無くても困らないが有ると嬉しい。 document には当然 (なんで当然?) 無い。GitHub repository の examples にも無…

Clojerl で Erlang の pattern match を行ふ。guard を使ふ

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…

Clojerl から Erlang を呼ぶ: How to interoperate with Erlang and Clojerl

何でこの document が無いんだ。無かったから書いた。英語にしたいが氣力が無い。 Clojure Advent Calendar 2020 が空いてゐたので參加しやう。 やってみる: Getting started 先づ rebar3_clojerl で project を作ろう。First, create a project by rebar3_c…

asdf を管理する Ansible module を書いた

書いたから何だと云ふ話ではあるが。 github.com 今迄 asdf の設定を Ansible で管理してあり、長く弄ってきたのが安定したから手順を module にした。publish する積もりは無い。 この module がするのは、 asdf の plugin を入れる 指定した version の實…

正字で組版する技術

遅れながらであるがはてなエンジニア Advent Calendar 2020 13 日目である。 近頃趣味を遂行するのに組版をする機會が度々有りその事を書く。例へば以下を發刊する爲等だ。 c4se.booth.pm 具体的な組版の手順は Adobe InDesign に流し込んで注意深く校訂する…

自宅の通信制限 (?) を Mackerel で可視化する

こんにちは。Mackerel Advent Calendar 2020 11 日目である。 最近は自宅で仕事をしてゐて、自宅の network が相當惡い事に氣附いた。頻繁に通信が途切れる時間帯が在る。特に夕方から夜更けにかけて、まるで通信制限でもかかってゐるかのうやうにずっと遲い…

Mackerel の Google Cloud インテグレーションで GKE の node を可視化する

ちょっとした手順。詰り tips。 Mackerel の Google Cloud インテグレーションが公開された。これを使って GKE (Google Kubernetes Engine) の node を可視化してみる。 mackerel.io 趣味で使ってゐる GKE の pod には mackerel-container-agent を含めて、M…

J 言語で UTC 日時と Unix timestamp とを相互變換する

難解なので記録しておく。 現在日時を UTC で得るには、 6!:0 '' 2020 8 12 21 26 14.8005 6!:0 で一つの動詞 (一階の函數) である 6!: Time。引數の '' は出力形式を指定する文字列で、'' を指定した時には特別に vector で日時が返って來る。 現在の Unix …

JavaScript で、文字列を UTF-8 にした時の byte 數を計算する

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 の次には同時編緝が實用的に成って欲しい

これは大罪の類の文。 Git よりも昔には version は file 名で管理したり (私も昔やってゐたし今でも扱ふ分野に依ってはやる) SVN を使ってゐた訣だ。Git は、 version を管理できる。file 名での工夫は必ず例外が産まれ破綻するから、歴史を管理出來ない me…

非同期に行はれる二種類の處理を繋ぐには四種類の channel が要る

非同期に行はれる二種類の處理を繋ぎたい。一つ目の處理から來る data は一つづつ二つ目の處理へ渡される。一つ目の處理は、二つ目の處理よりも速く data を作り出すとする。分散處理の出番である。CPU の core が複數有る場合や IO 待ちが支配的であるなら…

macOS に Homebrew で入れた PostgreSQL の query log を見る

忘備。 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 に…

Web front で ANTLR4 を使ひ DSL を作る (但し Python で書く)

世に parser generator や parser combinator が生まれてから兔角、文脈自由或いはそれに近い文法の構文解析器を作るのは簡單で、私も度々作ってきた。 PEG (Parsing Expression Grammar) が表現し易く好きでよく使ってゐた。PEG.js – Parser Generator for …