Domain Modeling Made FunctionalDomain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming—all the techniques you need will be introduced and explained.
Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation—ensuring that the code and design never get out of sync. Encode business rules in the design so that you have “compile-time unit tests,” and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and he ...
React for RealDive right into React by defining components, the basic building blocks of a React application. Integrate modern JavaScript language features such as classes and arrow functions in your app. Analyze the relationships in your data to isolate state, and sync the data model with what your users see.
Once you're familiar with how a React application works, organize your code base with modules. Configure a production build and deliver your app as efficiently as possible with Webpack. Master testing with React-specific advice and tools to catch the most bugs with the least amount of code. Learn the basics of the Redux library. Define actions and manage an immutable central state with reducers, then connect Redux to your React components to build even larger and more complex interfaces. Package your React code as a standalone widget so anyone can use it in their own applications. Reuse existing JavaScript code in your React components, and build a new React view on top of an existing data ...
Effective Testing with RSpec 3RSpec has been downloaded more than 100 million times and has inspired countless test frameworks in other languages. Use this influential Ruby testing framework to iteratively develop a project with the confidence that comes from well-tested code. This book guides you through creating a Ruby project with RSpec, and explores the individual components in detail.
Start by learning the basics of installing and using RSpec. Then build a real-world JSON API, using RSpec throughout the process to drive a BDD-style outside-in workflow. Apply an effective test strategy to write fast, robust tests that support evolutionary design through refactoring. The rest of the book provides the definitive guide to RSpec's components. Use rspec-core's metadata to slice and dice your spec suite. Dig into rspec-expectations' matchers: compose them in flexible ways, specify expected outcomes with precision, and diagnose problems quickly with the help of good failure messages. Write fast, isolated tests with ...
Agile Web Development with Rails 5.1Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly—you concentrate on creating the application, and Rails takes care of the details. Rails 5.1 brings many improvements, and this edition is updated to cover the new features and changes in best practices.
We start with a step-by-step walkthrough of building a real application, and in-depth chapters look at the built-in Rails features. Follow along with an extended tutorial as you write a web-based store application. Eliminate tedious configuration and housekeeping, seamlessly incorporate Ajax and JavaScript, send emails and manage background jobs with ActiveJob, build real-time features using WebSockets and ActionCable. Test your applications as you write them using the built-in unit, integration, and system testing frameworks, internationalize your applications, and deploy your applications easily and securely. New in this edition is support for Webpack and advanced JavaScript, as well as Rails ...
Python Testing with pytestFor Python-based projects, pytest is the undeniable choice to test your code if you're looking for a full-featured, API-independent, flexible, and extensible testing framework. With a full-bodied fixture model that is unmatched in any other tool, the pytest framework gives you powerful features such as assert rewriting and plug-in capability—with no boilerplate code.
With simple step-by-step instructions and sample code, this book gets you up to speed quickly on this easy-to-learn and robust tool. Write short, maintainable tests that elegantly express what you're testing. Add powerful testing features and still speed up test times by distributing tests across multiple processors and running tests in parallel. Use the built-in assert statements to reduce false test failures by separating setup and test failures. Test error conditions and corner cases with expected exception testing, and use one test to run many test cases with parameterized testing. Extend pytest with plugins, conn ...
Create Your Successful Agile ProjectYou've tried to use an off-the-shelf approach to agile techniques, and it's not working. Instead of a standard method or framework, work from agile and lean principles to design your own agile approach in a way that works for you. Build collaborative, cross-functional teams. See how small batch sizes and frequent delivery create an environment of trust and transparency between the team, management, and customers. Learn about the interpersonal skills that help agile teams work together so well.
In addition to seeing work and knowing what “done” means, you'll see examples of many possible team-based measurements. Look at tools you can use for status reporting, and how to use those measurements to help your managers understand what agile techniques buy them. Recognize the traps that prevent agile principles from working in too many organizations, and what to do about those traps. Use agile techniques for workgroups, and see what managers can do to create and nurture an agile cultur ...
Learning FPGAsLearn how to design digital circuits with FPGAs (field-programmable gate arrays), the devices that reconfigure themselves to become the very hardware circuits you set out to program. With this practical guide, author Justin Rajewski shows you hands-on how to create FPGA projects, whether you're a programmer, engineer, product designer, or maker. You'll quickly go from the basics to designing your own processor.
Designing digital circuits used to be a long and costly endeavor that only big companies could pursue. FPGAs make the process much easier, and now they're affordable enough even for hobbyists. If you're familiar with electricity and basic electrical components, this book starts simply and progresses through increasingly complex projects.
Set up your environment by installing Xilinx ISE and the author's Mojo IDE; Learn how hardware designs are broken into modules, comparable to functions in a software program; Create digital hardware designs and learn the basics on how they ...
Intelligence-Driven Incident ResponseUsing a well-conceived incident response plan in the aftermath of an online security breach enables your team to identify attackers and learn how they operate. But, only when you approach incident response with a cyber threat intelligence mindset will you truly understand the value of that information. With this practical guide, you'll learn the fundamentals of intelligence analysis, as well as the best ways to incorporate these techniques into your incident response process.
Each method reinforces the other: threat intelligence supports and augments incident response, while incident response generates useful threat intelligence. This book helps incident managers, malware analysts, reverse engineers, digital forensics specialists, and intelligence analysts understand, implement, and benefit from this relationship.
In three parts, this in-depth book includes:The fundamentals: get an introduction to cyber threat intelligence, the intelligence process, the incident-response proc ...
Elegant SciPyWelcome to Scientific Python and its community. If you're a scientist who programs with Python, this practical guide not only teaches you the fundamental parts of SciPy and libraries related to it, but also gives you a taste for beautiful, easy-to-read code that you can use in practice. You'll learn how to write elegant code that's clear, concise, and efficient at executing the task at hand.
Throughout the book, you'll work with examples from the wider scientific Python ecosystem, using code that illustrates principles outlined in the book. Using actual scientific data, you'll work on real-world problems with SciPy, NumPy, Pandas, scikit-image, and other Python libraries.
Explore the NumPy array, the data structure that underlies numerical scientific computation; Use quantile normalization to ensure that measurements fit a specific distribution; Represent separate regions in an image with a Region Adjacency Graph; Convert temporal or spatial data into frequency domain data with t ...
Test-Driven Development with Python, 2nd EditionBy taking you through the development of a real web application from beginning to end, the second edition of this hands-on guide demonstrates the practical advantages of test-driven development (TDD) with Python. You'll learn how to write and run tests before building each part of your app, and then develop the minimum amount of code required to pass those tests. The result? Clean code that works.
In the process, you'll learn the basics of Django, Selenium, Git, jQuery, and Mock, along with current web development techniques. If you're ready to take your Python skills to the next level, this book—updated for Python 3.6—clearly demonstrates how TDD encourages simple designs and inspires confidence.
Dive into the TDD workflow, including the unit test/code cycle and refactoring; Use unit tests for classes and functions, and functional tests for user interactions within the browser; Learn when and how to use mock objects, and the pros and cons of isolated vs. integrated tests; Te ...