spectrum: catch clojure.spec errors at compule time

Datetime:2017-04-19 06:10:14         Topic: Clojure          Share        Original >>
Here to See The Original Article!!!

Comparing SQL DSLs - Korma, Honey SQL, SQLingvo, oj, Suricatta, aggregate [vs.clojure.java.jdbc]. (Leaving out otherwise interesting Yesql and HugSQL, as they only let you put SQL in SQL files and load them in your code.)

Quite a few interesting tests - create/drop tables, insert related records, a join, call a SQL function.


  • (me) I believe Korma is deprecated
  • Aggregate - contrary to all the others, it doesn’t focus on selects but on  loading and saving related data
  • SQLingvo - the only one with reasonable facilities to create/drop tables (though you should use a DB migration library for this anyway)
  • Inserting related records - oj, honeySQL, sqlingvo, and suricatta lack support for returning the result so it’s difficult => use jdbc directly
  • Korma: Chris Granger, the author, writes  (1/2015): “ yeah Korma was from another time - even I don’t think it’s the right solution anymore. Yesql seems reasonable ” 

clojure library overview database

A deep discussion about (isomorphic) routing libraries for Clojure(Script), featuring primarily Secretary, Bidi, Silk. Not sure about the differences? Read this!

Balagan, Clojure (Script) data transformation and querying library by ClojureWerkz. It is something I’ve been looking for in quite a while.

UncleJim: A library for Functional Programming in Java based on Clojure collections

UncleJim  is a very interesting looking library, with these main features:

  • Type-safe versions of Clojure’s immutable collections, implementing the generic java.util collection interfaces.
  • A simplified immutable alternative to Java 8 Streams, wrapping checked exceptions and avoiding primitives.
  • A tiny, type-safe data definition language of brief helper functions: vec(), set(), map(), and tup(), (like Clojure’s vector [], set #{}, and map {}).
  • Extend Tuples to make your own immutable Java classes (with correct equals(), hashCode(), and toString() implementations) almost as easily as writing case classes in Scala.

java clojure immutability collections library

How to query complex/nested data structures in Clojure

The Clojure discussion “querying a clojure data structure ” (7/2013) has useful tips for querying more complex and nested data structures:

  1. Simplify the data structure
  2. Use Datomic’s Datalog to query the structure (it can be used against Clojure data structures, without Datomic)
  3. If that isn’t enough, use core.logic with custom code

Youy might also want to check out Balagan or Specter .

clojure data querying library

This looks at Ragtime, Migratus, Drift, Clj-sql-up. The main differences are in the format of the migration data (SQL or functions) and the breadth of functionality provided by the boot/lein plugin.

clojure library overview database

Advantage: return value or failure instead of throwing an exception from anywhere. Easier to define typed failures.

Clojure library

Clojure experience reports: RoomKey, ConsumerReports, Walmart

* Colin’s report on Clojure at RoomKey http://www.colinsteele.org/post/23103789647/against-the-grain-aws-clojure-startup

* Paul talking about Clojure at Consumer Reports ( https://www.youtube.com/watch?v=BNkYYYyfF48 )

* how walmart uses Clojure ( https://www.youtube.com/watch?v=av9Xi6CNqq4 ).

(via tbc++)

clojure experience Web

It’s interesting to see a designer to use Clojure(Script). His gain is a very concrete outcome plus ability to go quickly from idea to code (eg.thanks to a good, productive HTML DSL). It’s also interesting that he went from not liking the language to enjoying it. Perhaps like wine, you must learn to appreciate it.

programming languages Clojure script learning

A fascinating, non-monolithic security-oriented OS:

> Qubes takes an approach called security by compartmentalization, which allows you to compartmentalize the various parts of your digital life into securely isolated compartments called qubes.

(You could open each email attachement in a new, disposable qube, have a deficated qube for banking,…)

privacy security tools