Ant
downloading, 228
installing on a Mac, 229
assumptions before beginning, 225
benefits of, 225
notes on the recipe for, 228
testing the recipe for, 227–228
Aspect Orientation, in Object-Oriented languages, 76–77
Big data, 139
Blocking code, macro converting to non-blocking code, 79–85
Bolts, in Storm
description of, 191, 192–193, 194–195
integrating Storm and JMS using, 204, 205, 206, 208–209, 213–214, 215
Cascading library in Hadoop
introduction of, 141
Java class dependency relationships with, 177
preformatted data needed for, 160–161
reading files in, 174–175, 177
Cascalog, introduction to, xvii, 135–141
background concepts for, 140–141
benefits of Cascalog, 135
notes on the recipe for running basic queries in, 137–141
recipe—code for running basic queries in, 135–137
testing the solution in, 137–139
Cascalog, compiling to a jar file and running, 143–148
assumptions before beginning, 143
benefits of, 143
testing the solution in, 145–146
Cascalog, loading custom data formats into, 163–177
assumptions before beginning, 163
benefits of, 163
notes on the solution for, 176–177
testing the recipe for, 175–176
Cascalog, loading data file into, 149–151
assumptions before beginning, 149
benefits of, 149
testing the solution in, 150–151
Cascalog, loading structured data into, 157–161
assumptions before beginning, 157
benefits of, 157
notes on solution for, 160–161
preformatting data for, 160–161
testing the recipe for, 159–160
Cascalog, structuring a file to load into, 149–151
assumptions before beginning, 149
benefits of, 149
testing the solution in, 150–151
Cascalog, writing out a data file with, 153–155
assumptions before beginning, 153
benefits of, 153
notes on the recipe for, 155
testing the solution in, 154–155
Clojure, reasons for using, xv–xvii
clojure.csv library, 219
clojure.data.json library, in Compojure, 30
ClojureScript, xvii
compiled to JavaScript, 35, 39–40
Pedestal server instead of, 50
ClojureScript REST client, 35–40
assumptions before beginning, 35
benefits of, 35
notes on the recipe for, 39–40
testing the solution in, 38–39
ClojureWerkz money library, 70, 74
Coding conventions in text, xviii
Comma-separated value (CSV) files. See CSV reader
Compiler extension using macros, 79–85
assumptions before beginning, 79
benefits of, 79
notes on the recipe for, 82–85
testing the solution in, 81–82
Conventions in text, xviii
core.async library, 85
mapping of SASS constants into CSS data structure using, 129–133
process of going from SASS to CSS in, 108–109
SASS for reuse and manageability of, 107–108
transformation of tree representation of, 126–128
assumptions before beginning, 217
benefits of, 217
notes on the recipe for, 219–220
testing the solution for, 219
curl, and REST servers, 20–21, 23, 25, 29, 179, 187
data.csv library, 219
Datomic, xvii
downloading, 180
assumptions before beginning, 179
benefits of, 179
loading schema and data in, 181
Datomic syntax, and DSL, 87–106
assumptions before beginning, 87
notes on the recipe for, 103–106
relational database mindset applied to, 88
testing add nested datom in, 101–104
testing create nested schema in, 100–101
testing create schema in, 97–98
assumptions before beginning, 251
benefits of, 251
logging application with, 71–72, 73, 74–75
read and evaluate approach for, 254–259
Dijkstra, Edsger, xvi
DSL (domain-specific language)
Clojure with, xvi
EDN, 47
Error log monitoring application, 221–224
assumptions before beginning, 221
benefits of, 221
notes on the recipe for, 223–224
testing the solution for, 223
EventSource, 55, 60–61, 63, 65–66
Excel, and CSV files, 217, 219, 220
Fielding, Roy, 33
future, with compiler extension macro, 81, 82, 83–84
Google Closure libraries, 35, 39
Google MapReduce, 139
Hadoop
as a batch processing system, 149
Cascading library in, 141
MapReduce concept and, 140
Pig analysis tool with, 140
setting up on Windows, 147–148
Haskell language, xvi
Hornet libraries, with JMS, 197, 198, 200, 213, 214–215
HTML5, and EventSource, 55, 60–61, 63, 65–66
http requests
Pedestal stock ticker application using, 55–67
http specification, and REST, 32–33
Java
checking for on a Mac, 3
checking for on Windows, 2
Datomic connection from, 182–185
Swing library in, 240
Java Development Kit. See JDK
Java EE (Java Platform, Enterprise Edition), 11–18
assumptions before beginning, 11
benefits of, 11
packaging Clojure to work in a Java EE environment and, 11–12
recipe (common part) for, 11–14
setting up Tomcat on a Mac and, 14–15
setting up Tomcat on Windows and, 16–18
Java Platform, Enterprise Edition. See Java EE
javac, checking for, on a Mac, 4
JDK (Java Development Kit), xvi
setting up Hadoop on a Windows machine and, 148
assumptions before beginning, 203
benefits of, 203
notes on the recipe for, 213–215
testing the recipe for, 213
JMS server, setting up and messaging, 197–201
assumptions before beginning, 197
benefits of, 197
notes on the recipe for, 200–201
testing the recipe for, 200
JRE (Java Runtime Environment), checking for and adding, on a Mac, 4–5
assumptions before beginning, 41
benefits of, 41
notes on the recipe for, 45–46
testing the solution in, 44–45
Transit used with, 47
JVM, xv
Kay, Alan, 69
Lean Software Development, xvi
lein-ring library, 45
Leiningen
assumptions before beginning, 1
benefits of, 1
creating new project in projects directory (Mac) with, 2–3
creating new project in projects directory (Windows) with, 4
description of, 1
new project directory in, 11
Pedestal stock ticker application using, 55, 56, 60
Pedestal web server using, 50, 52
assumptions before beginning, 25
benefits of, 25
context of http specification for, 32–33
notes on the recipe for, 29–32
testing the solution in, 28–29
Liberator library, in Compojure, 29, 30–31, 32
Lisp, xv
Log monitoring application, 221–224
assumptions before beginning, 221
benefits of, 221
notes on the recipe for, 223–224
testing the solution for, 223
Logging application macro, 69–77
assumptions before beginning, 69
benefits of, 69
debug macros in, 71–72, 73, 74–75
notes on the recipe for, 74–77
testing the solution in, 72–73
Macro compiler extension, 79–85
assumptions before beginning, 79
benefits of, 79
notes on the recipe for, 82–85
testing the solution in, 81–82
assumptions before beginning, 251
benefits of, 251
logging application with, 71–72, 73, 74–75
read and evaluate approach for, 254–259
Macro logging application, 69–77
assumptions before beginning, 69
benefits of, 69
debug macros in, 71–72, 73, 74–75
notes on the recipe for, 74–77
testing the solution in, 72–73
Macros
trace1, 77
MapReduce
Google introduction of, 139
Yahoo’s MapReduce and, 140
debugging a Leiningen project as, 164
Datomic connection from Java and, 182–185
assumptions before beginning, 231
benefits of, 231
notes on the recipe for, 240
testing the recipe for, 239
Middleware
in Ring, 54
using interceptors instead of, 54
wrap-default function for, 23, 39
Monads, xvii
money library, ClojureWerkz, 70, 74
Monitoring applications
log monitoring application, 221–224
website status checker, 245–249
Multiversion Concurrency Control (MVCC), xv
.NET CLR, xv
Object-Oriented languages, and Aspect Orientation, 76–77
Okasaki, Chris, xv
assumptions before beginning, 49
benefits of, 49
notes on the recipe for, 53–54
reasons for using instead of Compojure, 50
testing the solution in, 52–53
Pedestal stock ticker application, 55–67
assumptions before beginning, 55
benefits of, 55
notes on the recipe for, 62–67
testing the solution in, 60–62
Pig analysis tool, with Hadoop, 140
Production applications
Clojure as Ant plug-in in, 225–229
website status checker with, 245–249
REPL (Read Eval Print Loop), xvi, 4, 137
REST (Representational State Transfer)
origins of, 33
Richardson Maturity Model for, 33
REST clients
connecting to Datomic from, 185–188
documentation for, 185
REST server in Compojure, 19–23
assumptions before beginning, 19
benefits of, 19
notes on the recipe for, 22–23
testing the solution in, 20–21
REST server in Liberator, 25–33
assumptions before beginning, 25
benefits of, 25
notes on the recipe for, 29–32
testing the solution in, 28–29
Richardson Maturity Model for REST, 33
ring.json library, 45
SASS
constants in, 108
larger process of going from SASS to CSS in, 108–109
mapping of constants into data structure using, 129–133
reuse and manageability of CSS using, 107–108
transformation of tree representation in, 126–128
SASS DSL with Clojure zippers, 107–133
assumptions before beginning, 107
benefits of, 107
mapping of constants into data structure using, 129–133
notes on the recipe for, 122–133
tasks accomplished in, 109
testing the solution in, 121–122
transformation of tree representation in, 126–128
Selenium WebDriver tests, 241–243
assumptions before beginning, 241
benefits of, 241
notes on the recipe for, 243
testing the recipe for, 242–243
Servers. See JMS server; JSON server; Pedestal simple server; REST server in Compojure; REST server in Liberator
Software Transactional Memory (STM), xv
Spouts, in Storm
integrating Storm and JMS using, 203, 208–209, 214, 215
Stock ticker application, Pedestal, 55–67
assumptions before beginning, 55
benefits of, 55
notes on the recipe for, 62–67
testing the solution in, 60–62
assumptions before beginning, 203
benefits of, 203
notes on the recipe for, 213–215
testing the recipe for, 213
Storm apps, xvii
assumptions before beginning, 189
benefits of, 189
notes on the recipe for, 192–195
testing the recipe in, 192
Swing
Tomcat on a Mac
assumptions before setting up, 14
downloading, 14
notes on installing, 14
packaging Clojure to work in a Java EE environment and, 11–12
Tomcat on Windows
assumptions before setting up, 16
downloading, 16
packaging Clojure to work in a Java EE environment and, 11–12
tools.trace library, 77
Topologies, in Storm
integrating Storm and JMS using, 203, 204–205, 206, 208–209, 214, 215
trace1 macro, 77
Transit, 47
Tuples, in Storm
description of, 192, 193, 194–195
integrating Storm and JMS using, 205–206, 214
Types, xvii
Wadler, Philip, xvi
assumptions before beginning, 241
benefits of, 241
notes on the recipe for, 243
testing the recipe for, 242–243
Website status checker, 245–249
assumptions before beginning, 245
benefits of, 245
notes on the recipe for, 249
testing the recipe for, 247–249
WebSockets, 55
wget.exe, 2
wrap-default function, 23
Yahoo, 140
Zippers
custom zipper for maps in Datomic syntax, 91–94, 104
notes on the recipe for SASS DSL on using, 122–133
parsing a DSL using, 107
3.148.104.242