Author Brent Laster shows you how Jenkins 2 is significantly different from the more traditional, web-only versions of this popular open source automation platform. If you’re familiar with Jenkins and want to take advantage of the new technologies to transform your legacy pipelines or build new modern, automated continuous delivery environments, this is your book.Create continuous delivery pipelines as code with the Jenkins domain-specific languageGet practical guidance on how to migrate existing jobs and pipelinesHarness best practices and new methods for controlling access and securityExplore the structure, implementation, and use of shared pipeline librariesLearn the differences between declarative syntax and scripted syntaxLeverage new and existing project types in JenkinsUnderstand and use the new Blue Ocean graphical interfaceTake advantage of the capabilities of the underlying OS in your pipelineIntegrate analysis tools, artifact management, and containers
Author Jeff Patton shows you how changeable story maps enable your team to hold better conversations about the project throughout the development process. Your team will learn to come away with a shared understanding of what you’re attempting to build and why.Get a high-level view of story mapping, with an exercise to learn key concepts quicklyUnderstand how stories really work, and how they come to life in Agile and Lean projectsDive into a story’s lifecycle, starting with opportunities and moving deeper into discoveryPrepare your stories, pay attention while they’re built, and learn from those you convert to working software
It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face.
It democratizes architecture. This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that ensure desired outcomes, and how seemingly small changes can affect a system's properties.
It cultivates declarative knowledge. There is a difference between being able to hit a ball and knowing why you are able to hit it, what psychologists refer to as procedural knowledge versus declarative knowledge. This book will make you more aware of what you have been doing and provide names for the concepts.
It emphasizes the engineering. This book focuses on the technical parts of software development and what developers do to ensure the system works not job titles or processes. It shows you how to build models and analyze architectures so that you can make principled design tradeoffs. It describes the techniques software designers use to reason about medium to large sized problems and points out where you can learn specialized techniques in more detail.
It provides practical advice. Software design decisions influence the architecture and vice versa. The approach in this book embraces drill-down/pop-up behavior by describing models that have various levels of abstraction, from architecture to data structure design.
This book is for PLC programmers, electricians, instrumentation techs, automation professionals with basic PLC programming knowledge, but no knowledge of RSLogix 5000. If you are a student who is familiar with automation and would like to learn about RSLogix 5000 with minimal investment of time, this is the book for you.What You Will LearnBriefly explore the history of Rockwell Automation and the evolution of the Logix platformDiscover the complete range of ControlLogix and ComplactLogix controllers and form factors available today, and the key things you should consider when you are engineering a Rockwell Automation solutionExplore the key platform changes introduced with Studio 5000 and Logix Designer version 24 and the latest firmware versionsGet to grips with the modules available in the ControLogix, SoftLogix, and CompactLogix platformsUnderstand writing Ladder Logic (LL) routines, Sequential Function Chart (SFC) routines, and Structured Text routines (ST)Design Function Block Diagrams (FBD) and their easy integration with HMIsIn Detail
RSLogix 5000 and Studio 5000's Logix Designer are user-friendly interfaces used for programming the current generation of Rockwell Automation Controllers including ControlLogix, CompactLogix, and SoftLogix. When engineering automation solutions using Logix, it is important to study the changes to the platform introduced with Studio 5000 and the various controllers, modules, and form factors available today. RSLogix 5000 programming packages help you maximize performance, save project development time, and improve productivity.
This book provides a detailed overview of the Logix platform including ControlLogix, CompactLogix, and SoftLogix and explains the significant changes introduced in Studio 5000. A clear understanding of the recent Logix platform changes is critical for anyone developing a Rockwell Automation solution. It provides an easy-to-follow, step-by-step approach to learning the essential Logix hardware and software components and provides beginners with a solid foundation in the Logix platform features and terminology. By the end of this book, you will have a clear understanding of the capabilities of the Logix platform and the ability to navigate the Rockwell Automation Literature Library Resources.Style and approach
A step-by-step approach to RSLogix 5000, which is explained in an easy-to-follow style. Each topic is explained sequentially with detailed explanations of the basic and advanced features of Rockwell Automation that appeal to the needs of readers with a wide range of experience.
If you have some experience with Docker and want to get more from containerization, this book is the perfect place to start. Focused on helping you take control of your deployments in a simple way, you'll soon find out how to transform your operations for greater organizational and technical agility.What You Will LearnDownload, install, and configure the latest version of KubernetesPerform smooth updates and patches with minimal downtimeStreamline the way you deploy and manage your applications with large-scale container orchestrationFind out how Kubernetes can simplify the way you configure your clusters and networksLearn why the Open Container initiative is so important for the way you manage your infrastructureDiscover third-party tools that can enhance your production operationsExplore and use the most persistent storage options for your clusterterIntegrate Kubernetes with continuous delivery tools such as Gulp and JenkinsIn Detail
Kubernetes is the tool that's pushing the containerization revolution – largely driven by Docker – to another level. If Docker has paved the way for greater agility and control in the way we organize and manage our infrastructure, Kubernetes goes further, by helping you to orchestrate and automate container deployments on a massive scale. Kubernetes really does think big – and it's time you did too!
This book will show you how to start doing exactly that, showing you how to extend the opportunities that containerization innovations have brought about in new and even more effective ways. Get started with the basics - explore the fundamental elements of Kubernetes and find out how to install it on your system, before digging a little deeper into Kubernetes core constructs. Find out how to use Kubernetes pods, services, replication controllers, and labels to manage your clusters effectively and learn how to handle networking with Kubernetes.
Once you've got to grips with these core components, you'll begin to see how Kubernetes fits into your workflow. From basic updates to integrating Kubernetes with continuous delivery tools such as Jenkins and Gulp, the book demonstrates exactly how Kubernetes will transform the way you work. With further insights on how to install monitoring and security tools, this book provides you with a direct route through Kubernetes – so you can take advantage of it, fast!Style and approach
This straightforward guide will help you understand how to move your container applications into production through best practices and step by step walkthroughs tied to real-world operational strategies.
Real World OCaml takes you through the concepts of the language at a brisk pace, and then helps you explore the tools and techniques that make OCaml an effective and practical tool. In the book’s third section, you’ll delve deep into the details of the compiler toolchain and OCaml’s simple and efficient runtime system.Learn the foundations of the language, such as higher-order functions, algebraic data types, and modulesExplore advanced features such as functors, first-class modules, and objectsLeverage Core, a comprehensive general-purpose standard library for OCamlDesign effective and reusable libraries, making the most of OCaml’s approach to abstraction and modularityTackle practical programming problems from command-line parsing to asynchronous network programmingExamine profiling and interactive debugging techniques with tools such as GNU gdb
* Installing Packer.
* Building images.
* Provisioning images.
* Integration with Configuration Management tools like Ansible, Chef and Puppet.
* Packer and Docker containers.
* Integrating and writing infrastructure tests.
* Building pipelines for Continuous Integration with Packer.
* Extending Packer.
Mercurial permits a countless variety of development and collaboration methods, and this book offers several concrete suggestions to get you started. This guide will help you:
Learn the basics of working with a repository, changesets, and revisionsMerge changes from separate repositoriesSet up Mercurial to work with files on a daily basis, including which ones to trackGet examples and tools for setting up various workflow modelsManage a project that's making progress on multiple fronts at onceFind and fix mistakes by isolating problem sourcesUse hooks to perform actions automatically in response to repository eventsCustomize the output of Mercurial
Mercurial: The Definitive Guide maintains a strong focus on simplicity to help you learn Mercurial quickly and thoroughly.
The in-depth, detailed, hand-on manual on Express.js, the most popular Node.js framework. Will get you up and running fast and save you time. Understand the concepts, learn the best practices. Become an Express.js expert today.
Express.js API reference, quick start guides, 20+ meticulously explained examples and tutorials -- over 270 pages with more than 60 illustrations.
Quick StartThe InterfaceTIps and TricksTutorials and Examples
Express.js is the most popular Node.js web framework yet. As of this writing (September of 2013), there are no books that are solely dedicated to it. Its official website has bits of insights for advanced Node.js programmers. However, I found that many people -- including those who go through HackReactor7 program and come to my Node.js classes at General Assembly and pariSOMA -- are interested in a comprehensive resource. The one that would cover all the different components of Express.js work together in a real production-like application. The goal of Express.js Guide is to become such resource.
What This Book is
Express.js Guide is a concise book on one particular library. This book contains Express.js API 3.3.58 description, the best practices on code organization and patterns, real-world examples of web apps. The topics include but not limited to middleware, command-line interface and scaffolding, ren- dering templates, extracting params from dynamic URLs, parsing payloads and cookies, managing authentication with sessions, error handling and prepping apps for production.
For more details and for what exactly the book covers, please refer to the Table of Contents.
What This Book is Not
This book is not an introduction to Node.js, nor is it a book that covers all aspects of building a modern day web application, e.g., websockets, databases and (of course) front-end development.
You might want to take a look at Rapid Prototyping with JS9 for the introduction to Node.js, MongoDB and front-end development with Backbone.js.
In the real-world and especially in Node.js development, due to its modularized philosophy, we seldom use just a single framework. In the book, we have tried to stick only to Express.js and leave everything else out as much as possible, without compromising the usefulness of examples. Therefore, we intentionally left out some important chunks of web developments, for example databases, authentication and testing. Although these elements are present in tutorials and examples, they're not explained in detail. For those materials, you could check books in the Related Reading and Resources section at the end of the book.
Who This Book is For
If you're thinking of starting a Node.js app, or of rewriting an existing one, and your weapon of choice is Express.js -- this guide is for you! It will answer most of your "how" and "why" questions.
Written by consultants from the Software Improvement Group (SIG), this book provides clear and concise explanations, with advice for turning the guidelines into practice. Examples for this edition are written in Java, while our companion C# book provides workable examples in that language.Write short units of code: limit the length of methods and constructorsWrite simple units of code: limit the number of branch points per methodWrite code once, rather than risk copying buggy codeKeep unit interfaces small by extracting parameters into objectsSeparate concerns to avoid building large classesCouple architecture components looselyBalance the number and size of top-level components in your codeKeep your codebase as small as possibleAutomate tests for your codebaseWrite clean code, avoiding "code smells" that indicate deeper problems
This book is aimed primarily at developers and administrators who are interested in taking their interaction and usage of Jenkins to the next level.
The book assumes you have a working knowledge of Jenkins and programming in general, and an interest in learning about the different approaches to customizing and extending Jenkins so it fits your requirements and your environment perfectly.What You Will LearnRetrieve and act upon Jenkins information in real timeFind out how to interact with Jenkins through a variety of IDEsDevelop your own Form and Input validation and customizationExplore how Extension points work, and develop your own Jenkins pluginSee how to use the Jenkins API and command-line interfaceGet to know how to remotely update your Jenkins configurationDesign and develop your own Information RadiatorDiscover how Jenkins customization can help improve quality and reduce costsIn Detail
Jenkins CI is the leading open source continuous integration server. It is written in Java and has a wealth of plugins to support the building and testing of virtually any project. Jenkins supports multiple Software Configuration Management tools such as Git, Subversion, and Mercurial.
This book explores and explains the many extension points and customizations that Jenkins offers its users, and teaches you how to develop your own Jenkins extensions and plugins.
First, you will learn how to adapt Jenkins and leverage its abilities to empower DevOps, Continuous Integration, Continuous Deployment, and Agile projects. Next, you will find out how to reduce the cost of modern software development, increase the quality of deliveries, and thereby reduce the time to market. We will also teach you how to create your own custom plugins using Extension points.
Finally, we will show you how to combine everything you learned over the course of the book into one real-world scenario.Style and approach
Extending Jenkins explores and explains advanced Jenkins functionality from a practical point of view, teaching you real-world skills that will help you get more from this powerful software. Each key topic is explained clearly with a practical example, and in sufficient detail so you understand the concepts and can then develop your own solutions using your preferred software and languages.
The Meta-Programming System (MPS) is a new kind of tool called a language workbench that simply stated makes it easier and more fun to write programs. With traditional programming, it is common to choose one programming language to solve a problem and being limited by this choice. When working with MPS you can use and combine different languages to solve a problem. You can also create simple languages (e.g., Domain Specific Languages) or extend existing ones when the languages available do not exactly meet the evolving needs of the problem at hand. The languages that you create with MPS will integrate nicely with languages developed by others.
MPS is open-source and can be obtained from http://jetbrains.com/mps or http://github.com/JetBrains/MPS. This book explains the MPS programming paradigm and gradually introduces the reader to the many features of the MPS platform. This book may yet be the simplest way to discover the MPS language workbench and the powerful new approach to programming that this tool offers.
The third edition of this book describes MPS 3.3.
The microservices architectural style promotes the development of complex applications as a suite of small services based on business capabilities. This book will help you identify the appropriate service boundaries within your business. We'll start by looking at what microservices are and their main characteristics.
Moving forward, you will be introduced to real-life application scenarios; after assessing the current issues, we will begin the journey of transforming this application by splitting it into a suite of microservices using C# 7.0 with .NET Core 2.0. You will identify service boundaries, split the application into multiple microservices, and define service contracts. You will find out how to configure, deploy, and monitor microservices, and configure scaling to allow the application to quickly adapt to increased demand in the future.
With an introduction to reactive microservices, you’ll strategically gain further value to keep your code base simple, focusing on what is more important rather than on messy asynchronous calls.What you will learn Get acquainted with Microsoft Azure Service Fabric Compare microservices with monolithic applications and SOA Learn Docker and Azure API management Define a service interface and implement APIs using ASP.NET Core 2.0 Integrate services using a synchronous approach via RESTful APIs with ASP.NET Core 2.0 Implement microservices security using Azure Active Directory, OpenID Connect, and OAuth 2.0 Understand the operation and scaling of microservices in .NET Core 2.0 Understand the key features of reactive microservices and implement them using reactive extensionsWho this book is for
This book is for .NET Core developers who want to learn and understand the microservices architecture and implement it in their .NET Core applications. It’s ideal for developers who are completely new to microservices or just have a theoretical understanding of this architectural approach and want to gain a practical perspective in order to better manage application complexities.
Devops stresses iterative efforts to break down information silos, monitor relationships, and repair misunderstandings that arise between and within teams in your organization. By applying the actionable strategies in this book, you can make sustainable changes in your environment regardless of your level within your organization.Explore the foundations of devops and learn the four pillars of effective devopsEncourage collaboration to help individuals work together and build durable and long-lasting relationshipsCreate affinity among teams while balancing differing goals or metricsAccelerate cultural direction by selecting tools and workflows that complement your organizationTroubleshoot common problems and misunderstandings that can arise throughout the organizational lifecycleLearn from case studies from organizations and individuals to help inform your own devops journey
This book is for anyone who has a basic knowledge of Unity programming using C# and wants to learn how to extend and create custom tools using Unity editor scripting to improve the development workflow and make video game development easier.What You Will LearnUse Gizmos to create visual aids for debuggingExtend the editor capabilities using custom inspectors, property and decorator drawers, editor windows, and handlesSave your video game data in a persistent way using scriptable objectsImprove the look and feel of your custom tools using GUIStyles and GUISkinsConfigure and control the asset import pipelineImprove the build creation pipelineDistribute the custom tools in your team or publish them in the Asset StoreIn Detail
One of Unity's most powerful features is the extensible editor it has. With editor scripting, it is possible to extend or create functionalities to make video game development easier. For a Unity developer, this is an important topic to know and understand because adapting Unity editor scripting to video games saves a great deal of time and resources.
This book is designed to cover all the basic concepts of Unity editor scripting using a functional platformer video game that requires workflow improvement.
You will commence with the basics of editor scripting, exploring its implementation with the help of an example project, a level editor, before moving on to the usage of visual cues for debugging with Gizmos in the scene view. Next, you will learn how to create custom inspectors and editor windows and implement custom GUI. Furthermore, you will discover how to change the look and feel of the editor using editor GUIStyles and editor GUISkins. You will then explore the usage of editor scripting in order to improve the development pipeline of a video game in Unity by designing ad hoc editor tools, customizing the way the editor imports assets, and getting control over the build creation process. Step by step, you will use and learn all the key concepts while creating and developing a pipeline for a simple platform video game. As a bonus, the final chapter will help you to understand how to share content in the Asset Store that shows the creation of custom tools as a possible new business. By the end of the book, you will easily be able to extend all the concepts to other projects.Style and approach
This book uses a step-by-step approach that will help you finish with a level editor tool, a custom configuration for the asset import pipeline, and a build pipeline totally adjusted to the video game.
Through hands-on tutorials, DevOps engineer Jo Rhett demonstrates how Puppet manages complex and distributed components to ensure service availability. You’ll learn how to secure configuration consistency across servers, clients, your router, and even that computer in your pocket by setting up your own testing environment.Learn exactly what Puppet is, why it was created, and what problems it solvesTailor Puppet to your infrastructure with a design that meets your specific needsWrite declarative Puppet policies to produce consistency in your systemsBuild, test, and publish your own Puppet modulesManage network devices such as routers and switches with puppet device and integrated Puppet agentsScale Puppet servers for high availability and performanceExplore web dashboards and orchestration tools that supplement and complement Puppet
This book is indented to provide a full overview of deep learning. From the beginner in deep learning and artificial intelligence to the data scientist who wants to become familiar with Theano and its supporting libraries, or have an extended understanding of deep neural nets.
Some basic skills in Python programming and computer science will help, as well as skills in elementary algebra and calculus.What You Will LearnGet to grips with docker fundamentals and how to dockerize an application for the Continuous Delivery processConfigure Jenkins and scale it using Docker-based agentsUnderstand the principles and the technical aspects of a successful Continuous Delivery pipelineCreate a complete Continuous Delivery process using modern tools: Docker, Jenkins, and AnsibleWrite acceptance tests using Cucumber and run them in the Docker ecosystem using JenkinsCreate multi-container applications using Docker ComposeManaging database changes inside the Continuous Delivery process and understand effective frameworks such as Cucumber and FlyweightBuild clustering applications with Jenkins using Docker SwarmPublish a built Docker image to a Docker Registry and deploy cycles of Jenkins pipelines using community best practicesIn Detail
The combination of Docker and Jenkins improves your Continuous Delivery pipeline using fewer resources. It also helps you scale up your builds, automate tasks and speed up Jenkins performance with the benefits of Docker containerization.
This book will explain the advantages of combining Jenkins and Docker to improve the continuous integration and delivery process of app development. It will start with setting up a Docker server and configuring Jenkins on it. It will then provide steps to build applications on Docker files and integrate them with Jenkins using continuous delivery processes such as continuous integration, automated acceptance testing, and configuration management.
Moving on you will learn how to ensure quick application deployment with Docker containers along with scaling Jenkins using Docker Swarm. Next, you will get to know how to deploy applications using Docker images and testing them with Jenkins.
By the end of the book, you will be enhancing the DevOps workflow by integrating the functionalities of Docker and Jenkins.Style and approach
The book is aimed at DevOps Engineers, developers and IT Operations who want to enhance the DevOps culture using Docker and Jenkins.
Want to get started with Android development? Start here.What You Will LearnGet to know how to use popular open source libraries to reduce time to market and avoid re-inventing the wheelAutomate your application's testing phase to avoid last minute crashesUse dependency management to properly keep dependencies and updates under controlEfficiently show huge amounts of items in a listForget about memory and speed concernsPublish and monetize your Android applications on Google PlayPersist your application data so it can continue working in offline modeDon't let the UX break because of network issuesIn Detail
The mobile app market is huge. But where do you start? And how you can deliver something that takes Google Play by storm? This guide is the perfect route into Android app development – while it's easy for new apps to sink without a trace, we'll give you the best chance of success with practical and actionable guidance that will unlock your creativity and help you put the principles of Android development into practice.
From the fundamentals and getting your project started to publishing your app to a huge market of potential customers, follow this guide to become a confident, creative and reliable mobile developer. Get to grips with new components in Android 7 such as RecyclerView, and find out how to take advantage of automated testing, and, of course, much, much more.
What are you waiting for? There's never been a better time – or a better way – to get into Android app development.Style and approach
More than just a manual, this is an accessible route into Android development. Packed with examples that demonstrate how to put key concepts and ideas into practice, this guide isn't just about learning, it's about immediate development.
Metaprogramming is one of Elixir's greatest features. Maybe you've played with the basics or written a few macros. Now you want to take it to the next level. This book is a guided series of metaprogramming tutorials that take you step by step to metaprogramming mastery. You'll extend Elixir with powerful features and write faster, more maintainable programs in ways unmatched by other languages.
You'll start with the basics of Elixir's metaprogramming system and find out how macros interact with Elixir's abstract format. Then you'll extend Elixir with your own first-class features, write a testing framework, and discover how Elixir treats source code as building blocks, rather than rote lines of instructions. You'll continue your journey by using advanced code generation to create essential libraries in strikingly few lines of code. Finally, you'll create domain-specific languages and learn when and where to apply your skills effectively.
When you're done, you will have mastered metaprogramming, gained insights into Elixir's internals, and have the confidence to leverage macros to their full potential in your own projects.
Get ready to program in a whole new way. Functional Programming in Java will help you quickly get on top of the new, essential Java 8 language features and the functional style that will change and improve your code. This short, targeted book will help you make the paradigm shift from the old imperative way to a less error-prone, more elegant, and concise coding style that's also a breeze to parallelize. You'll explore the syntax and semantics of lambda expressions, method and constructor references, and functional interfaces. You'll design and write applications better using the new standards in Java 8 and the JDK.
Lambda expressions are lightweight, highly concise anonymous methods backed by functional interfaces in Java 8. You can use them to leap forward into a whole new world of programming in Java. With functional programming capabilities, which have been around for decades in other languages, you can now write elegant, concise, less error-prone code using standard Java. This book will guide you though the paradigm change, offer the essential details about the new features, and show you how to transition from your old way of coding to an improved style.
In this book you'll see popular design patterns, such as decorator, builder, and strategy, come to life to solve common design problems, but with little ceremony and effort. With these new capabilities in hand, Functional Programming in Java will help you pick up techniques to implement designs that were beyond easy reach in earlier versions of Java. You'll see how you can reap the benefits of tail call optimization, memoization, and effortless parallelization techniques.
Java 8 will change the way you write applications. If you're eager to take advantage of the new features in the language, this is the book for you.
What you need:
Java 8 with support for lambda expressions and the JDK is required to make use of the concepts and the examples in this book.
This is the successor edition of the popular FPGA Prototyping by Verilog Examples text. It follows the same “learning-by-doing” approach to teach the fundamentals and practices of HDL synthesis and FPGA prototyping. The new edition uses a coherent series of examples to demonstrate the process to develop sophisticated digital circuits and IP (intellectual property) cores, integrate them into an SoC (system on a chip) framework, realize the system on an FPGA prototyping board, and verify the hardware and software operation. The examples start with simple gate-level circuits, progress gradually through the RT (register transfer) level modules, and lead to a functional embedded system with custom I/O peripherals and hardware accelerators. Although it is an introductory text, the examples are developed in a rigorous manner, and the derivations follow the strict design guidelines and coding practices used for large, complex digital systems.
The book is completely updated and uses the SystemVerilog language, which “absorbs” the Verilog language. It presents the hardware design in the SoC context and introduces the hardware-software co-design concept. Instead of treating examples as isolated entities, the book integrates them into a single coherent SoC platform that allows readers to explore both hardware and software “programmability” and develop complex and interesting embedded system projects. The new edition:Adds four general-purpose IP cores, which are multi-channel PWM (pulse width modulation) controller, I2C controller, SPI controller, and XADC (Xilinx analog-to-digital converter) controller. Introduces a music synthesizer constructed with a DDFS (direct digital frequency synthesis) module and an ADSR (attack-decay-sustain-release) envelope generator. Expands the original video controller into a complete stream based video subsystem that incorporates a video synchronization circuit, a test-pattern generator, an OSD (on-screen display) controller, a sprite generator, and a frame buffer. Provides a detailed discussion on blocking and nonblocking statements and coding styles. Describes basic concepts of software-hardware co-design with Xilinx MicroBlaze MCS soft-core processor. Provides an overview of bus interconnect and interface circuit. Presents basic embedded system software development. Suggests additional modules and peripherals for interesting and challenging projects.
FPGA Prototyping by SystemVerilog Examples makes a natural companion text for introductory and advanced digital design courses and embedded system courses. It also serves as an ideal self-teaching guide for practicing engineers who wish to learn more about this emerging area of interest.
This book is for Kotlin developers who would like to build fault-tolerant, scalable, and distributed systems. A basic knowledge of Kotlin is required, but no prior knowledge of reactive programming.What You Will LearnLearn about reactive programming paradigms and how reactive programming can improve your existing projectsGain in-depth knowledge in RxKotlin 2.0 and the ReactiveX FrameworkUse RxKotlin with AndroidCreate your own custom operators in RxKotlinUse Spring Framework 5.0 with KotlinUse the reactor-kotlin extensionBuild Rest APIs with Spring,Hibernate, and RxKotlinUse testSubscriber to test RxKotlin applicationsUse backpressure management and FlowablesIn Detail
In today's app-driven era, when programs are asynchronous, and responsiveness is so vital, reactive programming can help you write code that's more reliable, easier to scale, and better-performing. Reactive programming is revolutionary.
With this practical book, Kotlin developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm. You will begin with the general concepts of Reactive programming and then gradually move on to working with asynchronous data streams. You will dive into advanced techniques such as manipulating time in data-flow, customizing operators and provider and how to Use the concurrency model to control asynchronicity of code and process event handlers effectively.
You will then be introduced to functional reactive programming and will learn to apply FRP in practical use cases in Kotlin. This book will also take you one step forward by introducing you to spring 5 and spring boot 2 using Kotlin. By the end of the book, you will be able to build real-world applications with reactive user interfaces as well as you'll learn to implement reactive programming paradigms in Android.Style and Approach
Loaded with numerous code examples and real-life projects, this book helps you delve into Reactive Programming with Kotlin, and apply it to real-world Spring-web and Android projects, thus making all your apps reactive.
In past few years, agile software development has seen tremendous growth. There is a huge demand for software delivery solutions that are fast yet flexible to numerous amendments. As a result, Continuous Integration (CI) and Continuous Delivery (CD) methodologies are gaining popularity.
This book starts off by explaining the concepts of CI and its significance in the Agile. Next, you'll learn how to configure and set up Jenkins in many different ways. The book exploits the concept of "pipeline as code" and various other features introduced in the Jenkins 2.x release to their full potential. We also talk in detail about the new Jenkins Blue Ocean interface and the features that help to quickly and easily create a CI pipeline. Then we dive into the various features offered by Jenkins one by one, exploiting them for CI and CD. Jenkins' core functionality and flexibility allows it to fit in a variety of environments and can help streamline the development process for all stakeholders. Next, you'll be introduced to CD and will learn how to achieve it using Jenkins.
Through this book's wealth of best practices and real-world tips, you'll discover how easy it is to implement CI and CD using Jenkins.What you will learn Get to know some of the most popular ways to set up Jenkins See all the new features introduced in the latest Jenkins, such as pipeline as code, Multibranch pipeline, and more Manage users, projects, and permissions in Jenkins to ensure better security Leverage the power of plugins in Jenkins Learn how to create a CI pipeline using Jenkins Blue Ocean Create a distributed build farm using Docker and use it with Jenkins Implement CI and CD using Jenkins See the difference between CD and Continuous Deployment Understand the concepts of CIWho this book is for
The book is for those with little or no previous experience with Agile or CI and CD. It’s a good starting point for anyone new to this field who wants to leverage the benefits of CI and CD to increase productivity and reduce delivery time. It’s ideal for Build and Release engineers, DevOps engineers, SCM (Software Configuration Management) engineers, developers, testers, and project managers. If you’re already using Jenkins for CI, you can take your project to the next level—CD.
The book is appeals to a wide range of audience:
It can help a student/freshman who has just started programming
It can help a full time programmer to be more productive with Eclipse
It can help a seasoned programmer maintaining a huge software stack
Allen, the Director of Consulting for Typesafe—creator of Akka and the Scala programming language—examines actors with a banking-service use case throughout the book, using examples shown in Akka and Scala. If you have any experience with Akka, this guide is essential.Delve into domain-driven and work-distribution actor applicationsUnderstand why it’s important to have actors do only one jobAvoid thread blocking by allowing logic to be delegated to a FutureModel interactions as simply as possible to avoid premature optimizationCreate well-defined interactions, and know exactly what failures can occurLearn why you should never treat actors as you would an ordinary classKeep track of what goes on in production by monitoring everythingTune Akka applications with the Typesafe Console
With the introduction of the cloud, enterprise application development moved from monolithic applications to small lightweight process-driven components called microservices. Microservices are the next big thing in designing scalable, easy-to-maintain applications. It not only makes app development easier, but also offers great flexibility to utilize various resources optimally.
If you want to build an enterprise-ready implementation of the microservices architecture, then this is the book for you! Starting off by understanding the core concepts and framework, you will then focus on the high-level design of large software projects. You will gradually move on to setting up the development environment and configuring it before implementing continuous integration to deploy your microservice architecture. Using Spring security, you will secure microservices and test it effectively using REST Java clients and other tools. Finally, we'll show you the best practices and common principals of microservice design and you'll learn to troubleshoot and debug the issues faced during development.
By the end of the book, you will know how to build smaller, lighter, and faster services that can be implemented easily in a production environment.Style and approach
This book starts from the basics, including environment setup and provides easy-to-follow steps to implement the sample project using microservices. It gives you the complete lifecycle of enterprise app development from designing and developing to deploying, testing, and security. Each topic is explained and placed in context, and for the more inquisitive, there are more details of the concepts used.
This book is aimed at developers and system administrators who wish to take on larger responsibilities and understand how the infrastructure that builds today's enterprises works. This book is also great for operations personnel who would like to better support developers. You do not need to have any previous knowledge of DevOps.What You Will LearnAppreciate the merits of DevOps and continuous delivery and see how DevOps supports the agile processUnderstand how all the systems fit together to form a larger wholeSet up and familiarize yourself with all the tools you need to be efficient with DevOpsDesign an application that is suitable for continuous deployment systems with Devops in mindStore and manage your code effectively using different options such as Git, Gerrit, and GitlabConfigure a job to build a sample CRUD applicationTest the code using automated regression testing with Jenkins SeleniumDeploy your code using tools such as Puppet, Ansible, Palletops, Chef, and VagrantMonitor the health of your code with Nagios, Munin, and GraphiteExplore the workings of Trac—a tool used for issue trackingIn Detail
DevOps is a practical field that focuses on delivering business value as efficiently as possible. DevOps encompasses all the flows from code through testing environments to production environments. It stresses the cooperation between different roles, and how they can work together more closely, as the roots of the word imply—Development and Operations.
After a quick refresher to DevOps and continuous delivery, we quickly move on to looking at how DevOps affects architecture. You'll create a sample enterprise Java application that you'll continue to work with through the remaining chapters. Following this, we explore various code storage and build server options. You will then learn how to perform code testing with a few tools and deploy your test successfully. Next, you will learn how to monitor code for any anomalies and make sure it's running properly. Finally, you will discover how to handle logs and keep track of the issues that affect processesStyle and approach
This book is primarily a technical guide to DevOps with practical examples suitable for people who like to learn by implementing concrete working code. It starts out with background information and gradually delves deeper into technical subjects.
Angular: Up & Running covers most of the major pieces of Angular, but in a structured manner that is generally used in hands-on training. Each chapter takes one concept, and use examples to cover how it works. Problems to work on (with solutions) at the end of each chapter reinforce the learnings of each chapter and allow readers to really get hands-on with Angular.
Beginning with detailed instructions on how to install and configure the Android SDK, Studio, and Virtual Device Manager, the book moves on to creating a simple, but working, "Hello World" app that can be run on a real device or emulator.
The book then moves on to layouts and the visual design of Lollipop apps. A new app is begun to demonstrate this and expanded as we move further, and, once material design has been introduced, the book moves on to the Java coding aspect and how to write code that responds to user interactions via callback methods such as touchscreen gesture listeners. No book on Lollipop APIs would be complete without explaining how the new Android TV, Wear, and Auto SDK tools work and how they can be utilized to either create new apps or convert those originally written for other platforms.
The book concludes by demonstrating how to package and deploy your finished app on the Google Play store.
This book is for web developers who want to build web apps with Sails.js.
Sails.js makes it easy to build custom, enterprise-grade Node.js apps. It is designed to emulate the familiar MVC pattern of frameworks, but with support for the requirements of modern apps: data-driven APIs with a scalable, service-oriented architecture.
This book will provide practical examples to get you started with Sails.js and get you develop production-ready apps in no time. We will take you from a Node.js web server and single threading system to a general MVC architecture. You will then learn to develop applications that you might be already familiar with using Sails.js. Finally, we will show you how to create a chat app and a to-do application, and improve code quality using JSHINT and JSCS.Style and approach
This practical and easy-to-follow yet comprehensive guide will help you get to grips with the Sails.js framework. Each topic is explained and placed in context, and for the more inquisitive, there are more details of the concepts used.
If you are a JIRA developer or administrator, or a project manager who wants to fully exploit the exciting capabilities of JIRA, then this is the perfect book for you.What You Will LearnCreate and deploy your own JIRA pluginsManipulate workflows to transform JIRA into a user-friendly systemCreate custom reports that show statistics for particular people, projects, versions, or other fields within issuesSimplify reporting by writing your own JIRA gadgets, which can be added into a user's dashboardMaster database handling by extending and retrieving custom field details from the databaseDeal with custom fields on an issue and program custom field optionIn Detail
JIRA provides issue and project tracking for software development teams to improve code quality and the speed of development. With the new version of JIRA, you can create your own JIRA plugins and customize the look and feel of your JIRA UI easier than ever.
JIRA Development Cookbook , Third Edition, is a one-stop resource to master extensions and customizations in JIRA. This book starts with recipes about simplifying the plugin development process followed by recipes dedicated to the plugin framework. Then, you will move on to writing custom field plugins to create new field types or custom searchers. You will also learn how to program and customize workflows to transform JIRA into a user-friendly system. With so much data spanning different projects, issues, and so on, we will cover how to work on reports and gadgets to get customized data according to our needs. At the end of the book, you will learn how to customize JIRA by adding new tabs, menus, and web items; communicate with JIRA via the REST APIs; and work with the JIRA database.Style and approach
The most unique aspect of this book is its approach. This book is recipe-based, with real-world examples, that will empower you to implement agile processes and explore the exciting capabilities of Jira.
This book is for anyone who wants to exploit the power of Jenkins. This book servers a great starting point for those who are in the field DevOps and would like to leverage the benefits of CI and continuous delivery in order to increase productivity and reduce delivery time.What You Will LearnTake advantage of a continuous delivery solution to achieve faster software deliverySpeed up productivity using a continuous Integration solution through JenkinsUnderstand the concepts of CI and continuous deliveryOrchestrate many DevOps tools using Jenkins to automate builds, releases, deployment, and testingExplore the various features of Jenkins that make DevOps activities a piece of cakeConfigure multiple build machines in Jenkins to maintain load balancingManage users, projects, and permissions in Jenkins to ensure better securityLeverage the power of plugins in JenkinsIn Detail
In past few years, Agile software development has seen tremendous growth across the world. There is huge demand for software delivery solutions that are fast yet flexible to frequent amendments. As a result, CI and continuous delivery methodologies are gaining popularity. Jenkins' core functionality and flexibility allows it to fit in a variety of environments and can help streamline the development process for all stakeholders.
This book starts off by explaining the concepts of CI and its significance in the Agile world with a whole chapter dedicated to it. Next, you'll learn to configure and set up Jenkins. You'll gain a foothold in implementing CI and continuous delivery methods. We dive into the various features offered by Jenkins one by one exploiting them for CI.
After that, you'll find out how to use the built-in pipeline feature of Jenkins. You'll see how to integrate Jenkins with code analysis tools and test automation tools in order to achieve continuous delivery. Next, you'll be introduced to continuous deployment and learn to achieve it using Jenkins.
Through this book's wealth of best practices and real-world tips, you'll discover how easy it is to implement a CI service with Jenkins.Style and approach
This is a step-by-step guide to setting up a CI and continuous delivery system loaded with hands-on examples
Throughout the book, you’ll deal with an analogous workforce problem: how to schedule a group of people across a variety of projects while optimizing their time and skillsets. This example will help you understand how Akka uses actors, streams, and other tools to stitch your application together.Model software that reflects the real world with domain-driven designLearn principles and practices for implementing individual actorsUnlock the real potential of Akka with patterns for combining multiple actorsUnderstand the consistency tradeoffs in a distributed systemUse several Akka methods for isolating and dealing with failuresExplore ways to build systems that support availability and scalabilityTune your Akka application for performance with JVM tools and dispatchers
This book is for anyone who wants to discover and explore Yii Framework. Basic programming experience with PHP and object oriented programming is assumed.What You Will LearnUnderstand basic concepts, along with the installation and customization of YiiDiscover models, controllers, and views—concepts applied in a web context—and how they are employed in YiiUse ActiveRecord to manipulate a databaseAdd access control to your web application through authentication and authorizationInstall and customize an advanced template for multiple applications in the same projectCreate a RESTful Web Service to allow remote access to dataDevelop a console application to launch a command in the console as an automated task (cron job)Make code reusable through widgets and components and localize text messages to make a multilanguage web appIn Detail
Yii is a high-performance PHP framework best for developing Web 2.0 applications. It provides fast, secure, and professional features to create robust projects, however, this rapid development requires the ability to organize common tasks together to build a complete application. It's all too easy to get confused; this is where this book comes in.
This book contains a series of practical project examples for developers starting from scratch. Each section contains the most relevant theories for every topic as you walk through developing each project, focusing on key aspects that commonly confuse users.
The book starts with all the framework's basic concepts, such as controllers and views, to introduce you to Yii and creating your first application, a simple news reader. You will be learn to configure URL rules to make a pretty URL, essential for search engine optimization. Next, you will walk through Model and ActiveRecord, key concepts in database interaction.
The second application you will develop is a reservation system that allows you to manage rooms, customers, and reservations. For this, you will use database connection through SQL and ActiveRecord. More complex than the first one, this application will introduce you to the advanced template of Yii 2, splitting the app into two parts: a frontend for all visitors and a backend for the admin. Finally, you will move on to the last two applications: one that allows connections from remote clients, through RESTful components of Yii 2, and another that creates and organizes automatic tasks using the console application structure of Yii 2.Style and approach
This is a step-by-step guide with each topic introduced in the context of real-world applications, highlighting common cases where users may encounter difficulties.
If you are a developer or system administrator with a basic knowledge of messaging who wants to learn RabbitMQ, or if you want to further enhance your knowledge in working with the message broker, then this book is ideal for you. To fully understand some examples in the book, a basic knowledge of the Java programming language is required.What You Will LearnApply messaging patterns using the message brokerAdminister RabbitMQ using the command line, management Web console, or management REST servicesCreate a cluster of scalable, and highly-available, RabbitMQ instancesUse RabbitMQ with the Spring Framework, MuleESB, WSO2, and Oracle databasesDeploy RabbitMQ using Puppet, Vagrant, or DockerFine-tune the performance of RabbitMQMonitor RabbitMQ using Nagios, Munin, or MonitSecure, troubleshoot, and extend RabbitMQIn Detail
RabbitMQ is Open Source Message Queuing software based on the Advanced Message Queue Protocol Standard written in the Erlang Language. RabbitMQ is an ideal candidate for large-scale projects ranging from e-commerce and finance to Big Data and social networking because of its ease of use and high performance. Managing RabbitMQ in such a dynamic environment can be a challenging task that requires a good understanding not only of how to work properly with the message broker but also of its best practices and pitfalls.
Learning RabbitMQ starts with a concise description of messaging solutions and patterns, then moves on to concrete practical scenarios for publishing and subscribing to the broker along with basic administration. This knowledge is further expanded by exploring how to establish clustering and high availability at the level of the message broker and how to integrate RabbitMQ with a number of technologies such as Spring, and enterprise service bus solutions such as MuleESB and WSO2. We will look at advanced topics such as performance tuning, secure messaging, and the internals of RabbitMQ. Finally we will work through case-studies so that we can see RabbitMQ in action and, if something goes wrong, we'll learn to resolve it in the Troubleshooting section.Style and approach
Each chapter of the book is an easy-to-follow guide that expands and builds on the knowledge already gained in previous chapters. Throughout the course of the book, a sample system called the CSN (Corporate Social Network) is used to illustrate the core principles described. At the end of each chapter, there is a Q&A session that covers practical questions that may arise in practice when working with RabbitMQ.
If you are a Python programmer and want to get your hands on scientific computing, this book is for you. The book expects you to have had exposure to various concepts of Python programming.What You Will LearnFundamentals and components of scientific computingScientific computing data managementPerforming numerical computing using NumPy and SciPyConcepts and programming for symbolic computing using SymPyUsing the plotting library matplotlib for data visualizationData analysis and visualization using Pandas, matplotlib, and IPythonPerforming parallel and high performance computingReal-life case studies and best practices of scientific computingIn Detail
In today's world, along with theoretical and experimental work, scientific computing has become an important part of scientific disciplines. Numerical calculations, simulations and computer modeling in this day and age form the vast majority of both experimental and theoretical papers. In the scientific method, replication and reproducibility are two important contributing factors. A complete and concrete scientific result should be reproducible and replicable. Python is suitable for scientific computing. A large community of users, plenty of help and documentation, a large collection of scientific libraries and environments, great performance, and good support makes Python a great choice for scientific computing.
At present Python is among the top choices for developing scientific workflow and the book targets existing Python developers to master this domain using Python. The main things to learn in the book are the concept of scientific workflow, managing scientific workflow data and performing computation on this data using Python.
The book discusses NumPy, SciPy, SymPy, matplotlib, Pandas and IPython with several example programs.Style and approach
This book follows a hands-on approach to explain the complex concepts related to scientific computing. It details various APIs using appropriate examples.
If you are a system administrator or a DevOps engineer with responsibility for finding loop holes in your system or application, then this book is for you. It's also useful for security consultants looking to automate their infrastructure's security model.What You Will LearnUse Ansible playbooks, roles, modules, and templating to build generic, testable playbooksManage Linux and Windows hosts remotely in a repeatable and predictable mannerSee how to perform security patch management, and security hardening with scheduling and automationSet up AWS Lambda for a serverless automated defenseRun continuous security scans against your hosts and automatically fix and harden the gapsExtend Ansible to write your custom modules and use them as part of your already existing security automation programsPerform automation security audit checks for applications using AnsibleManage secrets in Ansible using Ansible VaultIn Detail
Security automation is one of the most interesting skills to have nowadays. Ansible allows you to write automation procedures once and use them across your entire infrastructure. This book will teach you the best way to use Ansible for seemingly complex tasks by using the various building blocks available and creating solutions that are easy to teach others, store for later, perform version control on, and repeat.
We'll start by covering various popular modules and writing simple playbooks to showcase those modules. You'll see how this can be applied over a variety of platforms and operating systems, whether they are Windows/Linux bare metal servers or containers on a cloud platform. Once the bare bones automation is in place, you'll learn how to leverage tools such as Ansible Tower or even Jenkins to create scheduled repeatable processes around security patching, security hardening, compliance reports, monitoring of systems, and so on.
Moving on, you'll delve into useful security automation techniques and approaches, and learn how to extend Ansible for enhanced security. While on the way, we will tackle topics like how to manage secrets, how to manage all the playbooks that we will create and how to enable collaboration using Ansible Galaxy. In the final stretch, we'll tackle how to extend the modules of Ansible for our use, and do all the previous tasks in a programmatic manner to get even more powerful automation frameworks and rigs.Style and approach
This comprehensive guide will teach you to manage Linux and Windows hosts remotely in a repeatable and predictable manner. The book takes an in-depth approach and helps you understand how to set up complicated stacks of software with codified and easy-to-share best practices.
Google's Golang will be the next talk of the town, with amazing features and a powerful library. This book will gear you up for using golang by taking you through recipes that will teach you how to leverage the standard library to implement a particular solution. This will enable Go developers to take advantage of using a rock-solid standard library instead of third-party frameworks. The book begins by exploring the functionalities available for interaction between the environment and the operating system. We will explore common string operations, date/time manipulations, and numerical problems. We'll then move on to working with the database, accessing the filesystem, and performing I/O operations. From a networking perspective, we will touch on client and server-side solutions. The basics of concurrency are also covered, before we wrap up with a few tips and tricks. By the end of the book, you will have a good overview of the features of the Golang standard library and what you can achieve with them. Ultimately, you will be proficient in implementing solutions with powerful standard libraries.What you will learn Access environmental variables Execute and work with child processes Manipulate strings by performing operations such as search, concatenate, and so on Parse and format the output of date/time information Operate on complex numbers and effective conversions between different number formats and bases Work with standard input and output Handle filesystem operations and file permissions Create TCP and HTTP servers, and access those servers with a client Utilize synchronization primitives Test your codeWho this book is for
This book is for Go developers who would like to explore the power of Golang and learn how to use the Go standard library for various functionalities. The book assumes basic Go programming knowledge.
A serious tool for programmers and web developers, no other text editor comes close to Vim for speed and efficiency. Make Vim the centerpiece of a Unix-based IDE as you discover new ways to work with Vim 8 and Neovim in more than 20 hands-on tips.
Execute tasks asynchronously, allowing you to continue in Vim while linting, grepping, building a project, or running a test suite. Install plugins to be loaded on startup - or on-demand when you need them - with Vim 8's new package support. Save and restore sessions, enabling you to quit Vim and restart again while preserving your window layout and undo history. Use Neovim as a drop-in replacement for Vim - it supports all of the features Vim 8 offers and more, including an integrated terminal that lets you quickly perform interactive commands. And if you enjoy using tmux and Vim together, you'll love Neovim's terminal emulator, which lets you run an interactive shell in a buffer. The terminal buffers fit naturally with Vim's split windows, and you can use Normal mode commands to scroll, search, copy, and paste. On top of all that: Neovim's terminal buffers are scriptable.
With Vim at the core of your development environment, you'll become a faster and more efficient developer.
What You Need:
You'll need a Unix-based environment and an up-to-date release of Vim (8.0 or newer). For the tips about running a terminal emulator, you'll need to install Neovim.
This book is a detailed IT Asset Management (ITAM) guidebook with real-world templates that can be converted into working ITAM documents. It is a step-by-step IT Asset Management manual for the newbies as well as the seasoned ITAM veterans, providing a unique insight into asset management. It discusses how risk management has changed over time and the possible solutions needed to address the new normal. This book is your perfect guide to create holistic IT Asset Management and Software Asset Management programs that close the risk gaps, increases productivity and results in cost efficiencies. It allows the IT Asset Managers, Software Asset Managers, and/or the full ITAM program team to take a deep dive by using the templates offered in the guidebook. You will be aware of the specific roles and responsibilities for every aspect of IT Asset Management, Software Asset Management, and Software License Compliance Audit Response. By the end of this book, you will be well aware of what IT and Software Asset Management is all about and the different steps, processes, and roles required to truly master it.What you will learn Close the hidden risk gaps created by IT assets (hardware and software) Create and manage a proactive ITAM and SAM program and policy A clear, concise explanation of what IT Asset Management and Software Asset Management is, the benefits, and results The best ways to manage a software audit and how to be prepared for one Considerations for selecting the best technology for a specific company including what questions should be asked at the onset Increasing ITAM program and project success with change managementWho this book is for
This book is intended for CIOs, VPs and CTOs of mid to large-sized enterprises and organizations. If you are dealing with changes such as mergers, acquisitions, divestitures, new products or services, cyber security, mandated regulations, expansion, and much more, this book will help you too.
Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained.
Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have "compile-time unit tests," and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API.
Solve real problems by focusing on real-world requirements for your software.
What You Need:
The code in this book is designed to be run interactively on Windows, Mac and Linux.You will need a recent version of F# (4.0 or greater), and the appropriate .NET runtime for your platform.Full installation instructions for all platforms at fsharp.org.
Clojure joins the flexibility and agility of Lisp with the reach, stability, and performance of Java. Combine Clojure's tools for maximum effectiveness as you work with immutable data, functional programming, and safe concurrency to write programs that solve real-world problems.
Start by reading and understanding Clojure syntax and see how Clojure is evaluated. From there, find out about the sequence abstraction, which combines immutable collections with functional programming to create truly reusable data transformation code. Clojure is a functional language; learn how to write programs in a functional style, and when and how to use recursion to your advantage. Discover Clojure's unique approach to state and identity, techniques for polymorphism and open systems using multimethods and protocols, and how to leverage Clojure's metaprogramming capabilities via macros. Finally, put all the pieces together in a real program.
New to this edition is coverage of Clojure's spec library, one of the most interesting new features of Clojure for describing both data and functions. You can use Clojure spec to validate data, destructure data, explain invalid data, and generate large numbers of tests to verify the correctness of your code.
With this book, you'll learn how to think in Clojure, and how to take advantage of its combined strengths to build powerful programs quickly.
What You Need:Java 6 or higherClojure 1.9
If you're a developer or electronics engineer who is curious about Internet of Things, then this is the course for you. A rudimentary understanding of electronics, Raspberry Pi, or similar credit-card sized computers, and some programming experience using managed code such as C# or Java will be helpful. Business analysts and managers will also find this course useful.What You Will LearnKnow the capabilities and limitations of the HTTP, UPnP, CoAP, MQTT, and XMPP protocolsUse important communication patterns, such as the request/respond, publish/subscribe, event subscription, asynchronous messaging, and multicasting patternsBuild a portable Wi-Fi signal strength sensor to give haptic feedback about signal strength to the userMeasure the water flow speed and volume with liquid flow sensors and record real-time readingsSecure your home with motion-activated Arduino security cameras and upload images to the cloudImplement real-time data logging of a solar panel voltage with Arduino cloud connectorsTrack locations with GPS and upload location data to the cloudControl infrared-enabled devices with IR remote and ArduinoUse Systems Security Engineering and Privacy-by-design principles to design a secure IoT ecosystemIn Detail
The IoT: Building Arduino-Based Projects course will take you on a journey to become an expert in the use of IoT by developing a set of projects and finally guide you onto securing your IoT environment.
The course begins with exploring the popular HTTP, UPnP, CoAP, MQTT, and XMPP protocols. In the first module Learning Internet of Things, you will learn how protocols and patterns can put limitations on network topology and how they affect the direction of communication and the use of firewalls. This module gives you a practical overview of the existing protocols, communication patterns, architectures, and security issues important to Internet of Things.
The second module, Internet of Things with Arduino Blueprints provides you up to eight projects that will allow devices to communicate with each other, access information over the Internet, store and retrieve data, and interact with users?creating smart, pervasive, and always-connected environments. You can use these projects as blueprints for many other IoT projects and put them to good use.
It has becomes critical to ensure that cyber security threats are contained to a minimum when implementing new IoT services and solutions. Thus, our third module, Practical Internet of Things Security provides a set of guidelines to architect and deploy a secure IoT in your Enterprise. The aim is to showcase how the IoT is implemented in early adopting industries and describe how lessons can be learned and shared across diverse industries to support a secure IoT.Style and approach
This course introduces you to the Internet of Things architecture, helps you build Arduino projects based on IoT and cloud computing concepts, create smart, pervasive and always-connected environments, and finally guide you onto securing your IoT environment. Each of these has been covered in individual modules so that you develop your skill after the completion of a module and get ready for the next
AWS is at the forefront of Cloud Computing today. Businesses are adopting AWS Cloud because of its reliability, versatility, and flexible design.
The main focus of this book is teaching you how to build and manage highly reliable and scalable applications and services on AWS. It will provide you with all the necessary skills to design, deploy, and manage your applications and services on the AWS cloud platform.
We’ll start by exploring Amazon S3, EC2, and so on to get you well-versed with core Amazon services. Moving on, we’ll teach you how to design and deploy highly scalable and optimized workloads. You’ll also discover easy-to-follow, hands-on steps, tips, and recommendations throughout the book and get to know essential security and troubleshooting concepts.
By the end of the book, you’ll be able to create a highly secure, fault tolerant, and scalable environment for your applications to run on.What you will learnFind out about IAM to access AWS services securelyExplore EC2 (virtual server) and scale up/down your application based on heavy trafficLearn about unlimited data storage service S3 and host a static website within minutesGet to grips with Relational Databases and NoSQL databases under the AWS ecosystemUnderstand the caching mechanismGet to know about notifications service and monitor AWS servicesSecure and troubleshoot your AWS architectureWho this book is for
This book is for IT professionals and system administrators looking to design, deploy, and manage your applications and services on the AWS cloud platform. It’s also ideal for developers looking to build highly scalable cloud-based services. A basic understanding of AWS would be beneficial.
Most information in the world is in text format, and programmers often find themselves needing to make sense of the data hiding within. It might be to convert it from one format to another, or to find out information about the text as a whole, or to extract information fromit. But how do you do this efficiently, avoiding labor-intensive, manual work?
Text Processing with Ruby takes a practical approach. You'll learn how to get text into your Ruby programs from the file system and from user input. You'll process delimited files such as CSVs, and write utilities that interact with other programs in text-processing pipelines. Decipher character encoding mysteries, and avoid the pain of jumbled characters and malformed output.
You'll learn to use regular expressions to match, extract, and replace patterns in text. You'll write a parser and learn how to process Web pages to pull out information from even the messiest of HTML.
Before long you'll be able to tackle even the most enormous and entangled text with ease, scything through gigabytes of data and effortlessly extracting the bits that matter.
What You Need:
This book requires a passing familiarity with the Ruby programming language, and assumes that you already have Ruby installed on your computer.
A step-by-step, tutorial-based guide
Written by consultants from the Software Improvement Group (SIG), this book provides clear and concise explanations, with advice for turning the guidelines into practice. Examples for this edition are written in C#, while our companion Java book provides clear examples in that language.Write short units of code: limit the length of methods and constructorsWrite simple units of code: limit the number of branch points per methodWrite code once, rather than risk copying buggy codeKeep unit interfaces small by extracting parameters into objectsSeparate concerns to avoid building large classesCouple architecture components looselyBalance the number and size of top-level components in your codeKeep your codebase as small as possibleAutomate tests for your codebaseWrite clean code, avoiding "code smells" that indicate deeper problems