The course is part of this learning path
This course is the second course in two-part series on how to build an application in Python. In the first course, we built a data ingestion process that extracted named entities from articles across a few different publications. We extracted named entities from around 100,000 articles and we saved the results into Cloud Firestore. In this second course, we'll explore the codebase for a web application used to visualize those results.
We'll kick off the course by checking out some quality of life changes implemented while developing this app. That includes a custom bash theme, a replacement debugger, a debugger command for starting an IPython shell, and pytest plugins. After that, we're going to review the data access layer and its accompanying tests. That's going to include multiple implementations of each data access service. Then we'll check out Python's web application standard.
Next, we'll review the web application layer and its accompanying tests. That's going to include a fast web application framework, custom middleware, request hooks, and application configuration. After that, we're going to review the presentation layer, including a Vue.js app and materialize CSS. Finally, we're going to run the app locally and trace some requests through the application using the debugger.
If you have any feedback relating to this course, feel free to contact us at support@cloudacademy.com≥
Learning Objectives
- Implement a few developer quality of life changes
- Implement a testable data access layer
- Understand how a Python web app operates
- Understand how to build and test a more complex web app
- Understand how to use ipdb and IPython
- Enhance your knowledge of the Python programming language
Intended Audience
This course is intended for software developers or anyone who wants to learn more about building apps with Python.
Prerequisites
- Before taking this course, please make sure you have taken the first course in this two-part series: Building a Python Application: Course One
- You should also have an understanding of Python 3, Linux CLI, HTML/JS, and Git
Resources
The source code for the course is available on GitHub.
Hello and welcome, my name is Ben Lambert and I'll be your instructor for this course. In a previous course, we built a data ingestion process that extracted named entities from articles across a few different publications. We extracted named entities from around 100,000 articles and we saved the results into Cloud Firestore. Throughout this course, we'll explore the codebase for a web application used to visualize those results.
Now, while reviewing the code, I'm going to try and highlight three different themes. The first theme is what I'll call developer quality of life. These are non-essential configuration changes to the different tools that we use, that will make the development, testing, and debugging process better.
The second theme is regarding the value of testing. For this course, testing will mostly mean unit testing, though, testing is multi-faceted as a topic, so we'll also be talking about using fake implementations of external services to make development and unit testing easier.
The third theme is regarding the value of using a debugger in your development workflow. We're going to be using the IPython debugger as well as an IPython interactive shell to make debugging a bit more user friendly.
Our lesson plan is going to be this, first, we'll check out some quality of life changes that I implemented while developing this app. That'll include a custom bash theme, a replacement debugger, a debugger command for starting an IPython shell and pytest plugins.
After that we're going to review the data access layer and its accompanying tests. That's going to include multiple implementations of each data access service. After that we'll check out Python's web application standard and that's going to include using a simple demo app to better understand the mechanics of that standard.
Next, we'll review the web application layer and its accompanying tests. That's going to include a fast web application framework, custom middleware, request hooks and application configuration. After that we're going to review the presentation layer. That'll include a Vue.js app and materialize CSS.
Next, we're going to run the app locally and that's going to include tracing some requests through the application using the debugger. And then finally, we're going to wrap up with a summary and some final thoughts. In order to get the most out of this course, you're going to want to know at least one programming language, ideally that's going to be Python 3.
You'll also want to be comfortable using the Linux command line. You'll want to be comfortable with HTML and JavaScript and you'll also want to be comfortable with GIT, since the code for this course resides in a GIT repo. The code used in this course is shared with the previous course, that I mentioned a moment ago.
This course focuses on the web package. All the code is available to download and you can check the course details for its location. By the end of this course, some of the things that you might learn include, how to implement a few developer quality of life changes. How to implement a testable data access layer. How a basic python web application operates. How to build and test a more complex web application using the Falcon framework and how to use ipdb and Ipython. So, if any of these topics sound interesting to you, then I will see you in the next lesson to talk about quality of life.
Lectures
Quality of Life for Developers - What Is It That We're Building? - Exploring the Data Access Layer - The Web Server Gateway Interface - Exploring the Web Application Layer - Exploring the Front End Code - Running the Web App - Summary / Next Steps
Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.