Network Programming with Go

Size: px
Start display at page:

Download "Network Programming with Go"

Transcription

1 Network Programming with Go Essential Skills for Using and Securing Networks Jan Newmarch

2 Network Programming with Go: Essential Skills for Using and Securing Networks Jan Newmarch Oakleigh, Victoria Australia ISBN-13 (pbk): ISBN-13 (electronic): DOI / Library of Congress Control Number: Copyright 2017 by Jan Newmarch 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. Managing Director: Welmoed Spahr Editorial Director: Todd Green Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Technical Reviewer: Ronald Petty Coordinating Editor: Mark Powers Copy Editor: Kezia Endsley Compositor: SPi Global Indexer: SPi Global Artist: SPi Global Cover image designed by Freepik 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 Contents at a Glance About the Author...xvii About the Technical Reviewer...xix Preface...xxi Chapter 1: Architecture... 1 Chapter 2: Overview of the Go Language Chapter 3: Socket-Level Programming Chapter 4: Data Serialization Chapter 5: Application-Level Protocols Chapter 6: Managing Character Sets and Encodings Chapter 7: Security Chapter 8: HTTP Chapter 9: Templates Chapter 10: A Complete Web Server Chapter 11: HTML Chapter 12: XML Chapter 13: Remote Procedure Call Chapter 14: REST Chapter 15: WebSockets Afterword Index iii

4 Contents About the Author...xvii About the Technical Reviewer...xix Preface...xxi Chapter 1: Architecture... 1 Protocol Layers... 1 ISO OSI Protocol... 2 OSI Layers... 2 TCP/IP Protocol... 3 Some Alternative Protocols... 3 Networking... 3 Gateways... 4 Packet Encapsulation... 4 Connection Models... 5 Connection Oriented... 5 Connectionless... 5 Communications Models... 5 Message Passing... 5 Remote Procedure Call... 6 Distributed Computing Models... 7 Client-Server System... 8 Client-Server Application... 8 Server Distribution... 9 v

5 Communication Flows... 9 Synchronous Communication Asynchronous Communication Streaming Communication Publish/Subscribe Component Distribution Gartner Classification Three-Tier Models Fat versus Thin Middleware Model Middleware Examples Middleware Functions Continuum of Processing Points of Failure Acceptance Factors Transparency Access Transparency Location Transparency Migration Transparency Replication Transparency Concurrency Transparency Scalability Transparency Performance Transparency Failure Transparency Eight Fallacies of Distributed Computing Fallacy: The Network Is Reliable Fallacy: Latency Is Zero Fallacy: Bandwidth Is Infinite Fallacy: The Network Is Secure vi

6 Fallacy: Topology Doesn t Change Fallacy: There Is One Administrator Fallacy: Transport Cost Is Zero Fallacy: The Network Is Homogeneous Conclusion Chapter 2: Overview of the Go Language Types Slices and Arrays Structures Pointers Functions Maps Methods Multi-Threading Packages Type Conversion Statements GOPATH Running Go Programs Standard Libraries Error Values Conclusion Chapter 3: Socket-Level Programming The TCP/IP Stack IP Datagrams UDP TCP Internet Addresses IPv4 Addresses IPv6 Addresses vii

7 IP Address Type The IPMask Type The IPAddr Type...36 Host Lookup Services Ports The TCPAddr Type TCP Sockets TCP Client A Daytime Server Multi-Threaded Server Controlling TCP Connections Timeout Staying Alive UDP Datagrams Server Listening on Multiple Sockets The Conn, PacketConn, and Listener Types Raw Sockets and the IPConn Type Conclusion Chapter 4: Data Serialization Structured Data Mutual Agreement Self-Describing Data ASN ASN.1 Daytime Client and Server JSON A Client and Server The Gob Package A Client and Server viii

8 Encoding Binary Data as Strings Protocol Buffers Installing and Compiling Protocol Buffers The Compiled personv3.pb.go File...84 Using the Compiled Code Conclusion Chapter 5: Application-Level Protocols Protocol Design Why Should You Worry? Version Control The Web Message Format Data Format Byte Format Character Format A Simple Example A Standalone Application The Client-Server Application The Client Side Alternative Presentation Aspects The Server Side Protocol: Informal Text Protocol Server Code Client Code Textproto Package State Information Application State Transition Diagram Client State Transition Diagrams ix

9 x Server State Transition Diagrams Server Pseudocode Conclusion Chapter 6: Managing Character Sets and Encodings Definitions Character Character Repertoire/Character Set Character Code Character Encoding Transport Encoding ASCII ISO Unicode UTF-8, Go, and Runes UTF-8 Client and Server ASCII Client and Server UTF-16 and Go Little-Endian and Big-Endian UTF-16 Client and Server Unicode Gotchas ISO 8859 and Go Other Character Sets and Go Conclusion Chapter 7: Security ISO Security Architecture Functions and Levels Mechanisms Data Integrity Symmetric Key Encryption Public Key Encryption

10 X.509 Certificates TLS A Basic Client Server Using a Self-Signed Certificate Conclusion Chapter 8: HTTP URLs and Resources I18n HTTP Characteristics Versions HTTP HTTP HTTP HTTP/ Simple User Agents The Response Type The HEAD Method The GET Method Configuring HTTP Requests The Client Object Proxy Handling Simple Proxy Authenticating Proxy HTTPS Connections by Clients Servers File Server Handler Functions Bypassing the Default Multiplexer HTTPS Conclusion xi

11 Chapter 9: Templates Inserting Object Values Using Templates Pipelines Defining Functions Variables Conditional Statements The HTML / Template Package Conclusion Chapter 10: A Complete Web Server Browser Site Diagram Browser Files Basic Server The listflashcards Function The manageflashcards Function The Chinese Dictionary The Dictionary Type Flashcard Sets Fixing Accents The ListWords Function The showflashcards Function Presentation on the Browser Running the Server Conclusion Chapter 11: HTML The Go HTML/Template Package Tokenizing HTML XHTML/HTML xii

12 JSON Conclusion Chapter 12: XML Parsing XML The StartElement Type The EndElement Type The CharData Type The Comment Type The ProcInst Type The Directive Type Unmarshalling XML Marshalling XML XHTML HTML Conclusion Chapter 13: Remote Procedure Call Go s RPC HTTP RPC Server HTTP RPC Client TCP RPC Server TCP RPC Client Matching Values JSON JSON RPC Server JSON RPC Client Conclusion Chapter 14: REST URIs and Resources Representations xiii

13 REST Verbs The GET Verb The PUT Verb The DELETE Verb The POST Verb No Maintained State HATEOAS Representing Links Transactions with REST The Richardson Maturity Model Flashcards Revisited URLs The Demultiplexer (Demuxer) Content Negotiation GET / POST / Handling Other URLs The Complete Server Client Using REST or RPC Conclusion Chapter 15: WebSockets WebSockets Server The Go Sub-Repository Package The Message Object The JSON Object The Codec Type WebSockets Over TLS WebSockets in an HTML Page xiv

14 The Gorilla Package Echo Server Echo Client Conclusion Afterword Index xv

15 About the Author Jan Newmarch is head of ICT (higher education) at Box Hill Institute, adjunct professor at Canberra University, and adjunct lecturer in the School of Information Technology, Computing and Mathematics at Charles Sturt University. He is interested in more aspects of computing than he has time to pursue, but the major thrust over the last few years has developed from user interfaces under UNIX into Java, the Web, and then into general distributed systems. Jan developed a number of publicly available software systems in these areas. For the last few years, he has been looking at sound for Linux systems and programming the Raspberry Pi s GPU. He is now exploring aspects of the IoT. He lives in Melbourne, Australia and enjoys the food and culture there, but is not so impressed by the weather. xvii

16 About the Technical Reviewer Ronald Petty, M.B.A., M.S. is the founder of Minimum Distance LLC, a management consulting firm based in San Francisco. He spends his time helping technology-based startups do the right thing. He is also an instructor at UC Berkeley Extension. xix

17 Preface It s always fun to learn a new programming language, especially when it turns out to be a major one. Prior to the release of Go in 2009, I was teaching a Master s level subject in network programming at Monash University. It s good to have a goal when learning a new language, but this time, instead of building yet another wine cellar program, I decided to orient my lecture notes around Go instead of my (then) standard delivery vehicle of Java. The experiment worked well: apart from the richness of the Java libraries that Go was yet to match, all the programming examples transferred remarkably well, and in many cases were more elegant than the original Java programs. This book is the result. I have updated it as Go has evolved and as new technologies such as HTTP/2 have arisen. But if it reads like a textbook, well, that is because it is one. There is a large body of theoretical and practical concepts involved in network programming and this book covers some of these as well as the practicalities of building systems in Go. In terms of language popularity, Go is clearly rising. It has climbed to 16th in the TIOBE index, is 18th in the PYPL (Popularity of Programming Language), and is 15th in the RedMonk Programming Language rankings. It is generally rated as one of the fastest growing languages. There is a growing community of developers both of the core language and libraries and of the independent projects. I have tried to limit the scope of this book to the standard libraries only and to the sub-repositories of the Go tree. While this eliminates many excellent projects that no doubt make many programming tasks easier, restricting the book to the official Go libraries provides a clear bound. This book assumes a basic knowledge of Go. The focus is on using Go to build network applications, not on the basics of the language. Network applications are different than command-line applications, are different than applications with a graphical user interface, and so on. So the first chapter discusses architectural aspects of network programs. The second chapter is an overview of the features of Go that we use in this book. The third chapter on sockets covers the Go version of the basics underlying all TCP/IP systems. Chapters 4, 5, and 6 are more unusual in network programming books. They cover the topics of what representations of data will be used, how a network interaction will proceed, and for text, which language formats are used. Then in Chapter 7, we look at the increasingly important topic of security. In Chapter 8, we look at one of the most common application layer protocols in use, HTTP. The next four chapters are about topics related to HTTP and common data formats carried above HTTP HTML and XML. In Chapter 13, we look at an alternative approach to network programming, remote procedure calls. Chapters 14 and 15 consider further aspects of network programming using HTTP. xxi

Functional Programming in R

Functional 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 information

Essential Angular for ASP.NET Core MVC

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 information

Windows 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 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 information

Microsoft Computer Vision APIs Distilled

Microsoft 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 information

Pro 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 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 information

Agile 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 Agile Swift: Swift Programming Using Agile Tools and Techniques Godfrey Nolan Huntington Woods, Michigan, USA ISBN-13 (pbk):

More information

Java 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 Second Edition Mikael Olsson Java Quick Syntax Reference Mikael Olsson Hammarland, Länsi-Suomi, Finland ISBN-13 (pbk):

More information

The Windows 10 Productivity Handbook

The 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 information

Building Custom Tasks for SQL Server Integration Services

Building 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 information

Android Continuous Integration

Android 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 information

MATLAB 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 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 information

SQL Server AlwaysOn Revealed

SQL 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 information

C Quick Syntax Reference

C 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 information

JavaScript Quick Syntax Reference

JavaScript 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 information

Learn PHP 7. Object-Oriented Modular Programming using HTML5, CSS3, JavaScript, XML, JSON, and MySQL. Steve Prettyman

Learn 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 information

Android Continuous Integration

Android 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 information

Practical Amazon EC2, SQS, Kinesis, and S3

Practical 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 information

Objective-C Quick Syntax Reference

Objective-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 information

MATLAB Numerical Calculations. César Pérez López

MATLAB 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 information

Pro Angular 6. Third Edition. Adam Freeman

Pro 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 information

Beginning Robotics Programming in Java with LEGO Mindstorms

Beginning 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 information

JavaScript Essentials for SAP ABAP Developers

JavaScript 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 information

Pro Java Clustering and Scalability

Pro 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 information

Custom Raspberry Pi Interfaces

Custom 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 information

C++ Quick Syntax Reference

C++ 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 information

ASP.NET Core Recipes

ASP.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 information

Beginning Functional JavaScript

Beginning 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 information

Windows Troubleshooting Series

Windows 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 information

Scalable Big Data Architecture

Scalable 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 information

Material Design Implementation with AngularJS

Material 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 information

Web Programming with Dart. Moises Belchin Patricia Juberias

Web 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 information

Beginning PowerShell for SharePoint 2016

Beginning 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 information

Swift Quick Syntax Reference

Swift 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 information

Deepak Vohra. Pro Docker

Deepak 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 information

Learning Groovy. Adam L. Davis

Learning 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 information

Pro MongoDB Development

Pro 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 information

Practical Spring LDAP

Practical 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 information

Companion ebook Available Pro Android Includes Android 1.5 SOURCE CODE ONLINE US $44.99

Companion 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 information

Creating Google Chrome Extensions

Creating 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 information

Learn Apple HomeKit on ios

Learn 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 information

C++ Recipes. A Problem-Solution Approach. Bruce Sutherland

C++ 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 information

Pivotal Certified Professional Spring Developer Exam

Pivotal 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 information

Beginning ASP.NET MVC 4. José Rolando Guay Paz

Beginning 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 information

Pro.NET 4 Parallel Programming in C#

Pro.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 information

Beginning Oracle WebCenter Portal 12c

Beginning 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 information

Beginning CSS Preprocessors

Beginning 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 information

Deploying SharePoint 2016

Deploying 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 information

Pro JavaScript Performance Monitoring and Visualization

Pro 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 information

Migrating to Swift from Android

Migrating 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 information

Nginx. From Beginner to Pro. Rahul Soni

Nginx. 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 information

Creating Maintainable APIs

Creating 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 information

Digital Illustration Fundamentals

Digital 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 information

Reactive Programming with Angular and ngrx

Reactive 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 information

Expanding Your Raspberry Pi

Expanding 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 information

PHP 7 Zend Certification Study Guide

PHP 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 information

Introducing Meteor. Josh Robinson Aaron Gray David Titarenco

Introducing 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 information

Learn Excel 2016 for OS X

Learn 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 information

Beginning XML with C# 7

Beginning 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 information

Docker for Data Science

Docker 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 information

Java I/O, NIO and NIO.2

Java 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 information

Enhancing Adobe Acrobat DC Forms with JavaScript

Enhancing 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 information

James Cryer. Pro Grunt.js

James 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 information

Foundations of Python

Foundations of Python Foundations of Python Network Programming The comprehensive guide to building network applications with Python Second Edition Brandon Rhodes John Goerzen Apress Contents Contents at a Glance About the

More information

JavaScript Object Programming

JavaScript 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 information

Pro MySQL NDB Cluster

Pro MySQL NDB Cluster Pro MySQL NDB Cluster Jesper Wisborg Krogh Mikiya Okuno Pro MySQL NDB Cluster Jesper Wisborg Krogh Sydney, New South Wales, Australia Mikiya Okuno Tochigi, Japan ISBN-13 (pbk): 978-1-4842-2981-1 ISBN-13

More information

Troubleshooting Xcode

Troubleshooting 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 information

Beginning django CMS. Nigel George

Beginning 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 information

Research on Industrial Security Theory

Research 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 information

S Cove pring Bootrs Pivotal Certified Spring Enterprise Integration Specialist Exam SOURCE CODE ONLINE

S 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 information

Server Reporting Services. Kathi Kellenberger

Server 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 information

Guide to OSI and TCP/IP Models

Guide to OSI and TCP/IP Models SPRINGER BRIEFS IN COMPUTER SCIENCE Mohammed M. Alani Guide to OSI and TCP/IP Models SpringerBriefs in Computer Science Series editors Stan Zdonik Peng Ning Shashi Shekhar Jonathan Katz Xindong Wu Lakhmi

More information

Advanced Microservices

Advanced 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 information

Java 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 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 information

Pro ASP.NET MVC 5. Adam Freeman

Pro 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 information

Windows Troubleshooting Series

Windows 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 information

Philip Andrew Simpson. FPGA Design. Best Practices for Team-based Reuse. Second Edition

Philip 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 information

Dynamic SQL. Applications, Performance, and Security. Ed Pollack

Dynamic 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 information

Low Level X Window Programming

Low 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 information

Pro SQL Server 2008 Mirroring

Pro 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 information

Intel Xeon Phi TM Coprocessor Architecture and Tools

Intel 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 information

Pro Perl Parsing. Christopher M. Frenz

Pro Perl Parsing. Christopher M. Frenz Pro Perl Parsing Christopher M. Frenz Pro Perl Parsing Copyright 2005 by Christopher M. Frenz Lead Editors: Jason Gilmore and Matthew Moodie Technical Reviewer: Teodor Zlatanov Editorial Board: Steve Anglin,

More information

Beginning Visual Studio for Mac

Beginning 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 information

Beginning the Linux Command Line

Beginning the Linux Command Line Beginning the Linux Command Line Second Edition Sander van Vugt Beginning the Linux Command Line, Second edition Copyright 2015 by Sander van Vugt This work is subject to copyright. All rights are reserved

More information

Pro Android C++ with the NDK

Pro Android C++ with the NDK Pro Android C++ with the NDK Onur Cinar Apress Pro Android C++ with the NDK Copyright 2012 by Onur Cinar This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or

More information

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# 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 information

Python 3 for Absolute Beginners

Python 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 information

Clean C++ Sustainable Software Development Patterns and Best Practices with C Stephan Roth

Clean 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 Bad Schwartau,

More information

Understanding Oracle APEX 5 Application Development

Understanding Oracle APEX 5 Application Development Understanding Oracle APEX 5 Application Development Second Edition Edward Sciore Understanding Oracle APEX 5 Application Development Copyright 2015 by Edward Sciore This work is subject to copyright. All

More information

Beginning Oracle Application Express 5

Beginning 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 information

Android Fragments. Dave MacLean Satya Komatineni

Android Fragments. Dave MacLean Satya Komatineni Android Fragments Dave MacLean Satya Komatineni Android Fragments Copyright 2014 by Dave MacLean, Satya Komatineni This work is subject to copyright. All rights are reserved by the Publisher, whether the

More information

Introducing SQLite for Mobile Developers

Introducing 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 information

SpringerBriefs in Computer Science

SpringerBriefs in Computer Science SpringerBriefs in Computer Science Series Editors Stan Zdonik Peng Ning Shashi Shekhar Jonathan Katz Xindong Wu Lakhmi C. Jain David Padua Xuemin (Sherman) Shen Borko Furht V.S. Subrahmanian Martial Hebert

More information

Deploying Raspberry Pi in the Classroom

Deploying Raspberry Pi in the Classroom Deploying Raspberry Pi in the Classroom Guy Hart-Davis Deploying Raspberry Pi in the Classroom Guy Hart-Davis County Durham, United Kingdom ISBN-13 (pbk): 978-1-4842-2303-1 ISBN-13 (electronic): 978-1-4842-2304-8

More information

Chapter 2 Network Models 2.1

Chapter 2 Network Models 2.1 Chapter 2 Network Models 2.1 Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 2-1 LAYERED TASKS We use the concept of layers in our daily life. As an example,

More information

Introduction... xiii Chapter 1: Introduction to Computer Networks and Internet Computer Networks Uses of Computer Networks...

Introduction... xiii Chapter 1: Introduction to Computer Networks and Internet Computer Networks Uses of Computer Networks... Table of Contents Introduction... xiii Chapter 1: Introduction to Computer Networks and Internet... 1 1.1 Computer Networks... 1 1.1.1 Advantages of Computer Networks... 2 1.1.2 Disadvantages of Computer

More information

Beginning Apache Cassandra Development. Vivek Mishra

Beginning 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 information

Interactive Object Oriented Programming in Java

Interactive Object Oriented Programming in Java Interactive Object Oriented Programming in Java Learn and Test Your Skills Vaskaran Sarcar Interactive Object Oriented Programming in Java: Learn and Test Your Skills Vaskaran Sarcar Bangalore, Karnataka,

More information

Visual Studio Condensed. Patrick Desjardins

Visual 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 information

Building Spring 2 Enterprise Applications

Building Spring 2 Enterprise Applications Building Spring 2 Enterprise Applications Interface 21 with Bram Smeets and Seth Ladd Building Spring 2 Enterprise Applications Copyright 2007 by Interface 21, Bram Smeets, Seth Ladd All rights reserved.

More information

SQL 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 SQL on Big Data: Technology, Architecture, and Innovation Sumit Pal Wilmington, Massachusetts, USA ISBN-13 (pbk): 978-1-4842-2246-1 ISBN-13

More information