Getting Started With NodeJS Feature Flags
|
|
- Brook Arnold
- 5 years ago
- Views:
Transcription
1 Guide Getting Started With NodeJS Feature Flags
2 INTRO We ve all done it at some point: thrown a conditional around a piece of code to enable or disable it. When it comes to feature flags, this is about as simple as it gets. But it s far from really taking advantage of the power of feature flags (also called feature toggles) to control functionality in our application. This guide will walk you through implementing a feature flag in NodeJS using the Rollout service. At the end of the article, you ll have a dead simple application that integrates with the feature flag service. Ready? Good. Let s get going! 2
3 STARTING WITH THE BASICS First, let s do some initial setup to make following this article easier. While we could create an entire NodeJS Express web application, we ll keep things simple and create a basic Hello Rollout application. First, let s create a new directory for our project and generate a package.json file using the npm init command. $ mkdir rollout-nodejs-demo && cd $_ rollout-nodejs-demo $ npm init Follow along with the prompts from the npm init command and just accept the defaults. After all of that, you ll have a new, bare-bones package.json file. { "name": "rollout-nodejs-demo", "version": "1.0.0", "description": "Example of using Rollout feature flags in NodeJS", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "repository": { "type": "git", "url": "...", "author": "Casey Dunham", "license": "MIT", "bugs": { "url": "...", "homepage": "...", "dependencies": { 3
4 Now, open up your favorite text editor, and let s create our app.js file. The app.js file will be our application s main entry point. const http = require('http'); const hostname = ' '; const port = 3000; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1> ; res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at Let s run our application and make sure we have it all in working order. rollout-nodejs-demo $ node app.js Server running at Finally, open your browser and navigate to where you ll see our venerable greeting. Alright, now that we ve verified that everything is working, let s get going and create our first feature flag. 4
5 YOUR FIRST NODEJS FEATURE FLAG Our application is functioning, but it s not very exciting. Now, let s say one day our product manager decides we need to show our visitors a motivational message. No problem! we say, and since we really like this product manager, their request goes to the head of our task queue. After a long meeting, the business decides what they want for a message. Don t ask; we weren t invited to the meeting. Let s go back to the app.js file and update it to include the new message. Based on our experience, we know how these requests can sometimes go, so we wrap the message in a conditional. This will allow us to easily turn it off later if they decide they don t want to show it anymore. Open up your app.js, and let s code this up before calling it a day. const http = require('http'); const hostname = ' '; const port = 3000; const showmotivationalquote = true; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at Now run the application to see your new message in all its wonderfully obtuse glory. Congratulations! You ve created your first feature flag in NodeJS. Now feel free to head home since you ve had such a productive day. 5
6 INTRODUCTION TO FEATURE FLAG MANAGEMENT Right now, you re probably wondering about the point of what we just did. I don t blame you. Our feature flag is a bit lackluster. It doesn t have any of the benefits of what we can get out of a proper feature flag. Feature flags are intended to help us release new functionality safely and without changing code. In order to achieve those goals, we need to do a bit more. We also haven t solved any problems with our current code. In fact, we wrote some code we didn t have to. Feature flags can quickly get us into technical debt if we aren t careful. We ll get to how to deal with that later in this article, so stick around. 6
7 GETTING THE CONFIGURATION OUT OF CODE Before moving on, let s move the feature flag configuration outside of our code. NodeJS will parse JSON files and bind them to a variable for us when using the require statement. Create a config.json file and add the following contents to it: { "showmotivationalquote": true Go back to your app.js file and update it to the following: const http = require('http'); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at We ve now moved the configuration outside of the code. However, if we want to change this, we ll still need to update the configuration file and redeploy our application. We could handle the setting via an environment variable, but that doesn t solve the problem. It just moves it to another layer of indirection. Implementing more flags in this manner will quickly make things complex and error-prone. And you know there will only be more changes coming. What we really want is to control the feature flag, and we want to do it without touching or releasing new code. In other words, what we re really looking for is a way to centrally manage feature flags. 7
8 CENTRALLY MANAGING FEATURE FLAGS At this point, you created a feature flag as a simple conditional and variable. Then, you took it a step further to move the value into a configuration file. This demonstrates the concept but doesn t help us out much. We still need to redeploy our application. Companies such as Google and Facebook use feature flags to perform dark launches and split testing. In order to reap the kinds of benefits these companies enjoy by using feature flags, we need to do more than just use a hard-coded variable. To turn feature flags into the powerful tool that they are, we need to centrally manage them. Luckily for us, you can do this as a service in NodeJS using Rollout. 8
9 GETTING STARTED WITH ROLLOUT Rollout will let you get started for free, so go ahead and create a Rollout account. Then sign in and create a new app. Under Installation Type, select Javascript as the language and NodeJS as the platform. After clicking the Start Installation button, we ll see a screen that describes how to use the SDK from NodeJS. Let s follow the instructions on the Rollout Javascript SDK window. We ll go through each of these steps here, but refer to the NodeJS documentation for more information. Let s install the Rox-node Rollout client package. rollout-nodejs-demo $ npm i rox-node save 9
10 This will update your NodeJS package.json file to include the Rox-node dependency. After running the command, your package.json file should look like the following: { "name": "rollout-nodejs-demo", "version": "1.0.0", "description": "Example of using Rollout feature flags in NodeJS", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "repository": { "type": "git", "url": "git+ "author": "Casey Dunham", "license": "ISC", "bugs": { "url": "...", "homepage": "...", "dependencies": { "rox-node": "^2.0.2" Next, we need to open up the confg.json file and add our API key into it. { "roxapikey": "5a68f9d5f807d908a ", "showmotivationalquote": true Finally, update your app.js file to read in the API key and add the call to Rox.setup(). const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.setup(config.roxAPIKey); console.log(`server running at 10
11 IMPLEMENTING FEATURE FLAGS Once all that is done, go back to the Rollout administration screen. You ll see that it s waiting for you to re-run your application. Do that, and the Rollout administration screen will reward you with a happy success screen. At this point, we ve successfully integrated the Rollout service into our application. We haven t created any feature flags yet, though, so let s get to work on that. We ll create a flags object that will act as a container for all of our feature flags. Go back to your app.js file and add this object. We ll also register this object with the Rox client before the setup call. const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const roxflags = { showmotivationalquote: new Rox.Flag() ; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.register("roxFlags", roxflags); Rox.setup(config.roxAPIKey); console.log(`server running at 11
12 Run the application and go back to the Rollout administration screen. You ll see that our feature flag was created and enabled on the server. Just like that, we ve created our first feature flag with Rollout. How cool is that? In order to make this feature flag useful, we need to add it to an experiment. Rollout manages feature flags through the concept of Experiments. Refer to the Rollout documentation for more information on experiments. For now, click on the Production link, as shown in the above screenshot. Next, click the Experiments link from the dropdown menu. Clicking on this will bring you to a screen with a Create an Experiment button. Go ahead and click that and fill out the new experiment window. 12
13 Fill out the New Experiment window with sensible information. Then click the Set Audience button and take a look at our next screen. Now we can start doing some interesting things! 13
14 CONTROLLING THE FEATURE FLAG Go back to your app.js file. We ve set up the Rox client, but we re still using the old variable to manage our motivational message. We can check the status of a feature flag through the isenabled() method on the flag. Update your app.js file to remove the hardcoded flag and use the Rollout feature flag instead. const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const roxflags = { showmotivationalquote: new Rox.Flag() ; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (roxflags.showmotivationalquote.isenabled()) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.register("roxFlags", roxflags); Rox.setup(config.roxAPIKey); console.log(`server running at While we re here, let s update our config.json file to remove the showmotivationalquote setting. { "roxapikey": "5a68f9d5f807d908a " Run your application and check it out in the browser. You ll see that our motivational message isn t displaying. What broke? Well, nothing. It s just that Rollout defaults all new feature flags to false. This can be changed when creating the flag, though. 14
15 So let s go back to the administration screen and update our feature flag by setting it to true. Don t forget to click the Update Audience button, as it doesn t save the changes automatically. Now run your application. You ll see the motivational message controlled through the use of Rollout s feature flag service. Congratulations! You ve just implemented your first feature flag as a service. Now you have the ability to change the behavior of your application all without touching configuration files or environment variables and without deploying new code. We can now gradually roll out new features to our user base or perform split testing between groups of users. We can also change the percentage of what users will see our new message. Go back to the Experiments screen with our feature flag and change it from true to split. When set to split, the interface allows us to change the percentage set to true. Here I set it to true for 30% of all users. Now run our application and delight in the non-determinism of whether or not we ll see our motivational message. 15
16 ISSUES WITH FEATURE FLAGS Feature flags are awesome. They enable us to run experiments in production. However, there are some risks to using feature flags. First, you can t just use one feature flag. Implement one, and another will follow. Go ahead and try to just give the marketing department a single one. Lest we get ourselves into trouble with technical debt, feature flags need management. They also need to have a retirement plan. YOU TAKE IT FROM HERE You can do even more with feature flags. Check out the Rollout documentation for more information on additional options and customize-ability. And the documentation also contains additional information on the management console. Feature flags are a powerful tool. They allow you to respond quickly to market trends and perform complicated A/B split testing all without updating or redeploying code. But you should keep it in mind that your feature flags need to be managed, and that management must be simple, effective, and centralized. 16
17 Rollout is an advanced feature management solution that gives engineering and product teams feature control, post-deployment. It s the most effective way to roll out new features to the right audience while protecting customers from failure and improving KPI s. For more information: visit us at support@rollout.io 17
Getting Started With Android Feature Flags
Guide Getting Started With Android Feature Flags INTRO When it comes to getting started with feature flags (Android feature flags or just in general), you have to understand that there are degrees of feature
More informationGetting Started With Feature Toggle in Java
Guide Getting Started With Feature Toggle in Java INTRO Feature toggles (also known as feature flags) are simple. You want to introduce new behavior in a Java application, but you re not ready to turn
More informationWhat is Node.js? Tim Davis Director, The Turtle Partnership Ltd
What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks
More informationIntroduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum
Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Table of Contents Preparation... 3 Exercise 1: Create a repository. Use the command line.... 4 Create a repository...
More informationBackend Development. SWE 432, Fall Web Application Development
Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy
More informationTools. SWE 432, Fall Design and Implementation of Software for the Web
Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much
More informationHands-on Lab Session 9011 Working with Node.js Apps in IBM Bluemix. Pam Geiger, Bluemix Enablement
Hands-on Lab Session 9011 Working with Node.js Apps in IBM Bluemix Pam Geiger, Bluemix Enablement Copyright IBM Corporation 2017 IBM, the IBM logo and ibm.com are trademarks of International Business Machines
More informationGetting started with Tabris.js Tutorial Ebook
Getting started with Tabris.js 2.3.0 Tutorial Ebook Table of contents Introduction...3 1 Get started...4 2 Tabris.js in action...5 2.1 Try the examples...5 2.2 Play with the examples...7 2.3 Write your
More information5th April Installation Manual. Department of Computing and Networking Software Development Degree
5th April 2017 Installation Manual Department of Computing and Networking Software Development Degree Project name: Student: Student Number: Supervisor: MaaP (Message as a Platform) Chihabeddine Ahmed
More information2 Initialize a git repository on your machine, add a README file, commit and push
BioHPC Git Training Demo Script First, ensure that git is installed on your machine, and you have configured an ssh key. See the main slides for instructions. To follow this demo script open a terminal
More informationHow to set up SQL Source Control The short guide for evaluators
GUIDE How to set up SQL Source Control The short guide for evaluators 1 Contents Introduction Team Foundation Server & Subversion setup Git setup Setup without a source control system Making your first
More informationIntroduction to Express.js. CSC309 Feb. 6, 2015 Surya Nallu
Introduction to Express.js CSC309 Feb. 6, 2015 Surya Nallu What is Express.js? Web application framework for Node.js Light-weight and minimalist Provides boilerplate structure & organization for your web-apps
More informationWeb Server Setup Guide
SelfTaughtCoders.com Web Server Setup Guide How to set up your own computer for web development. Setting Up Your Computer for Web Development Our web server software As we discussed, our web app is comprised
More informationAutomate with Grunt. Extracted from: The Build Tool for JavaScript. The Pragmatic Bookshelf
Extracted from: Automate with Grunt The Build Tool for JavaScript This PDF file contains pages extracted from Automate with Grunt, published by the Pragmatic Bookshelf. For more information or to purchase
More informationHuman-Computer Interaction Design
Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo, Lab TA: Sean Kross Lab 1 - Version control and HTML (2017-10-06) by Michael Bernstein, Scott Klemmer, Philip Guo, and
More informationBuilding a Django Twilio Programmable Chat Application
Building a Django Twilio Programmable Chat Application twilio.com/blog/08/0/python-django-twilio-programmable-chat-application.html March 7, 08 As a developer, I ve always wanted to include chat capabilities
More informationPHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017
PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON Alexander Lichter June 27, 2017 Content of this lesson 1. Recap 2. Composer 3. JSON 4. Collections (next lesson) 1 Recap Recap Recap Recap
More informationCatbook Workshop: Intro to NodeJS. Monde Duinkharjav
Catbook Workshop: Intro to NodeJS Monde Duinkharjav What is NodeJS? NodeJS is... A Javascript RUNTIME ENGINE NOT a framework NOT Javascript nor a JS package It is a method for running your code in Javascript.
More informationNode.js. Node.js Overview. CS144: Web Applications
Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly
More informationHow to Add On-Screen Messages to Keep Users Informed
How to Add On-Screen Messages to Keep Users Informed Watch Video Version By Irene Bushnell, Intacct Practice Manager, Synergy Business Solutions One of the really cool features in both Dynamics SL and
More informationIonic Tutorial. For Cross Platform Mobile Software Development
About Ionic Tutorial For Cross Platform Mobile Software Development This Tutorial is for setting up a basic hybrid mobile application using the Ionic framework. The setup will be shown for both Mac and
More informationBackend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web
Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/
More informationEDGE, MICROSOFT S BROWSER
EDGE, MICROSOFT S BROWSER To launch Microsoft Edge, click the Microsoft Edge button (it s the solid blue E) on the Windows Taskbar. Edge Replaces Internet Explorer Internet Explorer is no longer the default
More informationQuick.JS Documentation
Quick.JS Documentation Release v0.6.1-beta Michael Krause Jul 22, 2017 Contents 1 Installing and Setting Up 1 1.1 Installation................................................ 1 1.2 Setup...................................................
More informationGetting Started Guide
Getting Started Guide The Getting Started Guide is for new Zendesk users who want to make the most out of their free trial and get to the know the system quickly. To jump to a specific part of the Getting
More informationCONVERSION TRACKING PIXEL GUIDE
Conversion Tracking Pixel Guide A Step By Step Guide to Installing a conversion tracking pixel for your next Facebook ad. Go beyond clicks, and know who s converting. PRESENTED BY JULIE LOWE OF SOCIALLY
More informationQuick Desktop Application Development Using Electron
Quick Desktop Application Development Using Electron Copyright Blurb All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means including information
More informationThis video is part of the Microsoft Virtual Academy.
This video is part of the Microsoft Virtual Academy. 1 In this session we re going to talk about building for the private cloud using the Microsoft deployment toolkit 2012, my name s Mike Niehaus, I m
More informationExercise 1. Bluemix and the Cloud Foundry command-line interface (CLI)
V10.1 Student Exercises EXempty Exercise 1. Bluemix and the Cloud Foundry command-line interface (CLI) What this exercise is about In this exercise, you sign on to Bluemix and create an application. You
More informationLab Exercise Git: A distributed version control system
Lunds tekniska högskola Datavetenskap, Nov 21, 2016 EDAF45 Programvaruutveckling i grupp projekt Labb 2 (Git): Labbhandledning Checked on Git versions: 2.7.4 Lab Exercise Git: A distributed version control
More informationUnifer Documentation. Release V1.0. Matthew S
Unifer Documentation Release V1.0 Matthew S July 28, 2014 Contents 1 Unifer Tutorial - Notes Web App 3 1.1 Setting up................................................. 3 1.2 Getting the Template...........................................
More informationHuman-Computer Interaction Design
Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 1 - Version control and HTML (2018-10-03) by Michael Bernstein, Scott Klemmer, Philip Guo, and Sean Kross [Announce
More informationWeb Development for Dinosaurs An Introduction to Modern Web Development
Web Development for Dinosaurs An Introduction to Modern Web Development 1 / 53 Who Am I? John Cleaver Development Team Lead at Factivity, Inc. An Introduction to Modern Web Development - PUG Challenge
More informationWe are assuming you have node installed!
Node.js Hosting We are assuming you have node installed! This lesson assumes you've installed and are a bit familiar with JavaScript and node.js. If you do not have node, you can download and install it
More informationAzure Developer Immersion Getting Started
Azure Developer Immersion Getting Started In this walkthrough, you will get connected to Microsoft Azure and Visual Studio Team Services. You will also get the code and supporting files you need onto your
More informationSnap-Ins Chat. Salesforce, Winter
Salesforce, Winter 18 @salesforcedocs Last updated: December 1, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc., as are other
More informationHow to Read AWStats. Why it s important to know your stats
How to Read AWStats Welcome to the world of owning a website. One of the things that both newbie and even old time website owners get overwhelmed by is their analytics and understanding the data. One of
More informationOmni-Channel for Administrators
Omni-Channel for Administrators Salesforce, Summer 18 @salesforcedocs Last updated: August 16, 2018 Copyright 2000 2018 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of
More informationEmberJS A Fitting Face for a D8 Backend. Taylor Solomon
EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON
More informationFor Volunteers An Elvanto Guide
For Volunteers An Elvanto Guide www.elvanto.com Volunteers are what keep churches running! This guide is for volunteers who use Elvanto. If you re in charge of volunteers, why not check out our Volunteer
More informationSubmitting your Work using GIT
Submitting your Work using GIT You will be using the git distributed source control system in order to manage and submit your assignments. Why? allows you to take snapshots of your project at safe points
More informationIDWedgeKB Serial Port and NodeJS
IDWedgeKB Serial Port and NodeJS The IDWedgeKB is a barcode scanner that reads and parses the information encoded on the 2D barcode found on U.S. Drivers Licenses. IDWedgeKB has two modes of operation;
More informationWeebly 101. Make an Affordable, Professional Website in Less than an Hour
Weebly 101 Make an Affordable, Professional Website in Less than an Hour Text Copyright STARTUP UNIVERSITY All Rights Reserved No part of this document or the related files may be reproduced or transmitted
More informationRed Hat 3scale 2-saas
Red Hat 3scale 2-saas Product For Use with Red Hat 3scale 2-saas Last Updated: 2018-11-07 Red Hat 3scale 2-saas Product For Use with Red Hat 3scale 2-saas Legal Notice Copyright 2018 Red Hat, Inc. The
More informationHuman-Computer Interaction Design
Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 6 - Connecting frontend and backend without page reloads (2016-11-03) by Michael Bernstein, Scott Klemmer, and Philip
More informationPROCE55 Mobile: Web API App. Web API. https://www.rijksmuseum.nl/api/...
PROCE55 Mobile: Web API App PROCE55 Mobile with Test Web API App Web API App Example This example shows how to access a typical Web API using your mobile phone via Internet. The returned data is in JSON
More informationnacelle Documentation
nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2
More informationInstalling PHP on Windows 10 Bash and Starting a Local Server
Installing PHP on Windows 10 Bash and Starting a Local Server Bash on Ubuntu/Windows is a way to use a command line to run all kinds of programs (including git!). But we ll want a Bash terminal to run
More informationOracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant
Oracle Digital Assistant TechExchange Article. Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant Stefan Wörmcke, February 2019 Digital assistants like
More informationweb.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.
web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make
More informationdjango-baton Documentation
django-baton Documentation Release 1.0.7 abidibo Nov 13, 2017 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................
More informationLive Agent for Support Agents
Live Agent for Support Agents Salesforce, Winter 18 @salesforcedocs Last updated: November 30, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of
More informationSnap-Ins Chat. Salesforce, Summer
Snap-Ins Chat Salesforce, Summer 17 @salesforcedocs Last updated: August 17, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc.,
More informationVIDEO 1: WHY IS SEGMENTATION IMPORTANT WITH SMART CONTENT?
VIDEO 1: WHY IS SEGMENTATION IMPORTANT WITH SMART CONTENT? Hi there! I m Angela with HubSpot Academy. This class is going to teach you all about planning content for different segmentations of users. Segmentation
More informationFull Stack Web Framework with BBG
Full Stack Web Framework with BBG *** This guide will be for mac/linux (All commands will be UNIX). Try Windows at your own risk. Intro to Meteor 1 Why Meteor 1 Installation 1 Mac 1 Creating Your First
More informationGAVIN KING RED HAT CEYLON SWARM
GAVIN KING RED HAT CEYLON SWARM CEYLON PROJECT A relatively new programming language which features: a powerful and extremely elegant static type system built-in modularity support for multiple virtual
More informationFRONT USER GUIDE Getting Started with Front
USER GUIDE USER GUIDE Getting Started with Front ESSENTIALS Teams That Use Front How To Roll Out Front Quick Start Productivity Tips Downloading Front Adding Your Team Inbox Add Your Own Work Email Update
More informationLab 1 - Introduction to Angular
Lab 1 - Introduction to Angular In this lab we will build a Hello World style Angular component. The key focus is to learn how to install all the required code and use them from the browser. We wont get
More informationTRUST YOUR WEBSITE TO THE EXPERTS PROFESSIONALLY DESIGNED AND FOUND EVERYWHERE THAT MATTERS
TRUST YOUR WEBSITE TO THE EXPERTS PROFESSIONALLY DESIGNED AND FOUND EVERYWHERE THAT MATTERS CONTENTS Trust HQBytes with your website 04 The HQBytes difference 10 Designed by professionals 05 Our websites
More informationHello! ios Development
SAMPLE CHAPTER Hello! ios Development by Lou Franco Eitan Mendelowitz Chapter 1 Copyright 2013 Manning Publications Brief contents PART 1 HELLO! IPHONE 1 1 Hello! iphone 3 2 Thinking like an iphone developer
More informationMoney Management Account
Money Management Account Overview Red represents debt accounts. Add An Account lets you add any account you want including loans, property, credit cards and investments. Click an account to edit it. Note:
More informationAdmin Center. Getting Started Guide
Admin Center Getting Started Guide Useful Links Create an Account Help Center Admin Center Agent Workspace Supervisor Dashboard Reporting Customer Support Chat with us Tweet us: @Bold360 Submit a ticket
More informationL.A.M.P. Stack Part I
L.A.M.P. Stack Part I By George Beatty and Matt Frantz This lab will cover the basic installation and some configuration of a LAMP stack on a Ubuntu virtual box. Students will download and install the
More informationStep 1: Setup a Gitlab account
Most of us agree that Continuous Integration (CI), Continuous Delivery (CD), cloud infrastructure, test automation, and configuration management make up the basics of devops. Depending on the scale of
More informationBasic Guide to Google+ Hangouts
Basic Guide to Google+ Hangouts To use the Hangout function on Google+, you will first need an account. If you already have a Gmail account, things are simpler, but it s similar to any other social networking
More informationChris Buckett. FOREWORD BY Seth Ladd MANNING 6$03/(&+$37(5
Chris Buckett FOREWORD BY Seth Ladd 6$03/(&+$37(5 MANNING Dart in Action by Chris Buckett Chapter 9 Copyright 2013 Manning Publications brief contents PART 1 INTRODUCING DART...1 1 Hello Dart 3 2 Hello
More informationChapter 4. Unix Tutorial. Unix Shell
Chapter 4 Unix Tutorial Users and applications interact with hardware through an operating system (OS). Unix is a very basic operating system in that it has just the essentials. Many operating systems,
More informationGetting Started with the HCA Plugin for Homebridge Updated 12-Nov-17
Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17 Table of Contents Introduction... 3 Getting Ready... 3 Step 1: Installing Bonjour... 5 Step 2: Installing Homebridge and the HCA Plugin...
More informationComposer and Drupal. CIDUG Meeting December 13, 2018 John Rearick
Composer and Drupal CIDUG Meeting December 13, 2018 John Rearick * Similar to other dependency managers such as: yum, apt, brew, macports, npm, pip, etc. * Helps manage dependency hell. * Lots of dependencies
More informationTop 3 Marketing Metrics You Should Measure in Google Analytics
Top 3 Marketing Metrics You Should Measure in Google Analytics Presented By Table of Contents Overview 3 How to Use This Knowledge Brief 3 Metric to Measure: Traffic 4 Direct (Acquisition > All Traffic
More informationHow to version control like a pro: a roadmap to your reproducible & collaborative research
How to version control like a pro: a roadmap to your reproducible & collaborative research The material in this tutorial is inspired by & adapted from the Software Carpentry lesson on version control &
More informationFull Stack boot camp
Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building
More informationTerm Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement
60 Minutes of Outlook Secrets Term Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement messages. Module 2 Assign
More informationOne of the fundamental kinds of websites that SharePoint 2010 allows
Chapter 1 Getting to Know Your Team Site In This Chapter Requesting a new team site and opening it in the browser Participating in a team site Changing your team site s home page One of the fundamental
More information2. What is Google App Engine. Overview Google App Engine (GAE) is a Platform as a Service (PaaS) cloud computing platform for developing and hosting web applications in Google-managed data centers. Google
More informationData Feeds Traffic Setup Instructions
Data Feeds Traffic Setup Instructions In this document we ll first cover data feeds and traffic, then we ll cover actual setup. Data feeds are simple to find and simple to setup. They are also often less
More informationBlueMix Hands-On Workshop Lab A - Building and Deploying BlueMix Applications
BlueMix Hands-On Workshop Lab A - Building and Deploying BlueMix Applications Version : 4.00 Last modification date : 13 June 2014 Owner : IBM Ecosystem Development Table of Contents Part 1: Building
More informationDEPLOYING A 3SCALE API GATEWAY ON RED HAT OPENSHIFT
TUTORIAL: DEPLOYING A 3SCALE API GATEWAY ON RED HAT OPENSHIFT This tutorial describes how to deploy a dockerized version of the 3scale API Gateway 1.0 (APIcast) that is packaged for easy installation and
More informationSPRITES Moving Two At the Same Using Game State
If you recall our collision detection lesson, you ll likely remember that you couldn t move both sprites at the same time unless you hit a movement key for each at exactly the same time. Why was that?
More informationFB Image Contest. Users Manual
FB Image Contest Users Manual Table of contents Description.. 3 Step by step installation... 5 The administration interface.. 10 Creating a new contest... 13 Creating a Facebook Application.. 19 Adding
More informationIBM Image-Analysis Node.js
IBM Image-Analysis Node.js Cognitive Solutions Application Development IBM Global Business Partners Duration: 90 minutes Updated: Feb 14, 2018 Klaus-Peter Schlotter kps@de.ibm.com Version 1 Overview The
More informationDynamism and Detection
1 Dynamism and Detection c h a p t e r ch01 Page 1 Wednesday, June 23, 1999 2:52 PM IN THIS CHAPTER Project I: Generating Platform-Specific Content Project II: Printing Copyright Information and Last-Modified
More informationLab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service
Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Overview In this lab, you'll create advanced Node-RED flows that: Connect the Watson Conversation service to Facebook
More informationFull Website Audit. Conducted by Mathew McCorry. Digimush.co.uk
Full Website Audit Conducted by Mathew McCorry Digimush.co.uk 1 Table of Contents Full Website Audit 1 Conducted by Mathew McCorry... 1 1. Overview... 3 2. Technical Issues... 4 2.1 URL Structure... 4
More informationClickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1
Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me
More informationTask-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner
Task-Oriented Solutions to Over 175 Common Problems Covers Eclipse 3.0 Eclipse CookbookTM Steve Holzner Chapter CHAPTER 6 6 Using Eclipse in Teams 6.0 Introduction Professional developers frequently work
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationgit commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b
Git Cheat Sheet Git Basics Rewriting Git History git init Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository. git commit
More informationvsphere APIs and SDKs First Published On: Last Updated On:
First Published On: 07-30-2017 Last Updated On: 07-30-2017 1 Table of Contents 1. vsphere Automation APIs (REST) 1.1.vSphere API Explorer 1.2.vSphere Automation APIs - Introduction 2. vsphere Automation
More informationHow to Add a Favicon in Ruby on Rails Apps
How to Add a Favicon in Ruby on Rails Apps Favicons are this nifty little icons on the tab of your browser to help give a little personalized identity rather than the blank page one which is the default
More informationRegistering for the Apple Developer Program
It isn t necessary to be a member of the Apple Developer Program if you don t intend to submit apps to the App Stores, or don t need the cloud-dependent features. We strongly recommend joining, though,
More informationGearing Up for Development CS130(0)
Gearing Up for Development CS130(0) Development Development is a coding heavy assignment! You will need to create application using React.js (a Javascript Library). This application will display a list
More informationGSAK (Geocaching Swiss Army Knife) GEOCACHING SOFTWARE ADVANCED KLASS GSAK by C3GPS & Major134
GSAK (Geocaching Swiss Army Knife) GEOCACHING SOFTWARE ADVANCED KLASS GSAK - 102 by C3GPS & Major134 Table of Contents About this Document... iii Class Materials... iv 1.0 Locations...1 1.1 Adding Locations...
More informationChapter 1 - Development Setup of Angular
Chapter 1 - Development Setup of Angular Objectives Key objectives of this chapter Angular Files and Dependencies Node.js Node package manager (npm) package.json Semantic version numbers Installing Angular
More informationCICD pipeline for your extensions with Visual Studio Team Services
2017-10-11 8:11:00 AM - v2 rev2 CICD pipeline for your extensions with Visual Studio Team Services AUTHORS REVIEWERS TESTERS Willy Schaub Dave McKinstry, David Sanchez Aguilar, Derek Keeler, Hosam Kamel,
More informationdjango-baton Documentation
django-baton Documentation Release 1.3.1 abidibo Nov 05, 2018 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................
More information13 Tried and True Growth Hacking Strategies
13 Tried and True Growth Hacking Strategies Growth Tip #1. Use Click Popups to Make Conversion Super Easy Click popups have, in many ways, replaced much of the need for squeeze pages. Every time you would
More information1 Installation (briefly)
Jumpstart Linux Bo Waggoner Updated: 2014-09-15 Abstract A basic, rapid tutorial on Linux and its command line for the absolute beginner. Prerequisites: a computer on which to install, a DVD and/or USB
More informationSunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.
Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS 1 Introduction MOBILE, SOCIAL & CLOUD ARE RAISING CUSTOMER EXPECTATIONS We need a way to deliver software so fast that our
More informationmismatch between what is maybe possible today and what is going on in many of today's IDEs.
What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to
More information