Automate ALL the Phings!
|
|
- Pearl Carroll
- 5 years ago
- Views:
Transcription
1 Let your computer do the hard work Automate ALL the Phings! What if you could automate deploying your sites, restoring your database, and sending out reports? With Phing, you can do all this and more. by Joey Rivera Phing, which stands for Phing is not GNU make, is a command line build tool. You write an XML file with instructions of what you need automated, call the script, and it ll perform all those operations for you. It s the same concept as Apache Ant which is used mainly for Java. Phing is very flexible, extendable and platform independent. It is also written in PHP. Why do we need Phing? Efficiency, time, quality to mention a few Phing lets you streamline processes so you don t have to do them. Anything you or your team find yourselves doing manually daily, weekly, or monthly can be automated with a build tool such as Phing so you can focus on more important tasks. An example of a common process is moving files from one server environment to another. Let s say when you need to deploy your site to production, you usually tar/zip your project folder, then ftp/sftp it up to the server. You wait patiently, and when it's uploaded, you log into the server and un-compress the file. That s a few steps which don t sound like much - but wouldn t you rather make one call in the command line and let all that happen unattended, freeing up your time to be more productive? There are various reasons why we use Phing at my job. First, people aren t perfect and will make mistakes. You can ask a person to do the same task 100 times and chances are they ll make a mistake at least once. On the other hand, you can ask a computer to do the same task 100 times and (assuming you asked it to do the right task) it will perform the task correctly 100 times. The next reason was to reduce the amount of time spent by developers doing manual work. No one here likes to spend their time doing what we all see as being busy work so to improve our quality of work-life we looked around for ways to separate ourselves from those tasks and let Phing take over. This lead us to a Web & PHP Magazine istockphoto.com/mecaleha
2 happier team and because we were able to run these processes more often we also became more efficient. Alright, got it how do we get started? The easiest way to install Phing is through PEAR. The assumption here is that you already have PEAR setup on your machine. While in the command line you simply want to discover the Phing channel and then install the Phing package. The commands are: $ pear channel-discover pear.phing.info $ pear install Phing/Phing Software Source PHP PHPUnit Xdebug SimpleTest beta+ phpdocumentor VersionControl_SVN VersionControl_Git PHP_CodeSniffer Archive_Tar Services_Amazon_S3 HTTP_Request2 PHP Depend PHP Mess Detector PHP Copy/Paste Detector Table 1: A selection of Phing dependencies (source: If you don t have PEAR you can download the packaged file at [1]. After you unpack the files, make sure to add the Phing executable file to your system path so you can call it from anywhere. If you run into any issues, make sure to reference the installation documentation [2] as it has lots of great and useful information. You can also install Phing through composer. The only thing about that is normally I setup Phing as a system wide tool and not on a project by project basis which is how I see composer. If you did want to use composer to install Phing you can find more information at [3]. I tried this route and quickly found some dependencies were not in composer therefor not allowing me to install them so I went back to PEAR for Phing. Out of the box Phing has the capability of doing all kinds of things but depending on the use, you may need some extra dependencies. Table 1 has a few example dependencies you may want to consider after installing Phing (Table 1). The two big ones for deployment use are SVN and/ or Git depending on which you use. We still use SVN so that s the next thing I usually install. You can click on the links to get information on how to install those dependencies most of which are installed through PEAR. Don t feel like you need to install everything upfront, you can just install Phing first and down the road when you find out you need something else, install that piece. If everything is working correctly, you should be able to open up a command line window and type Phing v. After hitting enter you should see something like Phing in the prompt. If you don t, go through the install steps again to see if you missed anything. Structure of a Phing build file Project: At the heart of a Phing application is a build.xml file. This file contains all the instructions you need Phing to perform. The file starts out with a project node. Inside the project you can have one or many targets (think of them as methods you d want to call). Each target can have one or many task the actual individual processes to run. There are also a few other things like types, properties, filters, mappers, and conditions but we ll cover those later. Here is a sample build file taken from [4]. In this example you can see the project node at the top with a name of FooBar and a default property with the value dist. Name is simply the name you want to give this project and default, which is a required property, is the target that will get called by default when running Phing on this build.xml file if you do not specify the target. The documentation is extremely helpful at explaining which properties are required and what they do [5]. Target: Targets are grouping of tasks used to achieve some result so I think of them as a method in a class. You can use as many tasks as you need in a target. Targets can also depend on other targets; in the example above, you ll notice the dist target depends on the build target. This means, if you call the dist target directly and build has not yet ran, Phing will automatically run build first and then call dist. Task: Within targets you usually have one or many tasks the single pieces of executable code. These are the actions that you want to take place such as copy, delete, echo, foreach, ftp, etc. There are many tasks build-in to Phing and you can always create your own. For a list of the built-in tasks check the docs [6]. Property: The other piece you ll be asking yourself about is variables? There are a couple ways to create variables. In Phing variables are called properties. These can be defined globally to all your targets or you can also define some specific to a target. The scope is determined by where you create your property. If you create the property in a target, then it s usable in the target scope. You can declare properties inline, as an external file, or by asking the user for input. Below is an example showing all three: Web & PHP Magazine
3 <property name="name" value="joey"> <property file="property.file"> <input propertyname="last.name">what is your last name?</input> An external property file is a good way to store environment specific variables as well. For example, you can have a dev.properties, stage.properties, prod. properties each with the proper information. To create a properties file, simply create a new file and start adding key/value pairs in each line with an equal sign. You can name the file anything you like with or without an extension. I usually call my files properties. Ex: name=joey last.name=rivera version=1.0.0 Keep in mind there are also various built-in properties in Phing such as: application.startdir: Current work directory. env.*: Environment variables, extracted from $_ SERVER. host.arch: System architecture, i.e. i586. Not available on Windows machines. host.domain: DNS domain name, i.e. php.net. Not available on Windows machines. host.fstype: The type of the filesystem. Possible values are UNIX, WINNT and WIN32. host.name: Operating System hostname as returned by posix_uname(). Not available on Windows machines. host.os: Operating System description as set in PHP_OS variable (see PHP Manual). You can find the entire list in the documentation [7]. The syntax to call a variable is a ${variablename}. For example: Listing 1 <project name="foobar" default="dist"> <!-- Target: prepare --> <target name="prepare"> <echo msg="making directory./build" /> <mkdir dir="./build" /> <!-- Target: build --> <target name="build" depends="prepare"> <echo msg="copying files to build directory..." /> <echo msg="copying./about.php to./build directory..." /> <copy file="./about.php" tofile="./build/about.php" /> <echo msg="copying./browsers.php to./build directory..." /> <copy file="./browsers.php" tofile="./build/browsers.php" /> <echo msg="copying./contact.php to./build directory..." /> <copy file="./contact.php" tofile="./build/contact.php" /> <!-- (DEFAULT) Target: dist --> <target name="dist" depends="build"> <echo msg="creating archive..." /> <tar destfile="./build/build.tar.gz" compression="gzip"> <fileset dir="./build"> <include name="*" /> </fileset> </tar> <echo msg="files copied and compressed in build directory OK!" /> <echo>${name}</echo> <svninfo repositoryurl="${svn.repo.url}" /> <equals arg1="${env}" arg2="development" /> Other Goodies: Phing also has types, filters, mappers, and conditions. You can read the documentation to learn more about them but very high level: Types: more complex data types such as a FileSet to include or exclude types of files based on rules. Filters: These transform data such as Tidy, Strip- PhpComments. Mappers: Like filters but for files and directories like Flatten, RegExp, Glob Conditions: Allow you to create conditional statements such as if/else, comparisons, and can be nested. Examples Hello World : A quick basic hello world example would look like the following. Create a build.xml file and add the following to it: Web & PHP Magazine
4 <project name="helloworld" default="hello"> <target name="hello"> <echo>hello ${name}</echo> Now, in the same folder where you placed the build. xml file, type Phing in the command line and enter. You should see Hello ${name}. But what we really want to do is to pass the name as an argument so it shows up. Let s pass an argument to the script and try again. To do this in command line simply call Phing Dname=Joey. This time you should see Hello Joey. What we did was tell Phing we want to pass a property by using D, the property is name and the value is Joey. If you didn t want to pass the name as an argument, you could also declare the property in the build.xml by adding: <project name="helloworld" default="hello"> <property name="name" value="joey"> <target name="hello"> <echo>hello ${name}</echo> This declares a global property name with value Joey. If you try this example by running Phing without passing any arguments, you should see Hello Joey. Deployments This was our biggest area of improvement which was also our biggest headache before Phing. At first, we used to create a list of all the files that were modified for the iteration and manually copy/paste each file over from one place to another. Quite often we d forget one file and create problems for our customers. Then we went to another strategy where we d export the entire application from SVN to production. This had its own problems since the entire application has thousands of files and it was time consuming and inefficient to copy over all these files just because a handful of files changed. Trying to solve this problem was why we started working with Phing. Thanks to Phing we now follow a continuous delivery approach to make sure when code is committed it ends up in the proper server within a couple minutes in an automated fashion. A continuous integration server might have made this easier but we use a Phing script and setup different cron jobs for the different environments and applications we have. Our application on development gets checked often while our applications in the QA environment only get updated once a day. We have a cron rule that calls our deployment script every 2 minutes passing it the development environment and the name of the application to check. Based on the arguments passed, Phing checks the proper SVN repo, in this case trunk, to see if anything has changed since the last time it was checked. If something changed, it does a diff between the two revisions and deploys only the changes to the proper server location. We deploy to production once a month. To deploy to production we call the deployment script, pass the application name and the production environment argument and the script will do a diff between the tag that is currently in production and the newest tag in the repo and deploys the changes. It usually takes only a few seconds to run and best of all, no files are EVER missed anymore! The script is pretty large to put it all here but below are a few snippets of the build.xml for examples. <svndiff repoa="${url.repo.from}" repob="${url.repo.to}" propertyname="svn.diff" /> This uses a custom task we created to compare two different svn repositories for changes. This is how we know if there are any changes and what they are. It s basically running svninfo xml sumarize repoa repob. Listing 2 is an example of using a try/catch in case you know there are scenarios where things could break. In this case we run svn info on a repository that may or may not be there and create a property check. repo with the value of broke if it s not found. In this example you can see how we used an if/ else to run a different command on linux vs windows. Most of the times we try to make our scripts platform independent but there are times where we need to do these types of checks. <phingcall target="done"></phingcall> The above line is an example of calling another target inside of a target. In Listing 3 you can see how we used an if/else to run a different command on linux vs windows. Most of the times we try to make our scripts platform independent but there are times where we need to do these types of checks. Listing 2 <trycatch property="tryworked"> <try> <svninfo repositoryurl="${url.repo.from}" element="entry" subelement="path" propertyname="check.repo" /> </try> <catch> <property name="check.repo" value="broke" override="true" /> </catch> </trycatch> Web & PHP Magazine
5 DB Restore: Pre-Phing, we rarely used to restore databases to match the data in production. This lead to multiple issues such as being unable to recreate problems in our staging environment since the data didn t match production. Or when finding an issue in our QA server, we didn t know if this was caused by the code changes in the new iteration or a false-positive due to invalid configured data. The reason we were restoring the database was because it just took too long. Having many copies of each database (development, staging, QA, and testing) it would take a person all day to get the latest backup from production and one at a time create all databases. The next issue was after all database were created, make sure to remember to run specific scripts on specific database servers to obfuscate the data and/or create account for our QA testers. After months of trying to do the above more often always seeming to forget a step in the process we decided it was time to let Phing take over. Within a few days of planning, crafting and testing, we came up with our first functional Phing script to take over our Listing 3 <if> <equals arg1="${host.fstype}" arg2="unix" /> <then> <exec command="chmod -R 775 ${path.build}" /> <exec command="${copy.command} ${path.build}/. ${copy.to.path}/" checkreturn="true" /> </then> <else> <exec command='xcopy "${path.build}" "${copy.to.path}" /E /Y' checkreturn="true" /> </else> </if> database restorations [8] (what we call it here). Over the last year it has been tweaked to make it more robust and this is what the script does now: Prompts for ssh username Cleans up environment (delete all tmp folder and create new one) Scp latest production db.dump file for the specific database Loops and sets all sites using the db s to maintenance mode by adding a file to the site Restarts postgres to kick off any active connection to the db Loops and drops/recreates the databases Restores staging from the production dump file All others are templates of staging which in Postgres executing much faster to create from template than to restore from scratch. Runs any database specific scripts Turns all sites back on Reporting: We have a third party vendor we use for handling loan applications for us. Every night we need to grab a report from their site to see who has applied for a loan and what the status of their application is. We had an individual log into the third party s system every morning, click around the site to get to the reports, select the correct date range, generate and download the PDF and finally it out to a few key people. This took enough of someone time where we felt it made sense to simply automate this with Phing. We talked to the third party vendor and asked them to automate this report and sftp it to us every night. We then created a Phing script that goes into our sftp location, grabs the file, and s it out to the few key people at a certain time of the day every day and then moves the file somewhere else. It took us but a couple hours to do and now we can free time from this person s day to focus on something else. The only tricky part about this was the piece. For this, we used the Exec task in Phing to execute a shell command in our Linux environment. The task simply called the mutt command line client passing the proper parameters for the attachment file and recipients and that was it, everything worked like a charm. Conclusion Hope you enjoyed the article. We covered a few benefits of using Phing as well as a few examples on how we use Phing. I do recommend spending some time trying it out, I m sure everyone could find a good use for it. If you have any questions or need help understanding the scripts above feel free to reach me In working with web technologies, Joey Rivera discovered a passion for PHP. He has spent the last few years at Cengage Learning [9] working on multiple projects and improving processes along the way. Not only does he enjoy development but he enjoys sharing as well through his blog [10] or presenting at the local Atlanta PHP Usergroup [11]. When not in front of a computer you can find Joey at the gym, driving his car around the track, or hanging out with his wife and daughter. References [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Web & PHP Magazine
What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)
1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?
More informationEPISODE 23: HOW TO GET STARTED WITH MAILCHIMP
EPISODE 23: HOW TO GET STARTED WITH MAILCHIMP! 1 of! 26 HOW TO GET STARTED WITH MAILCHIMP Want to play a fun game? Every time you hear the phrase email list take a drink. You ll be passed out in no time.
More informationCOMS 6100 Class Notes 3
COMS 6100 Class Notes 3 Daniel Solus September 1, 2016 1 General Remarks The class was split into two main sections. We finished our introduction to Linux commands by reviewing Linux commands I and II
More informationHello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications
Hello World! Computer Programming for Kids and Other Beginners by Warren Sande and Carter Sande Chapter 1 Copyright 2009 Manning Publications brief contents Preface xiii Acknowledgments xix About this
More informationTDDC88 Lab 4 Software Configuration Management
TDDC88 Lab 4 Software Configuration Management Introduction "Version control is to programmers what the safety net is to a trapeze artist. Knowing the net is there to catch them if they fall, aerialists
More informationA Guide to Finding the Best WordPress Backup Plugin: 10 Must-Have Features
A Guide to Finding the Best WordPress Backup Plugin: 10 Must-Have Features \ H ow do you know if you re choosing the best WordPress backup plugin when it seems that all the plugins seem to do the same
More informationUsing GitHub to Share with SparkFun a
Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing
More informationMoving from FrameMaker to Blaze: Best Practices
Moving from Adobe FrameMaker to MadCap Blaze is easy, although to get the best results you need to do some planning before you start. This document discusses suggestions and issues to make the import result
More informationIf you re the administrator on any network,
Let s do an inventory! If you re the administrator on any network, chances are you ve already faced the need to make an inventory. In fact, keeping a list of all the computers, monitors, software and other
More informationClient Side JavaScript and AJAX
Client Side JavaScript and AJAX Client side javascript is JavaScript that runs in the browsers of people using your site. So far all the JavaScript code we've written runs on our node.js server. This is
More informationGetting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners
Getting Started Excerpted from Hello World! Computer Programming for Kids and Other Beginners EARLY ACCESS EDITION Warren D. Sande and Carter Sande MEAP Release: May 2008 Softbound print: November 2008
More informationWeb Hosting. Important features to consider
Web Hosting Important features to consider Amount of Storage When choosing your web hosting, one of your primary concerns will obviously be How much data can I store? For most small and medium web sites,
More informationCASE STUDY IT. Albumprinter Adopting Redgate DLM
CASE STUDY IT Albumprinter Adopting Redgate DLM "Once the team saw they could deploy all their database changes error-free at the click of a button, with no more manual scripts, it spread by word of mouth.
More informationRuby on Rails Welcome. Using the exercise files
Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,
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 informationUsing RANCID. Contents. 1 Introduction Goals Notes Install rancid Add alias Configure rancid...
Using RANCID Contents 1 Introduction 2 1.1 Goals................................. 2 1.2 Notes................................. 2 2 Install rancid 2 2.1 Add alias............................... 3 2.2 Configure
More informationDARING CHANGES IN ENTERPRISE GUIDE WITH A SAFETY NET
DARING CHANGES IN ENTERPRISE GUIDE WITH A SAFETY NET Lorne Salter, salchootchkin@gmail.com ABSTRACT Version Control is a super undo button and more according to Dave Thomas(1), a vault with every version
More informationWhat is PHP? [1] Figure 1 [1]
PHP What is PHP? [1] PHP is an acronym for "PHP: Hypertext Preprocessor" PHP is a widely-used, open source scripting language PHP scripts are executed on the server PHP is free to download and use Figure
More informationOpsCenter Basics Why Aren t You Using It?
OpsCenter Basics Why Aren t You Using It? This is a SELF-GUIDED LAB if you prefer. You are welcome to get started and leave when you are finished, or you can play with the OC instance to gain more knowledge.
More informationHow to Create a Killer Resources Page (That's Crazy Profitable)
How to Create a Killer Resources Page (That's Crazy Profitable) There is a single page on your website that, if used properly, can be amazingly profitable. And the best part is that a little effort goes
More informationCS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG
CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG 1 Notice Class Website http://www.cs.umb.edu/~jane/cs114/ Reading Assignment Chapter 1: Introduction to Java Programming
More informationReal Life Web Development. Joseph Paul Cohen
Real Life Web Development Joseph Paul Cohen joecohen@cs.umb.edu Index 201 - The code 404 - How to run it? 500 - Your code is broken? 200 - Someone broke into your server? 400 - How are people using your
More informationIntroducing Thrive - The Ultimate In WordPress Blog Design & Growth
Introducing Thrive - The Ultimate In WordPress Blog Design & Growth Module 1: Download 2 Okay, I know. The title of this download seems super selly. I have to apologize for that, but never before have
More informationBeginner s guide to continuous integration
Beginner s guide to continuous integration Gilles QUERRET Riverside Software US PUG Challenge 2013 What s continuous integration? Build, deployment and tests are long and boring tasks Development cycles
More informationMaster Syndication Gateway V2. User's Manual. Copyright Bontrager Connection LLC
Master Syndication Gateway V2 User's Manual Copyright 2005-2006 Bontrager Connection LLC 1 Introduction This document is formatted for A4 printer paper. A version formatted for letter size printer paper
More informationINTRODUCTION TO NOνASOFT AND SVN
INTRODUCTION TO NOνASOFT AND SVN Jan Zirnstein University of Minnesota Software Tutorials, April 02, 2014 J. Zirnstein Intro to NOνASoft 1 / 20 WHERE TO BEGIN Before you follow this guide: Get FNAL computing
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 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 informationCOPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition
1 Starting Strong with Visual C# 2005 Express Edition Okay, so the title of this chapter may be a little over the top. But to be honest, the Visual C# 2005 Express Edition, from now on referred to as C#
More informationSubversion was not there a minute ago. Then I went through a couple of menus and eventually it showed up. Why is it there sometimes and sometimes not?
Subversion was not there a minute ago. Then I went through a couple of menus and eventually it showed up. Why is it there sometimes and sometimes not? Trying to commit a first file. There is nothing on
More informationHere we will look at some methods for checking data simply using JOSM. Some of the questions we are asking about our data are:
Validating for Missing Maps Using JOSM This document covers processes for checking data quality in OpenStreetMap, particularly in the context of Humanitarian OpenStreetMap Team and Red Cross Missing Maps
More informationDigital Marketing Manager, Marketing Manager, Agency Owner. Bachelors in Marketing, Advertising, Communications, or equivalent experience
Persona name Amanda Industry, geographic or other segments B2B Roles Digital Marketing Manager, Marketing Manager, Agency Owner Reports to VP Marketing or Agency Owner Education Bachelors in Marketing,
More informationOpenEdge Management in the Real World. Paul Koufalis President Progresswiz Consulting
COMP-8: OpenEdge Management in the Real World Paul Koufalis President Progresswiz Consulting Progresswiz Consulting Based in Montréal, Québec, Canada Providing technical consulting in Progress, Oracle,
More informationIncident Response Tools
Incident Response Tools James Madison University Dept. of Computer Science June 13, 2013 1 Introduction Being successfully attacked is inevitable. A determined hacker WILL be able to penetrate your network.
More informationYour . A setup guide. Last updated March 7, Kingsford Avenue, Glasgow G44 3EU
fuzzylime WE KNOW DESIGN WEB DESIGN AND CONTENT MANAGEMENT 19 Kingsford Avenue, Glasgow G44 3EU 0141 416 1040 hello@fuzzylime.co.uk www.fuzzylime.co.uk Your email A setup guide Last updated March 7, 2017
More informationOutlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?
04 537598 Ch01.qxd 9/2/03 9:46 AM Page 11 Chapter 1 Fundamental Features: How Did You Ever Do without Outlook? In This Chapter Reading e-mail Answering e-mail Creating new e-mail Entering an appointment
More informationHow to rip, transcode, and prepare a DVD for network streaming
How to rip, transcode, and prepare a DVD for network streaming Step 1: (Decrypting original DVD) Use DVD Decrypter http://www.dvddecrypter.org.uk/setupdvddecrypter_3.5.4.0.exe]http://www.dvddecrypter.org.uk/set
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 informationCLIENT ONBOARDING PLAN & SCRIPT
CLIENT ONBOARDING PLAN & SCRIPT FIRST STEPS Receive Order form from Sales Representative. This may come in the form of a BPQ from client Ensure the client has an account in Reputation Management and in
More informationXP: Backup Your Important Files for Safety
XP: Backup Your Important Files for Safety X 380 / 1 Protect Your Personal Files Against Accidental Loss with XP s Backup Wizard Your computer contains a great many important files, but when it comes to
More informationLeakDAS Version 4 The Complete Guide
LeakDAS Version 4 The Complete Guide SECTION 4 LEAKDAS MOBILE Second Edition - 2014 Copyright InspectionLogic 2 Table of Contents CONNECTING LEAKDAS MOBILE TO AN ANALYZER VIA BLUETOOTH... 3 Bluetooth Devices...
More informationCLIENT ONBOARDING PLAN & SCRIPT
CLIENT ONBOARDING PLAN & SCRIPT FIRST STEPS Receive Order form from Sales Representative. This may come in the form of a BPQ from client Ensure the client has an account in Reputation Management and in
More informationBEGINNER PHP Table of Contents
Table of Contents 4 5 6 7 8 9 0 Introduction Getting Setup Your first PHP webpage Working with text Talking to the user Comparison & If statements If & Else Cleaning up the game Remembering values Finishing
More informationSTAUNING Credit Application Internet Sales Process with /Voic Templates to Non-Responsive Prospects 2018 Edition
STAUNING Credit Application Internet Sales Process with Email/Voicemail Templates to Non-Responsive Prospects 2018 Edition Contents 30-DAY CREDIT APPLICATION INTERNET SALES PROCESS... 2 DAY 1 AUTO-RESPONSE
More informationRecipes. Marketing For Bloggers. List Building, Traffic, Money & More. A Free Guide by The Social Ms Page! 1 of! 24
16 Recipes Email Marketing For Bloggers List Building, Traffic, Money & More A Free Guide by The Social Ms Page 1 of 24 Brought to you by: Jonathan Gebauer, Susanna Gebauer INTRODUCTION Email Marketing
More informationLab 1: Space Invaders. The Introduction
Lab 1: Space Invaders The Introduction Welcome to Lab! Feel free to get started until we start talking! The lab document is located on course website: https://users.wpi.edu/~sjarvis/ece2049_smj/ Be sure
More informationtextures not patterns
This tutorial will walk you through how to create a seamless texture in Photoshop. I created the tutorial using Photoshop CS2, but it should work almost exactly the same for most versions of Photoshop
More informationGit. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes
Git Charles J. Geyer School of Statistics University of Minnesota Stat 8054 Lecture Notes 1 Before Anything Else Tell git who you are. git config --global user.name "Charles J. Geyer" git config --global
More informationGetting Started With Squeeze Server
Getting Started With Squeeze Server & Squeeze Server takes the proven Squeeze encoding engine and makes it available on- premise, in the cloud or both, with a robust application programming interface (API)
More informationSECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE
SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis and CSE 390a OUTLINE Introductions Code Reasoning Version control IDEs
More informationWebMatrix: Why PHP Developers Should Pay Attention
WebMatrix: Why PHP Developers Should Pay Attention Gone are the days when PHP developers had to turn away business because the clients used Windows Servers. If you are a PHP developer and have been looking
More informationCisco Policy Suite 6.0 Backup and Restore Guide
Cisco Policy Suite 6.0 Guide Version 6.0 December 17, 2013 Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco
More informationImagery International website manual
Imagery International website manual Prepared for: Imagery International Prepared by: Jenn de la Fuente Rosebud Designs http://www.jrosebud.com/designs designs@jrosebud.com 916.538.2133 A brief introduction
More informationSitecore Projects with GatherContent
How to prepare content for Sitecore Projects with GatherContent By Jennifer Davies, Content Strategist, Razorfish Table of Contents 4 Introduction Guide overview 5 Step 1 Define your content structure
More informationCSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209
CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System
More informationFractions and their Equivalent Forms
Fractions Fractions and their Equivalent Forms Little kids use the concept of a fraction long before we ever formalize their knowledge in school. Watching little kids share a candy bar or a bottle of soda
More informationContinuous Integration using Cruise Control
Continuous Integration using Cruise Control Presented By Tom Grant PlatinumSolutions, Inc. Thursday, April 14 th, 2005 What is Integration? Definition: the act of combining into an integral whole In software
More informationSucuri Webinar Q&A HOW TO IDENTIFY AND FIX A HACKED WORDPRESS WEBSITE. Ben Martin - Remediation Team Lead
Sucuri Webinar Q&A HOW TO IDENTIFY AND FIX A HACKED WORDPRESS WEBSITE. Ben Martin - Remediation Team Lead 1 Question #1: What is the benefit to spammers for using someone elses UA code and is there a way
More informationPuppet - Feature #174 [PATCH] A native authorized_key type is available
Puppet - Feature #174 [PATCH] A native authorized_key type is available 06/14/2006 11:22 am - Redmine Admin Status: Closed Start date: Priority: Normal Due date: Assignee: Luke Kanies % Done: 0% Category:
More informationEclipse Classic is fine. The other options are specializ e for Java, C++ developers, etc. We just need to plain vanilla version.
FusionLink Labs Se tting up CFEclipse with Subve rsion (SVN) including Continuous Te sting with CFCUnit and Se le nium by John Mason, mason@ fusionlink.com This is a quick and dirty run through in how
More informationLesson 9 Transcript: Backup and Recovery
Lesson 9 Transcript: Backup and Recovery Slide 1: Cover Welcome to lesson 9 of the DB2 on Campus Lecture Series. We are going to talk in this presentation about database logging and backup and recovery.
More informationWant the *GUIDED* tour?
Want the *GUIDED* tour? 12 x12 layouts are great, and 8.5 x11 layouts are great too - BUT what if you want to great something that you can print (or have printed) right to standard photo paper? Shouldn
More information2016 All Rights Reserved
2016 All Rights Reserved Table of Contents Chapter 1: The Truth About Safelists What is a Safelist Safelist myths busted Chapter 2: Getting Started What to look for before you join a Safelist Best Safelists
More informationPost Experiment Interview Questions
Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid
More informationGit. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015
Git all meaningful operations can be expressed in terms of the rebase command -Linus Torvalds, 2015 a talk by alum Ross Schlaikjer for the GNU/Linux Users Group Sound familiar? add commit diff init clone
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 informationMeet our Example Buyer Persona Adele Revella, CEO
Meet our Example Buyer Persona Adele Revella, CEO 685 SPRING STREET, NO. 200 FRIDAY HARBOR, WA 98250 W WW.BUYERPERSONA.COM You need to hear your buyer s story Take me back to the day when you first started
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 informationTable of Contents What is Test Automation Framework?... 3 Different types of Frameworks used in QTP... 4 Linear Framework in QTP...
Table of Contents 1. What is Test Automation Framework?... 3 2. Different types of Frameworks used in QTP... 4 3. Linear Framework in QTP... 4 3.1 Components and Workflow of Linear Framework... 5 3.2 Advantages
More information3 Continuous Integration 3. Automated system finding bugs is better than people
This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can
More information2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS
SENG 371 SOFTWARE EVOLUTION LAB OUTLINE Introduction to Version Control Systems VERSION CONTROL SYSTEMS Subversion Git and Github 1 Prepared by Pratik Jain 2 INTRODUCTION TO VCS A version control system
More informationTELE301 Lab16 - The Secure Shell
TELE301 Lab16 - The Secure Shell Department of Telecommunications May 7, 2002 Contents 1 Introduction 2 2 OpenSSH 2 3 Replacing Telnet 2 4 Logging in without a password 2 5 SSH Agent 3 5.1 SSH Add..............................
More information6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5.
Page 1 of 5 6.170 Laboratory in Software Engineering Java Style Guide Contents: Overview Descriptive names Consistent indentation and spacing Informative comments Commenting code TODO comments 6.170 Javadocs
More information10 things you should know about Word 2010's mail merge tools
10 things you should know about Word 2010's mail merge tools By Katherine Murray December 6, 2010, 10:26 AM PST Takeaway: Word s mail merge process has traditionally been viewed as intimidating and complex.
More information7 Network Drive Mapped
Drupal Command Line Instructions Windows 7 Network Drive Mapped When we map a network drive persistently in windows 7 an entry relating to the See this question Edit another Windows install's registry
More information15 Minute Traffic Formula. Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3
Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3 HOW TO TURN YOUR OLD, RUSTY BLOG POSTS INTO A PASSIVE TRAFFIC SYSTEM... 4 HOW I USED THE GOOGLE KEYWORD PLANNER TO GET 11,908 NEW READERS TO
More informationLab 2 Building on Linux
Lab 2 Building on Linux Assignment Details Assigned: January 28 th, 2013. Due: January 30 th, 2013 at midnight. Background This assignment should introduce the basic development tools on Linux. This assumes
More informationThe 21 WORD . That Can Get You More Clients. Ian Brodie
The 21 WORD EMAIL That Can Get You More Clients Ian Brodie The 21 Word Email That Can Get You More Clients Hey there! Welcome to this short report on the 21 Word Email That Can Get You More Clients If
More information** Pre-Sell Page Secrets **
** Pre-Sell Page Secrets ** Page 1 - CommissionBlueprint.com 2008 Introduction Using a pre-sell page is a highly effective tactic that can be used in almost any market to motivate a visitor into purchasing
More information9 th CA 2E/CA Plex Worldwide Developer Conference 1
1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best
More informationGarment Documentation
Garment Documentation Release 0.1 Evan Borgstrom March 25, 2014 Contents i ii A collection of fabric tasks that roll up into a single deploy function. The whole process is coordinated through a single
More information0. Introduction On-demand. Manual Backups Full Backup Custom Backup Store Your Data Only Exclude Folders.
Backup & Restore 0. Introduction..2 1. On-demand. Manual Backups..3 1.1 Full Backup...3 1.2 Custom Backup 5 1.2.1 Store Your Data Only...5 1.2.2 Exclude Folders.6 1.3 Restore Your Backup..7 2. On Schedule.
More informationAVOIDING THE GIT OF DESPAIR
AVOIDING THE GIT OF DESPAIR EMMA JANE HOGBIN WESTBY SITE BUILDING TRACK @EMMAJANEHW http://drupal.org/user/1773 Avoiding The Git of Despair @emmajanehw http://drupal.org/user/1773 www.gitforteams.com Back
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 informationHere we will look at some methods for checking data simply using JOSM. Some of the questions we are asking about our data are:
Validating for Missing Maps Using JOSM This document covers processes for checking data quality in OpenStreetMap, particularly in the context of Humanitarian OpenStreetMap Team and Red Cross Missing Maps
More informationProject 1. Fast correction
Project 1 Fast correction Project #1 waitpid vs wait WEXITSTATUS Memory leaks! fflush after the >, before the fork Why? Because the children and the parent can run in any order When piping a list of commands
More informationTutorial ipojo. 2. Preparation
Tutorial ipojo 1. Context This tutorial is based on a pretty simple application. This application simulates a snack bar where products (hotdog, popcorn) are provided by vendors exposed as services. This
More informationWho is Docker and how he can help us? Heino Talvik
Who is Docker and how he can help us? Heino Talvik heino.talvik@seb.ee heino.talvik@gmail.com What is Docker? Software guy view: Marriage of infrastucture and Source Code Management Hardware guy view:
More informationThe name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.
Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that
More informationWe aren t getting enough orders on our Web site, storms the CEO.
In This Chapter Introducing how Ajax works Chapter 1 Ajax 101 Seeing Ajax at work in live searches, chat, shopping carts, and more We aren t getting enough orders on our Web site, storms the CEO. People
More informationJenkins: AMPLab s Friendly Butler. He will build your projects so you don t have to!
Jenkins: AMPLab s Friendly Butler He will build your projects so you don t have to! What is Jenkins? Open source CI/CD/Build platform Used to build many, many open source software projects (including Spark
More informationUsability Test Report: Requesting Library Material 1
Usability Test Report: Requesting Library Material 1 Summary Emily Daly and Kate Collins conducted usability testing on the processes of requesting library material. The test was conducted at the temporary
More informationIntro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming
Intro to Programming Unit 7 Intro to Programming 1 What is Programming? 1. Programming Languages 2. Markup vs. Programming 1. Introduction 2. Print Statement 3. Strings 4. Types and Values 5. Math Externals
More informationI started off with a quick nmap scan, which showed both port 80 and 443 open.
Mr-Robot: 1 Walkthrough Author: mrb3n Download location: https://download.vulnhub.com/mrrobot/mrrobot.ova Goal: Find 3 keys hidden in different locations -----------------------------------------------------------------------------------------------------------------
More informationIf Statements, For Loops, Functions
Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements
More informationCONTENT CALENDAR USER GUIDE SOCIAL MEDIA TABLE OF CONTENTS. Introduction pg. 3
TABLE OF CONTENTS SOCIAL MEDIA Introduction pg. 3 CONTENT 1 Chapter 1: What Is Historical Optimization? pg. 4 2 CALENDAR Chapter 2: Why Historical Optimization Is More Important Now Than Ever Before pg.
More informationModule 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)
Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 10A Lecture - 20 What is a function?
More informationAre You Too Busy? Practical Tips For Better Time Management
with Lorena Prime Are You Too Busy? Practical Tips For Better Time Management Is this How You Feel? What s a Productivity Expert? Focuses on offices (at work or virtual / home) Sets up file systems and
More informationLab 1: Simon. The Introduction
Lab 1: Simon The Introduction Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: http://users.wpi.edu/~ndemarinis/ece2049/ You do not need
More informationHow to approach a computational problem
How to approach a computational problem A lot of people find computer programming difficult, especially when they first get started with it. Sometimes the problems are problems specifically related to
More information