Architecture Patterns with PythonAs Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are taking an interest in high-level software design patterns such as hexagonal/clean architecture, event-driven architecture, and the strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward.
With this hands-on guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity - and get the most value out of their test suites.
Each pattern is illustrated with concrete examples in beautiful, idiomatic Python, avoiding some of the verbosity of Java and C# syntax. Patterns include: Dependency inversion and its links to ports and adapters (hexagonal/clean architecture); Domain-driven design's distinction between Entities, Value Objects, and Aggregates; Repository and Unit of Work patterns for persistent storag ...
The Software Architect ElevatorAs the digital economy changes the rules of the game for enterprises, the role of software and IT architects is also transforming. Rather than focus on technical decisions alone, architects and senior technologists need to combine organizational and technical knowledge to effect change in their company's structure and processes. To accomplish that, they need to connect the IT engine room to the penthouse, where the business strategy is defined.
In this guide, author Gregor Hohpe shares real-world advice and hard-learned lessons from actual IT transformations. His anecdotes help architects, senior developers, and other IT professionals prepare for a more complex but rewarding role in the enterprise.
This book is ideal for: Software architects and senior developers looking to shape the company's technology direction or assist in an organizational transformation; Enterprise architects and senior technologists searching for practical advice on how to navigate technical and organizati ...
Data Structures and Algorithms in SwiftControl the performance and stability of the apps you develop in Swift by working with and understanding advanced concepts in data structures and algorithms. All professional developers have to know which data structure and algorithms to use in their development process. Your choice directly affects the performance of your application. With this book, you'll increase the performance of your software, become a better developer, and even pass tricky interview questions better when looking at professional development opportunities.
Guided by compact and practical chapters, you'll learn the nature and proper use of data structures such as arrays, dictionaries, sets, stacks, queues, lists, hash tables, trie, heaps, binary trees, red black trees, and R-trees. Use the main differences among them to determine which will make your applications efficient and faster. Then tackle algorithms. Work with Big O notation; sorting algorithms such as Insertion, Merge, and Quick; Naive and Rabin Karp ...
Graphic Design School, 7th EditionFrom understanding graphic design fundamentals, to developing original concepts, to creating finished designs - Graphic Design School develops design students' core competencies and provides practical advice and tips for how these fundamentals translate into new and evolving media. This Seventh Edition offers all new examples from web, app, social media, magazines, websites and books, presenting a comprehensive overview of the visual communications profession. This updated edition includes guidance and media examples using the latest in grahpic design software, and traditional printing techniques such as risograph and screen printing are revisited. Pedagogical tools throughout the text focus on the growth of interdisciplinary learning and collaborations between design specialists, as well as highlights on key players in the past and present of graphic design.
Topics covered include: color, typographic rules and typefaces, coding requirements, information architecture, file organiza ...
Beginning Apache Spark Using Azure DatabricksAnalyze vast amounts of data in record time using Apache Spark with Databricks in the Cloud. Learn the fundamentals, and more, of running analytics on large clusters in Azure and AWS, using Apache Spark with Databricks on top. Discover how to squeeze the most value out of your data at a mere fraction of what classical analytics solutions cost, while at the same time getting the results you need, incrementally faster.
This book explains how the confluence of these pivotal technologies gives you enormous power, and cheaply, when it comes to huge datasets. You will begin by learning how cloud infrastructure makes it possible to scale your code to large amounts of processing units, without having to pay for the machinery in advance. From there you will learn how Apache Spark, an open source framework, can enable all those CPUs for data analytics use. Finally, you will see how services such as Databricks provide the power of Apache Spark, without you having to know anything about configu ...
Practical GitPractice your Git skills using exercises in your own environment. This book introduces concepts in an abstract visual way, and then enforces this learning through exercises - the Git katas.
You will start with basic interactions such as commits and branches, and move on to both internals and collaborative workflows. Best practices are introduced and rehearsed throughout with hands-on exercises. Each topic is supplemented with interactive Git exercises that can be solved using any Git client - either the ubiquituous CLI or one of the many graphical clients so you'll learn in the environment you work in.
The importance of Git is hard to overstate - it is used by 90% of software engineers worldwide and is the de facto standard for version control. Honing your Git skills is guaranteed to make you a better and more efficient developer. Building software can be stressful, but it doesn't need to be. Practical Git will give you the Git skills you need, and help keep your Git skills sharp ...
Software Engineering for Absolute BeginnersStart programming from scratch, no experience required. This beginners' guide to software engineering starts with a discussion of the different editors used to create software and covers setting up a Docker environment. Next, you will learn about repositories and version control along with its uses. Now that you are ready to program, you'll go through the basics of Python, the ideal language to learn as a novice software engineer. Many modern applications need to talk to a database of some kind, so you will explore how to create and connect to a database and how to design one for your app. Additionally you will discover how to use Python's Flask microframework and how to efficiently test your code. Finally, the book explains best practices in coding, design, deployment, and security.
Software Engineering for Absolute Beginners answers the question of what topics you should know when you start out to learn software engineering. This book covers a lot of topics, and aims to clarify t ...
Modern Front-end ArchitectureLearn how to build front-end applications that can help you ship applications faster with fewer defects. Many software projects fail because they are not planned well, or lack organization. Applying strategies from other industries can help you create better software. This book explores the "mise en place" technique from cooking and reveals how you can apply it to the art of creating software.
In many professional kitchens, the work of preparing a meal is divided and performed in workstations to help create the whole. You'll review the philosophy behind this and see how to leverage this approach in your code. You'll also learn to visualize your applications as a series of components and build parts of your application in isolation - just like a professional chef crafting each part of the meal.
The book describes to how to structure your code base for reuse, and how to communicate the code's intent to other developers. You'll develop your components in isolation and test these bui ...
Patterns in the MachineDiscover how to apply software engineering patterns to develop more robust firmware faster than traditional embedded development approaches. In the authors' experience, traditional embedded software projects tend towards monolithic applications that are optimized for their target hardware platforms. This leads to software that is fragile in terms of extensibility and difficult to test without fully integrated software and hardware. Patterns in the Machine focuses on creating loosely coupled implementations that embrace both change and testability.
This book illustrates how implementing continuous integration, automated unit testing, platform-independent code, and other best practices that are not typically implemented in the embedded systems world is not just feasible but also practical for today's embedded projects.
After reading this book, you will have a better idea of how to structure your embedded software projects. You will recognize that while writing unit tests, creating ...
PHP 8 Objects, Patterns, and PracticeLearn how to develop elegant and rock-solid systems using PHP, aided by three key elements: object fundamentals, design principles, and best practices. The 6th edition of this popular book has been fully updated for PHP 8, including attributes, constructor property promotion, new argument and return pseudo-types, and more. It also covers many features new since the last edition including typed properties, the null coalescing operator, and void return types. This book provides a solid grounding in PHP's support for objects, it builds on this foundation to instill core principles of software design and then covers the tools and practices needed to develop, test, and deploy robust code.
PHP 8 Objects, Patterns, and Practice begins by covering PHP's object-oriented features. It introduces key topics including class declarations, inheritance, and reflection. The next section is devoted to design patterns. It explains the principles that make patterns powerful. You'll cover many of the cl ...