Automate ALL the Phings!

Size: px
Start display at page:

Download "Automate ALL the Phings!"

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)

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 information

EPISODE 23: HOW TO GET STARTED WITH MAILCHIMP

EPISODE 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 information

COMS 6100 Class Notes 3

COMS 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 information

Hello 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. 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 information

TDDC88 Lab 4 Software Configuration Management

TDDC88 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 information

A 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 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 information

Using GitHub to Share with SparkFun a

Using 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 information

Moving from FrameMaker to Blaze: Best Practices

Moving 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 information

If you re the administrator on any network,

If 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 information

Client Side JavaScript and AJAX

Client 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 information

Getting 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 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 information

Web Hosting. Important features to consider

Web 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 information

CASE STUDY IT. Albumprinter Adopting Redgate DLM

CASE 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 information

Ruby on Rails Welcome. Using the exercise files

Ruby 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 information

How to set up SQL Source Control The short guide for evaluators

How 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 information

Using RANCID. Contents. 1 Introduction Goals Notes Install rancid Add alias Configure rancid...

Using 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 information

DARING CHANGES IN ENTERPRISE GUIDE WITH A SAFETY NET

DARING 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 information

What is PHP? [1] Figure 1 [1]

What 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 information

OpsCenter Basics Why Aren t You Using It?

OpsCenter 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 information

How to Create a Killer Resources Page (That's Crazy Profitable)

How 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 information

CS/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 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 information

Real Life Web Development. Joseph Paul Cohen

Real 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 information

Introducing Thrive - The Ultimate In WordPress Blog Design & Growth

Introducing 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 information

Beginner s guide to continuous integration

Beginner 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 information

Master Syndication Gateway V2. User's Manual. Copyright Bontrager Connection LLC

Master 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 information

INTRODUCTION TO NOνASOFT AND SVN

INTRODUCTION 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 information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. 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 information

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

Clickbank 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 information

COPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition

COPYRIGHTED 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 information

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?

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? 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 information

Here we will look at some methods for checking data simply using JOSM. Some of the questions we are asking about our data are:

Here 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 information

Digital Marketing Manager, Marketing Manager, Agency Owner. Bachelors in Marketing, Advertising, Communications, or equivalent experience

Digital 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 information

OpenEdge Management in the Real World. Paul Koufalis President Progresswiz Consulting

OpenEdge 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 information

Incident Response Tools

Incident 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 information

Your . A setup guide. Last updated March 7, Kingsford Avenue, Glasgow G44 3EU

Your  . 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 information

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Outlook 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 information

How to rip, transcode, and prepare a DVD for network streaming

How 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 information

Quick.JS Documentation

Quick.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 information

CLIENT ONBOARDING PLAN & SCRIPT

CLIENT 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 information

XP: Backup Your Important Files for Safety

XP: 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 information

LeakDAS Version 4 The Complete Guide

LeakDAS 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 information

CLIENT ONBOARDING PLAN & SCRIPT

CLIENT 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 information

BEGINNER PHP Table of Contents

BEGINNER 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 information

STAUNING Credit Application Internet Sales Process with /Voic Templates to Non-Responsive Prospects 2018 Edition

STAUNING 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 information

Recipes. Marketing For Bloggers. List Building, Traffic, Money & More. A Free Guide by The Social Ms Page! 1 of! 24

Recipes.  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 information

Lab 1: Space Invaders. The Introduction

Lab 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 information

textures not patterns

textures 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 information

Git. 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 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 information

Getting Started With Squeeze Server

Getting 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 information

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

SECTION 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 information

WebMatrix: Why PHP Developers Should Pay Attention

WebMatrix: 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 information

Cisco Policy Suite 6.0 Backup and Restore Guide

Cisco 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 information

Imagery International website manual

Imagery 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 information

Sitecore Projects with GatherContent

Sitecore 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 information

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209. 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 information

Fractions and their Equivalent Forms

Fractions 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 information

Continuous Integration using Cruise Control

Continuous 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 information

Sucuri 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 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 information

Puppet - Feature #174 [PATCH] A native authorized_key type is available

Puppet - 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 information

Eclipse Classic is fine. The other options are specializ e for Java, C++ developers, etc. We just need to plain vanilla version.

Eclipse 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 information

Lesson 9 Transcript: Backup and Recovery

Lesson 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 information

Want the *GUIDED* tour?

Want 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 information

2016 All Rights Reserved

2016 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 information

Post Experiment Interview Questions

Post 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 information

Git. 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 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 information

Task-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 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 information

Meet our Example Buyer Persona Adele Revella, CEO

Meet 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 information

Introduction 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 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 information

Table of Contents What is Test Automation Framework?... 3 Different types of Frameworks used in QTP... 4 Linear Framework in QTP...

Table 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 information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 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 information

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

2/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 information

TELE301 Lab16 - The Secure Shell

TELE301 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 information

6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5.

6.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 information

10 things you should know about Word 2010's mail merge tools

10 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 information

7 Network Drive Mapped

7 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 information

15 Minute Traffic Formula. Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3

15 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 information

Lab 2 Building on Linux

Lab 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 information

The 21 WORD . That Can Get You More Clients. Ian Brodie

The 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 ** ** 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 information

9 th CA 2E/CA Plex Worldwide Developer Conference 1

9 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 information

Garment Documentation

Garment 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 information

0. Introduction On-demand. Manual Backups Full Backup Custom Backup Store Your Data Only Exclude Folders.

0. 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 information

AVOIDING THE GIT OF DESPAIR

AVOIDING 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 information

1 Installation (briefly)

1 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 information

Here we will look at some methods for checking data simply using JOSM. Some of the questions we are asking about our data are:

Here 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 information

Project 1. Fast correction

Project 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 information

Tutorial ipojo. 2. Preparation

Tutorial 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 information

Who is Docker and how he can help us? Heino Talvik

Who 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 information

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

The 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 information

We aren t getting enough orders on our Web site, storms the CEO.

We 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 information

Jenkins: 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! 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 information

Usability Test Report: Requesting Library Material 1

Usability 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 information

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

Intro 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 information

I started off with a quick nmap scan, which showed both port 80 and 443 open.

I 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 information

If Statements, For Loops, Functions

If 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 information

CONTENT CALENDAR USER GUIDE SOCIAL MEDIA TABLE OF CONTENTS. Introduction pg. 3

CONTENT 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 information

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

Module 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 information

Are You Too Busy? Practical Tips For Better Time Management

Are 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 information

Lab 1: Simon. The Introduction

Lab 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 information

How to approach a computational problem

How 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