The Zeromq Guide - for Python Developers the Zeromq Guide - for Python Developers Dedication

Total Page:16

File Type:pdf, Size:1020Kb

The Zeromq Guide - for Python Developers the Zeromq Guide - for Python Developers Dedication The ZeroMQ Guide - for Python Developers The ZeroMQ Guide - for Python Developers Dedication By Pieter Hintjens With thanks to the hundred or so people who contributed examples in two dozen programming languages, who helped with suggestions and fixes, and who kept pushing for more examples of how to connect your code. Thanks to Bill Desmarais, Brian Dorsey, Daniel Lin, Eric Desgranges, Gonzalo Diethelm, Guido Goldstein, Hunter Ford, Kamil Shakirov, Martin Sustrik, Mike Castleman, Naveen Chawla, Nicola Peduzzi, Oliver Smith, Olivier Chamoux, Peter Alexander, Pierre Rouleau, Randy Dryburgh, John Unwin, Alex Thomas, Mihail Minkov, Jeremy Avnet, Michael Compton, Kamil Kisiel, Mark Kharitonov, Guillaume Aubert, Ian Barber, Mike Sheridan, Faruk Akgul, Oleg Sidorov, Lev Givon, Allister MacLeod, Alexander D’Archangel, Andreas Hoelzlwimmer, Han Holl, Robert G. Jakabosky, Felipe Cruz, Marcus McCurdy, Mikhail Kulemin, Dr. Gergö Érdi, Pavel Zhukov, Alexander Else, Giovanni Ruggiero, Rick "Technoweenie", Daniel Lundin, Dave Hoover, Simon Jefford, Benjamin Peterson, Justin Case, Devon Weller, Richard Smith, Alexander Morland, Wadim Grasza, Michael Jakl, Uwe Dauernheim, Sebastian Nowicki, Simone Deponti, Aaron Raddon, Dan Colish, Markus Schirp, Benoit Larroque, Jonathan Palardy, Isaiah Peng, Arkadiusz Orzechowski, Umut Aydin, Matthew Horsfall, Jeremy W. Sherman, Eric Pugh, Tyler Sellon, John E. Vincent, Pavel Mitin, Min RK, Igor Wiedler, Olof Åkesson, Patrick Lucas, Heow Goodman, Senthil Palanisami, John Gallagher, Tomas Roos, Stephen McQuay, Erik Allik, Arnaud Cogoluègnes, Rob Gagnon, Dan Williams, Edward Smith, James Tucker, Kristian Kristensen, Vadim Shalts, Martin Trojer, Tom van Leeuwen, Pandya Hiten, Harm Aarts, Marc Harter, Iskren Ivov Chernev, Jay Han, Sonia Hamilton, and Zed Shaw. Thanks to Stathis Sideris for Ditaa (http://www.ditaa.org), which I used for the diagrams. Please use the issue tracker (https://github.com/imatix/zguide2/issues) for all comments and errata. This version covers the latest stable release of ØMQ (3.2) and was published on Tue 30 October, 2012. If you are using older versions of ØMQ then some of the examples and explanations won’t be accurate. The Guide is originally in C (http://zguide.zeromq.org/page:all), but also in PHP (http://zguide.zeromq.org/php:all), Python (http://zguide.zeromq.org/py:all), Lua (http://zguide.zeromq.org/lua:all), and Haxe (http://zguide.zeromq.org/hx:all). We’ve also translated most of the examples into C++, C#, CL, Erlang, F#, Felix, Haskell, Java, Objective-C, Ruby, Ada, Basic, Clojure, Go, Haxe, Node.js, ooc, Perl, and Scala. Table of Contents 1. Basic Stuff...............................................................................................................................................1 1.1. Fixing the World .........................................................................................................................1 1.2. ØMQ in a Hundred Words ..........................................................................................................2 1.3. Some Assumptions......................................................................................................................2 1.4. Getting the Examples..................................................................................................................2 1.5. Ask and Ye Shall Receive ...........................................................................................................3 1.6. A Minor Note on Strings.............................................................................................................7 1.7. Version Reporting .......................................................................................................................9 1.8. Getting the Message Out.............................................................................................................9 1.9. Divide and Conquer ..................................................................................................................14 1.10. Programming with ØMQ ........................................................................................................19 1.11. Getting the Context Right .......................................................................................................21 1.12. Making a Clean Exit ...............................................................................................................22 1.13. Why We Needed ØMQ ...........................................................................................................23 1.14. Socket Scalability....................................................................................................................27 1.15. Missing Message Problem Solver...........................................................................................28 1.16. Upgrading from ØMQ/2.2 to ØMQ/3.2..................................................................................30 1.17. Warning - Unstable Paradigms! ..............................................................................................30 2. Intermediate Stuff................................................................................................................................32 2.1. The Zen of Zero ........................................................................................................................32 2.2. The Socket API .........................................................................................................................32 2.3. Plugging Sockets Into the Topology .........................................................................................34 2.4. Using Sockets to Carry Data.....................................................................................................35 2.5. Unicast Transports.....................................................................................................................37 2.6. ØMQ is Not a Neutral Carrier...................................................................................................38 2.7. I/O Threads ...............................................................................................................................39 2.8. Limiting Socket Use..................................................................................................................40 2.9. Core Messaging Patterns...........................................................................................................40 2.10. High-level Messaging Patterns................................................................................................41 2.11. Working with Messages ..........................................................................................................42 2.12. Handling Multiple Sockets......................................................................................................43 2.13. Handling Errors and ETERM .................................................................................................46 2.14. Handling Interrupt Signals ......................................................................................................52 2.15. Detecting Memory Leaks........................................................................................................53 2.16. Multi-part Messages................................................................................................................54 2.17. Intermediaries and Proxies......................................................................................................55 2.17.1. The Dynamic Discovery Problem ..............................................................................55 2.17.2. The Shared Queue Problem........................................................................................59 2.17.3. ØMQ’s Built-in Proxy Function.................................................................................66 2.17.4. The Transport Bridging Problem................................................................................67 2.18. Multithreading with ØMQ ......................................................................................................68 2.19. Signaling between Threads .....................................................................................................73 2.20. Node Coordination..................................................................................................................77 2.21. Zero Copy................................................................................................................................81 2.22. Pub-Sub Message Envelopes ..................................................................................................81 iv 2.23. High Water Marks...................................................................................................................84 2.24. A Bare Necessity.....................................................................................................................85 3. Advanced Request-Reply Patterns.....................................................................................................87 3.1. Request-Reply Envelopes .........................................................................................................87 3.2. Custom Request-Reply Routing................................................................................................91 3.3. ROUTER-to-DEALER Routing ...............................................................................................92
Recommended publications
  • SEED™ Assessment Guide for Family Planning Programming
    SEED™ Assessment Guide for Family Planning Programming SEED™ Assessment Guide for Family Planning Programming © 2011 EngenderHealth EngenderHealth 440 Ninth Avenue New York, NY 10001 U.S.A. Telephone: 212-561-8000 Fax: 212-561-8067 e-mail: [email protected] www.engenderhealth.org This publication was made possible through support provided by the F.M. Kirby Foundation. The opinions expressed herein are those of the publisher and do not necessarily reflect the views of the foundation. Cover design, graphic design, and typesetting: Weronika Murray and Tor de Vries Printing: Automated Graphic Systems ISBN 978-1-885063-97-7 Printed in the United States of America. Printed on recycled paper. Suggested citation: EngenderHealth. 2011. The SEED assessment guide for family planning programming. New York. Photo credits: M. Tuschman/EngenderHealth, A. Fiorente/EngenderHealth, C. Svingen/EngenderHealth. ii ContEntS Acknowledgments .................................................................................................................................. iv Acronyms and Abbreviations ................................................................................................................... v Introduction ................................................................................................................................. 2 EngenderHealth’s SEED Programming Model .......................................................................................... 3 How to Use This Assessment Guide........................................................................................................
    [Show full text]
  • Seed Modules Reference Manual
    Seed Modules Reference Manual May 20, 2009 Seed Modules Reference Manual ii Contents 1 readline module. 1 1.1 API Reference . .1 1.2 Examples . .1 2 SQLite module. 3 2.1 API Reference . .3 2.2 Examples . .3 3 GtkBuilder module. 5 3.1 API Reference . .5 3.2 Examples . .5 4 Sandbox module. 7 4.1 API Reference . .7 4.2 Examples . .7 iii Chapter 1 readline module. Robert Carr 1.1 API Reference The readline module allows for basic usage of the GNU readline library, in Seed. More advanced fea- tures may be added a a later time. In order to use the readline module it must be first imported. readline= imports.readline; readline.readline (prompt) Prompts for one line of input on standard input using prompt as the prompt. prompt A string to use as the readline prompt Returns A string entered on standard input. readline.bind (key, function) Binds key to function causing the function to be invokved when- ever key is pressed key A string specifying the key to bind function The function to invoke when key is pressed readline.done () Indicates that readline should finish the current line, and return from readline- .readline. Can be used in callbacks to implement features like multiline editing readline.buffer() Retrieve the current readline buffer Returns The current readline buffer readline.insert (string) Inserts string in to the current readline buffer string The string to insert 1.2 Examples Below are several examples of using the Seed readline module. For additional resources, consult the examples/ folder of the Seed source 1 CHAPTER 1.
    [Show full text]
  • Skyfire: Data-Driven Seed Generation for Fuzzing
    Skyfire: Data-Driven Seed Generation for Fuzzing Junjie Wang, Bihuan Chen†, Lei Wei, and Yang Liu Nanyang Technological University, Singapore {wang1043, bhchen, l.wei, yangliu}@ntu.edu.sg †Corresponding Author Abstract—Programs that take highly-structured files as inputs Syntax Semantic normally process inputs in stages: syntax parsing, semantic check- Features Rules ing, and application execution. Deep bugs are often hidden in the <?xml version="1.0" application execution stage, and it is non-trivial to automatically encoding="utf- pass pass pass 8"?><xsl:stylesheet version="1.0" Syntax Semantic Application xmlns:xsl="http://www.w3 .org/1999/XSL/Transform" generate test inputs to trigger them. Mutation-based fuzzing gen- ><xsl:output xsl:use- √ attribute- Parsing Checking Execution erates test inputs by modifying well-formed seed inputs randomly sets=""/></xsl:stylesheet> Parsing Semantic or heuristically. Most inputs are rejected at the early syntax pars- Inputs Crashes ing stage. Differently, generation-based fuzzing generates inputs Errors Violations from a specification (e.g., grammar). They can quickly carry the ! ! X fuzzing beyond the syntax parsing stage. However, most inputs fail to pass the semantic checking (e.g., violating semantic rules), Fig. 1: Stages of Processing Highly-Structured Inputs which restricts their capability of discovering deep bugs. In this paper, we propose a novel data-driven seed generation approach, named Skyfire, which leverages the knowledge in the analysis [8, 9] that identifies those interesting bytes to mutate, vast amount of existing samples to generate well-distributed seed symbolic execution [10, 11, 12] that relies on constraint solving inputs for fuzzing programs that process highly-structured inputs.
    [Show full text]
  • Cox's Plant Farm
    CouponsFREE Celebrating Years Of Growing! on page 31! Visit Our GIANT STORE! Biggest in the State! OPEN ALL YEAR! 7 DAYS A WEEK 50th 2020 Spring Catalog Shop at COX’S Plant Farm Lawn & Garden th Center; where our greenhouses 49 specialize in growing quality flowersflowers andand 19701970 vegetable plantsth forfor ourour plantplant lovingloving44 customercustomer friendsfriends likelike you.you. For being a very importantimportant partpart ofof our business, you deserve the most courteous 20202020 attention we can give. Let us take thisthis momentmoment toto say:say: “Thank you. We appreciate having you as a friend." 317–539 – 4632 U.S. 40 at Clayton Road (6 miles west of Plainfield) “COX’S - The Place to Go for Things that Grow” (Pass the Word) April 11th to June 14th: 8 am – 8 pm • June 15th to October 18th: 9 am – 6 pm October 19th to April: 9 am – 5 pm Cox’s Plant Farm Offers You… YARD & GARDEN CYPRESS MULCH • GARDEN PLANTS • SHRUBS $5.98 ea. ANNUAL FLOWERS VINES Or Special • • BLACK HARDWOOD MULCH PACKAGED SEED CEMENT PRODUCTS 4 Bags for $18.00 • • $5.98 ea. • BULK GARDEN SEED FOR THE LAWN Or Special RED BARK MULCH • PERENNIAL FLOWERS • GRASS SEED 4 Bags for $18.00 AND BULBS SPRAYS $5.98 ea. • PINE BARK MULCH Or Special NURSERY STOCK FERTILIZER • • $5.98 ea. 4 Bags for $18.00 • SHADE TREES • PEAT MOSS Or Special • ORNAMENTAL TREES • MISC. LAWN AND 4 Bags for $18.00 FRUIT TREES GARDEN SUPPLIES • PINE BARK NUGGETS GARDEN MAGIC POTTERY • SEVERAL BERRIES • $5.98 ea. POTTING SOIL • ROSES • MOWERS AND TILLERS Or Special $7.98 ea.
    [Show full text]
  • Debian GNU/Linux Installation Guide
    Debian GNU/Linux Installation Guide July 31, 2021 Debian GNU/Linux Installation Guide Copyright © 2004 – 2021 the Debian Installer team This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License. Please refer to the license in Appendix F. Build version of this manual: 20210730. i Contents 1 Welcome to Debian 1 1.1 What is Debian? . 1 1.2 What is GNU/Linux? . 1 1.3 What is Debian GNU/Linux? . 2 1.4 What is the Debian Installer? . 3 1.5 Getting Debian . 3 1.6 Getting the Newest Version of This Document . 3 1.7 Organization of This Document . 3 1.8 About Copyrights and Software Licenses . 4 2 System Requirements 5 2.1 Supported Hardware . 5 2.1.1 Supported Architectures . 5 2.1.2 Three different ARM ports . 6 2.1.3 Variations in ARM CPU designs and support complexity . 6 2.1.4 Platforms supported by Debian/armhf . 6 2.1.5 Platforms no longer supported by Debian/armhf . 8 2.1.6 Multiple Processors . 8 2.1.7 Graphics Hardware Support . 8 2.1.8 Network Connectivity Hardware . 8 2.1.9 Peripherals and Other Hardware . 8 2.2 Devices Requiring Firmware . 8 2.3 Purchasing Hardware Specifically for GNU/Linux . 9 2.3.1 Avoid Proprietary or Closed Hardware . 9 2.4 Installation Media . 9 2.4.1 CD-ROM/DVD-ROM/BD-ROM . 9 2.4.2 Network . 10 2.4.3 Hard Disk . 10 2.4.4 Un*x or GNU system .
    [Show full text]
  • Pipenightdreams Osgcal-Doc Mumudvb Mpg123-Alsa Tbb
    pipenightdreams osgcal-doc mumudvb mpg123-alsa tbb-examples libgammu4-dbg gcc-4.1-doc snort-rules-default davical cutmp3 libevolution5.0-cil aspell-am python-gobject-doc openoffice.org-l10n-mn libc6-xen xserver-xorg trophy-data t38modem pioneers-console libnb-platform10-java libgtkglext1-ruby libboost-wave1.39-dev drgenius bfbtester libchromexvmcpro1 isdnutils-xtools ubuntuone-client openoffice.org2-math openoffice.org-l10n-lt lsb-cxx-ia32 kdeartwork-emoticons-kde4 wmpuzzle trafshow python-plplot lx-gdb link-monitor-applet libscm-dev liblog-agent-logger-perl libccrtp-doc libclass-throwable-perl kde-i18n-csb jack-jconv hamradio-menus coinor-libvol-doc msx-emulator bitbake nabi language-pack-gnome-zh libpaperg popularity-contest xracer-tools xfont-nexus opendrim-lmp-baseserver libvorbisfile-ruby liblinebreak-doc libgfcui-2.0-0c2a-dbg libblacs-mpi-dev dict-freedict-spa-eng blender-ogrexml aspell-da x11-apps openoffice.org-l10n-lv openoffice.org-l10n-nl pnmtopng libodbcinstq1 libhsqldb-java-doc libmono-addins-gui0.2-cil sg3-utils linux-backports-modules-alsa-2.6.31-19-generic yorick-yeti-gsl python-pymssql plasma-widget-cpuload mcpp gpsim-lcd cl-csv libhtml-clean-perl asterisk-dbg apt-dater-dbg libgnome-mag1-dev language-pack-gnome-yo python-crypto svn-autoreleasedeb sugar-terminal-activity mii-diag maria-doc libplexus-component-api-java-doc libhugs-hgl-bundled libchipcard-libgwenhywfar47-plugins libghc6-random-dev freefem3d ezmlm cakephp-scripts aspell-ar ara-byte not+sparc openoffice.org-l10n-nn linux-backports-modules-karmic-generic-pae
    [Show full text]
  • GNOME 3 Application Development Beginner's Guide
    GNOME 3 Application Development Beginner's Guide Step-by-step practical guide to get to grips with GNOME application development Mohammad Anwari BIRMINGHAM - MUMBAI GNOME 3 Application Development Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: February 2013 Production Reference: 1080213 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-942-7 www.packtpub.com Cover Image by Duraid Fatouhi ([email protected]) Credits Author Project Coordinator Mohammad Anwari Abhishek Kori Reviewers Proofreader Dhi Aurrahman Mario Cecere Joaquim Rocha Indexer Acquisition Editor Tejal Soni Mary Jasmine Graphics Lead Technical Editor Aditi Gajjar Ankita Shashi Production Coordinator Technical Editors Aparna Bhagat Charmaine Pereira Cover Work Dominic Pereira Aparna Bhagat Copy Editors Laxmi Subramanian Aditya Nair Alfida Paiva Ruta Waghmare Insiya Morbiwala About the Author Mohammad Anwari is a software hacker from Indonesia with more than 13 years of experience in software development.
    [Show full text]
  • Fy2019 Annual Report
    Report Table of Contents General Government________________________________________________ Board of Selectmen 3 Town Counsel 4 Finance Committee 5 Accounting 5 Assessors 6 Treasurer/Collector 6 Town Moderator 7 Planning Board 7 Conservation Commission 8 Zoning Board of Appeals 9 Capital Planning Committee 10 Town Clerk 10 Public Safety______________________________________________________ Police Department 11 Fire Department 17 Public Safety Committee 19 Building Inspector 21 Gas & Plumbing Inspector 22 Electrical Inspector 23 Education_________________________________________________________ School Committee 23 Superintendent 24 Department of Curriculum and Instruction 24 Business Office 25 Earl D. Taft Learning Center 26 Whitin Elementary School 28 Uxbridge High School 29 Blackstone Valley Vocational Regional School District 44 Public Works______________________________________________________ DPW 46 Highway Department 47 Water Division 48 Wastewater Division 49 Wastewater Treatment Facility Building Committee 50 Stormwater Committee 51 Health and Human Services__________________________________________ Board of Health 52 Council on Aging 54 Veteran’s Services 59 Cultural and Recreation_____________________________________________ Dog Park Committee 59 Uxbridge Free Public Library 60 1 Recreation Commission 62 Historical Commission 63 Historic District Commission 64 Historic Cemetery Committee 65 Pout Pond Recreation Committee 65 Community Television 66 Community Gardens 66 Uxbridge Housing Authority 67 Recycling and Sustainability
    [Show full text]
  • Python Setup and Usage Release 3.4.3
    Python Setup and Usage Release 3.4.3 Guido van Rossum and the Python development team July 16, 2015 Python Software Foundation Email: [email protected] Contents 1 Command line and environment3 1.1 Command line............................................3 1.2 Environment variables........................................7 2 Using Python on Unix platforms 11 2.1 Getting and installing the latest version of Python.......................... 11 2.2 Building Python........................................... 12 2.3 Python-related paths and files.................................... 12 2.4 Miscellaneous............................................ 12 2.5 Editors................................................ 12 3 Using Python on Windows 15 3.1 Installing Python........................................... 15 3.2 Alternative bundles.......................................... 15 3.3 Configuring Python......................................... 15 3.4 Python Launcher for Windows.................................... 17 3.5 Additional modules......................................... 21 3.6 Compiling Python on Windows................................... 21 3.7 Other resources............................................ 22 4 Using Python on a Macintosh 23 4.1 Getting and Installing MacPython.................................. 23 4.2 The IDE............................................... 24 4.3 Installing Additional Python Packages................................ 24 4.4 GUI Programming on the Mac.................................... 24 4.5 Distributing Python Applications
    [Show full text]
  • Manjaro 0.8.6 User Guide - Page 1 of 60
    Manjaro 0.8.6 User Guide - Page 1 of 60 User Guide for Beginners Graphical and Command-Line Installation Methods Manjaro 0.8.6 Manjaro 0.8.6 User Guide - Page 2 of 60 The Manjaro Development Team Core Team Roland Singer - Project Leader, Designer, Developer, Web Developer, Packager Guillaume Benoit - Server Manager, Packager, Moderation Philip Müller - Mirrors Manager, Packager, Developer, Web Developer Website and Artwork Team Tillman Ebert - Web Developer, Web Consultant, Designer Forum, Community and Support Allesandro Calo - Community, Forum, Website Manjaro 0.8.6 User Guide - Page 3 of 60 Contents Introduction 4 1. Downloading Manjaro 5 2. Checking a Downloaded ISO File for Errors 6 3. Burning an ISO File 8 4. Pre-Installation 10 5. Using the Graphical Installer 12 6. Using the Command Line Installer 21 7. Upon Rebooting... 38 8. Welcome to Manjaro! 39 9. Accessing the Arch User Repository 42 10. Configuring Graphics Cards 45 11. Manjaro Kernels 48 12. Enabling Printing Capabilities 51 13. Pacman 52 14. Changing Servers 54 Appendix A: If Your Screen is Too Dim 57 Appendix B: Manjaro FAQ 58 Appendix C: Useful Links 60 Manjaro 0.8.6 User Guide - Page 4 of 60 Introduction About Manjaro Manjaro is a user-friendly Linux distribution based on the independently developed Arch operating system. Within the Linux community, Arch itself is renowned for being an exceptionally fast, powerful, and lightweight distribution that provides access to the very latest cutting edge - and bleeding edge - software. However, Arch is also aimed at more experienced or technically-minded users. As such, it is generally considered to be beyond the reach of those who lack the technical expertise (or persistence) required to use it.
    [Show full text]
  • The GTK+ Drag-And-Drop Mechanism
    CSci493.73 Graphical User Interface Programming Prof. Stewart Weiss The GTK+ Drag-and-Drop Mechanism The GTK+ Drag-and-Drop Mechanism 1 Overview Drag-and-drop (DND, for short) is an operation in applications with graphical user interfaces by which users can request, in a visual way, that running applications exchange data with each other. To the user, in a drag-and-drop operation, it appears that data is being dragged from the source of the drag to the destination of the drag. Because applications are independent of each other and written without cognizance of who their partners will be in a DND operation, for DND to work, there must be underlying support by either the operating system or the windowing system. The Mac OS operating system has always had built-in support for drag-and-drop. Microsoft Windows did not have it; it was added on top of the operating system in Windows 95 and later. UNIX has no support for it at all because the graphical user interfaces found in UNIX systems are not part of the operating system. Support for DND is provided by the X Window system. Over the years, several dierent protocols were developed to support DND on X Windows. The two most common were Xdnd and Motif DND. GTK+ can perform drag-and-drop on top of both the Xdnd and Motif protocols. In GTK+, for an application to be capable of DND, it must rst dene and set up the widgets that will participate in it. A widget can be a source and/or a destination for a drag-and-drop operation.
    [Show full text]
  • The Zeromq Guide - for Python Developers
    The ZeroMQ Guide - for Python Developers Pieter Hintjens The ZeroMQ Guide - for Python Developers by Pieter Hintjens Dedication This book is dedicated to the ØMQ community. Table of Contents Preface.......................................................................................................................................................ix 1. ØMQ in a Hundred Words............................................................................................................ix 2. How It Began................................................................................................................................ix 3. The Zen of Zero............................................................................................................................ix 4. How This Book Came To Be.........................................................................................................x 5. Audience.......................................................................................................................................xi I. Learning ØMQ.................................................................................................................................... xii 1. Basics.............................................................................................................................................1 1.1. Fixing the World................................................................................................................1 1.2. Starting Assumptions.........................................................................................................2
    [Show full text]