Skip to content

Instantly share code, notes, and snippets.

eerohele / xpath.clj
Created February 14, 2023 13:04
Clojure XPath
View xpath.clj
(set! *warn-on-reflection* true)
(require '[clojure.edn :as edn])
(require '[clojure.core.protocols :refer [Datafiable]])
(require '[clojure.datafy :as datafy])
(require '[ :as io])
(import '( StringReader PushbackReader))
(import '(java.time LocalDateTime))
(import '(java.time.format DateTimeFormatter))
View integer_hashing.clj
"Encode and decode integers (such as database identifiers) using Knuth's multiplicative hashing
algorithm. Based on"
;; Permission is hereby granted, free of charge, to any person obtaining a copy
;; of this software and associated documentation files (the "Software"), to deal
;; in the Software without restriction, including without limitation the rights
;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
;; copies of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:
View maybe-stupid-repl.clj
(def eval-context (atom {}))
(defn handle
"Imaginary message handler that sets the namespace received out of band."
(swap! eval-context assoc #'*ns* (find-ns ns)))
(defn repl
(loop []
eerohele / bytecode.clj
Last active February 4, 2022 19:34
View bytecode.clj
(ns tutkain.bytecode
(:require [ :as io]
[tutkain.backchannel :refer [handle respond-to]])
(:import ( PrintWriter StringWriter)
(java.util.spi ToolProvider)
(java.nio.file Files)
(java.nio.file.attribute FileAttribute)))
(set! *warn-on-reflection* true)
eerohele / hello-again.clj
Last active November 19, 2021 16:56
JEP 408 Clojure Hello World
View hello-again.clj
(import '( HttpHandlers HttpServer Headers Filter))
(import '( InetSocketAddress))
(import '(java.util.function UnaryOperator))
(defn make-handler
[{:keys [status headers body]}]
(HttpHandlers/of status (Headers/of headers) body))
(def identity-filter
(Filter/adaptRequest "Identity"
eerohele / stacktrace.edn
Created May 31, 2021 11:59
ClojureScript stack trace
View stacktrace.edn
#error {
:cause nil
[{:type clojure.lang.ExceptionInfo
:message failed compiling file:src/hello_world/core.cljs
:data {:file #object[ 0x630a647c src/hello_world/core.cljs], :clojure.error/phase :compilation}
:at [cljs.compiler$compile_file$fn__4001 invoke compiler.cljc 1747]}
{:type clojure.lang.ExceptionInfo
:message nil
:data #:clojure.error{:source src/hello_world/core.cljs, :line 6, :column 3, :phase :compilation}
eerohele /
Last active December 20, 2021 08:20
Start Clojure Socket REPL server and write the port number into .repl-port

In your ~/.clojure/deps.edn, add an alias like this:

:socket-repl {:extra-deps {me.flowthing/shiv {:git/url ""
                                              :sha "339ef83def69e62ac969a2fd797a9be1d3c1fe83"}}
              :exec-fn shiv/start-server
              :exec-args {:name "server"
                          :port 0
                          :accept clojure.core.server/repl
 :server-daemon false}}
View cljs-macro-compiler-stack-overflow.txt
79 |
80 |
81 | (deftest surgeon
82 | (spec/test-with (spec/browser) page
StackOverflowError: (cljs_hacks.cljc:154) (cljs_hacks.cljc:148)
ZlGCeaVIOme2sCc k7aM5azZDf8EwrX 4dUaIaKru5MOfW7 xDTolSOzxKTDA2f
q36EErpEcULTthd 1khuiM9BjaUTCKq 6Xr2MZHgg6smaIL BpjOvAsq7EbxijZ
fSj5kuHbySVTnuH YIWUnXY5GoHnZlS aqDRMsNR9btNJlP pzv7I0aNlDoMQsU
Z1imMSmbnfS2TgB avyYaeJjLH8GrrZ jTEzl0Qz5Z.
eerohele / core.clj
Last active February 12, 2020 12:58
View core.clj
(require '[clojure.main :as m])
:init #(apply require m/repl-requires)
:eval (fn [form]
(require '[clojure.pprint :refer [pp pprint]])
(require '[hashp.core])
(eval form))))