Professional Clojure

Author : Jeremy Anderson, Michael Gaare, Justin Holgu¡n, Nick Bailey, Timothy Pratley
Price : Rs 699.00
ISBN 13 : 9788126563234
ISBN 10 : 8126563729
Pages : 264
Type : Paperbound

9788126563234

Details

Professional Clojure is the experienced developer's guide to functional programming using the Clojure language. Designed specifically to meet the needs of professional developers, this book briefly introduces functional programming before skipping directly to the heart of using Clojure in a real-world setting. The discussion details the read—eval—print workflow that enables fast feedback loops, then dives into enterprise-level Clojure development with expert guidance on web services, testing, datomics, performance, and more. Read from beginning to end, this book serves as a clear, direct guide to Clojure programming—but the comprehensive coverage and detail makes it extraordinarily useful as a quick reference for mid-project snags.

Introduction

Chapter 1: Have A Beginner's Mind
·Functional Thinking
·Value Oriented
·Thinking Recursively
·Higher Order Functions
·Embracing Laziness
·When You Really Do Need to Mutate
·Nil Punning
·The Functional Web
·Doing Object-Oriented Better
·Polymorphic Dispatch with defmulti
·Defining Types with deftype and defrecord
·Protocols
·Reify
·Persistent Data Structures
·Shaping the Language
·Summary
 
Chapter 2: Rapid Feedback Cycles with Clojure
·REPL-Driven Development
·Basic REPL Usage with Leiningen
·Remote REPLs with nREPL
·REPL Usage with a Real Application
·Connecting Your Editor to a REPL
·Reloading Code
·Reloading Code from the REPL
·Automatically Reloading Code
·Writing Reloadable Code
·Summary

Chapter 3: Web Services
·Project Overview
·Namespace Layout
·Elements of a Web Service
·Libraries, Not Frameworks
·HTTP
·Routing
·JSON Endpoints
·Example Service
·Create the Project
·Additional Namespaces
·Default Middleware
·The Storage Protocol
·Handlers
·Middleware
·Routes
·Deployment
·Using Leiningen
·Compiling an Uberjar or Uberwar
·Hosting
·Summary

Chapter 4: Testing
·Testing Basics with clojure.test
·with-test
·deftest
·are
·Using Fixtures
·Testing Strategies
·Tests Against DB
·Testing Ring Handlers
·Mocking / Stubbing Using with-redefs
·Redefining Dynamic Vars
·Record / Replay with VCR
·Measuring Code Quality
·Code Coverage with Cloverage
·Static Analysis with kibit and bikeshed
·Keeping Dependencies Under Control
·Testing Framework Alternatives
·Expectations
·Speclj
·Cucumber
·Kerodon
·Summary

Chapter 5: Reactive Web Pages In Clojurescript
·ClojureScript Is a Big Deal
·A First Brush with ClojureScript
·Starting a New ClojureScript Project
·Getting Fast Feedback with Figwheel
·Creating Components
·Modeling the Data
·Responding to Events and Handling State Change
·Understanding Errors and Warnings
·Namespace Layout
·Styling
·Form Inputs and Form Handling
·Navigation and Routes
·HTTP Calls: Talking to a Server
·Drag and Drop
·Publishing
·Reagent in Depth
·Form 1: A Function That Returns a Vector
·Form 2: A Function That Returns a Component
·Form 3: A Function That Returns a Class
·Sequences and Keys
·Custom Markup
·Reactions
·A Note on Style
·Testing Components with Devcards
·Interop with JavaScript
·One Language, One Idiom, Many Platforms
·Things to Know About the Closure Compiler and Library
·Modeling State with DataScript
·Go Routines in Your Browser with core.async
·Summary

Chapter 6: The Datomic Database
·Datomic Basics
·Why Datomic?
·The Datomic Data Model
·Querying
·Transactions
·Indexes Really Tie Your Data Together
·Datomic's Unique Architecture
·Modeling Application Data
·Example Schema for Task Tracker App
·Entity ids and Partitions
·Datomic's Clojure API
·Basic Setup
·Experimenting in the REPL
·Building Applications with Datomic
·User Functions
·Account Functions
·Task Functions
·Deployment
·The Limitations
·Summary

Chapter 7: Performance
·What Is Performance?
·Choosing the Right Data Structure Is a Prerequisite for Performance
·Benchmarking
·Timing Slow Things
·Use Criterium for Timing Fast Things
·Use Test Selectors for Performance Tests
·Parallelism
·Memoization
·Inlining
·Persistent Data Structures
·Safe Mutation with Transients
·Profiling
·Avoiding Reflection with Type Hinting
·Java Flags
·Math

Summary
Index

Experienced clojure programmers or experienced programmers from other languages looking to skip straight to the meat of using clojure

Timothy Pratley is a Clojure contributor and advocate. Clojure has been his language of choice since 2008. He develops solutions in Clojure, ClojureScript and Clojure-Android at his current role at Outpace Systems, Inc. He has fifteen years of professional software development experience during which he has used many languages, frameworks, and databases.

Jeremy Anderson is a developer at Code Adept, a West Michigan based software consultancy focused on delivering high quality software through providing software development, agile coaching and training services. He is also a Clojure enthusiast and contributor to some of the Clojure libraries.

Nick Bailey is a software developer at DataStax. He is one of the core developers for OpsCenter, a monitoring and management tool for Apache Cassandra.

Justin Holguín is a software engineer at Puppet Labs, where he specializes in Clojure backend services. Justin has a passion for functional programming and a special interest in technologies that improve software reliability, such as advanced type systems and property-based testing.

Michael Gaare is the platform technical lead at Nextangles, a financial technology startup. He's been using Clojure professionally since 2012 to build web services, data processing systems, and various libraries -- not frameworks!

Jordan Biserkov is a problem solver and Clojure enthusiast and is the Head of Software Development at Pensoft.