• 2025-01-11の日報


    jank-langの作者さんが言語開発のために仕事を辞めたというエントリ。 熱い内容が書かれていて良かった。

    記事中に触れていたRich Hickeyの講演も時間がある時に見てみたい。


    今日は蓮ノ空とシャニマスのライブがあった日なのだけど、 シャニマスでXRライブなのにアイドルが突如体調不良になるという演出?があってTwitterが荒れていた。

    演出としては完成度高いけども、実際「明日担当出ません」って言われたら次の日どんな顔して会場行けば良いか分からなくなりそうだし、 多分公式のツイート見た瞬間その場で崩れ落ちそう。

    蓮ノ空はなんと決勝が現地ライブで行なわれたらしく、現場の人はさぞかし楽しかっただろうなと。


    今日はNostrでESP32とLispについて話したりしていた。

    本当はESP32でCommon Lispしたいけど、現状良い感じの手段がなさそうなのでJanetで実装したいなと思っている。


    どうしても味が気になってアーリータイムズホワイドを飲んだのだけど、 思ったよりアルコール感が強くてびっくりした。

    水割りで飲んだけど、アルコールの香りが強くてなかなか進まなかった... でも微温くなった水割りならわりといけたので、次はお湯割りとかがわりと口に合うのかもしれない。

    あとハイボールは試してないのでそれも試したい。

    ウイスキーは色んな飲み方ができて奥が深いなと思った。

    今日やったこと

    Common Lisp

    明日は成人式なので「お前最近何作ってるの?」って聞かれた時にすぐプログラムを見せられるようにここ最近やってたCommon Lispプログラムを公開した。 まだWIPなので使うことはできない。

    Nostrリレーじゃないじゃんって言われるかもだけど、 元々ここで実装したプログラムをライブラリとして切り出すつもりだったので計画通り。

    ライブラリは別のリポジトリとして公開する予定。 今ある実装はそちらに全部移すのでゆくゆくは全部なくなるはず。

    squint

    今までDenoで実行しようとしたら自動的に挿入されるsquint-cljs/core.jsのimportでエラーになって困っていたけれど、 importmapを設定してDneoでも問題なく実行できて快適になった。

    Makefile の例では sed でゴリ押しですが、Deno 的には deno.json によるマッピング機能もあります。どちらでも良いので自分にとって便利な方で。

    ほーむぺーじ #79 Squint と Deno で AlgoliaSync をリメイクした

    Honoとの相性の良さが気に入ったので今日も色々書いていた。 middlewareも問題なく使えるし、かなり良さそう。

    Hono自体もシンプルかつ拡張性高いし若干のLisp性を感じ始めている。

    Basic認証とJSXも使ってみたけどわりと普通に書けた。 JSXまわりでちょっとコケたけど、慣れれば書けるもんだなと。

    あとLispでHTML書くと閉じタグを書かなくて良いので快適。

    (ns squint-hono
      (:require [clojure.string :as str]
                ["@hono/hono" :as hono] 
                ["@hono/hono/basic-auth" :refer [basicAuth]]))
    
    (def ^:private app (new hono.Hono))
    (def ^:private port 8080)
    
    (defn Layout [props]
      #jsx [:html {:lang "ja"}
            [:head
             [:meta {:charset "UTF-8"}]]
            [:body props.children]])
    
    (app.use "/auth/*"
             (basicAuth {
                         :username "Hono"
                         :password "pass"
                         }))
    
    (app.get "/" (fn ^:=> [c]
                   (let [name (c.req.query "name")]
                     (c.html #jsx [Layout [:h1 (str/join "" ["Hello! " name])]]))))
    
    (app.get "/auth/page"
             (fn ^:=> [c]
               (c.text "Viewing page")))
    
    (Deno.serve {:port port } app.fetch)

    問題としてはコンパイラがちゃんとしたエラーを表示しないので、 コンパイルエラーになった時原因が分からず困ることがままあることが多い。

    こういうのはclj-kondoでカバーするべきなんだろうか。

    明日以降やりたいこと

    Common Lispで虚無リレーを実装したい。


    ko-fi ☕GitHub Sponsors 🐙