<?xml version="1.0" encoding="UTF-8"?>
<record
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
    xmlns="http://www.loc.gov/MARC21/slim">

  <leader>05533nam a22003135  4500</leader>
  <controlfield tag="003">GSU</controlfield>
  <controlfield tag="005">20260604101028.0</controlfield>
  <controlfield tag="008">250702s2021    ncua||||o|||||000 0|eng|d</controlfield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9781680506822 (paperback)</subfield>
  </datafield>
  <datafield tag="040" ind1=" " ind2=" ">
    <subfield code="b">eng</subfield>
    <subfield code="c">GSU</subfield>
    <subfield code="d">GSU</subfield>
    <subfield code="e">rda</subfield>
  </datafield>
  <datafield tag="050" ind1=" " ind2="4">
    <subfield code="a">QA76.73.C565</subfield>
    <subfield code="b">SOT</subfield>
  </datafield>
  <datafield tag="100" ind1="1" ind2=" ">
    <subfield code="a">Sotnikov, Dmitri</subfield>
    <subfield code="e">author</subfield>
  </datafield>
  <datafield tag="245" ind1="1" ind2="0">
    <subfield code="a">Web development with Clojure :</subfield>
    <subfield code="b">build large, maintainable web applications interactively /</subfield>
    <subfield code="c">Dmitri Sotnikov and Scot Brown.</subfield>
  </datafield>
  <datafield tag="250" ind1=" " ind2=" ">
    <subfield code="a">Third edition.</subfield>
  </datafield>
  <datafield tag="264" ind1=" " ind2="1">
    <subfield code="a">Raleigh, North Carolina :</subfield>
    <subfield code="b">The Pragmatic Programmers, LLC,</subfield>
    <subfield code="c">&#xA9;2021</subfield>
  </datafield>
  <datafield tag="300" ind1=" " ind2=" ">
    <subfield code="a">xiv, 448 pages :</subfield>
    <subfield code="b">illustrartions ;</subfield>
    <subfield code="c">24 cm</subfield>
  </datafield>
  <datafield tag="336" ind1=" " ind2=" ">
    <subfield code="a">text</subfield>
    <subfield code="b">txt</subfield>
    <subfield code="2">rdacontent</subfield>
  </datafield>
  <datafield tag="337" ind1=" " ind2=" ">
    <subfield code="a">unmediated</subfield>
    <subfield code="b">n</subfield>
    <subfield code="2">rdamedia</subfield>
  </datafield>
  <datafield tag="338" ind1=" " ind2=" ">
    <subfield code="a">volume</subfield>
    <subfield code="b">nc</subfield>
    <subfield code="2">rdacarrier</subfield>
  </datafield>
  <datafield tag="504" ind1=" " ind2=" ">
    <subfield code="a">Includes index.</subfield>
  </datafield>
  <datafield tag="505" ind1="8" ind2=" ">
    <subfield code="a">Cover -- Table of Contents -- Acknowledgments -- Introduction -- What You Need -- Why Clojure? -- Why Make Web Apps in Clojure? -- How to Read This Book -- 1. Getting Your Feet Wet -- Set Up Your Environment -- Managing Projects with Leiningen -- Build Your First Web App -- Refine Your App -- What You've Learned -- 2. Luminus Web Stack -- Route Requests with Ring -- Extend Ring -- Define the Routes with Reitit -- HTML Templating Using Selmer -- What You've Learned -- 3. Luminus Architecture -- Manage the Project -- Think in Terms of Application Components -- Managing Stateful Components -- What You've Learned -- 4. Introducing ClojureScript -- Understand ClojureScript -- Add ClojureScript Support -- Build the UI with Reagent -- Managing State with Re-Frame -- What You've Learned -- 5. Setting Up for Success -- Services -- ClojureScript Development Tools -- Embracing Re-Frame -- Multi-User with WebSockets -- Upgrading to Sente -- Events and Effects in Re-Frame -- What You've Learned -- 6. Planning Our Application -- What's in Our MVP? -- The Elephant in the Room -- Data Modeling -- Adding User Management -- What You've Learned -- 7. Account Management -- Authorship -- Add Author's Posts Page -- Account Customization -- Account Settings -- What You've Learned -- 8. Social Interaction -- Improving Posts -- Curating Posts -- What You've Learned -- 9. Deployment -- Unit Tests -- Package the Application -- What You've Learned -- 10. Exercises -- How to Read This Chapter -- Code Quality -- Feature Enhancements -- What You've Learned -- A1. Clojure Primer -- A Functional Perspective -- Data Types -- Using Functions -- Anonymous Functions -- Named Functions -- Higher-Order Functions -- Closures -- Threading Expressions -- Being Lazy -- Structuring the Code -- Destructuring Data -- Namespaces -- Dynamic Variables -- Polymorphism -- What About Global State?.</subfield>
  </datafield>
  <datafield tag="505" ind1="8" ind2=" ">
    <subfield code="a">Writing Code That Writes Code for You -- The Read-Evaluate-Print Loop -- Calling Out to Java -- Calling Methods -- Reader Conditionals -- Summary -- A2. Editor Configuration -- Why Is Editor Integration So Important? -- General Configuration Tips -- VSCode + Calva -- IntelliJ IDEA + Cursive -- Emacs + Cider -- Vim -- A3. Working with EDN and Transit -- EDN -- Transit -- A4. Database Access -- Work with Relational Databases -- Use HugSQL -- Generate Reports -- What You've Learned -- A5. Writing RESTful Web Services with Liberator -- Using Liberator -- Defining Resources -- Putting It All Together -- A6. Leiningen Templates -- What's in a Template -- Index -- - SYMBOLS - -- - DIGITS - -- - A - -- - B - -- - C - -- - D - -- - E - -- - F - -- - G - -- - H - -- - I - -- - J - -- - K - -- - L - -- - M - -- - N - -- - O - -- - P - -- - Q - -- - R - -- - S - -- - T - -- - U - -- - V - -- - W - -- - X - -- - Y -.</subfield>
  </datafield>
  <datafield tag="520" ind1="8" ind2=" ">
    <subfield code="a">Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you create a series of web apps of growing complexity, exploring the full process of web development using a modern functional language. This fully updated third edition reveals the changes in the rapidly evolving Clojure ecosystem and provides a practical, complete walkthrough of the Clojure web-stack.Stop developing web apps with yesterday's tools. Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you work hands-on with Clojure and build a series of web apps of increasing size and scope, culminating in a professional grade web app using all the techniques you've learned along the way.This fully updated third edition will get you up to speed on the changes in the rapidly evolving Clojure ecosystem - the many new libraries, tools, and best practices. Build a fully featured SPA app with re-frame, a popular front-end framework for ClojureScript supporting a functional style MVC approach for managing the UI state in Single-Page Application-style applications. Gain expertise in the popular Ring/Compojure stack using the Luminus framework. Learn how Clojure works with databases and speeds development of RESTful services. See why ClojureScript is rapidly becoming a popular front-end platform, and use ClojureScript with the popular re-frame library to build single-page applications.Whether you're already familiar with Clojure or completely new to the language, you'll be able to write web applications with Clojure at a professional level.</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="0">
    <subfield code="a">Clojure (Computer program language)</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="0">
    <subfield code="a">Web site development.</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Brown, Scot</subfield>
    <subfield code="e">author</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Swaine, Michael</subfield>
    <subfield code="e">editor</subfield>
  </datafield>
  <datafield tag="942" ind1=" " ind2=" ">
    <subfield code="2">lcc</subfield>
    <subfield code="c">BK</subfield>
    <subfield code="n">0</subfield>
    <subfield code="e">Third edition</subfield>
    <subfield code="h">QA76.73.C565</subfield>
    <subfield code="k">QA</subfield>
    <subfield code="m">SOT</subfield>
  </datafield>
  <datafield tag="999" ind1=" " ind2=" ">
    <subfield code="c">2679</subfield>
    <subfield code="d">2679</subfield>
  </datafield>
  <datafield tag="952" ind1=" " ind2=" ">
    <subfield code="0">0</subfield>
    <subfield code="1">0</subfield>
    <subfield code="2">lcc</subfield>
    <subfield code="4">0</subfield>
    <subfield code="7">0</subfield>
    <subfield code="8">GC</subfield>
    <subfield code="a">GSULE</subfield>
    <subfield code="b">GSULE</subfield>
    <subfield code="d">2026-05-26</subfield>
    <subfield code="e">B A I</subfield>
    <subfield code="i">05631</subfield>
    <subfield code="l">0</subfield>
    <subfield code="o">QA76.73.C565 SOT</subfield>
    <subfield code="p">50000006778</subfield>
    <subfield code="r">2026-05-26 14:43:00</subfield>
    <subfield code="t">1</subfield>
    <subfield code="w">2026-05-26</subfield>
    <subfield code="y">BK</subfield>
  </datafield>
</record>
