Pro Python. Marty Alchin

Size: px
Start display at page:

Download "Pro Python. Marty Alchin"

Transcription

1 Pro Python Marty Alchin

2 Pro Python Copyright 2010 by Marty Alchin All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): ISBN-13 (electronic): Printed and bound in the United States of America 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. President and Publisher: Paul Manning Lead Editors: Duncan Parkes, Tom Welsh Technical Reviewer: George Vilches Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Duncan Parkes, Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Coordinating Editor: Mary Tobin Copy Editors: Nancy Sixsmith, Angel Alchin Compositor: Bytheway Publishing Services Indexer: John Collin Cover Designer: Anna Ishchenko Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring Street, 6th Floor, New York, NY Phone SPRINGER, fax (201) , orders-ny@springersbm.com, or visit For information on translations, please rights@apress.com, or visit Apress and friends of ED books 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 Special Bulk Sales ebook Licensing web page at The information in this book is distributed on an as is basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at You will need to answer questions pertaining to this book in order to successfully download the code.

3 Contents at a Glance Contents...iv About the Author... xvi About the Technical Reviewer... xvii Acknowledgments... xviii Introduction... xix Chapter 1: Principles and Philosophy...1 Chapter 2: Advanced Basics...19 Chapter 3: Functions...53 Chapter 4: Classes Chapter 5: Common Protocols Chapter 6: Object Management Chapter 7: Strings Chapter 8: Documentation Chapter 9: Testing Chapter 10: Distribution Chapter 11: Sheets: A CSV Framework PEP 8: Style Guide for Python PEP 10: Voting Guidelines PEP 20: The Zen of Python PEP 257: Docstring Conventions PEP 387: Backwards Compatibility Policy PEP 3000: Python PEP 3003: Python Language Moratorium Index iii

4 Contents Contents...iv About the Author... xvi About the Technical Reviewer... xvii Acknowledgments... xviii Introduction... xix Chapter 1: Principles and Philosophy...1 The Zen of Python...1 Beautiful Is Better Than Ugly... 2 Explicit Is Better Than Implicit... 2 Simple Is Better Than Complex... 3 Complex Is Better Than Complicated... 3 Flat Is Better Than Nested... 4 Sparse Is Better Than Dense... 5 Readability Counts... 5 Special Cases Aren t Special Enough to Break the Rules... 6 Although Practicality Beats Purity... 6 Errors Should Never Pass Silently... 7 Unless Explicitly Silenced... 8 In the Face of Ambiguity, Refuse the Temptation to Guess... 9 There Should Be One and Preferably Only One Obvious Way to Do It Although That Way May Not Be Obvious at First Unless You re Dutch Now Is Better Than Never iv

5 Although Never Is Often Better Than Right Now If the Implementation is Hard to Explain, It s a Bad Idea If the Implementation is Easy to Explain, It May Be a Good Idea Namespaces Are One Honking Great Idea Let s Do More of Those! Don t Repeat Yourself...12 Loose Coupling...13 The Samurai Principle...13 The Pareto Principle...14 The Robustness Principle...14 Backward Compatibility...15 The Road to Python Taking It With You...17 Chapter 2: Advanced Basics...19 General Concepts...19 Iteration Caching Transparency Control Flow...21 Catching Exceptions Exception Chains When Everything Goes Right Proceeding Regardless of Exceptions Optimizing Loops The with Statement Conditional Expressions Iteration...33 Sequence Unpacking List Comprehensions v

6 Generator Expressions Set Comprehensions Dictionary Comprehensions Chaining Iterables Together Zipping Iterables Together Collections...39 Sets Named Tuples Ordered Dictionaries Dictionaries with Defaults Importing Code...45 Fallback Imports Importing from the Future Using all to Customize Imports Relative Imports The import () function The importlib module Taking It With You...52 Chapter 3: Functions...53 Arguments...53 Planning for Flexibility Variable Positional Arguments Variable Keyword Arguments Combining Different Kinds of Arguments Invoking Functions with Variable Arguments Preloading Arguments Introspection Example: Identifying Argument Values Example: A More Concise Version vi

7 Example: Validating Arguments Decorators...67 Closures Wrappers Decorators with Arguments Decorators with or without Arguments...74 Example: Memoization Example: A Decorator to Create Decorators Function Annotations...78 Example: Type Safety Factoring Out the Boilerplate Example: Type Coercion Annotating with Decorators Example: Type Safety as a Decorator Generators...94 Lambdas...96 Introspection...97 Identifying Object Types Modules and Packages Docstrings Taking It With You Chapter 4: Classes Inheritance Multiple Inheritance Method Resolution Order (MRO) Example: C3 Algorithm Using super() to Pass Control to Other Classes Introspection vii

8 How Classes Are Created Creating Classes at Runtime Metaclasses Example: Plugin Framework Controlling the Namespace Attributes Properties Descriptors Methods Unbound Methods Bound Methods Class Methods Static Methods Assigning Functions to Classes and Instances Magic Methods Creating Instances Example: Automatic Subclasses Dealing with Attributes String Representations Taking It With You Chapter 5: Common Protocols Basic Operations Mathematical Operations Bitwise Operations Variations Numbers Sign Operations Comparison Operations viii

9 Iterables Example: Repeatable Generators Sequences Mappings Callables Context Managers Taking It With You Chapter 6: Object Management Namespace Dictionary Example: Borg Pattern Example: Self-caching properties Garbage Collection Reference Counting Cyclical References Weak References Pickling Copying Shallow Copies Deep Copies Taking It With You Chapter 7: Strings Bytes Simple Conversion: chr() and ord() Complex Conversion: The Struct Module Text Unicode Encodings ix

10 Simple Substitution Formatting Looking Up Values Within Objects Distinguishing Types of Strings Standard Format Specification Example: Plain Text Table of Contents Custom Format Specification Taking It With You Chapter 8: Documentation Proper Naming Comments Docstrings Describe What the Function Does Explain the Arguments Don t Forget the Return Value Include Any Expected Exceptions Documentation Outside the Code Installation and Configuration Tutorials Reference Documents Documentation Utilities Formatting Links Sphinx Taking It With You Chapter 9: Testing Test-Driven Development (TDD) Doctests x

11 Formatting Code Representing Output Integrating With Documentation Running Tests The unittest module Setting Up Writing Tests Other Comparisons Testing Strings and Other Sequence Content Testing Exceptions Testing Identity Tearing Down Providing a Custom Test Class Changing Test Behavior Taking It With You Chapter 10: Distribution Licensing GNU General Public License (GPL) Affero General Public License (AGPL) GNU Lesser General Public License (LGPL) Berkeley Software Distribution (BSD) License Other Licenses Packaging setup.py MANIFEST.in The sdist command Distribution Taking It With You xi

12 Chapter 11: Sheets: A CSV Framework Building a Declarative Framework Introducing Declarative Programming To Build or Not to Build? Building the Framework Managing Options Defining Fields Attaching a Field to a Class Adding a Metaclass Bringing It Together Ordering Fields DeclarativeMeta. prepare () Column. init () Column. new () CounterMeta. call () Choosing an Option Building a Field Library StringField IntegerColumn FloatColumn DecimalColumn DateColumn Getting Back to CSV Checking Arguments Populating Values The Reader The Writer Taking It With You xii

13 PEP 8: Style Guide for Python Introduction A Foolish Consistency is the Hobgoblin of Little Minds Code Layout Indentation Tabs or Spaces? Maximum Line Length Blank Lines Encodings (PEP 263) Imports Whitespace in Expressions and Statements Pet Peeves Other Recommendations Comments Block Comments Inline Comments Documentation Strings Version Bookkeeping Naming Conventions Descriptive: Naming Styles Prescriptive: Naming Conventions Programming Recommendations Copyright PEP 10: Voting Guidelines Abstract Rationale Voting Scores xiii

14 Copyright PEP 20: The Zen of Python Abstract The Zen of Python Easter Egg Copyright PEP 257: Docstring Conventions Abstract Rationale Specification What is a Docstring? One-Line Docstrings Multi-Line Docstrings Handling Docstring Indentation Copyright Acknowledgments PEP 387: Backwards Compatibility Policy Abstract Rationale Backwards Compatibility Rules Making Incompatible Changes Copyright PEP 3000: Python Abstract Naming PEP Numbering xiv

15 Timeline Compatibility and Transition Implementation Language Meta-Contributions Copyright PEP 3003: Python Language Moratorium Abstract Rationale Details Cannot Change Case-by-Case Exemptions Allowed to Change Retroactive Extensions Copyright Index xv

16 About the Author Marty Alchin is a professional programmer with a passion for the Web. His work with Django, the popular Web framework, led him to write several articles about Python, to speak at PyCon and even to write his first book, Pro Django, which was published by Apress in December of In addition to writing for print, Marty keeps a blog at where he writes about Python, Django and anything else that strikes his fancy. xvi

17 About the Technical Reviewer George Vilches is a software engineer and systems administrator with an unabashed fondness for Python and the Web in both disciplines. In the last three years, he has made several contributions to Django, with a focus on the ORM and administrative side of things. He is a principal engineer with AOL and builds Django applications with Fortune Cookie Studios ( George s personal time is split between tinkering with open source projects and enjoying the company of his wife Kate, their corgi and their two cats (all of whom would prefer he stop tinkering and attend to them more). xvii

18 INTRODUCTION Acknowledgments I wouldn t have even started this project if not for the endless encouragement from my lovely wife, Angel. She s been my sounding board, my task manager, my copy editor and my own personal cheerleader. There s no way I could do anything like this without her help and support. I d also like to thank my technical reviewer, George, for everything he s done to help me out. He s gone above and beyond the limits of his role, helping with everything from code to grammar and even a good bit of style. After enjoying his help on Pro Django, I wouldn t have even signed on for another book without him by my side. Lastly, I never would ve considered a book like this if not for the wonderful community around Python. The willingness of Python programmers to open their minds and their code is, I believe, unrivaled among our peers. It s this spirit of openness that encourages me every day, leading me to discover new things and push myself beyond the limits of what I knew yesterday. We learn by doing and by seeing what others have done. I hope that you ll take the contents of this book and do more with it than what I ve done. There s no better reward for all this hard work than to see better programmers writing better code. xviii

19 Introduction When I wrote my first book, Pro Django, I didn t have much of an idea what my readers would find interesting. I had gained a lot of information I thought would be useful for others to learn, but I didn t really know what would be the most valuable thing they d take away. As it turned out, in nearly 300 pages, the most popular chapter in the book barely mentioned Django at all. It was about Python. The response was overwhelming. There was clearly a desire to learn more about how to go from a simple Python application to a detailed framework like Django. It s all Python code, but it can be hard to understand based on even a reasonably thorough understanding of the language. The tools and techniques involved require some extra knowledge that you might not run into in general use. This gave me a new goal with Pro Python: to take you from proficient to professional. Being a true professional requires more experience than you can get from a book, but I want to at least give you the tools you ll need. Combined with the rich philosophy of the Python community, you ll find plenty of information to take your code to the next level. Who This Book Is For Because my goal is to bring intermediate programmers to a more advanced level, I wrote this book with the expectation that you ll already be familiar with Python. You should be comfortable using the interactive interpreter, writing control structures and a basic object-oriented approach. That s not a very difficult prerequisite. If you ve tried your hand at writing a Python application even if you haven t released it into the wild, or even finished it you likely have all the necessary knowledge to get started. The rest of the information you ll need is contained in these pages. What You ll Need This book is written with the latest versions of Python in mind, so most of the examples assume that you re already using Python 3.1, which is the latest official release as of the date of publishing. I don t take the jump to Python 3 lightly, though, so there are plenty of compatibility notes along the way, going all the way back to Python 2.5. As long as your copy of Python was released in the last few years, you ll be all set. Nearly all the packages used in this book come from the Python Standard Library, which ships with every Python installation. Some sections will reference third-party libraries that aren t included in that bundle, but those are strictly informative; you won t lose out if you don t have them installed. Source Code The code for all the examples in this book is available at xix

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

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

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

Beginning Silverlight 3

Beginning Silverlight 3 Beginning Silverlight 3 From Novice to Professional Robert Lair Beginning Silverlight 3: From Novice to Professional Copyright 2009 by Robert Lair All rights reserved. No part of this work may be reproduced

More information

THE EXPERT S VOICE IN OPEN SOURCE. Pro. Python. Advanced coding techniques and tools. Marty Alchin

THE EXPERT S VOICE IN OPEN SOURCE. Pro. Python. Advanced coding techniques and tools. Marty Alchin THE EXPERT S VOICE IN OPEN SOURCE Pro Python Advanced coding techniques and tools Marty Alchin Pro Python Marty Alchin Pro Python Copyright 2010 by Marty Alchin All rights reserved. No part of this work

More information

Index. Cache, 20 Callables, 185 call () method, 290 chain() function, 41 Classes attributes descriptors, 145 properties, 143

Index. Cache, 20 Callables, 185 call () method, 290 chain() function, 41 Classes attributes descriptors, 145 properties, 143 Index A add_column() method, 284 add() method, 44 addtypeequalityfunc() method, 253 Affero General Public License (AGPL), 260 American Standard Code for Information Interchange (ASCII), 218 219 and operator,

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

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

Pro Data Backup and Recovery. Steven Nelson

Pro Data Backup and Recovery. Steven Nelson Pro Data Backup and Recovery Steven Nelson Pro Data Backup and Recovery Copyright 2011 by Steven Nelson All rights reserved. No part of this work may be reproduced or transmitted in any form or by any

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

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

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

Excel 2010 Made Simple

Excel 2010 Made Simple Excel 2010 Made Simple Abbott Katz i Excel 2010 Made Simple Copyright 2011 by Abbott Katz All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic

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

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

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

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

Pro SQL Server 2008 Policy-Based Management. Ken Simmons Colin Stasiuk Jorge Segarra

Pro SQL Server 2008 Policy-Based Management. Ken Simmons Colin Stasiuk Jorge Segarra Pro SQL Server 2008 Policy-Based Management Ken Simmons Colin Stasiuk Jorge Segarra PRO SQL SERVER 2008 POLICY-BASED MANAGEMENT Copyright 2010 by Ken Simmons, Colin Stasiuk, Jorge Segarra All rights reserved.

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

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

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

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

Web Development, Silverlight, and

Web Development, Silverlight, and The EXPERT s VOIce in.net Beginning Web Development, Silverlight, and ASP.NET AJAX From Novice to Professional Learn how to build web applications using ASP.NET AJAX, WPF, WCF, and WF, as well as Silverlight.

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

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

Flash Builder and Flash Catalyst The New Workflow. Steven Peeters

Flash Builder and Flash Catalyst The New Workflow. Steven Peeters Flash Builder and Flash Catalyst The New Workflow Steven Peeters Flash Builder and Flash Catalyst The New Workflow Copyright 2010 by Steven Peeters All rights reserved. No part of this work may be reproduced

More information

Pro ASP.NET SharePoint 2010 Solutions Techniques for Building SharePoint Functionality into ASP.NET Applications

Pro ASP.NET SharePoint 2010 Solutions Techniques for Building SharePoint Functionality into ASP.NET Applications Pro ASP.NET SharePoint 2010 Solutions Techniques for Building SharePoint Functionality into ASP.NET Applications Dave Milner i Pro ASP.NET SharePoint 2010 Solutions: Techniques for Building SharePoint

More information

Expert C# 5.0 with.net 4.5 Framework

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

Foundation Flash Catalyst. Greg Goralski LordAlex Leon

Foundation Flash Catalyst. Greg Goralski LordAlex Leon Foundation Flash Catalyst Greg Goralski LordAlex Leon Foundation Flash Catalyst Copyright 2010 by Gerg Goralski and LordAlex Leon All rights reserved. No part of this work may be reproduced or transmitted

More information

Pro Entity Framework 4.0

Pro Entity Framework 4.0 Pro Entity Framework 4.0 Scott Klein CONTENTS Pro Entity Framework 4.0 Copyright 2010 by Scott Klein All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,

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

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

Silverlight and ASP.NET Revealed. Matthew MacDonald

Silverlight and ASP.NET Revealed. Matthew MacDonald Silverlight and ASP.NET Revealed Matthew MacDonald Silverlight and ASP.NET Revealed Copyright 2007 by Matthew MacDonald All rights reserved. No part of this work may be reproduced or transmitted in any

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

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

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

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

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

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

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

Web Standards Creativity: Innovations in Web Design with XHTML, CSS, and DOM Scripting

Web Standards Creativity: Innovations in Web Design with XHTML, CSS, and DOM Scripting Web Standards Creativity: Innovations in Web Design with XHTML, CSS, and DOM Scripting Cameron Adams Mark Boulton Andy Clarke Simon Collison Jeff Croft Derek Featherstone Ian Lloyd Ethan Marcotte Dan Rubin

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

Carlo Scarioni. Pro Spring Security

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

Pro Excel 2007 VBA. Jim DeMarco

Pro Excel 2007 VBA. Jim DeMarco Pro Excel 2007 VBA Jim DeMarco Pro Excel 2007 VBA Copyright 2008 by Jim DeMarco All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical,

More information

Introducing Aviary. Mike Peutz

Introducing Aviary. Mike Peutz Introducing Aviary Mike Peutz Introducing Aviary Copyright 2009 by Mike Peutz All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical,

More information

Pro Business Applications with Silverlight 4

Pro Business Applications with Silverlight 4 Pro Business Applications with Silverlight 4 Chris Anderson Pro Business Applications with Silverlight 4 Copyright 2010 by Chris Anderson All rights reserved. No part of this work may be reproduced or

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

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

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

Date on Database. Writings C. J. Date

Date on Database. Writings C. J. Date Date on Database Writings 2000 2006 C. J. Date Date on Database: Writings 2000 2006 Copyright 2006 by C. J. Date All rights reserved. No part of this work may be reproduced or transmitted in any form or

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

Beginning Objective-C

Beginning Objective-C Beginning Objective-C James Dovey Ash Furrow Beginning Objective-C Copyright 2012 by James Dovey and Ash Furrow This work is subject to copyright. All rights are reserved by the Publisher, whether the

More information

Developing C# Apps for iphone and ipad Using MonoTouch

Developing C# Apps for iphone and ipad Using MonoTouch Developing C# Apps for iphone and ipad Using MonoTouch ios Apps Development for.net Developers Bryan Costanich i Developing C# Apps for iphone and ipad Using MonoTouch: ios Apps Development for.net Developers

More information

Pro Python System Administration

Pro Python System Administration Pro Python System Administration Rytis Sileika Pro Python System Administration Copyright 2010 by Rytis Sileika All rights reserved. No part of this work may be reproduced or transmitted in any form or

More information

Accelerated GWT. Building Enterprise Google Web Toolkit Applications. Vipul Gupta

Accelerated GWT. Building Enterprise Google Web Toolkit Applications. Vipul Gupta Accelerated GWT Building Enterprise Google Web Toolkit Applications Vipul Gupta Accelerated GWT: Building Enterprise Google Web Toolkit Applications Copyright 2008 by Vipul Gupta All rights reserved. No

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

Realtime Web Apps. With HTML5 WebSocket, PHP, and jquery. Apress. Jason Lengstorf Phil Leggetter

Realtime Web Apps. With HTML5 WebSocket, PHP, and jquery. Apress. Jason Lengstorf Phil Leggetter Realtime Web Apps With HTML5 WebSocket, PHP, and jquery Jason Lengstorf Phil Leggetter Apress Realtime Web Apps: With HTML5 WebSocket, PHP, and jquery Copyright 2013 by Jason Lengstorf, Phil Leggetter

More information

Beginning JSF 2 APIs and JBoss Seam. Kent Ka Iok Tong

Beginning JSF 2 APIs and JBoss Seam. Kent Ka Iok Tong Beginning JSF 2 APIs and JBoss Seam Kent Ka Iok Tong Beginning JSF 2 APIs and JBoss Seam Copyright 2009 by Kent Ka Iok Tong All rights reserved. No part of this work may be reproduced or transmitted in

More information

Expert Shell Scripting

Expert Shell Scripting Expert Shell Scripting Ron Peters Expert Shell Scripting Copyright 2009 by Ron Peters All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic

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

The Definitive Guide to HTML Video. Silvia Pfeiffer

The Definitive Guide to HTML Video. Silvia Pfeiffer The Definitive Guide to HTML Video Silvia Pfeiffer i The Definitive Guide to HTML Video Copyright 2010 by Silvia Pfeiffer All rights reserved. No part of this work may be reproduced or transmitted in any

More information

Beginning Web Development, Silverlight, and ASP.NET AJAX

Beginning Web Development, Silverlight, and ASP.NET AJAX Beginning Web Development, Silverlight, and ASP.NET AJAX From Novice to Professional Laurence Moroney Beginning Web Development, Silverlight, and ASP.NET AJAX: From Novice to Professional Copyright 2008

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

1 Decorators. 2 Descriptors. 3 Static Variables. 4 Anonymous Classes. Sandeep Sadanandan (TU, Munich) Python For Fine Programmers July 13, / 19

1 Decorators. 2 Descriptors. 3 Static Variables. 4 Anonymous Classes. Sandeep Sadanandan (TU, Munich) Python For Fine Programmers July 13, / 19 1 Decorators 2 Descriptors 3 Static Variables 4 Anonymous Classes Sandeep Sadanandan (TU, Munich) Python For Fine Programmers July 13, 2009 1 / 19 Decorator Pattern In object-oriented programming, the

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

Pro ASP.NET SignalR. Real-Time Communication in.net with SignalR 2.1. Keyvan Nayyeri Darren White

Pro ASP.NET SignalR. Real-Time Communication in.net with SignalR 2.1. Keyvan Nayyeri Darren White Pro ASP.NET SignalR Real-Time Communication in.net with SignalR 2.1 Keyvan Nayyeri Darren White Pro ASP.NET SignalR: Real-Time Communication in.net with SignalR 2.1 Copyright 2014 by Keyvan Nayyeri and

More information

Raven: Scripting Java Builds with Ruby MATTHIEU RIOU

Raven: Scripting Java Builds with Ruby MATTHIEU RIOU Raven: Scripting Java Builds with Ruby MATTHIEU RIOU Raven: Scripting Java Builds with Ruby Copyright 2007 by Matthieu Riou All rights reserved. No part of this work may be reproduced or transmitted in

More information

Beginning Windows Phone 7 Development. Henry Lee and Eugene Chuvyrov

Beginning Windows Phone 7 Development. Henry Lee and Eugene Chuvyrov Beginning Windows Phone 7 Development Henry Lee and Eugene Chuvyrov i Beginning Windows Phone 7 Development Copyright 2010 by Henry Lee & Eugene Chuvyrov All rights reserved. No part of this work may be

More information

Pro SharePoint 2013 Administration Rob Garrett

Pro SharePoint 2013 Administration Rob Garrett Pro SharePoint 2013 Administration Rob Garrett Apress Pro SharePoint 2013 Administration Copyright 2013 by Rob Garrett This work is subject to copyright. All rights are reserved by the Publisher, whether

More information

Enterprise JavaBeans 2.1

Enterprise JavaBeans 2.1 Enterprise JavaBeans 2.1 STEFAN DENNINGER and INGO PETERS with ROB CASTANEDA translated by David Kramer APress Media, LLC Enterprise JavaBeans 2.1 Copyright 2003 by Stefan Denninger and Ingo Peters with

More information

OOP and Scripting in Python

OOP and Scripting in Python DIEE - Università degli Studi di Cagliari OOP and Scripting in Python Introduction Giuliano Armano DIEE Univ. di Cagliari Python Roots... Object Oriented Programming (C++, Modula-3, ABC, Icon) Scripting

More information

The Definitive Guide to Grails 2

The Definitive Guide to Grails 2 The Definitive Guide to Grails 2 Jeff Scott Brown Graeme Rocher Apress The Definitive Guide to Grails 2 Copyright 2013 by Jeff Scott Brown and Graeme Rocher This work is subject to copyright. All rights

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

Word Business Documents

Word Business Documents THE EXPERT S VOICE IN OFFICE Beginning Microsoft Word Business Documents From Novice to Professional Learn How to Create Specialized Business Documents with Microsoft Word James J. Marshall Beginning Microsoft

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

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

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

Beginning the Linux Command Line. Sander van Vugt

Beginning the Linux Command Line. Sander van Vugt Beginning the Linux Command Line Sander van Vugt Beginning the Linux Command Line Copyright 2009 by Sander van Vugt All rights reserved. No part of this work may be reproduced or transmitted in any form

More information

Pro Multithreading and Memory Management for ios and OS X

Pro Multithreading and Memory Management for ios and OS X Pro Multithreading and Memory Management for ios and OS X Kazuki Sakamoto Tomohiko Furumoto i Pro Multithreading and Memory Management for ios and OS X Copyright 2012 by Kazuki Sakamoto This work is subject

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

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 Ubuntu Server Administration

Beginning Ubuntu Server Administration Beginning Ubuntu Server Administration From Novice to Professional Sander van Vugt Beginning Ubuntu Server Administration: From Novice to Professional Copyright 2008 by Sander van Vugt All rights reserved.

More information

Beginning Ubuntu Server Administration

Beginning Ubuntu Server Administration Beginning Ubuntu Server Administration From Novice to Professional Sander van Vugt Beginning Ubuntu Server Administration: From Novice to Professional Copyright 2008 by Sander van Vugt All rights reserved.

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 Oracle Application Express 4

Pro Oracle Application Express 4 Pro Oracle Application Express 4 Second Edition Tim Fox John Edward Scott Scott Spendolini Pro Oracle Application Express 4, Second Edition Copyright 2011 by Tim Fox, John Edward Scott, and Scott Spendolini

More information

Windows 8 MVVM Patterns Revealed

Windows 8 MVVM Patterns Revealed Windows 8 MVVM Patterns Revealed Covers both C# and JavaScript Ashish Ghoda Windows 8 MVVM Patterns Revealed Copyright 2012 by Ashish Ghoda This work is subject to copyright. All rights are reserved by

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

LECTURE 1. Getting Started with Python

LECTURE 1. Getting Started with Python LECTURE 1 Getting Started with Python ABOUT PYTHON Development started in the 1980 s by Guido van Rossum. Only became popular in the last decade or so. Python 2.x currently dominates, but Python 3.x is

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

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

iphone Design Award-Winning Projects Chris Dannen

iphone Design Award-Winning Projects Chris Dannen iphone Design Award-Winning Projects Chris Dannen i iphone Design Award-Winning Projects Copyright 2009 by Chris Dannen All rights reserved. No part of this work may be reproduced or transmitted in any

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

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

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

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

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

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

Coding Styles for Python

Coding Styles for Python Wintersemester 2007/2008 1 The Zen of Python 2 Style Guide for Python Code 3 Whitespace in Expressions and Statements 4 Naming Conventions 5 References The Zen of Python Python 2.4.2 (#2, Sep 30 2005,

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