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

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

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

音樂は SoundCloud 等に公開中です。

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

Programming は GitHub で開発中です。

Programming

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 …

throw しない函數が吐く console.error を補足する

error が有るのにそれを console に吐くだけで throw しない不屆きな函數が有る。壊れた data で處理が進んでは困るから throw して貰ひたい。或いは error を UI 上に表示したいから catch したい。詰まり console に吐かれた error を捕捉して何かを行なひ…

Google Cloud Load Balancing を ingress-nginx に置き換へて値段を節約した

幾つかの個人 service や chat bot を GKE (Google Kubernetes Engine) で運用してゐる。K8s の機能を試す爲であったり server を運用する上では K8s が一番樂であるので GKE を使ってゐる。 GKE は價格が高い。先月に、古い cluster だと自動更新を有效に出…

Python で React Web front を書く

Web front は樂だ。UI が組み易い (だから皆 Electron を使ふのだ)。deploy & release し易い。そして今やどんな programming 言語ででも書ける。勿論 Python ででも書ける。 Transcrypt - Python in the browser - Lean, fast, open! Transcrypt は Python …

WSL でも macOS でも、Docker で開發する

もう WSL 2 も出ると云ふのに WSL 1 の話だが。 Python 3 で開發するとしやう。開發環境を Docker container に閉じ込めたい。と云ふのも Python の依存 library 管理は pip や Pipenv、Poetry と未だ固まってゐず、手元の環境は即座に捨てられるのが望まし…

XML を表現する時 XML の階層が表現する code にも表れて欲しい (Python)

偶々 Clojure で Atom を、Python で SVG を生成する機會が有った。どちらも XML だ。Python には標準でxml.etree.ElementTreeと云ふ class が含まれてゐて、これで XML を讀み書き出來る。 Clojure だと XML を生成するには、 (require '[clojure.xml :as x…