Best of
Software

2018

Dive Into Design Patterns


Alexander Shvets - 2018
    You can’t just find a pattern and copy it into your program, the way you can with off-the-shelf functions or libraries. The pattern is not a specific piece of code, but a general concept for solving a particular problem. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.The book Dive Into Design Patterns illustrates 22 classic design patterns and 8 design principles that these patterns are based on.- Every chapter starts from a discussion of a real life software design problem which is then progressively solved by applying one of the patterns.- Then goes a detailed review of the pattern’s structure and its variations, followed by a code example.- Then the books shows various applications of the pattern and teaches how to implement the pattern step by step, even in an existing program.- Each chapter concludes with a discussion of pros and cons of the pattern and its relations, similarities and differences with other patterns.

Explain the Cloud Like I'm 10


Todd Hoff - 2018
    And I mean all the time. Every day there’s a new cloud-based dating app; a new cloud-based gizmo for your house; a new cloud-based game; or a thousand other new things—all in the cloud.The cloud is everywhere! Everything is in the cloud! What does it mean! Let’s slow down. Take a deep breath. That’s good. Take another. Excellent. This book teaches you all about the cloud. I’ll let you in on a little secret: the cloud is not that hard to understand. It’s not. It’s just that nobody has taken the time to explain to you what the cloud is. They haven’t, have they?Deep down I think this is because they don’t understand the cloud either, but I do. I’ve been a programmer and writer for over 30 years. I’ve been in cloud computing since the very start, and I’m here to help you on your journey to understand the cloud. Consider me your tour guide. I’ll be with you every step of the way, but not in a creepy way.I take my time with this book. I go slow and easy, so you can build up an intuition about what the cloud really is, one idea at a time. When you finish reading, you’ll understand the cloud. When you hear someone say some new cool thing is in the cloud, you’ll understand exactly what they mean. That’s a promise. How do I deliver on that promise? I use lots and lots of pictures. I use lots and lots of examples. We’ll reveal the secret inner-workings of AWS, Netflix, Facebook Messenger, Amazon Kindle, Apple iCloud, Google Maps, Nest and cloud DVRs. You’ll learn by seeing and understanding; no matter if you're a complete beginner, someone who knows a little and wants to learn more, or a programmer looking to change their career to the cloud.The cloud is the future. You don't want to miss out on the future, do you? Read this book and we'll discover it together.I’m excited. This will be fun. Let’s get started!

The Site Reliability Workbook: Practical Ways to Implement SRE


Betsy Beyer - 2018
    Now, Google engineers who worked on that bestseller introduce The Site Reliability Workbook, a hands-on companion that uses concrete examples to show you how to put SRE principles and practices to work in your environment.This new workbook not only combines practical examples from Google's experiences, but also provides case studies from Google's Cloud Platform customers who underwent this journey. Evernote, The Home Depot, The New York Times, and other companies outline hard-won experiences of what worked for them and what didn't.Dive into this workbook and learn how to flesh out your own SRE practice, no matter what size your company is.You'll learn:How to run reliable services in environments you don't completely control--like cloudPractical applications of how to create, monitor, and run your services via Service Level ObjectivesHow to convert existing ops teams to SRE--including how to dig out of operational overloadMethods for starting SRE from either greenfield or brownfield

Pro .Net Memory Management: For Better Code, Performance, and Scalability


Konrad Kokosa - 2018
    Despite automatic memory management in .NET, there are many advantages to be found in understanding how .NET memory works and how you can best write software that interacts with it efficiently and effectively. Pro .NET Memory Management is your comprehensive guide to writing better software by understanding and working with memory management in .NET.Thoroughly vetted by the .NET Team at Microsoft, this book contains 25 valuable troubleshooting scenarios designed to help diagnose challenging memory problems. Readers will also benefit from a multitude of .NET memory management "rules" to live by that introduce methods for writing memory-aware code and the means for avoiding common, destructive pitfalls.What You'll LearnUnderstand the theoretical underpinnings of automatic memory managementTake a deep dive into every aspect of .NET memory management, including detailed coverage of garbage collection (GC) implementation, that would otherwise take years of experience to acquireGet practical advice on how this knowledge can be applied in real-world software developmentUse practical knowledge of tools related to .NET memory management to diagnose various memory-related issuesExplore various aspects of advanced memory management, including use of Span and Memory types Who This Book Is For .NET developers, solution architects, and performance engineers

Getting Clojure


Russ Olsen - 2018
    The vision behind Clojure is of a radically simple language framework holding together a sophisticated collection of programming features. Learning Clojure involves much more than just learning the mechanics of the language. To really get Clojure you need to understand the ideas underlying this structure of framework and features. You need this book: an accessible introduction to Clojure that focuses on the ideas behind the language as well as the practical details of writing code.

Writing A Compiler In Go


Thorsten Ball - 2018
    We're picking up right where we left off and write a compiler and a virtual machine for Monkey. Runnable and tested code front and center, built from the ground up, step by step — just like before. But this time, we're going to define bytecode, compile Monkey and execute it in our very own virtual machine. It's the next step in Monkey's evolution. It's the sequel to … a programming language Writing A Compiler In Go is the sequel to Writing An Interpreter In Go. It starts right where the first one stopped, with a fully-working, fully-tested Monkey interpreter in hand, connecting both books seamlessly, ready to build a compiler and a virtual machine for Monkey. In this book, we use the codebase (included in the book!) from the first part and extend it. We take the lexer, the parser, the AST, the REPL and the object system and use them to build a new, faster implementation of Monkey, right next to the tree-walking evaluator we built in the first book. The approach is unchanged, too. Working, tested code is the focus, we build everything from scratch, do baby steps, write tests firsts, use no 3rd-party-libraries and see and understand how all the pieces fit together. It's a continuation in prose and in code. Do you need to read the first part before this one? If you're okay with treating the code from the first book as black box, then no. But that's not what these books are about; they're about opening up black boxes, looking inside and shining a light. You'll have the best understanding of where we're going in this book, if you know where we started. Learn how to write a compiler and a virtual machine Our main goal in in this book is to evolve Monkey. We change its architecture and turn it into a bytecode compiler and virtual machine. We'll take the lexer, the parser, the AST and the object system we wrote in the first book and use them to build our own Monkey compiler and virtual machine … from scratch! We'll build them side-by-side so that we'll always have a running system we can steadily evolve. What we end up with is not only much closer to the programming languages we use every day, giving us a better understanding of how they work, but also 3x faster. And that's without explicitly aiming for performance. Here's what we'll do: - We define our own bytecode instructions, specifying their operands and their encoding. Along the way, we also build a mini-disassembler for them. - We write a compiler that takes in a Monkey AST and turns it into bytecode by emitting instructions - At the same time we build a stack-based virtual machine that executes the bytecode in its main loop We'll learn a lot about computers, how they work, what machine code and opcodes are, what the stack is and how to work with stack pointers and frame pointers, what it means to define a calling convention, and much more. We also - build a symbol table and a constant pool - do stack arithmetic - generate jump instructions - build frames into our VM to execute functions with local bindings and arguments! - add built-in functions to the VM - get real closures working in the virtual machine and learn why closure-compilation is so tricky

Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis


Adam Tornhill - 2018
    And that’s just for starters. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight for better code!

Beyond The Phoenix Project: The Origins and Evolution Of DevOps (Official Transcript of The Audio Series)


Gene Kim - 2018
    In this transcript of the audio series, Gene Kim and John Willis present a nine-part discussion that includes an oral history of the DevOps movement, as well as discussions around pivotal figures and philosophies that DevOps draws upon, from Goldratt to Deming; from Lean to Safety Culture to Learning Organizations.The book is a great way for listeners to take an even deeper dive into topics relevant to DevOps and leading technology organizations.

Thinking with Types. Type-Level Programming in Haskell


Sandy Maguire - 2018
    It's about getting you from here to there---from a competent Haskell programmer to one who convinces the compiler to do their work for them.

Professional CMake: A Practical Guide


Craig Scott - 2018
    The handbook for every CMake user, providing structured learning, the latest best practices and real-world advice from one of the CMake co-maintainers.

Java by Comparison: Become a Java Craftsman in 70 Examples


Simon Harrer - 2018
    

C++17 in Detail


Bartłomiej Filipek - 2018
    What's more, it provides a lot of practical examples so you can quickly apply the knowledge to your code. Leanpub: https://leanpub.com/cpp17indetail or Amazon https://www.amazon.com/dp/1798834065I spent hundreds of hours investigating how new things work in order to make a nice and practical book for you. The book will not only save your time but also will guide you through all the nuances of the language.The book brings you exclusive content about C++17 and draws from the experience of many articles that have appeared on bfilipek.com. The chapters were rewritten from the ground-up and updated with the latest information. All of that equipped with lots of new examples and practical tips. Additionally, the book provides insight into the current implementation status, compiler support, performance issues and other relevant knowledge to boost your current projects.If you have experience with C++11/14 and you want to move forward into the latest C++ techniques, then this book is for you.

Principles of Package Design: Creating Reusable Software Components


Matthias Noback - 2018
    You will use package design principles to create packages that are just right in terms of cohesion and coupling, and are user- and maintainer-friendly at the same time.The first part of this book walks you through the five SOLID principles that will help you improve the design of your classes. The second part introduces you to the best practices of package design, and covers both package cohesion principles and package coupling principles. Cohesion principles show you which classes should be put together in a package, when to split packages, and if a combination of classes may be considered a "package" in the first place. Package coupling principles help you choose the right dependencies and prevent wrong directions in the dependency graph of your packages.What You'll LearnApply the SOLID principles of class designDetermine if classes belong in the same packageKnow whether it is safe for packages to depend on each other Who This Book Is ForSoftware developers with a broad range of experience in the field, who are looking for ways to reuse, share, and distribute their code

Building Products for the Enterprise: Product Management in Enterprise Software


Blair Reeves - 2018
    Creating high-quality software for the enterprise involves a much different set of challenges. In this practical book, two expert product managers provide straightforward guidance for people looking to join the thriving enterprise market.Authors Blair Reeves and Benjamin Gaines explain critical differences between enterprise and consumer products, and deliver strategies for overcoming challenges when building for the enterprise. You'll learn how to cultivate knowledge of your organization, the products you build, and the industry you serve.Explore why:Identifying customer vs user problems is an enterprise project manager's main challengeEffective collaboration requires in-depth knowledge of the organizationAnalyzing data is key to understanding why users buy and retain your productHaving experience in the industry you're building products for is valuableProduct longevity depends on knowing where the industry is headed

Docker for Rails Developers


Rob Isenberg - 2018
    Gone are “works on my machine” woes and lengthy setup tasks, replaced instead by a simple, consistent, Docker-based development environment that will have your team up and running in seconds. Gain hands-on, real-world experience with a tool that’s rapidly becoming fundamental to software development. Go from zero all the way to production as Docker transforms the massive leap of deploying your app in the cloud into a baby step.

Fullstack Vue: The Complete Guide to Vue.js


Hassan Djirdeh - 2018
    

The Java Module System


Nicolai Parlog - 2018
    In this new book, you'll learn how the module system improves reliability and maintainability, and how it can be used to reduce tight coupling of system components.Foreword by Kevlin Henney.Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. You'll find registration instructions inside the print book.About the TechnologyPackaging code into neat, well-defined units makes it easier to deliver safe and reliable applications. The Java Platform Module System is a language standard for creating these units. With modules, you can closely control how JARs interact and easily identify any missing dependencies at startup. This shift in design is so fundamental that starting with Java 9, all core Java APIs are distributed as modules, and libraries, frameworks, and applications will benefit from doing the same.About the BookThe Java Module System is your in-depth guide to creating and using Java modules. With detailed examples and easy-to-understand diagrams, you'll learn the anatomy of a modular Java application. Along the way, you'll master best practices for designing with modules, debugging your modular app, and deploying to production.What's insideThe anatomy of a modular Java appBuilding modules from source to JARMigrating to modular JavaDecoupling dependencies and refining APIsHandling reflection and versioningCustomizing runtime imagesUpdated for Java 11About the ReaderPerfect for developers with some Java experience.About the AuthorNicolai Parlog is a developer, author, speaker, and trainer. His home is codefx.org. Table of ContentsPART 1 - Hello, modulesFirst piece of the puzzleAnatomy of a modular applicationDefining modules and their propertiesBuilding modules from source to JARRunning and debugging modular applicationsPART 2 - Adapting real-world projectsCompatibility challenges when moving to Java 9 or laterRecurring challenges when running on Java 9 or laterIncremental modularization of existing projectsMigration and modularization strategiesPART 3 - Advanced module system featuresUsing services to decouple modulesRefining dependencies and APIsReflection in a modular worldModule versions: What's possible and what's notCustomizing runtime images with jlinkPutting the pieces together

CSS Visual Dictionary


Greg Sidelnikov - 2018
    

Programming Ecto


Darin Wilson - 2018
    Learn how to use Ecto, the premier database library for Elixir, to connect your Elixir and Phoenix apps to databases. Get a firm handle on Ecto fundamentals with a module-by-module tour of the critical parts of Ecto. Then move on to more advanced topics and advice on best practices with a series of recipes that provide clear, step-by-step instructions on scenarios commonly encountered by app developers. Co-authored by the creator of Ecto, this title provides all the essentials you need to use Ecto effectively.

Inclusive Components — Accessible web interfaces, piece by piece


Heydon Pickering - 2018
    The aim is to find more accessible and robust solutions for the patterns we author, plug in, and use every day.Each chapter tackles a single component, addressing how different and vulnerable people might read and interact with it, and how they can be better accommodated. The in-depth explorations are meticulously illustrated and code examples culminate as working demos.Inclusive design is not about wrong and right, but bad to better. You'll learn plenty of tips from Inclusive Components, but you'll also adopt the mindset to go on and make even better components.

Mastering Android Development with Kotlin


Miloš Vasić - 2018
     Build amazing projects to get grips with the Kotlin language for the Android platform. An illustrative guide to write code based on both functional and reactive programming to build robust applications. Book Description Kotlin is a programming language intended to be a better Java, and it's designed to be usable and readable across large teams with different levels of knowledge. Kotlin is a language that helps developers build amazing Android applications in an easy and effective way. The book will begin by giving you strong grasp of the Kotlin features in context of Android development and its APIs to further taking steps towards building stunning applications for Android. It will show you the environment setup and the difficulty level will grow steadily with the coming applications covered in the upcoming chapters. The book will also introduce you to using the Android Studio IDE which plays an integral role in Android Development. We will use Kotlin’s basic programming concepts such as functions, lambdas, properties, object oriented code, safety aspects and type parameterization, testing, concurrency which will guide you to write Kotlin’s code to production. We will also show how we can integrate Kotlin in any existing Android project. What you will learn Understanding basics of Android development with Kotlin Key concepts in Android development How to create modern mobile applications for Android platform How to adjust your application’s look and feel How to persist and share application database Working with Services and other concurrency mechanisms Writing effective tests Migration of existing Java based project to Kotlin About the Author Miloš Vasic is a software engineer, author and open source enthusiasts. Miloš holds a Bachelor degree in Programming of computer graphics and Master degree in the field of Android programming, both degrees gained at the Singidunum University. He published his first book Fundamental Kotlin in October 2016 and thus achieved his dream of becoming an author. He's currently employed at the company Robert Bosch where he's working on SDKs for auto industry. When he is not working on a new book Miloš is working on his open source projects.

SQL Server 2017 Query Performance Tuning: Troubleshoot and Optimize Query Performance


Grant Fritchey - 2018
    You will learn Query Store, adaptive execution plans, and automated tuning on the Microsoft Azure SQL Database platform. Anyone responsible for writing or creating T-SQL queries will find valuable the insight into bottlenecks, including how to recognize them and eliminate them.This book covers the latest in performance optimization features and techniques and is current with SQL Server 2017. If your queries are not running fast enough and you're tired of phone calls from frustrated users, then this book is the answer to your performance problems. SQL Server 2017 Query Performance Tuning is about more than quick tips and fixes. You'll learn to be proactive in establishing performance baselines using tools such as Performance Monitor and Extended Events. You'll recognize bottlenecks and defuse them before the phone rings. You'll learn some quick solutions too, but emphasis is on designing for performance and getting it right. The goal is to head off trouble before it occurs. What You'll LearnUse Query Store to understand and easily change query performanceRecognize and eliminate bottlenecks leading to slow performanceDeploy quick fixes when needed, following up with long-term solutionsImplement best practices in T-SQL to minimize performance riskDesign in the performance that you need through careful query and index designUtilize the latest performance optimization features in SQL Server 2017Protect query performance during upgrades to the newer versions of SQL Server Who This Book Is ForDevelopers and database administrators with responsibility for application performance in SQL Server environments. Anyone responsible for writing or creating T-SQL queries will find valuable the insight into bottlenecks, including how to recognize them and eliminate them.

Advanced Apex Programming in Salesforce


Dan Appleman - 2018
    Intended for developers who are already familiar with the Apex language, and experienced Java and C# developers who are moving to Apex, this book starts where the Salesforce Apex documentation leaves off. Instead of trying to cover all of the features of the platform, Advanced Apex programming focuses entirely on the Apex language and core design patterns. You’ll learn how to truly think in Apex – to embrace limits and bulk patterns. You’ll see how to develop architectures for efficient and reliable trigger handling, and for asynchronous operations. You’ll discover that best practices differ radically depending on whether you are building software for a specific organization or for a managed package. And you’ll find approaches for incorporating testing and diagnostic code that can dramatically improve the reliability and deployment of Apex software, and reduce your lifecycle and support costs. Based on his experience as a consultant, Salesforce MVP and architect of major AppExchange packages, Dan Appleman focuses on the real-world problems and issues that are faced by Apex developers every day, along with the obscure problems and surprises that can sneak up on you if you are unprepared. This four edition contains updates through Summer 18 (API 43) along with significant new content including Salesforce DX

Writing High-Performance .NET Code


Ben Watson - 2018
    It will expertly guide you through the nuts and bolts of extreme performance optimization in .NET, complete with in-depth examinations of CLR functionality, free tool recommendations and tutorials, useful anecdotes, and step-by-step guides to measure and improve performance.This second edition incorporates the advances and improvements in .NET over the last few years, as well as greatly expanded coverage of tools, more topics, more tutorials, more tips, and improvements throughout the entire book.New in the 2nd Edition:- 50% increase in content!- New examples, code samples, and diagrams throughout entire book- More ways to analyze the heap and find memory problems- More tool coverage, including expanded usage of Visual Studio- More benchmarking- New GC configuration options- Code warmup techniques- New .NET features such as ref-returns, value tuples, SIMD, and more- More detailed analysis of LINQ- Tips for high-level feature areas such as ASP.NET, ADO.NET, and WPFAlso find expanded coverage and discover new tips and tricks for:- Profiling with multiple tools to quickly find problem areas- Detailed description of the garbage collector, how to optimize your code for it, and how to diagnose difficult memory-related issues- How to analyze JIT and diagnose warmup problems- Effective use of the Task Parallel Library to maximize throughput- Which .NET features and APIs to use and which to avoid- Instrument your program with performance counters and ETW events- Use the latest and greatest .NET features- Build a performance-minded team- ...and so much more

Get Programming with Go


Nathan Youngman - 2018
    By working through 32 quick-fire lessons, you'll quickly pick up the basics of the innovative Go programming language!Hobbyists, newcomers, and professionals alike can benefit from a fast, modern language; all you need is the right resource! Get Programming with Go provides a hands-on introduction to Go language fundamentals, serving as a solid foundation for your future programming projects. You'll master Go syntax, work with types and functions, and explore bigger ideas like state and concurrency, with plenty of exercises to lock in what you learn.What's inside* Language concepts like slices, interfaces, pointers, and concurrency* Seven capstone projects featuring spacefaring gophers, Mars rovers, ciphers, and simulations* All examples run in the Go Playground - no installation required!This book is for anyone familiar with computer programming, as well as anyone with the desire to learn.Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

Game Programming in C++: Creating 3D Games


Sanjay Madhav - 2018
    Since it's used throughout their enormous code bases, studios use it to maintain and improve their games, and look for it constantly when hiring new developers. Game Programming in C++ is a practical, hands-on approach to programming 3D video games in C++. Modeled on Sanjay Madhav's game programming courses at USC, it's fun, easy, practical, hands-on, and complete.Step by step, you'll learn to use C++ in all facets of real-world game programming, including 2D and 3D graphics, physics, AI, audio, user interfaces, and much more. You'll hone real-world skills through practical exercises, and deepen your expertise through start-to-finish projects that grow in complexity as you build your skills. Throughout, Madhav pays special attention to demystifying the math that all professional game developers need to know.Set up your C++ development tools quickly, and get started Implement basic 2D graphics, game updates, vectors, and game physics Build more intelligent games with widely used AI algorithms Implement 3D graphics with OpenGL, shaders, matrices, and transformations Integrate and mix audio, including 3D positional audio Detect collisions of objects in a 3D environment Efficiently respond to player input Build user interfaces, including Head-Up Displays (HUDs) Improve graphics quality with anisotropic filtering and deferred shading Load and save levels and binary game dataWhether you're a working developer or a student with prior knowledge of C++ and data structures, Game Programming in C++ will prepare you to solve real problems with C++ in roles throughout the game development lifecycle. You'll master the language that top studios are hiring for--and that's a proven route to success.

Functional Programming in C++


Ivan Čukić - 2018
    

Thinking in Redux


Nir Kaufman - 2018
    Therefore, you need to acquire a set of design patterns that fit this programming model.This book is an opinionated guide to Redux that focuses on design patterns, techniques, conventions and best practices. All based on real-world experience with Redux on a large-scale.

The Agile Software Tester: Software Testing In The Agile World


Kev Martin - 2018
    As a result, the amount of literature about the subject has also grown tremendously. However most of the books currently available on the market focus on the project management or software development areas of the software development life cycle, there is still very little for the agile software tester to read. In the agile world testing and the Software QA Tester are just as important as any other process or person and that is why I have written this book. Hopefully experienced and new QA’s alike will find some useful pointers within these humble pages which will help them enhance their career and enjoyment of testing software. The QA professionals involvement in agile projects remains challenging because of the very different nature of the agile methodology compared to older methodologies such as waterfall and the V model. This is also not helped by a level of misunderstanding about the true nature of agile that still persists in many companies and deep-rooted prejudices aimed at QA’s by some programmers and project managers (they are nothing more than failed programmers being a common feeling). Although there are many QA professionals succeeding in agile projects, many others continue to struggle to succeed and achieve their true potential that their skills and dedication deserve. QA’s who have spent many years testing outside of agile can also often struggle to make the jump across the waterfall. However with quality training, good management and self-belief this jump can be completed, this is where the fifth edition of this book comes in.

Microservices for the Enterprise: Designing, Developing, and Deploying


Kasun Indrasiri - 2018
    This book provides a comprehensive understanding of microservices architectural principles and how to use microservices in real-world scenarios. Architectural challenges using microservices with service integration and API management are presented and you learn how to eliminate the use of centralized integration products such as the enterprise service bus (ESB) through the use of composite/integration microservices. Concepts in the book are supported with use cases, and emphasis is put on the reality that most of you are implementing in a “brownfield” environment in which you must implement microservices alongside legacy applications with minimal disruption to your business.  Microservices for the Enterprise covers state-of-the-art techniques around microservices messaging, service development and description, service discovery, governance, and data management technologies and guides you through the microservices design process. Also included is the importance of organizing services as core versus atomic, composite versus integration, and API versus edge, and how such organization helps to eliminate the use of a central ESB and expose services through an API gateway. What You'll Learn Design and develop microservices architectures with confidence Put into practice the most modern techniques around messaging technologies  Apply the Service Mesh pattern to overcome inter-service communication challenges Apply battle-tested microservices security patterns to address real-world scenarios Handle API management, decentralized data management, and observability Who This Book Is For Developers and DevOps engineers responsible for implementing applications around a microservices architecture, and architects and analysts who are designing such systems

Collect, Combine, and Transform Data Using Power Query in Excel and Power BI (Business Skills)


Gil Raviv - 2018
    

OWASP, Testing Guide 4.0


Matteo Meucci - 2018
    The dramatic rise of web applications enabling business, social networking etc has only compounded the requirements to establish a robust approach to writing and securing our Internet, Web Applications and Data. At The Open Web Application Security Project (OWASP), we’re trying to make the world a place where insecure software is the anomaly, not the norm. The OWASP Testing Guide has an important role to play in solving this serious issue. It is vitally important that our approach to testing software for security issues is based on the principles of engineering and science. We need a consistent, repeatable and defined approach to testing web applications. A world without some minimal standards in terms of engineering and technology is a world in chaos. It goes without saying that you can’t build a secure application without performing security testing on it. Testing is part of a wider approach to building a secure system. Many software development organizations do not include security testing as part of their standard software development process. What is even worse is that many security vendors deliver testing with varying degrees of quality and rigor. Security testing, by itself, isn’t a particularly good stand alone measure of how secure an application is, because there are an infinite number of ways that an attacker might be able to make an application break, and it simply isn’t possible to test them all. We can’t hack ourselves secure and we only have a limited time to test and defend where an attacker does not have such constraints. In conjunction with other OWASP projects such as the Code review Guide, the Development Guide and tools such as OWASP ZAP, this is a great start towards building and maintaining secure applications. The Development Guide will show your project how to architect and build a secure application, the Code Review Guide will tell you how to verify the security of your application’s source code, and this Testing Guide will show you how to verify the security of your running application. I highly recommend using these guides as part of your application security initiatives.

Concrete Mathematics: A Foundation for Computer Science (2nd Edition)


Oren Patashnik - 2018
    The primary aim of its well-known authors is to provide a solid and relevant base of mathematical skills - the skills needed to solve complex problems, to evaluate horrendous sums, and to discover subtle patterns in data.

Swift Apprentice: Beginning programming with Swift 4.2


Ray Wenderlich - 2018
    

Microservices: A Practical Guide


Eberhard Wolff - 2018
    But implementing a microservices architecture and selecting the necessary technologies are difficult challenges. This book shows microservices recipes that architects can customize and combine into a microservices menu. In this way, the implementation of microservices can be individually adapted to the requirements of the project. Eberhard Wolff introduces microservices, self-contained systems, micro- and macro-architecture and the migration to microservices. The second part shows the microservices recipes: Basic technologies such as Docker or PaaS, frontend integration with links, JavaScript or ESI (Edge Side Includes). This is followed by asynchronous microservices with Apache Kafka or REST / Atom. In the synchronous approaches, the book discusses REST with the Netflix stack, Consul, PaaS with Cloud Foundry, and Kubernetes. Finally, operations is discussed: Log Analysis with Elasticsearch and Kibana, Monitoring with Prometheus, and tracing with Zipkin. For each recipe there are suggestions for variations and combinations. Readers can experience all technologies hands-on with a demo project on GitHub. The outlook picks up on the operation of microservices and also shows how the reader can start with microservices in concrete terms. The book provides the technical tools to implement a microservices architecture. Demo projects and suggestions for self-study will complete the book.

Design Unbound: Designing for Emergence in a White Water World, Volume 2: Ecologies of Change


Ann M. Pendleton-Jullian - 2018
    These are the tools of a new kind of practice that is the offspring of complexity science, which gives us a new lens through which to view the world as entangled and emerging, and architecture, which is about designing contexts. In such a practice, design, unbound from its material thingness, is set free to design contexts as complex systems.In a world where causality is systemic, entangled, in flux, and often elusive, we cannot design for absolute outcomes. Instead, we need to design for emergence. Design Unbound not only makes this case through theory but also presents a set of tools to do so. With case studies that range from a new kind of university to organizational, and even societal, transformation, Design Unbound draws from a vast array of domains: architecture, science and technology, philosophy, cinema, music, literature and poetry, even the military. It is presented in five books, bound as two volumes. Different books within the larger system of books will resonate with different reading audiences, from architects to people reconceiving higher education to the public policy or defense and intelligence communities. The authors provide different entry points allowing readers to navigate their own pathways through the system of books.

Designing Data-Driven Applications


Martin Kleefman - 2018
    In addition to identifying difficult-to-solve issues such as scalability, consistency, reliability, efficiency, and maintainability, the variety of tools is overwhelming, including relational databases, NoSQL data stores, stream processors or batch processors, message brokers, Which choice is right for your application? How do you understand these buzzwords Martin Kleefman examines the advantages and disadvantages of various techniques for processing and storing data in this practical, comprehensive guide. This book will be a good guide for you to navigate through the huge problem space. Software continues to change, but the underlying principles are the same. In this book, software engineers and architects learn how to apply this concept to practice and how to make the most of data in modern applications. Learn how to look inside the system and learn how to use and operate it more efficiently. Identify the strengths and weaknesses of various tools to make informed decisions. Consistency, scalability, fault tolerance , Learn tradeoffs about complexity Understand distributed systems research as a foundation modern databases Understand the backgrounds of key online services and learn service architecture

Mastering PostgreSQL 11: Expert Techniques to Build Scalable, Reliable, and Fault-Tolerant Database Applications


Hans-Jürgen Schönig - 2018
    

Inside PixInsight (The Patrick Moore Practical Astronomy Series)


Warren A. Keller - 2018
    As the first comprehensive postprocessing platform to be created by astro-imagers for astro-imagers, it has for many replaced other generic graphics editors as the software of choice. PixInsight has been embraced by professionals such as the James Webb (and Hubble) Space Telescope's science imager Joseph DePasquale and Calar Alto's Vicent Peris, as well as thousands of amateurs around the world. While PixInsight is extremely powerful, very little has been printed on the subject. The first edition of this book broke that mold, offering a comprehensive look into the software’s capabilities. This second edition expands on the several new processes added to the PixInsight platform since that time, detailing and demonstrating each one with a now-expanded workflow. Addressing topics such as PhotometricColorCalibration, Large-Scale Pixel Rejection, LocalNormalization and a host of other functions, this text remains the authoritative guide to PixInsight.

Core Data by Tutorials: iOS 12 and Swift 4.2 Edition


raywenderlich.com Team - 2018
    Learn Core Data with Swift!Take control of your data in iOS apps using Core Data, through a series of high quality hands-on tutorials.Start with the basics like setting up your own Core Data Stack all the way to advanced topics like migration, performance, multithreading, and more! By the end of this book, you'll have hands-on experience with Core Data and will be ready to use it in your own apps.Who This Book Is For: This book is for intermediate iOS developers who already know the basics of iOS and Swift development but want to learn how to use Core Data to save data in their apps.Topics Covered in Core Data by Tutorials: Your First Core Data App: You'll click File\New Project and write a Core Data app from scratch!NSManagedObject Subclasses: Learn how to create your own subclasses of NSManagedObject - the base data storage class in Core Data.The Core Data Stack: Learn how the main objects in Core Data work together, so you can move from the starter Xcode template to your own system.Intermediate Fetching: This chapter covers how to fetch data with Core Data - fetch requests, predicates, sorting and asynchronous fetching.NSFetchedResultsController: Learn how to make Core Data play nicely with table views using NSFetchedResultsController!Versioning and Migration: In this chapter, you'll learn how to migrate your user's data as they upgrade through different versions of your data model.Unit Tests: In this chapter, you'll learn how to set up a test environment for Core Data and see examples of how to test your models.Measuring and Boosting Performance: Learn how to measure your app's performance with various Xcode tools and deal with slow spots in your code.Multiple Managed Object Contexts: Learn how multiple managed object contexts can improve performance and make for cleaner code.

The Essence of Software Engineering


Volker Gruhn - 2018
    It offers a broad overview of research findings dealing with current practical software engineering issues and also pointers to potential future developments. Celebrating the 20th anniversary of adesso AG, adesso gathered some of the pioneers of software engineering including Manfred Broy, Ivar Jacobson and Carlo Ghezzi at a special symposium,  where they presented their thoughts about latest software engineering research and which are part of this book. This way it offers readers a concise overview of the essence of software engineering, providing valuable insights into the latest methodological research findings and adesso’s experience applying these results in real-world projects.

MobX Quick Start Guide: Supercharge the client state in your React apps with MobX


Pavan Podila - 2018
    Its abstractions can help you manage state in small to extremely large applications. However, if you are just starting out, it is essential to have a guide that can help you take the first steps. This book aims to be that guide that will equip you with the skills needed to use MobX and effectively handle the state management aspects of your application.You will first learn about observables, actions, and reactions: the core concepts of MobX. To see how MobX really shines and simplifies state management, you'll work through some real-world use cases. Building on these core concepts and use cases, you will learn about advanced MobX, its APIs, and libraries that extend MobX.By the end of this book, you will not only have a solid conceptual understanding of MobX, but also practical experience. You will gain the confidence to tackle many of the common state management problems in your own projects. What you will learn Explore the fundamental concepts of MobX, such as observables, actions, and reactions Use observables to track state and react to its changes with validations and visual feedback (via React Components) Create a MobX observable from different data types Define form data as an observable state and tackle sync and async form validations Use the special APIs to directly manipulate observables, tracking its changes, and discovering the reasons behind a change Tackle any state management issue you may have in your app by combining mobx-utils and mobx-state-tree Explore the internals of the MobX reactive system by diving into its inner workings Who this book is for This book is for web developers who want to implement easy and scalable state management for their apps. Knowledge of HTML, CSS, and JavaScript is assumed Table of Contents Introduction to State Management Observables, Actions, and Reactions A React App with MobX Crafting the Observable tree Derivations, Actions and Reactions Handling Real-World Use Cases Special API for Special Cases Exploring mobx-utils and mobx-state-tree Mobx Internals

Django Design Patterns and Best Practices: Industry-standard web development techniques and solutions using Python, 2nd Edition


Arun Ravindran - 2018
    

The Agile Developer's Handbook: Get more value from your software development: get the best out of the Agile methodology


Paul Flewelling - 2018
    

Deep Learning for Search


Tommaso Teofili - 2018
    You'll start with an overview of information retrieval principles, like indexing, searching, and ranking, as well as a fast indoctrination into deep learning. Then, you'll move through in-depth examples as you gain an understanding of how to improve typical search tasks, such as relevance, with the help of Apache Lucene and Deeplearning4j. The book wraps up with a look at advanced problems, like searching through images and translating user queries. By the time you're finished, you'll be ready to build amazing search engines that deliver the results your users need and get better as time goes on!

Professional C# 7 and .Net Core 2.0


Christian Nagel - 2018
    The latest C# update added many new features that help you get more done in less time, and this book is your ideal guide for getting up to speed quickly. C# 7 focuses on data consumption, code simplification, and performance, with new support for local functions, tuple types, record types, pattern matching, non-nullable reference types, immutable types, and better support for variables. Improvements to Visual Studio will bring significant changes to the way C# developers interact with the space, bringing .NET to non-Microsoft platforms and incorporating tools from other platforms like Docker, Gulp, and NPM. Guided by a leading .NET expert and steeped in real-world practicality, this guide is designed to get you up to date and back to work.With Microsoft speeding up its release cadence while offering more significant improvement with each update, it has never been more important to get a handle on new tools and features quickly. This book is designed to do just that, and more--everything you need to know about C# is right here, in the single-volume resource on every developer's shelf.Tour the many new and enhanced features packed into C# 7 and .NET Core 2.0 Learn how the latest Visual Studio update makes developers' jobs easier Streamline your workflow with a new focus on code simplification and performance enhancement Delve into improvements made for localization, networking, diagnostics, deployments, and more Whether you're entirely new to C# or just transitioning to C# 7, having a solid grasp of the latest features allows you to exploit the language's full functionality to create robust, high -quality apps. Professional C# 7 and .NET Core 2.0 is the one-stop guide to everything you need to know.

Software Architect’s Handbook: Become a successful software architect by implementing effective architecture concepts


Joseph Ingeno - 2018
    

Access 2019 Bible


Michael Alexander - 2018
    With clear guidance toward everything from the basics to the advanced, this go-to reference helps you take advantage of everything Access 2019 has to offer. Whether you're new to Access or getting started with Access 2019, you'll find everything you need to know to create the database solution perfectly tailored to your needs, with expert guidance every step of the way. The companion website features all examples and databases used in the book, plus trial software and a special offer from Database Creations. Start from the beginning for a complete tutorial, or dip in and grab what you need when you need it. Access enables database novices and programmers to store, organize, view, analyze, and share data, as well as build powerful, integrable, custom database solutions — but databases can be complex, and difficult to navigate. This book helps you harness the power of the database with a solid understanding of their purpose, construction, and application. Understand database objects and design systems objects Build forms, create tables, manipulate datasheets, and add data validation Use Visual Basic automation and XML Data Access Page design Exchange data with other Office applications, including Word, Excel, and more From database fundamentals and terminology to XML and Web services, this book has everything you need to maximize Access 2019 and build the database you need.

Delphi High Performance


Primož Gabrijelčič - 2018
    

Code Club Book of Scratch


Rik Cross - 2018
    

Odoo 12 Development Essentials: Fast-Track Your Odoo Development Skills to Build Powerful Business Applications


Daniel Reis - 2018
    

PHP, MySQL, & JavaScript All-in-One For Dummies (For Dummies (Computer/Tech))


Richard Blum - 2018
    PHP, mySQL, JavaScript, and other web-building languages serve as the foundation for application development and programming projects at all levels of the web.  Dig into this all-in-one book to get a grasp on these in-demand skills, and figure out how to apply them to become a professional web builder. You’ll get valuable information from seven handy books covering the pieces of web programming, HTML5 & CSS3, JavaScript, PHP, MySQL, creating object-oriented programs, and using PHP frameworks. Helps you grasp the technologies that power web applications       Covers PHP version 7.2 Includes coverage of the latest updates in web development Perfect for developers to use to solve problems This book is ideal for the inexperienced programmer interested in adding these skills to their toolbox. New coders who've made it through an online course or boot camp will also find great value in how this book builds on what you already know.

Mastering Geospatial Analysis with Python: Explore GIS processing and learn to work with GeoDjango, CARTOframes and MapboxGL-Jupyter


Silas Toms - 2018
    

CMake Cookbook: Over 40 recipes enabling you to build, test, and package software for distribution using the CMake suite


Radovan Bast - 2018
     Deal with complex directory hierarchies and several libraries used by your applications with CMake. Learn to use the suite of CMake tools to build, test and package software for distribution. Book Description CMake is cross-platform and open-source software for managing the build process of software using a compiler independent method. The book will be an exhaustive compilation of recipes showcasing the tips and techniques you need to keep in mind while working with CMake. It teaches you to work with the CMake build system, CTest, CPack, CDas to drive the native tools maintaining a common specification. Our book will include real-world examples in the form of recipes to show different ways to support complex directory hierarchies. The book includes everything right from installing CMake to getting you up and running with it. Pick and choose the idea you want for your daily usage and make your file management easier with CMake. It will cover topics such as command-line tools, GUI tools, creating static & shared libraries, working with external libraries, running tests and much more. Towards the end you will be well-equipped to generate native build scripts for a range of platforms. We can also look at covering the visualization toolkit for 3D graphics and visualization systems. What you will learn How to increase portability of your code Learn how to split a code monolith into modules with the help of CMake Building multi-language projects Know where and how to tweak CMake configuration files written by somebody else Detecting operating system, processor, libraries, files, and programs for conditional compilation Creating Python packages which compile sources under the hood Who This Book Is For The book is targeted for software developers who wants to learn to manage the build system using CMake. Some prior Knowledge of C++ and MakeFiles is required. About the Author Radovan Bast: is employed in Tromsø (Norway) as a senior engineer in the High Performance Computing Group at UiT The Arctic University of Norway and contributes to advanced user and application support, code optimization and parallelization, and holds a 50 % position at the Nordic e-Infrastructure Collaboration where he leads the CodeRefinery project. He has a PhD in theoretical chemistry and as code developer is contributing to a number of quantum chemistry programs. He enjoys learning new programming languages and approaches, and to teach programming to scientists.Roberto Di Remigio: Roberto is a postdoc in theoretical chemistry at the University of Tromsø, Norway. His current research project is on continuum solvation models. He is a developer of PCMSolver, an application programming interface offering the polarizable continuum model functionality to quantum chemistry codes. He contributes or has contributed to the development of popular quantum chemistry codes:DIRAC, DALTON, LSDALTON, Psi4 and ReSpect. He is interested in programming. He usually programs in C++ and Fortran.

Pro Angular 6


Adam Freeman - 2018
    Chapters include common problems and how to avoid them. Additionally, this book now has accompanying online files for Angular 7; all examples in the book work without changes in Angular 7.Get the most from Angular, the leading framework for building dynamic JavaScript applications. Understand the MVC pattern and the benefits it can offer.What You'll LearnGain a solid architectural understanding of the MVC PatternCreate rich and dynamic web app clients using AngularUse the ng tools to create and build an Angular projectExtend and customize AngularTest your Angular projectsWhat's New in This EditionRevised for the features and changes in Angular 6 and 7Covers @angular/cli, ng command line tools, and WebPackIncludes HttpClient for simplified asynchronous HTTP requestsPresents updates to pipes and localized text displayWho This Book Is For Web developers with a foundation knowledge of HTML and JavaScript who want to create rich client-side applications

Data Cleaning Pocket Primer


Oswald Campesato - 2018
    It is designed as a practical introduction to using flexible, powerful (and free) Unix / Linux shell commands to perform common data cleaning tasks. The book is packed with realistic examples and numerous commands that illustrate both the syntax and how the commands work together. Companion files with source code are available for downloading from the publisher.Features: - A practical introduction to using flexible, powerful (and free) Unix / Linux shell commands to perform common data cleaning tasks- Includes the concept of piping data between commands, regular expression substitution, and the sed and awk commands- Packed with realistic examples and numerous commands that illustrate both the syntax and how the commands work together- Assumes the reader has no prior experience, but the topic is covered comprehensively enough to teach a pro some new tricks- Includes companion files with all of the source code examples (download from the publisher).

Continuous Delivery in Java: Essential Tools and Best Practices for Deploying Code to Production


Daniel Bryant - 2018
    In this practical book, Daniel Bryant and Abraham Marín-Pérez provide guidance to help experienced Java developers master skills such as architectural design, automated quality assurance, and application packaging and deployment on a variety of platforms.Not only will you learn how to create a comprehensive build pipeline for continually delivering effective software, but you'll also explore how Java application architecture and deployment platforms have affected the way we rapidly and safely deliver new software to production environments.Get advice for beginning or completing your migration to continuous deliveryDesign architecture to enable the continuous delivery of Java applicationsBuild application artifacts including fat JARs, virtual machine images, and operating system container (Docker) imagesUse continuous integration tooling like Jenkins, PMD, and find-sec-bugs to automate code quality checksCreate a comprehensive build pipeline and design software to separate the deploy and release processesExplore why functional and system quality attribute testing is vital from development to deliveryLearn how to effectively build and test applications locally and observe your system while it runs in production

Mastering Python Design Patterns: A guide to creating smart, efficient, and reusable software, 2nd Edition


Kamon Ayeva - 2018
    

Microservices with Clojure: Develop Event-Driven, Scalable, and Reactive Microservices with Real-Time Monitoring


Anuj Kumar - 2018
    This book will teach you common patterns and practices, showing you how to apply these using the Clojure programming language.

Learning Apache Drill: Query and Analyze Distributed Data Sources with SQL


Charles Givre - 2018
    Drill reads data in HDFS or in cloud-native storage such as S3 and works with Hive metastores along with distributed databases such as HBase, MongoDB, and relational databases. Drill works everywhere: on your laptop or in your largest cluster.In this practical book, Drill committers Charles Givre and Paul Rogers show analysts and data scientists how to query and analyze raw data using this powerful tool. Data scientists today spend about 80% of their time just gathering and cleaning data. With this book, you'll learn how Drill helps you analyze data more effectively to drive down time to insight.Use Drill to clean, prepare, and summarize delimited data for further analysisQuery file types including logfiles, Parquet, JSON, and other complex formatsQuery Hadoop, relational databases, MongoDB, and Kafka with standard SQLConnect to Drill programmatically using a variety of languagesUse Drill even with challenging or ambiguous file formatsPerform sophisticated analysis by extending Drill's functionality with user-defined functionsFacilitate data analysis for network security, image metadata, and machine learning

Artificial Intelligence and Games


Georgios N. Yannakakis - 2018
    After introductory chapters that explain the background and key techniques in AI and games, the authors explain how to use AI to play games, to generate content for games and to model players. The book will be suitable for undergraduate and graduate courses in games, artificial intelligence, design, human-computer interaction, and computational intelligence, and also for self-study by industrial game developers and practitioners. The authors have developed a website (http://www.gameaibook.org) that complements the material covered in the book with up-to-date exercises, lecture slides and reading.

Game Development Using Python


James R. Parker - 2018
    Real games will be created using Python and Pygame. The companion files will contain example code, games, and color figures. Features: * Teaches basic game development using Python, including graphics, sound, artificial intelligence, animation, game engines, Web-based games, and more* Create a small collection of complete computer games developed throughout the book * Focuses on creating games with Python and PygameeBook Customers: Companion files are available for downloading with order number/proof of purchase by writing to the publisher at info@merclearning.com.

Collect, Transform, and Combine Data Using Power Bi and Power Query in Excel


Gil Raviv - 2018
    Gain productivity by properly preparing data yourself, rather than relying on others to do it. Gain effiiciency by reducing the time it takes to prepare data for analysis, and make informed decisions more quickly. With the data connectivity and transformative technology found in Excel and Power BI, users with basic Excel skills import data and then easily reshape and cleanse that data, using simple intuitive user interfaces. Known as "Get & Transform" in Excel 2016, as the "Power Query" separate add-in in Excel 2013 and 2010, and included in Power BI, you'll use this technology to tackle common data challenges, resolving them with simple mouse clicks and lightweight formula editing. With your new data transformation skills acquired through this book, you will be able to create an automated transformation of virtually any type of data set to mine its hidden insights.

Hands-On Microservices with Kotlin: Build reactive and cloud-native microservices with Kotlin using Spring 5 and Spring Boot 2.0


Juan Antonio Medina Iglesias - 2018
    

HTML, CSS, & JavaScript for Dummies


Chris Minnick - 2018
    Once you have a grip on the trio of coding languages, you can build and update websites to be even more effective and unique. This friendly, three topics-in-one guide covers the essentials you need to know about each of these technologies so you can design, build, launch, and update sites for personal or professional use.Inside...Build structure with HTML Add links and images Use CSS to enhance style Manage content positioning Customize page colors Create simple JavaScript code Add site functionality Eliminate errors and bugs

Video Compression Handbook


Andy Beach - 2018
    One of the keys to delivering a high-quality video experience is understanding the fundamentals of video and video compression. Video Compression Handbook gives you these keys by explaining the core concepts of compression, the latest tools to use, and the important workflows for creating video for specific deliveries. After the groundwork is laid, you will learn how to compress video according to the specific requirements of your projects and will learn some best practices by following the author's own tips and recipes. Experts in the field lend their own solutions in several sidebars throughout the book, making this a valuable learning tool for anyone learning to encode video, whether you are a video editor, independent filmmaker, or simply involved in the video-to-viewer process.

Design Patterns in C#: A Hands-On Guide with Real-World Examples


Vaskaran Sarcar - 2018
    For each of the patterns, you'll see at least one real-world scenario, a coding example, and a complete implementation including output.In the first part of Design Patterns in C#, you will cover the 23 Gang of Four (GoF) design patterns, before moving onto some alternative design patterns, including the Simple Factory Pattern, the Null Object Pattern, and the MVC Pattern. The final part winds up with a conclusion and criticisms of design patterns with chapters on anti-patterns and memory leaks. By working through easy-to-follow examples, you will understand the concepts in depth and have a collection of programs to port over to your own projects.Along the way, the author discusses the different creational, structural, and behavioral patterns and why such classifications are useful. In each of these chapters, there is a Q&A session that clears up any doubts and covers the pros and cons of each of these patterns.He finishes the book with FAQs that will help you consolidate your knowledge. This book presents the topic of design patterns in C# in such a way that anyone can grasp the idea. What You Will LearnWork with each of the design patternsImplement the design patterns in real-world applicationsSelect an alternative to these patterns by comparing their pros and consUse Visual Studio Community Edition 2017 to write code and generate outputWho This Book Is For Software developers, software testers, and software architects.