Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions content/pages/01-introduction/09-best-python-videos.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ topics of using [web frameworks](/web-frameworks.html) like
[2017](https://www.youtube.com/playlist?list=PL2NFhrDSOxgXmA215-fo02djziShwLa6T),
[2016](https://www.youtube.com/playlist?list=PL2NFhrDSOxgX-A4qpaf3rRaEnEe7166Ac),
[2015](https://www.youtube.com/playlist?list=PL2NFhrDSOxgWvzf40lYJ8gohFciQqRx3K),
[2014](https://www.youtube.com/playlist?list=PLE7tQUdRKcybbNiuhLcc3h6WzmZGVBMr3),
[2013](http://www.youtube.com/user/TheOpenBastion/videos), are all available
[2014](https://www.youtube.com/playlist?list=PLE7tQUdRKcybbNiuhLcc3h6WzmZGVBMr3), are all available
free of charge.

* DjangoCon EU videos are also available from
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,10 +136,6 @@ you will want to take a look at adding to your installation.
["Hello, world!"-level example](http://www.sublimetext.com/docs/plugin-examples)
that you can extend.

* The unofficial
[Sublime documentation's section on plugins](http://docs.sublimetext.info/en/latest/extensibility/plugins.html)
contains the steps to use plugins and how to write your first plugin.

* [Sublime Text plugin development basics](http://engineering.vinted.com/2016/06/27/how-to-write-sublime-plugin/)
has some good advice and further resources.

Expand Down
4 changes: 0 additions & 4 deletions content/pages/03-data/03-mysql.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,6 @@ like [SQLAlchemy](/sqlalchemy.html) or the [Django ORM](/django-orm.html).
MySQLdb driver to connect to a MySQL server instance and shows some
examples for inserting and querying data.

* [Graph Data From MySQL Database in Python](http://moderndata.plot.ly/graph-data-from-mysql-database-in-python/)
is an interesting study with code of how to pull data out of MySQL and graph
the data with Plotly.


### General MySQL resources
There are many programming language agnostic tutorials for MySQL.
Expand Down
7 changes: 0 additions & 7 deletions content/pages/04-web-development/01-web-frameworks.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,6 @@ frameworks, templating engines and
The votes aren't as important as the list of the many frameworks
that are available to Python developers.

* [Not Your Father’s Python: Amazing Powerful Frameworks](https://blog.signifai.io/not-your-fathers-python-amazing-powerful-frameworks/)
covers the rise of web frameworks, such as [Sanic](/sanic.html), that
are built on Python's
[asyncio](https://docs.python.org/3/library/asyncio.html)
functionality that was built into the standard library starting with
Python 3.4.

* [Django vs. Flask in 2019: Which Framework to Choose](https://testdriven.io/blog/django-vs-flask/)
looks at the best use cases for Django and Flask along with what
makes them unique, from an educational and development standpoint.
Expand Down
6 changes: 0 additions & 6 deletions content/pages/04-web-development/03-flask.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -236,12 +236,6 @@ combined with the example real-world projects listed in the next section.
[application dependencies](/application-dependencies.html) and handle
your [deployment](/deployment.html) workflow.

* [How to use Flask to upload files to Amazon S3](http://zabana.me/notes/upload-files-amazon-s3-flask.html)
provides all the code with detailed explanations on how to store files
using [boto](https://boto3.readthedocs.io/en/latest/) and
[Amazon Web Services' S3](https://aws.amazon.com/s3/) with a Flask
application.

* [Visualize your trip with Flask and Mapbox](http://kazuar.github.io/visualize-trip-with-flask-and-mapbox/)
uses geographic GeoJSON data and presents it in a Flask application
that uses [Mapbox](https://www.mapbox.com/).
Expand Down
5 changes: 0 additions & 5 deletions content/pages/04-web-development/08-morepath.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ these resources below are a good place to get started.
is a blog post by Startifact on how they use Morepath and some of the
features of the framework.

* [A Summer with Morepath](http://blog.stacktrace.ch/post/132538261985)
describes the author's experience using Morepath, such as how he built
a framework around Morepath's core functionality. He eventually became
a core contributor to Morepath based on the application he created.

* [Build a better batching UI with Morepath and Jinja2](http://blog.startifact.com/posts/morepath-batching-example.html)
is an introductory post on building a simple web application with the
framework. The code for the application is also
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,12 +206,6 @@ point a domain name to your site as well as provide HTTPS support.
These guides walk through various ways of handling the static site
deployment.

* Randall Degges'
[Ultimate Guide to Deploying Static Sites to Amazon Web Services](https://stormpath.com/blog/ultimate-guide-deploying-static-site-aws)
walks through all the steps you need to get your site up and running on
S3. The guide also shows how to set up SSL certificates to ensure
your site can be loaded via HTTPS.

* [Static site hosting with S3 and Cloudflare](https://wsvincent.com/static-site-hosting-with-s3-and-cloudflare/)
shows how to set up an S3 bucket with Cloudflare in front as a CDN that
serves the content with HTTPS. You should be able to accomplish roughly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ during development so they can be addressed immediately.
gives an example of a system that needs integration tests and shows how
context managers can be used to address the problem.

* Pytest has a page on [integration good practices](https://pytest.org/latest/goodpractices.html)
* Pytest has a page on [integration good practices](http://doc.pytest.org/en/latest/goodpractices.html)
that you'll likely want to follow when testing your application.

* [Integration testing, or how to sleep well at night](http://enterprisecraftsmanship.com/2015/07/13/integration-testing-or-how-to-sleep-well-at-nights/)
Expand Down
3 changes: 0 additions & 3 deletions content/pages/04-web-development/42-websockets.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,6 @@ properly.

* Nginx has [an official page for WebSocket proxying](http://nginx.org/en/docs/http/websocket.html).

* [WebSockets in Nginx](http://blog.martinfjordvald.com/2013/02/websockets-in-nginx/)
walks through the Nginx WebSockets configuration directives.

* [Proxying WebSockets with Nginx](https://chrislea.com/2013/02/23/proxying-websockets-with-nginx/)
shows how to proxy with Socket.io.

Expand Down
2 changes: 1 addition & 1 deletion content/pages/04-web-development/48-api-creation.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ applications through machine-to-machine communication.

* [Flask-RESTful](http://flask-restful.readthedocs.org/en/latest/) is
widely used for creating web APIs with Flask. It was originally
open sourced by [Twilio](https://www.twilio.com/) then moved into its
open sourced by [Twilio](https://www.twilio.com/) then moved into its
[own GitHub organization](https://github.com/flask-restful/flask-restful)
so engineers from outside the company could be core contributors.

Expand Down
3 changes: 0 additions & 3 deletions content/pages/04-web-development/51-api-integration.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ across many implementation areas.
[18F's API-All-the-X list](http://18f.github.io/API-All-the-X/). The list
is updated whenever a new API comes online.

* If you use Requests check out this handy guide on gracefully
[handling HTTP errors with Python](http://www.mobify.com/blog/http-requests-are-hard/).

* John Sheehan's
"[Zen and the Art of API Maintenance](https://speakerdeck.com/johnsheehan/zen-and-the-art-of-api-maintenance)"
slides are relevant for API integration.
Expand Down
11 changes: 3 additions & 8 deletions content/pages/05-deployment/04-cdns.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ servers to improve web app loading speed.

* [MaxCDN vs CloudFlare vs Amazon CloudFront vs Akamai Edge vs Fastly](https://www.codeinwp.com/blog/maxcdn-vs-cloudflare-vs-cloudfront-vs-akamai-edge-vs-fastly/)
compares and contrasts the most popular CDN services based on features,
performance and pricing.
performance and pricing. Note
that [Full Stack Python](https://www.fullstackpython.com/) uses Cloudflare
to serve all content.

* [Crushing, caching and CDN deployment in Django](https://tech.marksblogg.com/crushing-caching-cdn-django.html)
explains how to use the
Expand All @@ -35,10 +37,3 @@ servers to improve web app loading speed.
describes the security implications for CDNs with unexpectedly modified
content and how Subresource Integrity in modern web browsers can mitigate
this vulnerability if used properly.

* [Put yourself on internet with Jekyll, GitHub and Cloudflare](https://adgllorente.com/2016/09/put-yourself-on-internet-with-jekyll-github-and-cloudflare/)
is not a Python-specific post but it gives language agnostic instructions
you can use for Python web applications that want to use
[Cloudflare](https://www.cloudflare.com/) as a CDN for static assets. Note
that [Full Stack Python](https://www.fullstackpython.com/) uses Cloudflare
to serve all content.
5 changes: 0 additions & 5 deletions content/pages/05-deployment/20-caddy.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,4 @@ the [proxy directive](https://caddyserver.com/docs/proxy).
shows how to use a self-signed certificate with Caddy to do local
development with an HTTP/2 web server.

* [Is Caddy free?](https://caddyserver.com/blog/is-caddy-free) explains
the donation and sponsorships model that Caddy uses to continue development
on the server. The gist is that the server is free to clone, download and
use. Sponsors and optional donations are currently used to fund ongoing
development.

4 changes: 0 additions & 4 deletions content/pages/05-deployment/36-docker.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ on Amazon Web Services, Google Compute Engine, Linode, Rackspace or elsewhere.
is an explanation of the concepts and philosophy by the authors of the
new Manning Docker book in early access format.

* [Eight Docker Development Patterns](http://www.hokstad.com/docker/patterns)
shares lessons learned and explains how to work with the containers so you
get more use out of them during development.

* [Building Docker containers from scratch](http://datakurre.pandala.org/2015/07/building-docker-containers-from-scratch.html)
is a short tutorial for creating a Docker container with a specific
configuration.
Expand Down
2 changes: 1 addition & 1 deletion content/pages/06-devops/01-monitoring.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ application is read-heavy, write-heavy, or subject to rapid swings in traffic.
be analyzed and visualized. Note this project is written in Perl so Perl 5
must be installed on the node collecting the data.

* [Bucky](http://github.hubspot.com/bucky/) measures the performance of a
* [Bucky](https://github.com/HubSpot/BuckyClient) measures the performance of a
web application from end user's browsers and sends that data back to the
server for collection.

Expand Down
3 changes: 0 additions & 3 deletions content/pages/06-devops/06-web-app-performance.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,6 @@ database queries, page size and many other factors.


### Web app performance resources
* [A Primer in Web Performance](https://kiboit.com/performance) is a quick,
straightforward one pager on why the topic matters and what causes bad
website performance.

* [Web Performance 101](https://3perf.com/talks/web-perf-101/) introduces
web application loading performance. There is a ton of great information
Expand Down
3 changes: 0 additions & 3 deletions content/pages/06-devops/18-web-analytics.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,6 @@ application before taking some action, such as purchasing your service.
of what Google Analytics can tell you about your site and how
to configure it for better output.

* [Deconstructing the Google Analytics tracking script](https://billfranklin.svbtle.com/deconstructing-the-ga-script)
breaks down the JavaScript found in the Google Analytics script.

* [Roll your own analytics](https://www.pcmaffey.com/roll-your-own-analytics/)
shows you how to use [AWS Lambda](/aws-lambda.html) and some custom
JavaScript to create your own replacement for Google Analytics. This route
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ library for enabling
handling in your [Django](/django.html) web applications and appropriately
dealing with HTTP headers for CORS requests.

[**django-cors-headers / corsheaders / conf.py**](https://github.com/ottoyiu/django-cors-headers/blob/master/corsheaders/conf.py)
[**django-cors-headers / src / corsheaders / conf.py**](https://github.com/ottoyiu/django-cors-headers/blob/master/src/corsheaders/conf.py)

```python
~~from django.conf import settings
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,42 +336,3 @@ Image = load_model(FILER_IMAGE_MODEL)
~~admin.site.register(FolderPermission, PermissionAdmin)
~~admin.site.register(ThumbnailOption, ThumbnailOptionAdmin)
```


## Example 5 from wagtail
[wagtail](https://github.com/wagtail/wagtail)
([project website](https://wagtail.io/)) is a fantastic
[Django](/django.html)-based CMS with code that is open source
under the
[BSD 3-Clause "New" or "Revised" License](https://github.com/wagtail/wagtail/blob/master/LICENSE).

[**wagtail / wagtail / core / admin.py**](https://github.com/wagtail/wagtail/blob/master/wagtail/core/admin.py)

```python
~~from django.contrib import admin
from django.contrib.auth.admin import GroupAdmin
from django.contrib.auth.models import Group

from wagtail.core.models import GroupPagePermission, Page, Site

~~admin.site.register(Site)
~~admin.site.register(Page)


# Extend GroupAdmin to include page permissions as an inline
class GroupPagePermissionInline(admin.TabularInline):
model = GroupPagePermission
raw_id_fields = ['page']
verbose_name = 'page permission'
verbose_name_plural = 'page permissions'


class GroupAdminWithPagePermissions(GroupAdmin):
inlines = GroupAdmin.inlines + [GroupPagePermissionInline]


~~if admin.site.is_registered(Group):
~~ admin.site.unregister(Group)
~~admin.site.register(Group, GroupAdminWithPagePermissions)
```

Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ library for enabling
handling in your [Django](/django.html) web applications and appropriately
dealing with HTTP headers for CORS requests.

[**django-cors-headers / corsheaders / signals.py**](https://github.com/ottoyiu/django-cors-headers/blob/master/corsheaders/signals.py)
[**django-cors-headers / src / corsheaders / signals.py**](https://github.com/adamchainz/django-cors-headers/blob/master/src/corsheaders/signals.py)

```python
~~from django.dispatch import Signal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class MiddlewareTest(TestCase):
system built with [Django](/django.html). The code is open source under the
[MIT license](https://github.com/dccnconf/dccnsys/blob/master/LICENSE).

[**dccnsys / wwwdccn / chair / views.py**](https://github.com/dccnconf/dccnsys/blob/master/wwwdccn/chair/views.py)
[**dccnsys / wwwdccn / chair / views**](https://github.com/dccnconf/dccnsys/tree/master/wwwdccn/chair/views)

```python
import csv
Expand Down
4 changes: 1 addition & 3 deletions content/posts/170227-choose-devops-tools-talk.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ headeralt: Comment bubble with code representing a technical talk-based blog pos


This blog post contains a loose transcript along with the slides and
additional resources from my technical talk that will be given at
[Oracle Code SF 2017](https://developer.oracle.com/code/sanfrancisco)
and [DC Continuous Delivery](https://www.meetup.com/DC-continuous-delivery/)
additional resources from my technical talk that will be given at [DC Continuous Delivery](https://www.meetup.com/DC-continuous-delivery/)
within the next couple of months.

Additional resources to learn more about [deployments](/deployments.html),
Expand Down
1 change: 0 additions & 1 deletion content/posts/171009-pycon-python-bytes-pelican.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ yourself:

1. [How to Create Your First Static Site with Pelican and Jinja2](/blog/generating-static-websites-pelican-jinja2-markdown.html)
1. [An overview of the Pelican static site generator](/pelican.html)
1. [The Ultimate Guide to Deploying Static Sites on AWS](https://stormpath.com/blog/ultimate-guide-deploying-static-site-aws)


One last bit: [Python for Entrepreneurs](https://training.talkpython.fm/courses/explore_entrepreneurs/python-for-entrepreneurs-build-and-launch-your-online-business)
Expand Down