The ClojureWerkz Blog

News and updates about ClojureWerkz projects

Pantomime 2.5.0 Is Released

TL;DR

Pantomime is a Clojure interface to Apache Tika.

Changes between Pantomime 2.4.0 and 2.5.0

Content Extraction API

Pantomime now provdes access to Tika’s content extraction functionality via pantomime.extract/parse:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(require [clojure.java.io :as io]
         [pantomime.extract :as extract])

(pprint (extract/parse "test/resources/pdf/qrl.pdf"))

;= {:producer ("GNU Ghostscript 7.05"),
;=  :pdf:pdfversion ("1.2"),
;=  :dc:title ("main.dvi"),
;=  :dc:format ("application/pdf; version=1.2"),
;=  :xmp:creatortool ("dvips(k) 5.86 Copyright 1999 Radical Eye Software"),
;=  :pdf:encrypted ("false"),
;=  ...
;=  :text "\nQuickly Reacquirable Locks∗\n\nDave Dice Mark Moir ... "
;= }

If extraction fails, extract.parse will return the following:

1
2
3
{:text "",
 :content-type ("application/octet-stream"),
 :x-parsed-by ("org.apache.tika.parser.EmptyParser")}

extract/parse is a simple interface to Tika’s own Parser.parse method.

Contributed by Joshua Thayer.

Change Log

Pantomime change log is available on GitHub.

Pantomime is a ClojureWerkz Project

Pantomime is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Monger, a Clojure MongoDB client for a more civilized age
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Pantomime, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team

Metrics-clojure 2.5.0 Is Released

TL;DR

metrics-clojure is a Clojure façade around Coda Hale’s Metrics library, originally developed by Steve Losh.

metrics-clojure is not a ClojureWerkz project but we help maintain it and consider it to be a very valuable library.

Changes Between 2.4.0 and 2.5.0

Type Hints Use Fully-Qualified Names

Type hints across the libraries now use fully-qualified names, which means returned types don’t have to be imported in the caller namespaces.

Contributed by Jason Whitlark.

:total Key In Timers

metrics.timers/rate return value now includes :total.

Contributed by Andrew Rudenko.

Added remove-all-metrics function

metrics-clojure Now has a function to remove all existing metrics from a given registry.

Contributed by Jason Whitlark.

Metrics 3.1.1

metrics-clojure is now based on Metrics 3.1.1.

Contributed by Jason Whitlark.

Full Change Log

metrics-clojure change log is available on GitHub.

About the Author

Michael on behalf of the metrics-clojure Team.

Langohr 3.1.0 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

3.1.0 upgrades dependencies and includes one bug fix in Langohr itself.

Changes between Langohr 3.0.x and 3.1.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.4.4.

It includes an important binding recovery bug fix.

clj-http Upgrade

clj-http dependency has been updated to 1.0.1.

Cheshire Upgrade

Cheshire dependency has been updated to 5.4.0.

langohr.consumers/blocking-subscribe No Longer Fails

langohr.consumers/blocking-subscribe no longer fails with a function arity exception.

GH issue: #65.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Monger 2.1.0 Is Released

TL;DR

Monger is an idiomatic Clojure MongoDB driver for a more civilized age. It has batteries included, offers powerful expressive query DSL, strives to support every MongoDB 2.0+ feature and has sane defaults. It also has solid documentation.

2.1.0 is a compatibility release. Next feature release of Monger will be 3.0 and will use version 3.0 of the MongoDB Java driver.

Changes between 2.0.0 and 2.1.0

Clojure 1.7 Compatibility

Improved Clojure 1.7 (development milestone) releases.

MongoDB Java Driver Update

MongoDB Java driver dependency has been updated to 2.13.x.

$each Operator

The $each operator now can be used via monger.operators.

Contributed by Juha Jokimäki.

Change Log

Monger change log is available on GitHub.

Monger is a ClojureWerkz Project

Monger is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Monger, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

@michaelklishin on behalf of the ClojureWerkz Team

Elastisch 2.2.0-beta1 Is Released

TL;DR

Elastisch is a battle tested, small but feature rich and well documented Clojure client for ElasticSearch. It supports virtually every Elastic Search feature and has solid documentation.

2.2.0-beta1 is a preview release of Elastisch 2.2 which introduces a few minor improvements.

Changes between Elastisch 2.1.x and 2.2.0-beta1

Add support for Nested Aggregations in the Native Client

Native client now supports nesting in the following aggregations

  • histogram
  • date_histogram
  • range
  • date_range
  • terms

Contributed by Mitchel Kuijpers.

ElasticSearch Java Client Upgrade

Elastisch now depends on ElasticSearch Java client version 1.4.x.

clj-http Update

clj-http dependency has been upgraded to version 1.0.1.

Cheshire Update

Cheshire dependency has been upgraded to version 5.4.0.

Full Change Log

Elastisch change log is available on GitHub.

Thank You, Contributors

Kudos to Michael Nussbaum and Jeffrey Erikson for contributing to this release.

Elastisch is a ClojureWerkz Project

Elastisch is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Cassaforte, a Clojure Cassandra client
  • Monger, a Clojure MongoDB client for a more civilized age
  • Titanium, a Clojure graph library
  • Neocons, a client for the Neo4J REST API
  • Welle, a Riak client with batteries included
  • Quartzite, a powerful scheduling library

and several others. If you like Elastisch, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

Michael on behalf of the ClojureWerkz Team

Pantomime 2.4.0 Is Released

TL;DR

Pantomime is a tiny Clojure library for working with MIME types and file metadata.

Changes between Pantomime 2.3.0 and 2.4.0

Apache Tika 1.7

Apache Tika dependency has been upgraded to version 1.7.

Change Log

Pantomime change log is available on GitHub.

Pantomime is a ClojureWerkz Project

Pantomime is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Monger, a Clojure MongoDB client for a more civilized age
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Pantomime, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team

EEP 1.0.0-beta1 Is Released

EEP (Embeded Event Processing) is a Clojure stream processing library.

1.0.0-beta1 is a development milestone that introduces a breaking public API change and adapts to Meltdown 1.1.x releases.

Changes between 1.0.0-alpha5 and 1.0.0-beta1

beta1 has breaking public API changes.

Emitter Creation API Change

clojurewerkz.eep.emitter/create no longer uses pseudo-kwargs. So, instead of

1
2
3
4
(require '[clojurewerkz.eep.emitter :as eem])

(let [me (eem/create :dispatcher-type rtype :env env)]
  )

use the function like so

1
2
3
4
(require '[clojurewerkz.eep.emitter :as eem])

(let [me (eem/create {:dispatcher-type rtype :env env})]
  )

Clojure 1.6

EEP now depends on org.clojure/clojure version 1.6.0. It is still compatible with Clojure 1.4 and if your project.clj depends on a different version, it will be used, but 1.6 is the default now.

Change log

EEP change log is available on GitHub.

EEP is a ClojureWerkz Project

EEP is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a small feature complete Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client
  • Monger, a Clojure MongoDB client for a more civilized age
  • Titanium, a Clojure graph library
  • Meltdown, a fast message passing library built on top of Reactor
  • Welle, a Riak client with batteries included
  • Quartzite, a powerful scheduling library

and several others. If you like Elastisch, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team

Serialism 1.3.0 Is Released

TL;DR

Serialism a tiny Clojure library that serializes and deserializes values into popular formats based on provided content type.

Changes Between 1.2.0 and 1.3.0

Double License

The library is now double-licensed under Apache Public License 2.0 and Eclipse Public License 1.0.

Cheshire 5.4

The library now depends on Cheshire 5.4.

Full Change Log

Serialism change log is available on GitHub.

Serialism is a ClojureWerkz Project

Serialism is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Welle, a Riak client with batteries included
  • Quartzite, a powerful scheduling library

and several others. If you like Serialism, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Quartzite 2.0 Is Released

Quartzite is a Clojure DSL on top of the Quartz scheduler.

2.0.0 is a major release that contains breaking public API changes.

Changes Between Quartzite 1.3.0 and 2.0.0

Scheduler as Explicit Arguments

Following our commitment to make our projects rely less on dynamic vars we have changed clojurewerkz.quartzite.scheduler function to take an explicit scheduler argument.

So, in 1.3 releases, you would do:

1
2
3
4
5
6
(require '[clojurewerkz.quartzite.scheduler :as qs])

(qs/initialize)
(qs/start)
(qs/schedule job-detail trigger)
(qs/shutdown)

and in 2.0 release, the same code would look like so:

1
2
3
4
5
(require '[clojurewerkz.quartzite.scheduler :as qs])

(let [s (-> (qs/initialize) qs/start)]
  (qs/schedule s job-detail trigger)
  (qs/shutdown s))

quartzite.date-time is Gone

clojurewerkz.quartzite.date-time was removed as all of the functions in that namespace have been contributed to clj-time a while ago, and some provide more correct or extensible functionality.

Simply use clj-time counterparts when upgrading.

Clojure 1.4 and 1.5 are No Longer Supported

The library no longer supports Clojure 1.4 and 1.5 as of this version.

Change Log

Quartzite change log is available on GitHub.

Quartzite is a ClojureWerkz Project

Quartzite is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Monger, a Clojure MongoDB driver for a more civilized age
  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API

and several others. If you like Quartzite, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

@michaelklishin on behalf of the ClojureWerkz Team

Langohr 3.0.1 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

3.0.1 is a bug fix release.

Changes between Langohr 3.0.0 and 3.0.1

langohr.consumers/blocking-subscribe No Longer Fails

langohr.consumers/blocking-subscribe no longer fails with a function arity exception.

GH issue: #65.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team