Clean C++ Sustainable Software Development Patterns and Best Practices with C Stephan Roth
|
|
- Elvin Jacobs
- 6 years ago
- Views:
Transcription
1 Clean C++ Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth
2 Clean C++: Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth Bad Schwartau, Schleswig-Holstein, Germany ISBN-13 (pbk): ISBN-13 (electronic): DOI / Library of Congress Control Number: Copyright 2017 by Stephan Roth This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Cover image by Freepik ( Managing Director: Welmoed Spahr Editorial Director: Todd Green Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Technical Reviewer: Marc Gregoire Coordinating Editor: Mark Powers Copy Editor: Karen Jameson Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY Phone SPRINGER, fax (201) , orders-ny@springer-sbm.com, or visit Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please rights@apress.com, or visit rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. ebook versions and licenses are also available for most titles. For more information, reference our Print and ebook Bulk Sales web page at Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book s product page, located at For more detailed information, please visit Printed on acid-free paper
3 To Caroline and Maximilian: my beloved and marvelous family.
4 Contents at a Glance About the Author... xiii About the Technical Reviewer...xv Acknowledgments...xvii Chapter 1: Introduction... 1 Chapter 2: Build a Safety Net... 9 Chapter 3: Be Principled Chapter 4: Basics of Clean C Chapter 5: Advanced Concepts of Modern C Chapter 6: Object Orientation Chapter 7: Functional Programming Chapter 8: Test-Driven Development Chapter 9: Design Patterns and Idioms Appendix A: Small UML Guide Bibliography Index v
5 Contents About the Author... xiii About the Technical Reviewer...xv Acknowledgments...xvii Chapter 1: Introduction... 1 Software Entropy... 2 Clean Code... 3 Why C++?... 4 C++11 The Beginning of a New Era... 4 Who This Book Is For... 5 Conventions Used in This Book... 5 Sidebars... 5 Notes, Tips, and Warnings... 6 Code Samples... 6 Companion Website and Source Code Repository... 7 UML Diagrams... 7 Chapter 2: Build a Safety Net... 9 The Need for Testing... 9 Introduction into Testing Unit Tests What about QA? Rules for Good Unit Tests Test Code Quality Unit Test Naming vii
6 Contents viii Unit Test Independence One Assertion per Test Independent Initialization of Unit Test Environments Exclude Getters and Setters Exclude Third-Party Code Exclude External Systems And What Do We Do with the Database? Don t Mix Test Code with Production Code Tests Must Run Fast Test Doubles (Fake Objects) Chapter 3: Be Principled What Is a Principle? KISS YAGNI DRY Information Hiding Strong Cohesion Loose Coupling Be Careful with Optimizations Principle of Least Astonishment (PLA) The Boy Scout Rule Chapter 4: Basics of Clean C Good Names Names Should Be Self-Explanatory Use Names from the Domain Choose Names at an Appropriate Level of Abstraction Avoid Redundancy When Choosing a Name Avoid Cryptic Abbreviations Avoid Hungarian Notation and Prefixes Avoid Using the Same Name for Different Purposes... 48
7 Contents Comments Let the Code Tell a Story Do Not Comment Obvious Things Don t Disable Code with Comments Don t Write Block Comments The Rare Cases Where Comments Are Useful Functions One Thing, No More! Let Them Be Small Function Naming Use Intention-Revealing Names Arguments and Return Values About Old C-style in C++ Projects Prefer C++ Strings and Streams over Old C-Style char* Avoid Using printf(), sprintf(), gets(), etc Prefer Standard Library Containers over Simple C-style Arrays Use C++ casts Instead of Old C-Style Casts Avoid Macros Chapter 5: Advanced Concepts of Modern C Managing Resources Resource Acquisition Is Initialization (RAII) Smart Pointers Avoid Explicit New and Delete Managing Proprietary Resources We Like to Move It What Are Move Semantics? The Matter with Those lvalues and rvalues rvalue References Don t Enforce Move Everywhere The Rule of Zero ix
8 Contents The Compiler Is Your Colleague Automatic Type Deduction Computations during Compile Time Variable Templates Don t Allow Undefined Behavior Type-Rich Programming Know Your Libraries Take Advantage of <algorithm> Take Advantage of Boost More Libraries That You Should Know About Proper Exception and Error Handling Prevention Is Better Than Aftercare An Exception Is an Exception Literally! If You Can t Recover, Get Out Quickly Define User-Specific Exception Types Throw by Value, Catch by const Reference Pay Attention to the Correct Order of Catch-Clauses Chapter 6: Object Orientation Object-Oriented Thinking Abstraction the Key to Master Complexity Principles for Good Class Design Keep Classes Small Single Responsibility Principle (SRP) Open-Closed Principle (OCP) Liskov Substitution Principle (LSP) Interface Segregation Principle (ISP) Acyclic Dependency Principle Dependency Inversion Principle (DIP) Don t Talk to Strangers (Law of Demeter) Avoid Anemic Classes x
9 Contents Tell, Don t Ask! Avoid Static Class Members Chapter 7: Functional Programming What Is Functional Programming? What Is a Function? Pure vs. Impure Functions Functional Programming in Modern C Functional Programming with C++ Templates Function-Like Objects (Functors) Binders and Function Wrappers Lambda Expressions Generic Lambda Expressions (C++14) Higher-Order Functions Map, Filter, and Reduce Clean Code in Functional Programming Chapter 8: Test-Driven Development The Drawbacks of Plain Old Unit Testing (POUT) Test-Driven Development as a Game Changer The Workflow of TDD TDD by Example: The Roman Numerals Code Kata The Advantages of TDD When We Should Not Use TDD Chapter 9: Design Patterns and Idioms Design Principles vs. Design Patterns Some Patterns, and When to Use Them Dependency Injection (DI) Adapter Strategy Command Command Processor xi
10 Contents Composite Observer Factories Facade Money Class Special Case Object (Null Object) What Is an Idiom? Some Useful C++ Idioms Appendix A: Small UML Guide Class Diagrams Class Interface Association Generalization Dependency Components Stereotypes Bibliography Index xii
11 About the Author Stephan Roth, born on May 15, 1968, is a passionate coach, consultant, and trainer for Systems and Software Engineering with German consultancy company oose Innovative Informatik eg located in Hamburg. Before he joined oose, Stephan worked for many years as a software developer, software architect, and systems engineer in the field of radio reconnaissance and communication intelligence systems. He has developed sophisticated applications, especially for distributed systems with ambitious performance requirements, and graphical user interfaces using C++ and other programming languages. Stephan is also a speaker at professional conferences and author of several publications. As a member of the Gesellschaft für Systems Engineering e.v., the German chapter of the international Systems Engineering organization INCOSE, he is also engaged in the Systems Engineering community. Furthermore, he is an active supporter of the Software Craftsmanship movement and concerned with principles and practices of Clean Code Development (CCD). Stephan Roth lives with his wife Caroline and their son Maximilian in Bad Schwartau, a spa in the German federal state of Schleswig-Holstein near the Baltic Sea. You can visit Stephan s website and blog about Systems Engineering, Software Engineering, and Software Craftsmanship via the URL roth-soft.de. Please note that the articles there are mainly written in German. On top of that, you can contact him via or follow him at the networks listed below. stephan@clean-cpp.com ( Google+ Profile Page: LinkedIn: xiii
12 About the Technical Reviewer Marc Gregoire is a software engineer from Belgium. He graduated from the University of Leuven, Belgium, with a degree in "Burgerlijk ingenieur in de computer wetenschappen" (equivalent to Master of Science in engineering in computer science). The year after, he received a master s degree, cum laude, in artificial intelligence at the same university. After his studies were completed, Marc started working for a software consultancy company called Ordina Belgium. As a consultant, he worked for Siemens and Nokia Siemens Networks on critical 2G and 3G software running on Solaris for telecom operators. This required working in international teams stretching from South America and the United States to EMEA and Asia. Marc is now working for Nikon Metrology on industrial 3D laser scanning software. His main expertise is C/C++, and specifically Microsoft VC++ and the MFC framework. He has experience in developing C++ programs running 24x7 on Windows and Linux platforms: for example, KNX/ EIB home automation software. Next to C/C++, Marc also likes C# and uses PHP for creating web pages. Since April 2007, he has received the yearly Microsoft MVP (Most Valuable Professional) award for his Visual C++ expertise. Marc is the founder of the Belgian C++ Users Group ( author of Professional C++ and a member of the CodeGuru forum (as Marc G). He maintains a blog on xv
13 Acknowledgments Writing a book like this one is never just the work of an individual person, the author. There are always numerous, fabulous people who contribute significantly to such a great project. First of all, I would like to thank Steve Anglin of Apress. Steve contacted me in March 2016 and has persuaded me to continue my book project with Apress Media LLC, which has been self-published at Leanpub until then. That was such great luck, and I thank you, dear Steve. In July 2016 the contracts were signed. Nevertheless, I would also like to thank the superb Leanpub self-publishing platform that served some years as a kind of "incubator" for this book. Next, I would like to thank Mark Powers, Editorial Operations Manager at Apress, for his great support during the writing of the manuscript. Mark was not only always available to answer questions: his incessant follow-up on the progress of the manuscript was a positive incentive for me. I am very grateful to you, dear Mark. In addition, many thanks also to Matthew Moodie, Lead Development Editor at Apress, who has provided proper help throughout the whole book development process. A special thank you goes out to my technical reviewer Marc Gregoire. Marc, thank you for critically examining every single chapter. You ve found many issues that I probably would have never found. You pushed me hard to improve several sections, and that was really valuable to me. Of course, I would also like to say a big thank you to the whole production team at Apress. They ve done an excellent job regarding the finalization (copy editing, indexing, composition/layout, etc.) of the whole book until the distribution of the final print (and ebook) files. Of course, I also thank all my colleagues at oose. Thank you for the many inspiring discussions. Last but not least, I would like to thank my beloved and unique family, especially for their understanding that a book project takes a great deal of time. Maximilian and Caroline, you re just wonderful. xvii
Essential Angular for ASP.NET Core MVC
Essential Angular for ASP.NET Core MVC Adam Freeman Essential Angular for ASP.NET Core MVC Adam Freeman London, UK ISBN-13 (pbk): 978-1-4842-2915-6 ISBN-13 (electronic): 978-1-4842-2916-3 DOI 10.1007/978-1-4842-2916-3
More informationFunctional Programming in R
Functional Programming in R Advanced Statistical Programming for Data Science, Analysis and Finance Thomas Mailund Functional Programming in R: Advanced Statistical Programming for Data Science, Analysis
More informationJava Quick Syntax Reference. Second Edition. Mikael Olsson
Java Quick Syntax Reference Second Edition Mikael Olsson Java Quick Syntax Reference Second Edition Mikael Olsson Java Quick Syntax Reference Mikael Olsson Hammarland, Länsi-Suomi, Finland ISBN-13 (pbk):
More informationMicrosoft Computer Vision APIs Distilled
Microsoft Computer Vision APIs Distilled Getting Started with Cognitive Services Alessandro Del Sole Microsoft Computer Vision APIs Distilled Alessandro Del Sole Cremona, Italy ISBN-13 (pbk): 978-1-4842-3341-2
More informationWindows 10 Revealed. The Universal Windows Operating System for PC, Tablets, and Windows Phone. Kinnary Jangla
Windows 10 Revealed The Universal Windows Operating System for PC, Tablets, and Windows Phone Kinnary Jangla Windows 10 Revealed Kinnary Jangla Bing Maps San Francisco, California, USA ISBN-13 (pbk): 978-1-4842-0687-4
More informationThe Windows 10 Productivity Handbook
The Windows 10 Productivity Handbook Discover Expert Tips, Tricks, and Hidden Features in Windows 10 Mike Halsey The Windows 10 Productivity Handbook Mike Halsey Sheffield, Yorkshire, UK ISBN-13 (pbk):
More informationBuilding Custom Tasks for SQL Server Integration Services
Building Custom Tasks for SQL Server Integration Services Andy Leonard Building Custom Tasks for SQL Server Integration Services Andy Leonard Farmville, Virginia, USA ISBN-13 (pbk): 978-1-4842-2939-2 ISBN-13
More informationPro MERN Stack. Full Stack Web App Development with Mongo, Express, React, and Node. Vasan Subramanian
Pro MERN Stack Full Stack Web App Development with Mongo, Express, React, and Node Vasan Subramanian Pro MERN Stack Vasan Subramanian Bangalore, Karnataka, India ISBN-13 (pbk): 978-1-4842-2652-0 ISBN-13
More informationAgile Swift. Swift Programming Using Agile Tools and Techniques. Godfrey Nolan
Agile Swift Swift Programming Using Agile Tools and Techniques Godfrey Nolan Agile Swift: Swift Programming Using Agile Tools and Techniques Godfrey Nolan Huntington Woods, Michigan, USA ISBN-13 (pbk):
More informationAndroid Continuous Integration
Android Continuous Integration Build-Deploy-Test Automation for Android Mobile Apps Pradeep Macharla Android Continuous Integration Pradeep Macharla North Carolina, USA ISBN-13 (pbk): 978-1-4842-2795-4
More informationJavaScript Quick Syntax Reference
JavaScript Quick Syntax Reference Mikael Olsson JavaScript Quick Syntax Reference Copyright 2015 by Mikael Olsson This work is subject to copyright. All rights are reserved by the Publisher, whether the
More informationSQL Server AlwaysOn Revealed
SQL Server AlwaysOn Revealed Second Edition Peter A. Carter SQL Server AlwaysOn Revealed, 2nd Edition Peter A. Carter Botley, United Kingdom ISBN-13 (pbk): 978-1-4842-2396-3 ISBN-13 (electronic): 978-1-4842-2397-0
More informationPractical Amazon EC2, SQS, Kinesis, and S3
Practical Amazon EC2, SQS, Kinesis, and S3 A Hands-On Approach to AWS Sunil Gulabani Practical Amazon EC2, SQS, Kinesis, and S3: A Hands-On Approach to AWS Sunil Gulabani Ahmedabad, Gujarat, India ISBN-13
More informationC Quick Syntax Reference
C Quick Syntax Reference Mikael Olsson C Quick Syntax Reference Copyright 2015 by Mikael Olsson This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of
More informationAndroid Continuous Integration
Android Continuous Integration Build-Deploy-Test Automation for Android Mobile Apps Pradeep Macharla Android Continuous Integration Build-Deploy-Test Automation for Android Mobile Apps Pradeep Macharla
More informationJavaScript Essentials for SAP ABAP Developers
JavaScript Essentials for SAP ABAP Developers A Guide to Mobile and Desktop Application Development Rehan Zaidi JavaScript Essentials for SAP ABAP Developers: A Guide to Mobile and Desktop Application
More informationMATLAB Programming for Numerical Analysis. César Pérez López
MATLAB Programming for Numerical Analysis César Pérez López MATLAB Programming for Numerical Analysis Copyright 2014 by César Pérez López This work is subject to copyright. All rights are reserved by the
More informationBeginning Functional JavaScript
Beginning Functional JavaScript Functional Programming with JavaScript Using EcmaScript 6 Anto Aravinth Beginning Functional JavaScript Anto Aravinth Chennai, Tamil Nadu, India ISBN-13 (pbk): 978-1-4842-2655-1
More informationC++ Quick Syntax Reference
C++ Quick Syntax Reference Mikael Olsson C++ Quick Syntax Reference Copyright 2013 by Mikael Olsson This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part
More informationObjective-C Quick Syntax Reference
Objective-C Quick Syntax Reference Matthew Campbell Objective-C Quick Syntax Reference Copyright 2014 by Matthew Campbell This work is subject to copyright. All rights are reserved by the Publisher, whether
More informationASP.NET Core Recipes
ASP.NET Core Recipes A Problem-Solution Approach Second Edition John Ciliberti ASP.NET Core Recipes: A Problem-Solution Approach John Ciliberti Sparta, New Jersey, USA ISBN-13 (pbk): 978-1-4842-0428-3
More informationBeginning Robotics Programming in Java with LEGO Mindstorms
Beginning Robotics Programming in Java with LEGO Mindstorms Wei Lu Beginning Robotics Programming in Java with LEGO Mindstorms Wei Lu Keene, New Hampshire, USA ISBN-13 (pbk): 978-1-4842-2004-7 ISBN-13
More informationLearn PHP 7. Object-Oriented Modular Programming using HTML5, CSS3, JavaScript, XML, JSON, and MySQL. Steve Prettyman
THE EXPERT S VOICE IN WEB DEVELOPMENT Learn PHP 7 Object-Oriented Modular Programming using HTML5, CSS3, JavaScript, XML, JSON, and MySQL Steve Prettyman Learn PHP 7 Object-Oriented Modular Programming
More informationMaterial Design Implementation with AngularJS
Material Design Implementation with AngularJS UI Component Framework First Edition V. Keerti Kotaru Material Design Implementation with AngularJS V. Keerti Kotaru Hyderabad, Andhra Pradesh, India ISBN-13
More informationPro Angular 6. Third Edition. Adam Freeman
Pro Angular 6 Third Edition Adam Freeman Pro Angular 6 Adam Freeman London, UK ISBN-13 (pbk): 978-1-4842-3648-2 ISBN-13 (electronic): 978-1-4842-3649-9 https://doi.org/10.1007/978-1-4842-3649-9 Library
More informationMATLAB Numerical Calculations. César Pérez López
MATLAB Numerical Calculations César Pérez López MATLAB Numerical Calculations Copyright 2014 by César Pérez López This work is subject to copyright. All rights are reserved by the Publisher, whether the
More informationPro Java Clustering and Scalability
Pro Java Clustering and Scalability Building Real-Time Apps with Spring, Cassandra, Redis, WebSocket and RabbitMQ Jorge Acetozi Pro Java Clustering and Scalability: Building Real-Time Apps with Spring,
More informationScalable Big Data Architecture
Scalable Big Data Architecture A Practitioner s Guide to Choosing Relevant Big Data Architecture Bahaaldine Azarmi Scalable Big Data Architecture Copyright 2016 by Bahaaldine Azarmi This work is subject
More informationCustom Raspberry Pi Interfaces
Custom Raspberry Pi Interfaces Design and build hardware interfaces for the Raspberry Pi Warren Gay Custom Raspberry Pi Interfaces: Design and build hardware interfaces for the Raspberry Pi Warren Gay
More informationWindows Troubleshooting Series
Windows Troubleshooting Series Mike Halsey, MVP Series Editor Windows Networking Troubleshooting Mike Halsey Joli Ballew Windows Networking Troubleshooting Mike Halsey Sheffield, South Yorkshire, UK Joli
More informationBeginning PowerShell for SharePoint 2016
Beginning PowerShell for SharePoint 2016 A Guide for Administrators, Developers, and DevOps Engineers Second Edition Nikolas Charlebois-Laprade John Edward Naguib Beginning PowerShell for SharePoint 2016:
More informationPivotal Certified Professional Spring Developer Exam
Pivotal Certified Professional Spring Developer Exam A Study Guide Iuliana Cosmina Pivotal Certified Spring Web Application Developer Exam Iuliana Cosmina Sibiu, Romania ISBN-13 (pbk): 978-1-4842-0812-0
More informationWeb Programming with Dart. Moises Belchin Patricia Juberias
Web Programming with Dart Moises Belchin Patricia Juberias Web Programming with Dart Copyright 2015 by Moises Belchin and Patricia Juberias This work is subject to copyright. All rights are reserved by
More informationBeginning Oracle WebCenter Portal 12c
Beginning Oracle WebCenter Portal 12c Build next-generation Enterprise Portals with Oracle WebCenter Portal Vinay Kumar Daniel Merchán García Beginning Oracle WebCenter Portal 12c Vinay Kumar Rotterdam,
More informationLearn Apple HomeKit on ios
Learn Apple HomeKit on ios A Home Automation Guide for Developers, Designers, and Homeowners Jesse Feiler Learn Apple HomeKit on ios: A Home Automation Guide for Developers, Designers, and Homeowners Jesse
More informationBeginning CSS Preprocessors
Beginning CSS Preprocessors With Sass, Compass, and Less Anirudh Prabhu Beginning CSS Preprocessors: With SASS, Compass.js, and Less.js Copyright 2015 by Anirudh Prabhu This work is subject to copyright.
More informationSwift Quick Syntax Reference
Swift Quick Syntax Reference Matthew Campbell Swift Quick Syntax Reference Copyright 2014 by Matthew Campbell This work is subject to copyright. All rights are reserved by the Publisher, whether the whole
More informationDeepak Vohra. Pro Docker
Deepak Vohra Pro Docker Pro Docker Copyright 2016 by Deepak Vohra This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically
More informationClean C++ Sustainable Software Development Patterns and Best Practices with C Stephan Roth
Clean C++ Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth Clean C++ Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth Clean C++:
More informationClean C++ Sustainable Software Development Patterns and Best Practices with C Stephan Roth.
Clean C++ Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth Clean C++ Sustainable Software Development Patterns and Best Practices with C++ 17 Stephan Roth Clean C++:
More informationPractical Spring LDAP
Practical Spring LDAP Enterprise Java LDAP Development Made Easy Balaji Varanasi Practical Spring LDAP: Enterprise Java LDAP Development Made Easy Copyright 2013 Balaji Varanasi. All rights reserved. This
More informationMigrating to Swift from Android
Migrating to Swift from Android Sean Liao Migrating to Swift from Android Copyright 2014 by Sean Liao This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part
More informationCreating Maintainable APIs
Creating Maintainable APIs A Practical, Case-Study Approach Ervin Varga Creating Maintainable APIs: A Practical, Case-Study Approach Ervin Varga Expro I.T. Consulting, Kikinda Serbia ISBN-13 (pbk): 978-1-4842-2195-2
More informationC++ Recipes. A Problem-Solution Approach. Bruce Sutherland
C++ Recipes A Problem-Solution Approach Bruce Sutherland C++ Recipes: A Problem-Solution Approach Copyright 2015 by Bruce Sutherland This work is subject to copyright. All rights are reserved by the Publisher,
More informationLearning Groovy. Adam L. Davis
Learning Groovy Adam L. Davis Learning Groovy Adam L. Davis New York, USA ISBN-13 (pbk): 978-1-4842-2116-7 ISBN-13 (electronic): 978-1-4842-2117-4 DOI 10.1007/978-1-4842-2117-4 Library of Congress Control
More informationBeginning ASP.NET MVC 4. José Rolando Guay Paz
Beginning ASP.NET MVC 4 José Rolando Guay Paz Beginning ASP.NET MVC 4 Copyright 2013 by José Rolando Guay Paz This work is subject to copyright. All rights are reserved by the Publisher, whether the whole
More informationPro JavaScript Performance Monitoring and Visualization
Pro JavaScript Performance Monitoring and Visualization Tom Barker Pro JavaScript Performance Copyright 2012 by Tom Barker This work is subject to copyright. All rights are reserved by the Publisher, whether
More informationWindows Troubleshooting Series
Windows Troubleshooting Series Mike Halsey, MVP Series Editor Windows Group Policy Troubleshooting A Best Practice Guide for Managing Users and PCs Through Group Policy Kapil Arya, MVP Edited by Andrew
More informationPro MongoDB Development
Pro MongoDB Development Deepak Vohra Pro MongoDB Development Copyright 2015 by Deepak Vohra This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
More informationCompanion ebook Available Pro Android Includes Android 1.5 SOURCE CODE ONLINE US $44.99
The EXPERT s VOIce in Open Source Pro Android Covers Google s Android Platform and its fundamental APIs, from basic concepts such as Android resources, intents, and content providers to advanced topics
More informationIntroducing Meteor. Josh Robinson Aaron Gray David Titarenco
Introducing Meteor Josh Robinson Aaron Gray David Titarenco Introducing Meteor Copyright 2015 by Josh Robinson, Aaron Gray, and David Titarenco This work is subject to copyright. All rights are reserved
More informationDeploying SharePoint 2016
Deploying SharePoint 2016 Best Practices for Installing, Configuring, and Maintaining SharePoint Server 2016 Vlad Catrinescu Trevor Seward Deploying SharePoint 2016: Best Practices for Installing, Configuring,
More informationServer Reporting Services. Kathi Kellenberger
Beginning SQL Server Reporting Services Kathi Kellenberger Beginning SQL Server Reporting Services Kathi Kellenberger Beginning SQL Server Reporting Services Kathi Kellenberger Edwardsville, Illinois USA
More informationDigital Illustration Fundamentals
Wallace Jackson Digital Illustration Fundamentals Vector, Raster, WaveForm, NewMedia with DICF, DAEF and ASNMF 1st ed. 2015 Wallace Jackson Lompoc, California, USA ISBN 978-1-4842-1696-5 e-isbn 978-1-4842-1697-2
More informationReactive Programming with Angular and ngrx
Reactive Programming with Angular and ngrx Learn to Harness the Power of Reactive Programming with RxJS and ngrx Extensions Oren Farhi Reactive Programming with Angular and ngrx: Learn to Harness the Power
More informationPro.NET 4 Parallel Programming in C#
Pro.NET 4 Parallel Programming in C# Adam Freeman Pro.NET 4 Parallel Programming in C# Copyright 2010 by Adam Freeman All rights reserved. No part of this work may be reproduced or transmitted in any form
More informationDocker for Data Science
Docker for Data Science Building Scalable and Extensible Data Infrastructure Around the Jupyter Notebook Server Joshua Cook Docker for Data Science Joshua Cook Santa Monica, California, USA ISBN-13 (pbk):
More informationLearn Excel 2016 for OS X
Learn Excel 2016 for OS X Second Edition Guy Hart-Davis Learn Excel 2016 for OS X Copyright 2015 by Guy Hart-Davis This work is subject to copyright. All rights are reserved by the Publisher, whether the
More informationJames Cryer. Pro Grunt.js
James Cryer Pro Grunt.js Pro Grunt.js Copyright 2015 by James Cryer This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned,
More informationExpanding Your Raspberry Pi
Expanding Your Raspberry Pi Storage, printing, peripherals, and network connections for your Raspberry Pi Mark Edward Soper Expanding Your Raspberry Pi: Storage, printing, peripherals, and network connections
More informationBeginning Visual Studio for Mac
Beginning Visual Studio for Mac Build Cross-Platform Apps with Xamarin and.net Core Alessandro Del Sole Beginning Visual Studio for Mac Alessandro Del Sole Cremona, Italy ISBN-13 (pbk): 978-1-4842-3032-9
More informationCreating Google Chrome Extensions
Creating Google Chrome Extensions Prateek Mehta Creating Google Chrome Extensions Prateek Mehta New Delhi, India ISBN-13 (pbk): 978-1-4842-1774-0 ISBN-13 (electronic): 978-1-4842-1775-7 DOI 10.1007/978-1-4842-1775-7
More informationPhilip Andrew Simpson. FPGA Design. Best Practices for Team-based Reuse. Second Edition
FPGA Design Philip Andrew Simpson FPGA Design Best Practices for Team-based Reuse Second Edition Philip Andrew Simpson San Jose, CA, USA ISBN 978-3-319-17923-0 DOI 10.1007/978-3-319-17924-7 ISBN 978-3-319-17924-7
More informationMicrosoft Mapping. Geospatial Development in Windows 10 with Bing Maps and C# Second Edition. Carmen Au Ray Rischpater
Microsoft Mapping Geospatial Development in Windows 10 with Bing Maps and C# Second Edition Carmen Au Ray Rischpater Microsoft Mapping: Geospatial Development in Windows 10 with Bing Maps and C# Copyright
More informationNetwork Programming with Go
Network Programming with Go Essential Skills for Using and Securing Networks Jan Newmarch Network Programming with Go: Essential Skills for Using and Securing Networks Jan Newmarch Oakleigh, Victoria Australia
More informationResearch on Industrial Security Theory
Research on Industrial Security Theory Menggang Li Research on Industrial Security Theory Menggang Li China Centre for Industrial Security Research Beijing, People s Republic of China ISBN 978-3-642-36951-3
More information7 Windows Tweaks. A Comprehensive Guide to Customizing, Increasing Performance, and Securing Microsoft Windows 7. Steve Sinchak
Take control of Windows 7 Unlock hidden settings Rev up your network Disable features you hate, for good Fine-tune User Account control Turbocharge online speed Master the taskbar and start button Customize
More informationDynamic SQL. Applications, Performance, and Security. Ed Pollack
Dynamic SQL Applications, Performance, and Security Ed Pollack Dynamic SQL Edward Pollack Albany, New York, USA ISBN-13 (pbk): 978-1-4842-1810-5 ISBN-13 (electronic): 978-1-4842-1811-2 DOI 10.1007/978-1-4842-1811-2
More informationTroubleshooting Xcode
Troubleshooting Xcode Magno Urbano Troubleshooting Xcode Copyright 2015 by Magno Urbano This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material
More informationEnhancing Adobe Acrobat DC Forms with JavaScript
Enhancing Adobe Acrobat DC Forms with JavaScript Jennifer Harder Enhancing Adobe Acrobat DC Forms with JavaScript Jennifer Harder Delta, British Columbia, Canada ISBN-13 (pbk): 978-1-4842-2892-0 ISBN-13
More informationFailure-Modes-Based Software Reading
SPRINGER BRIEFS IN COMPUTER SCIENCE Yang-Ming Zhu Failure-Modes-Based Software Reading SpringerBriefs in Computer Science More information about this series at http://www.springer.com/series/10028 Yang-Ming
More informationPHP 7 Zend Certification Study Guide
PHP 7 Zend Certification Study Guide Ace the ZCE 2017-PHP Exam Andrew Beak PHP 7 Zend Certification Study Guide Andrew Beak Grafham, Cambridgeshire, United Kingdom ISBN-13 (pbk): 978-1-4842-3245-3 ISBN-13
More informationBeginning django CMS. Nigel George
Beginning django CMS Nigel George Beginning django CMS Copyright 2015 by Nigel George This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material
More informationGeorge Grätzer. Practical L A TEX
Practical L A TEX George Grätzer Practical L A TEX 123 George Grätzer Toronto, ON, Canada Additional material to this book can be downloaded from http://extras.springer.com ISBN 978-3-319-06424-6 ISBN
More informationPython 3 for Absolute Beginners
Python 3 for Absolute Beginners Tim Hall and J-P Stacey Python 3 for Absolute Beginners Copyright 2009 by Tim Hall and J-P Stacey All rights reserved. No part of this work may be reproduced or transmitted
More informationIntel Xeon Phi TM Coprocessor Architecture and Tools
Intel Xeon Phi TM Coprocessor Architecture and Tools The Guide for Application Developers Rezaur Rahman Intel Xeon Phi Coprocessor Architecture and Tools: The Guide for Application Developers Rezaur Rahman
More informationJavaScript Object Programming
JavaScript Object Programming Martin Rinehart JavaScript Object Programming Copyright 2015 by Martin Rinehart This work is subject to copyright. All rights are reserved by the Publisher, whether the whole
More informationNginx. From Beginner to Pro. Rahul Soni
Nginx From Beginner to Pro Rahul Soni Nginx: From Beginner to Pro Rahul Soni Kolkata, West Bengal India ISBN-13 (pbk): 978-1-4842-1657-6 ISBN-13 (electronic): 978-1-4842-1656-9 DOI 10.1007/978-1-4842-1656-9
More informationPro SQL Server 2008 Mirroring
Pro SQL Server 2008 Mirroring Robert L. Davis, Ken Simmons Pro SQL Server 2008 Mirroring Copyright 2009 by Robert L. Davis, Ken Simmons All rights reserved. No part of this work may be reproduced or transmitted
More informationVisual Studio Condensed. Patrick Desjardins
Visual Studio Condensed Patrick Desjardins Visual Studio Condensed Copyright 2014 by Patrick Desjardins This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or
More informationJava I/O, NIO and NIO.2
Java I/O, NIO and NIO.2 Jeff Friesen Java I/O, NIO and NIO.2 Copyright 2015 by Jeff Friesen This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
More informationIntroducing SQLite for Mobile Developers
Introducing SQLite for Mobile Developers Jesse Feiler Introducing SQLite for Mobile Developers Copyright 2015 by Jesse Feiler This work is subject to copyright. All rights are reserved by the Publisher,
More informationBeginning C. Fifth Edition. Ivor Horton
Beginning C Fifth Edition Ivor Horton Beginning C, Fifth Edition Copyright 2013 by Ivor Horton This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of
More informationBeginning XML with C# 7
Beginning XML with C# 7 XML Processing and Data Access for C# Developers Second Edition Bipin Joshi Beginning XML with C# 7: XML Processing and Data Access for C# Developers Bipin Joshi 301 Pitruchhaya,
More informationITIL 2011 At a Glance. John O. Long
ITIL 2011 At a Glance John O. Long SpringerBriefs in Computer Science Series Editors Stan Zdonik Peng Ning Shashi Shekhar Jonathan Katz Xindong Wu Lakhmi C. Jain David Padua Xuemin Shen Borko Furht VS
More informationPro ASP.NET MVC 5. Adam Freeman
Pro ASP.NET MVC 5 Adam Freeman Pro ASP.NET MVC 5 Copyright 2013 by Adam Freeman This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is
More informationBeginning Oracle Application Express 5
Beginning Oracle Application Express 5 Doug Gault Beginning Oracle Application Express 5 Copyright 2015 by Doug Gault This work is subject to copyright. All rights are reserved by the Publisher, whether
More informationIvor Horton s. Windows Programming with the Microsoft Foundation Classes (MFC) Introduction...xxxiii
Ivor Horton s Beginning Visual C++ 2013 Introduction....xxxiii Chapter 1 Programming with Visual C++....1 Chapter 2 Data, Variables, and Calculations....25 Chapter 3 Decisions and Loops...91 Chapter 4
More informationAgile Database Techniques Effective Strategies for the Agile Software Developer. Scott W. Ambler
Agile Database Techniques Effective Strategies for the Agile Software Developer Scott W. Ambler Agile Database Techniques Effective Strategies for the Agile Software Developer Agile Database Techniques
More informationExpert C# 5.0 with.net 4.5 Framework
Expert C# 5.0 with.net 4.5 Framework Mohammad Rahman Apress Expert C# 5.0: with.net 4.5 Framework Copyright 2013 by Mohammad Rahman This work is subject to copyright. All rights are reserved by the Publisher,
More informationJava 9 Revealed. For Early Adoption and Migration. Kishori Sharan
Java 9 Revealed For Early Adoption and Migration Kishori Sharan Java 9 Revealed: For Early Adoption and Migration Kishori Sharan Montgomery, Alabama, USA ISBN-13 (pbk): 978-1-4842-2591-2 ISBN-13 (electronic):
More informationAdvanced Microservices
Advanced Microservices A Hands-on Approach to Microservice Infrastructure and Tooling Thomas Hunter II Advanced Microservices: A Hands-on Approach to Microservice Infrastructure and Tooling Thomas Hunter
More informationA Programmer's Guide to
J2EE FrontEnd Technologies: A Programmer's Guide to Servlets, JavaServer Pages, and Enterprise JavaBeans LENNART JGRELID APress Media, LLC J2EE FrontEnd Technologies: A Programmer's Guide to Servlets,
More informationS Cove pring Bootrs Pivotal Certified Spring Enterprise Integration Specialist Exam SOURCE CODE ONLINE
Covers Spring Boot Pivotal Certified Spring Enterprise Integration Specialist Exam A Study Guide Lubos Krnac Pivotal Certified Spring Enterprise Integration Specialist Exam Copyright 2015 by Lubos Krnac
More informationMobile Phone Security and Forensics
Mobile Phone Security and Forensics Iosif I. Androulidakis Mobile Phone Security and Forensics A Practical Approach Second Edition Iosif I. Androulidakis Pedini Ioannina Greece ISBN 978-3-319-29741-5
More informationBeginning Apache Cassandra Development. Vivek Mishra
Beginning Apache Cassandra Development Vivek Mishra Beginning Apache Cassandra Development Copyright 2014 by Vivek Mishra This work is subject to copyright. All rights are reserved by the Publisher, whether
More informationLow Level X Window Programming
Low Level X Window Programming Ross J. Maloney Low Level X Window Programming An Introduction by Examples 123 Dr. Ross J. Maloney Yenolam Corporation Booragoon, WA Australia ISBN 978-3-319-74249-6 ISBN
More informationCarlo Scarioni. Pro Spring Security
Carlo Scarioni Pro Spring Security Pro Spring Security Copyright 2013 by Carlo Scarioni This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material
More informationSQL on Big Data. Technology, Architecture, and Innovation. Sumit Pal
SQL on Big Data Technology, Architecture, and Innovation Sumit Pal SQL on Big Data: Technology, Architecture, and Innovation Sumit Pal Wilmington, Massachusetts, USA ISBN-13 (pbk): 978-1-4842-2246-1 ISBN-13
More informationBeginning Apache Pig. Big Data Processing Made Easy. Balaswamy Vaddeman
Beginning Apache Pig Big Data Processing Made Easy Balaswamy Vaddeman Beginning Apache Pig: Big Data Processing Made Easy Balaswamy Vaddeman Hyderabad, Andhra Pradesh, India ISBN-13 (pbk): 978-1-4842-2336-9
More information