SEO Article Type “H” Test Article

You’ll get an extra hour added onto your time for reading these directions.

DO NOT UNDER AND CIRCUMSTANCES COPY AND PASTE ANYTHING. You can copy stuff by re-writing it, or re-ordering sentences, but not word for word. You will be fired and reported to UpWork. If you submit poor but original work, I will pay you and give you a 5 star rating no matter what. If you submit plagiarized work, I will fire you and give you bad report.


You only need to write the body of the article. Don’t write introductions or conclusions / summations. Just jump right into the article. Someone else will write the intro and conclusion.

Put section headers in your work. At least every 400 words, but can be more often.

<h2>tags</h2> on your section headers.

Paragraphs should be only 3 sentences long. No exceptions. It’s more important that it be 3 sentences than that it makes sense.

When you are done, email your article to “johndeebdd@gmail.com” and log off UpWork.

Good luck! If this works out, I’ll have more work for you!

-John Dee

PHP Meetup December 7, 2017 – TDD / BDD with Codeception

John talks at the Inevation Center in Las Vegas.

Topic: TDD / BDD with Codeception

Git Repo

What is TDD/ BDD?

  • Devops methodology for creating quality software
  • automated tests – Software that tests other software
  • make the test first
  • short cycles, single responsibility, loosely coupled
  • Red, green, re-factor!

TDD becomes sensible…

  • When you don’t know what to do
  • When the project becomes complex
  • When there are bugs
  • When you are performing code rescue
  • When multiple people with varying skill levels are invovled
  • When you care about costs and efficiency

Testing vesus Development

  • Vocabulary is wrong

BDD should statements

  • itShouldDoSomethingUseful(){}
  • itShouldHaveSomeKindOfProperty(){}

Codeception toolkit

  • PHPunit
  • Behat
  • Webdriver
  • Selenium
  • PhantomJS
  • WP-Codeception
  • DB interfaces
  • Framework interfaces

Codception architecture

  • YML files
  • PSR-4 namespaces
  • Suites, groups, environments, grid

Understanding DNS and localhost [vis-a-vi WP-BDD]

The Domain Name System [DNS] is the system a browser uses to resolve domain names like generalchicken.net to IP addresses like 34.197.171.101. A server connected to the internet generally has one IP address, usually one main domain, but it can also have many subdomains. For instance, this server hosts the domains generalchicken.net and another blog, messagetothefish.com. Both have the same IP address, but different domain names.
When an HTTP or HTTPS request is sent to the server, the request should include the host header which indicates to the server what domain a resonse is expected from. A browser like Chrome or Firefox does this automatically for the user.
Internally, once the request is received by the server, a web server, like Apache, sends each request to a particular directory, based on what subdomain is named in the host header. From there, a file is activated, and in our case, passed to the PHP parser. For WordPress, it is called index.php. On most Ubuntu WordPress setups, the main domain root directory is usually set to:
//var/www/html/
and subdomains go from there:
//var/www/html/sub1/
//var/www/html/sub2/

These are the directories [for their respective domains], which will contain the WordPress root files, especially the index.php, the wp-config.php files, and the other directories like:
//var/www/html/wp-admin/
//var/www/html/wp-content/themes/
//var/www/html/wp-content/plugins/
//var/www/html/wp-includes/

Understanding this is important because if you are setting up a local development version of WordPress, you are going to want to be able to set subdomains up. Normally, you’ll have a sepearte wp-config.php file for each domain, specifying which database the domain points to.

The default setup on Ubuntu, is for the domain localhost to point to //var/www/html . Therefore, to access your local WordPress site, open a browser like Chrome, and got to http://localhost/ and you should get the WordPress install screen.

Another consideration is that most forms of testing work the best when you don’t have any state. That is, the database is either reset to a starting point, or totally scrubbed after each test. If you’re not used to this, you may accidentally delete anything you have on your site, especially if you’re using it for anything.

My personal setup is that I use http://localhost/ for unit testing, and I have another WordPress install, called http://laptop.dev/ where I have a database that doesn’t reset.

Directions: Setting up virtual hosts on Ubuntu 16.04 LTS.