1744230502
2025-04-09 19:44:00
古いものを維持する:無グルグ張りのClojureプログラマの習慣
Grug Clojure Code Vibeのデモです。彼は何らかの理由でCloud LLM Magicsにキャッチしません。まだ脳の筋肉のみのプログラムを好む。 Grug Language Standard Libraryと標準開発ツールを使用することをお勧めします。ローカルディスクですべてのバイトを作成して使用します。たぶんluddite、多分時代遅れかもしれません。心をつぶす。彼がどのようにコーディングするかで問題ありません。その上、筋肉のようなひどい。盗むためのヒント、トリック、戦術を見るかもしれないことを願っています。使用できるものを取ります、使用できないものを取ります。
Scicloj Visual-Tools Meeting No。 32(Clojureverseで詳細)。
私のものは、M’Friend、同僚、Clojure Nerd、および全面的なMenschによるものとは完全に対照的です。 カピル・レディ。
- 最初に、Kapil(〜15m 50sで始まります):ClojureScriptとClojureを使用した彼がどのようにLLMS / MCPSを使用していますか。
- 次に、私(〜46m 50sで始まります):それを古いものに保ちます:grug骨braine造りのクロジュリストのリプル習慣。
NB。 JVM Clojureにいくらか偏っていますが、これを使用しています。
- ライブClojureランタイムを操作するコア筋肉記憶を構築する ない 編集者またはサードパーティのツールに依存します。
- に寄りかかっています Clojure Standard Library 可能な限り、特に 名前空間、clojure.pprint、clojure.repl、clojure.reflect、clojure.datafy。
- すぐにボックスを使用することを好みます Depsとcli そして 建てる ツールは、たとえばLeiningenよりも努力的な学習曲線をもたらしますが。
- ノートを作成します の上 あなたのワークフロー、 店員 または 粘土 または ゴリラREPL、 または CalvaのClojureノートブック 特徴。または、私の史上究極のお気に入り、Org-Babelを使用したORGモード。
- この動的ワークフローをポートし、他の(クロイスではない)コンテキストに使用します。たとえば、構造化されたプロンプト技術を使用して複数のLLMを調整します。その詳細については、M’Colleague Kapilが何をしているのか(同じビデオ)を参照し、議論を聞いてください。それは私の給料グレードを超えています。
…これは、このブログ投稿にレンダリングしたライブコードデモを配信するために使用されていると思われる単純な古い組織モードファイルです。
おっと
- 機械的同情の歩行パラドックス
- 急速に時代遅れになります
- 依存関係にひどくアレルギー
- ワーキングメモリの半分のスロット
- 持っている 考えるために書くために
- LLMができません、Smol Brainは大きなコンテキストを処理しません
- 「オタクのための執筆」(ハンモックで)>>「オタクの雰囲気」
whereami
ポリグロットノートブックFTW(組織モードのセールスピッチ:)
(ns user
(:require [ring.adapter.jetty :as jetty])
(:gen-class))
(defn echo-handler [request]
{:status 200
:headers {"Content-Type" "text/html;charset=utf-8"}
:body (pr-str request)})
(defn run-jetty
[port]
(println "Starting Jetty server at port:" port)
(jetty/run-jetty echo-handler
{:port port :join? false}))
(defn -main []
(run-jetty 3000))
(comment ; "'Rich' comment form"
;; clojure -M -m org.evalapply.catchall-app
;; OR:
(def server (run-jetty 3001))
(.stop server)
)
そしてチェックしてください…
とパイプライン…
curl -s "localhost:3001" | bb -e '(-> *input* :headers)'
(require '[clj-http.client :as http])
(http/get "http://localhost:3001")
(require 'clojure.pprint)
ライブオブジェクトを検査します
(-> server
clojure.reflect/reflect
;; alt: cider pprint from edit buffer
clojure.pprint/pprint)
値をキャプチャして、自由にそれらを検査します
(defonce responses (atom []))
(defn capture-response
[response]
(swap! responses conj response))
(add-tap capture-response)
(tap> {:status 200 :body "hi"})
@responses
表
(clojure.pprint/print-table [:status :body] @responses)
視覚検査官
(require '[clojure.inspector :as inspector])
(inspector/inspect-tree (clojure.reflect/reflect server))
依存関係を試してください
- deps.ednファイルを変更せずに追加します
- Echo Handlerをリファクタリングして、JSON = Trueクエリパラメーターを処理します
- コピーしてボディを交換します(動的なREPL駆動型DEV。)
(require 'clojure.repl.deps)
(clojure.repl.deps/add-libs
{'org.clojure/data.json {:mvn/version "2.5.1"}})
(require '[clojure.data.json :as json])
(defn TODO-override-echo-handler [])
(require '[clj-http.client :as http])
(let [base-uri "http://localhost:3001"]
(http/get (str base-uri "/foobar?json=true")))
#無グルグ張りのClojureプログラマーの習慣