title | uri-slug | link | edit | created-on | updated-on |
---|---|---|---|---|---|
Logging in Clojure: Making Sense of the Mess |
logging-in-clojure-making-sense-of-the-mess |
2020-06-12T10:10:45+00:00 |
2020-06-12T16:55:10+00:00 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Logging is a bit of a lost art. I see people use it the same way they use | |
;; println debugging, putting in lots of (log/debug "HERE") kind of stuff, and | |
;; then removing it afterwards. | |
;; | |
;; But with a good logging library these logging statements can continue to | |
;; provide value, even if (especially if) most of the time you turn them off. | |
;; For this you need to make good use of log levels like | |
;; error/warn/info/debug/trace. What follows is an illustrated example of how I | |
;; tend to use them. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns co.gaiwan.slack-widgets.ui.components | |
(:require | |
[clojure.string :as str] | |
[clojure.walk :as walk] | |
[reagent.core :as reagent] | |
[reagent.ratom :as ratom] | |
[lambdaisland.glogi :as log] | |
[co.gaiwan.slack-widgets.ui.state :as state] | |
[lambdaisland.ornament :as o]) | |
(:require-macros [co.gaiwan.slack-widgets.ui.macros :refer [for!]])) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns lambdaisland.trikl1.simple-object-system | |
"Clojure's missing object system | |
An 'object' for us is an (r)atom which contains the object state, and metadata on | |
that atom which contains the methods, keyed by symbol. | |
A 'klass' is a map of methods, which can then be used as metadata on an object | |
to 'instantiate' an object. | |
[[call]] handles calling a method, passing it `this` (the atom) and any |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns the-clouncil) | |
(def posts | |
(sort-by :date (read-string (slurp "posts.edn")))) | |
;; Original version: mapcat + reduce | |
;; <-- in | code | out --> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns the-clouncil) | |
(def posts | |
(sort-by :date (read-string (slurp "posts.edn")))) | |
(->> posts | |
(mapcat (fn [{:keys [categories] :as post}] | |
(map (fn [category] | |
[category post]) | |
categories))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{:paths | |
["src" "resources"] | |
:deps | |
{org.clojure/clojure {:mvn/version "1.11.0"} | |
protojure/protojure {:mvn/version "1.7.3"}}} |
- https://github.com/stuartsierra/component
- https://github.com/tolitius/mount
- https://github.com/weavejester/integrant
- https://github.com/donut-power/system Mixes code+config in same structure
- https://github.com/juxt/clip Mixes code+config in same structure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bb | |
;; lein2deps | jet --pretty > deps.edn | |
(require '[clojure.string :as str] | |
'[clojure.edn :as edn]) | |
(defn read-project-clj [] | |
(-> "project.clj" | |
slurp |
