mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-02-14 17:49:59 +00:00
Add 'past workshops' page and backfill 2016-2017 workshops
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,4 +9,5 @@ prepare-vms/tags
|
||||
slides/*.yml.html
|
||||
slides/autopilot/state.yaml
|
||||
slides/index.html
|
||||
slides/past.html
|
||||
node_modules
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
case "$1" in
|
||||
once)
|
||||
./index.py
|
||||
@@ -16,6 +17,7 @@ once)
|
||||
;;
|
||||
|
||||
forever)
|
||||
set +e
|
||||
# check if entr is installed
|
||||
if ! command -v entr >/dev/null; then
|
||||
echo >&2 "First install 'entr' with apt, brew, etc."
|
||||
|
||||
59
slides/index.css
Normal file
59
slides/index.css
Normal file
@@ -0,0 +1,59 @@
|
||||
body {
|
||||
background-image: url("images/container-background.jpg");
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
table {
|
||||
font-size: 20px;
|
||||
font-family: sans-serif;
|
||||
background: white;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
.header {
|
||||
font-size: 300%;
|
||||
font-weight: bold;
|
||||
}
|
||||
.title {
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
}
|
||||
.details {
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
}
|
||||
td {
|
||||
padding: 1px;
|
||||
height: 1em;
|
||||
}
|
||||
td.spacer {
|
||||
height: unset;
|
||||
}
|
||||
td.footer {
|
||||
padding-top: 80px;
|
||||
height: 100px;
|
||||
}
|
||||
td.title {
|
||||
border-bottom: thick solid black;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
background: yellow;
|
||||
}
|
||||
a.attend:after {
|
||||
content: "📅 attend";
|
||||
}
|
||||
a.slides:after {
|
||||
content: "📚 slides";
|
||||
}
|
||||
a.chat:after {
|
||||
content: "💬 chat";
|
||||
}
|
||||
a.video:after {
|
||||
content: "📺 video";
|
||||
}
|
||||
167
slides/index.py
167
slides/index.py
@@ -2,135 +2,94 @@
|
||||
# coding: utf-8
|
||||
TEMPLATE="""<html>
|
||||
<head>
|
||||
<title>Container Training</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
background-image: url("images/container-background.jpg");
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
table {
|
||||
font-size: 20px;
|
||||
font-family: sans-serif;
|
||||
background: white;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
.header {
|
||||
font-size: 300%;
|
||||
font-weight: bold;
|
||||
}
|
||||
.title {
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
}
|
||||
.details {
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
}
|
||||
td {
|
||||
padding: 1px;
|
||||
height: 1em;
|
||||
}
|
||||
td.spacer {
|
||||
height: unset;
|
||||
}
|
||||
td.footer {
|
||||
padding-top: 80px;
|
||||
height: 100px;
|
||||
}
|
||||
td.title {
|
||||
border-bottom: thick solid black;
|
||||
padding-bottom: 2px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
background: yellow;
|
||||
}
|
||||
a.attend:after {
|
||||
content: "📅 attend";
|
||||
}
|
||||
a.slides:after {
|
||||
content: "📚 slides";
|
||||
}
|
||||
a.chat:after {
|
||||
content: "💬 chat";
|
||||
}
|
||||
a.video:after {
|
||||
content: "📺 video";
|
||||
}
|
||||
</style>
|
||||
<title>{{ title }}</title>
|
||||
<link rel="stylesheet" href="index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="main">
|
||||
<table>
|
||||
<tr><td class="header" colspan="4">Container Training</td></tr>
|
||||
<tr><td class="header" colspan="3">{{ title }}</td></tr>
|
||||
|
||||
<tr><td class="title" colspan="4">Coming soon near you</td></tr>
|
||||
|
||||
<!--
|
||||
<td>Nothing for now (stay tuned...)</td>
|
||||
thing for now (stay tuned...)</td>
|
||||
-->
|
||||
{% if coming_soon %}
|
||||
<tr><td class="title" colspan="3">Coming soon near you</td></tr>
|
||||
|
||||
{% for item in coming_soon %}
|
||||
<tr>
|
||||
<tr>
|
||||
<td>{{ item.prettydate }}: {{ item.title }} at {{ item.event }} in {{ item.city }}</td>
|
||||
<td>{% if item.slides %}<a class="slides" href="{{ item.slides }}" />{% endif %}</td>
|
||||
<td><a class="attend" href="{{ item.attend }}" /></td>
|
||||
</tr>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<tr><td class="title" colspan="4">Past workshops</td></tr>
|
||||
{% if past_workshops %}
|
||||
<tr><td class="title" colspan="3">Past workshops</td></tr>
|
||||
|
||||
{% for item in past_workshops[:5] %}
|
||||
<tr>
|
||||
<tr>
|
||||
<td>{{ item.prettydate }}: {{ item.title }} {% if item.event %}at {{ item.event }} {% endif %} {% if item.city %} in {{ item.city }} {% endif %}</td>
|
||||
<td><a class="slides" href="{{ item.slides }}" /></td>
|
||||
<td>{% if item.video %}<a class="video" href="{{ item.video }}" />{% endif %}</td>
|
||||
</tr>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
{% if past_workshops[5:] %}
|
||||
<tr>
|
||||
<td>... and at least {{ past_workshops[5:] | length }} more.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>... and at least <a href="past.html">{{ past_workshops[5:] | length }} more</a>.</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr><td class="title" colspan="4">Recorded workshops</td></tr>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if recorded_workshops %}
|
||||
<tr><td class="title" colspan="3">Recorded workshops</td></tr>
|
||||
|
||||
{% for item in recorded_workshops %}
|
||||
<tr>
|
||||
<tr>
|
||||
<td>{{ item.title }}</td>
|
||||
<td><a class="slides" href="{{ item.slides }}" /></td>
|
||||
<td><a class="video" href="{{ item.video }}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="details">Delivered {{ item.prettydate }} at {{ item.event }} in {{item.city }}.</td>
|
||||
</tr>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<tr><td class="title" colspan="4">Self-paced tutorials</td></tr>
|
||||
{% if self_paced %}
|
||||
<tr><td class="title" colspan="3">Self-paced tutorials</td></tr>
|
||||
{% for item in self_paced %}
|
||||
<tr>
|
||||
<tr>
|
||||
<td>{{ item.title }}</td>
|
||||
<td><a class="slides" href="{{ item.slides }}" /></td>
|
||||
</tr>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<tr><td class="spacer"></td></tr>
|
||||
{% if all_past_workshops %}
|
||||
<tr><td class="title" colspan="3">Past workshops</td></tr>
|
||||
{% for item in all_past_workshops %}
|
||||
<tr>
|
||||
<td>{{ item.title }}</td>
|
||||
<td><a class="slides" href="{{ item.slides }}" /></td>
|
||||
{% if item.video %}
|
||||
<td><a class="video" href="{{ item.video }}" /></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="details">Delivered {{ item.prettydate }} at {{ item.event }} in {{item.city }}.</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<td class="footer">
|
||||
Maintained by Jérôme Petazzoni (<a href="https://twitter.com/jpetazzo">@jpetazzo</a>) and <a href="https://github.com/jpetazzo/container.training/graphs/contributors">contributors</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="spacer"></td></tr>
|
||||
|
||||
<tr>
|
||||
<td class="footer">
|
||||
Maintained by Jérôme Petazzoni (<a href="https://twitter.com/jpetazzo">@jpetazzo</a>) and <a href="https://github.com/jpetazzo/container.training/graphs/contributors">contributors</a>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>""".decode("utf-8")
|
||||
|
||||
@@ -144,8 +103,8 @@ for item in items:
|
||||
if "date" in item:
|
||||
date = item["date"]
|
||||
suffix = {
|
||||
1: "st", 2: "nd", 3: "rd",
|
||||
21: "st", 22: "nd", 23: "rd",
|
||||
1: "st", 2: "nd", 3: "rd",
|
||||
21: "st", 22: "nd", 23: "rd",
|
||||
31: "st"}.get(date.day, "th")
|
||||
item["prettydate"] = date.strftime("%B %e{}, %Y").format(suffix)
|
||||
|
||||
@@ -159,4 +118,16 @@ recorded_workshops = [i for i in items if i.get("video")]
|
||||
|
||||
template = jinja2.Template(TEMPLATE)
|
||||
with open("index.html", "w") as f:
|
||||
f.write(template.render(coming_soon=coming_soon, past_workshops=past_workshops, self_paced=self_paced, recorded_workshops=recorded_workshops).encode("utf-8"))
|
||||
f.write(template.render(
|
||||
title="Container Training",
|
||||
coming_soon=coming_soon,
|
||||
past_workshops=past_workshops,
|
||||
self_paced=self_paced,
|
||||
recorded_workshops=recorded_workshops
|
||||
).encode("utf-8"))
|
||||
|
||||
with open("past.html", "w") as f:
|
||||
f.write(template.render(
|
||||
title="Container Training",
|
||||
all_past_workshops=past_workshops
|
||||
).encode("utf-8"))
|
||||
|
||||
@@ -124,11 +124,19 @@
|
||||
slides: http://qconsf2017intro.container.training/
|
||||
video: https://www.youtube.com/playlist?list=PLBAFXs0YjviLgqTum8MkspG_8VzGl6C07
|
||||
|
||||
- date: 2017-10-30
|
||||
city: San Franciso, CA
|
||||
country: us
|
||||
event: LISA
|
||||
title: (M7) Getting Started with Docker and Containers
|
||||
slides: http://lisa17m7.container.training/
|
||||
|
||||
#<td>LISA17 M7: Getting Started with Docker and Containers
|
||||
#slides: http://lisa17m7.container.training/
|
||||
#<td>LISA17 T9: Build, Ship, and Run Microservices on a Docker Swarm Cluster
|
||||
#slides: http://lisa17t9.container.training/
|
||||
- date: 2017-10-31
|
||||
city: San Franciso, CA
|
||||
country: us
|
||||
event: LISA
|
||||
title: (T9) Build, Ship, and Run Microservices on a Docker Swarm Cluster
|
||||
slides: http://lisa17t9.container.training/
|
||||
|
||||
- date: 2017-10-26
|
||||
city: Prague
|
||||
@@ -138,12 +146,69 @@
|
||||
slides: http://osseu17.container.training/
|
||||
video: https://www.youtube.com/playlist?list=PLBAFXs0YjviLrsyydCzxWrIP_1-wkcSHS
|
||||
|
||||
- date: 2017-10-16
|
||||
city: Copenhagen
|
||||
country: dk
|
||||
event: DockerCon
|
||||
title: Swarm from Zero to Hero
|
||||
slides: http://dc17eu.container.training/
|
||||
|
||||
#<td>DockerCon Workshop: from Zero to Hero (full day, B3 M1-2)
|
||||
#slides: http://dc17eu.container.training/
|
||||
- date: 2017-10-16
|
||||
city: Copenhagen
|
||||
country: dk
|
||||
event: DockerCon
|
||||
title: Orchestration for Advanced Users
|
||||
slides: https://www.bretfisher.com/dockercon17eu
|
||||
|
||||
#<td>DockerCon Workshop: Orchestration for Advanced Users (afternoon, B4 M5-6)
|
||||
#slides: https://www.bretfisher.com/dockercon17eu/
|
||||
- date: 2017-07-25
|
||||
city: Minneapolis, MN
|
||||
country: us
|
||||
event: devopsdays
|
||||
title: Deploying & Scaling microservices with Docker Swarm
|
||||
video: https://www.youtube.com/watch?v=DABbqyJeG_E
|
||||
|
||||
- date: 2017-06-12
|
||||
city: Berlin
|
||||
country: de
|
||||
event: DevOpsCon
|
||||
title: Deploying and scaling containerized Microservices with Docker and Swarm
|
||||
|
||||
- date: 2017-05-18
|
||||
city: Portland, OR
|
||||
country: us
|
||||
event: PyCon
|
||||
title: Deploy and scale containers with Docker native, open source orchestration
|
||||
video: https://www.youtube.com/watch?v=EuzoEaE6Cqs
|
||||
|
||||
- date: 2017-05-08
|
||||
city: Austin, TX
|
||||
country: us
|
||||
event: OSCON
|
||||
title: Deploying and scaling applications in containers with Docker
|
||||
|
||||
- date: 2017-05-04
|
||||
city: Chicago, IL
|
||||
country: us
|
||||
event: GOTO
|
||||
title: Container deployment, scaling, and orchestration with Docker Swarm
|
||||
|
||||
- date: 2017-04-17
|
||||
city: Austin, TX
|
||||
country: us
|
||||
event: DockerCon
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2017-03-22
|
||||
city: San Jose, CA
|
||||
country: us
|
||||
event: Devoxx
|
||||
title: Container deployment, scaling, and orchestration with Docker Swarm
|
||||
|
||||
- date: 2017-03-03
|
||||
city: Pasadena, CA
|
||||
country: us
|
||||
event: SCALE
|
||||
title: Container deployment, scaling, and orchestration with Docker Swarm
|
||||
|
||||
- date: 2016-12-06
|
||||
city: Boston, MA
|
||||
@@ -153,6 +218,30 @@
|
||||
slides: http://lisa16t1.container.training/
|
||||
video: https://www.youtube.com/playlist?list=PLBAFXs0YjviIDDhr8vIwCN1wkyNGXjbbc
|
||||
|
||||
- date: 2016-10-07
|
||||
city: Berlin
|
||||
country: de
|
||||
event: LinuxCon
|
||||
title: Orchestrating Containers in Production at Scale with Docker Swarm
|
||||
|
||||
- date: 2016-09-20
|
||||
city: New York, NY
|
||||
country: us
|
||||
event: Velocity
|
||||
title: Deployment and orchestration at scale with Docker
|
||||
|
||||
- date: 2016-08-25
|
||||
city: Toronto
|
||||
country: ca
|
||||
event: LinuxCon
|
||||
title: Orchestrating Containers in Production at Scale with Docker Swarm
|
||||
|
||||
- date: 2016-06-22
|
||||
city: Seattle, WA
|
||||
country: us
|
||||
event: DockerCon
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-05-29
|
||||
city: Portland, OR
|
||||
country: us
|
||||
@@ -161,6 +250,70 @@
|
||||
slides: https://us.pycon.org/2016/site_media/media/tutorial_handouts/DockerSlides.pdf
|
||||
video: https://www.youtube.com/watch?v=ZVaRK10HBjo
|
||||
|
||||
- date: 2016-05-17
|
||||
city: Austin, TX
|
||||
country: us
|
||||
event: OSCON
|
||||
title: Deployment and orchestration at scale with Docker Swarm
|
||||
|
||||
- date: 2016-04-27
|
||||
city: Budapest
|
||||
country: hu
|
||||
event: CRAFT
|
||||
title: Advanced Docker concepts and container orchestration
|
||||
|
||||
- date: 2016-04-22
|
||||
city: Berlin
|
||||
country: de
|
||||
event: Neofonie
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-04-05
|
||||
city: Stockholm
|
||||
country: se
|
||||
event: Praqma
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-03-22
|
||||
city: Munich
|
||||
country: de
|
||||
event: Stylight
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-03-11
|
||||
city: London
|
||||
country: uk
|
||||
event: QCON
|
||||
title: Containers in production with Docker Swarm
|
||||
|
||||
- date: 2016-02-19
|
||||
city: Amsterdam
|
||||
country: nl
|
||||
event: Container Solutions
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-02-15
|
||||
city: Paris
|
||||
country: fr
|
||||
event: Zenika
|
||||
title: Orchestration Workshop
|
||||
|
||||
- date: 2016-01-22
|
||||
city: Pasadena, CA
|
||||
country: us
|
||||
event: SCALE
|
||||
title: Advanced Docker concepts and container orchestration
|
||||
|
||||
#- date: 2015-11-10
|
||||
# city: Washington DC
|
||||
# country: us
|
||||
# event: LISA
|
||||
# title: Deploying and Scaling Applications with Docker Swarm
|
||||
|
||||
#2015-09-24-strangeloop
|
||||
|
||||
|
||||
|
||||
- title: Introduction to Docker and Containers
|
||||
slides: intro-selfpaced.yml.html
|
||||
|
||||
|
||||
Reference in New Issue
Block a user