From bcc8f94004931664d24d46852b1ea343fc2ed471 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Sat, 12 Nov 2016 15:30:37 +0100 Subject: [PATCH] denog8 --- denog8/__init__.py | 123 ++++++++++ denog8/artwork/denog8-small.jpg | Bin 0 -> 60641 bytes denog8/artwork/intro.svg | 181 +++++++++++++++ denog8/artwork/outro.svg | 214 +++++++++++++++++ denog8/schedule.xml | 391 ++++++++++++++++++++++++++++++++ 5 files changed, 909 insertions(+) create mode 100644 denog8/__init__.py create mode 100644 denog8/artwork/denog8-small.jpg create mode 100644 denog8/artwork/intro.svg create mode 100644 denog8/artwork/outro.svg create mode 100644 denog8/schedule.xml diff --git a/denog8/__init__.py b/denog8/__init__.py new file mode 100644 index 0000000..2869b02 --- /dev/null +++ b/denog8/__init__.py @@ -0,0 +1,123 @@ +#!/usr/bin/python3 + +from renderlib import * +from easing import * + +# URL to Schedule-XML +scheduleUrl = 'file://' + os.path.join(os.path.dirname(os.path.abspath(__file__)), 'schedule.xml') + +# For (really) too long titles +titlemap = { + #708: "Neue WEB-Anwendungen des LGRB Baden-Württemberg im Überblick" +} + +def introFrames(params): + move=40 + + # 1 Sekunden stillstand + frames = 1*fps + for i in range(0, frames): + yield ( + ('title', 'style', 'opacity', "%.4f" % 0), + ('subtitle', 'style', 'opacity', "%.4f" % 0), + ('persons', 'style', 'opacity', "%.4f" % 0), + ('rect', 'style', 'opacity', "%.4f" % 0), + ) + + # 4 Sekunde Text Fadein + frames = 4*fps + for i in range(0, frames): + yield ( + ('title', 'style', 'opacity', "%.4f" % easeDelay(easeLinear, 0*fps, i, 0, 1, 2*fps)), + ('title', 'attr', 'transform', 'translate(%.4f, 0)' % easeDelay(easeOutQuad, 0*fps, i, -move, move, 2*fps)), + + ('subtitle', 'style', 'opacity', "%.4f" % easeDelay(easeLinear, 1*fps, i, 0, 1, 2*fps)), + ('subtitle', 'attr', 'transform', 'translate(%.4f, 0)' % easeDelay(easeOutQuad, 1*fps, i, -move, move, 2*fps)), + + ('rect', 'style', 'opacity', "%.4f" % easeDelay(easeLinear, 2*fps, i, 0, 1, 2*fps)), + ('persons', 'style', 'opacity', "%.4f" % easeDelay(easeLinear, 2*fps, i, 0, 1, 2*fps)), + ('persons', 'attr', 'transform', 'translate(%.4f, 0)' % easeDelay(easeOutQuad, 2*fps, i, -move, move, 2*fps)), + ) + + # 2 Sekunden stillstand + frames = 2*fps + for i in range(0, frames): + yield tuple() + + # 1 Sekunde fadeout + frames = 1*fps + for i in range(0, frames): + yield ( + ('title', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ('subtitle', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ('persons', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ('rect', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ('logo', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ) + +def outroFrames(params): + move=50 + + # 1 Sekunden stillstand + frames = 1*fps + for i in range(0, frames): + yield ( + ('license', 'style', 'opacity', "%.4f" % 0), + ) + + # 2 Sekunde Text Fadein + frames = 2*fps + for i in range(0, frames): + yield ( + ('license', 'style', 'opacity', "%.4f" % easeDelay(easeLinear, 0*fps, i, 0, 1, 2*fps)), + ('license', 'attr', 'transform', 'translate(%.4f, 0)' % easeDelay(easeOutQuad, 0*fps, i, -move, move, 2*fps)), + ) + + # 2 Sekunden stillstand + frames = 2*fps + for i in range(0, frames): + yield tuple() + + +def debug(): + render( + 'outro.svg', + '../outro.ts', + outroFrames + ) + + render( + 'intro.svg', + '../intro.ts', + introFrames, + { + '$id': 904, + '$title': 'Was ist Open Source, wie funktioniert das?', + '$subtitle': 'Die Organisation der Open Geo- und GIS-Welt. Worauf man achten sollte.', + '$personnames': 'Arnulf Christl, Astrid Emde, Dominik Helle, Till Adams' + } + ) + +def tasks(queue, params): + # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl, titlemap): + + # generate a task description and put them into the queue + queue.put(Rendertask( + infile = 'intro.svg', + outfile = str(event['id'])+".ts", + sequence = introFrames, + parameters = { + '$id': event['id'], + '$title': event['title'], + '$subtitle': event['subtitle'], + '$personnames': event['personnames'] + } + )) + + # place a task for the outro into the queue + queue.put(Rendertask( + infile = 'outro.svg', + outfile = 'outro.ts', + sequence = outroFrames + )) diff --git a/denog8/artwork/denog8-small.jpg b/denog8/artwork/denog8-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..babe65261fa1d3493d20c5c32ca82929886e8fd9 GIT binary patch literal 60641 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 m!T#FRn$|+|G4FzjKty|obgFjgmd7h + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + $title + + $personnames + + DENOG8 + darmstadtium, Darmstadt Darmstadt diff --git a/denog8/artwork/outro.svg b/denog8/artwork/outro.svg new file mode 100644 index 0000000..b6532fb --- /dev/null +++ b/denog8/artwork/outro.svg @@ -0,0 +1,214 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/denog8/schedule.xml b/denog8/schedule.xml new file mode 100644 index 0000000..791062a --- /dev/null +++ b/denog8/schedule.xml @@ -0,0 +1,391 @@ + + + v1.0 + + DENOG + DENOG + 2015-10-29 + 2015-10-25 + 2 + 00:15 + + + + + 2015-10-29T13:00:00+01:00 + DENOG + Begrüßung + 13:00 + lecture + 0:45 + + + Slides + + + DENOG Orga + + + + 2015-10-29T13:45:00+01:00 + DENOG + Network Automation and Programmability + 13:45 + lecture + 0:30 + Automation is about optimizing and standardizing + your current network workflows to meet increasing demand + and provide context to network changes. Why Programmability + – A combination of the emergence of + Software Defined Networking, coupled with Service Providers + requirement to innovate at their own pace, has driven the + need for vendors to provide tools and capabilities to + extend the network platforms. + + Peter Sievers, Juniper Networks + + + + Slides + + + + 2015-10-29T14:15:00+01:00 + DENOG + Buffering Sucks + 14:15 + lecture + 0:30 + Current status of Peering, Interconnection, + Regulation, CDN Netneutralitiy. How you can help to + minimize buffering and make your end-customer happy. Update + of Init7 vs. the Big Ones. Why we do it. Status of the + interconnection case pending at the Swiss + regulator. + + Fredy Künzler, Init7 + + + + Slides + + + + 2015-10-29T14:45:00+01:00 + DENOG + Lightning Talks + 14:45 + lecture + 0:15 + + + Slides - A10 + + Slides - Axians + + + + 2015-10-29T16:00:00+01:00 + DENOG + Evolution of Ethernet Speeds + 16:00 + lecture + 0:30 + In this presentations we'll talk about the latest + Ethernet developments that are bringing a variety of new + technology to the market for different applications with + speeds ranging from 2.5 GE to 400 GE. We'll take a look at + the new 2.5 GE, 5 GE and 25 GE speeds, 2nd generation 40 GE + and 100 GE, 400 GE and what's possible in the + future. + + Greg Hankins, Alacatel Lucent + + + + Slides + + + + 2015-10-29T16:30:00+01:00 + DENOG + Peering DB 2.0 + 16:30 + lecture + 0:30 + Overview and demo of the new 2.0 API - How to + mirror all PDB data locally and integrate it with your own + application - Examples and use cases for building + automation from said data + + Arnold Nipper + + + + Slides + + + + 2015-10-29T17:00:00+01:00 + DENOG + IP-Fabrics - Datacenter Networks + 17:00 + lecture + 0:30 + The layer 2 design paradigmas do not longer scale + with webscale data centers, so this talk will give a short + introduction why that is and explain the blue print of + IP-Fabrics, the design used at facebook, google and other + players in that field. + + Tom Eichhorn, SysEleven GmbH + + + + Slides + + + + 2015-10-29T17:30:00+01:00 + DENOG + Freie Endgerätewahl + 17:30 + lecture + 0:30 + Die Abschaffung des Routerzwangs hin zu einer + freien Endgerätewahl ist ein wichtiger Schritt + auf dem Weg zu einer freiheitlichen + Informationsgesellschaft. In den letzten Jahren hat sich + ein Bündnis aus deutschen + Endgeräteherstellern zusammengefunden, um die + logische Konsequenz aus der Liberalisierung des + Telekommunikationsmarktes in die deutsche Gesetzgebung + einfließen zu lassen. Dabei geht es aber nicht + nur um die Endverbraucher, sondern auch um die + Stärkung der Innovationsfähigkeit der + deutschen IT-Branche. + + Simon Kissel, Viprinet + + + + Slides + + + + + + + + 2015-10-30T09:00:00+01:00 + DENOG + Lightning Talks + 09:00 + lecture + 0:30 + + + Slides - Alcatel Lucent + + Slides - ecix + + Slides - nominum + + Slides - Tremmel + + + + 2015-10-30T09:30:00+01:00 + DENOG + DE-CIX Update + 09:30 + lecture + 0:30 + + Wolfgang Tremmel, DE-CIX + + + + Slides + + + + 2015-10-30T10:00:00+01:00 + DENOG + FFO - Fracking Fiber Optics + 10:00 + lecture + 0:30 + LC plugs are not the only ones now that we have + QSFP+. Should you use MPO or MTP. What about ST, LC, SC, + E2000 or the new LC Uniboot plugs ? What are the + compromises and benefits of each solution. Did you know + that polarity in optical MPO matters ? And why can the + polish of a plug cause headache during on-site + installation. Thomas will give an overview of the + connectors and fibre options in the datacentre now we have + 40G und 100G as a standard. Especially for these parallel + transmission applications you should consider to rethink + your wiring if you don't want to get stuck in + troubleshooting your links. Finally some practical examples + of broken optical components after and during field + installation ­ real cases which happen every day + even in 2015 were fiber optic is commodity. And one more + thing! + + Thomas Weible, Flexoptix + + + + Slides + + + + 2015-10-30T11:00:00+01:00 + DENOG + Multi-Domain VPN + 11:00 + lecture + 0:30 + In the context of national research networks we + rolled out an europe-wide logical infrastructure to support + the rapid implementation of multi-domain VPNs, called + MDVPN. The framework we used for this is + "Carrier-support-carrier for hierarchical VPNs", as + documented in RFC4364 Option c. While this is not a brand + new technology, according to vendor statements, nobody + seems to have implemented this on a larger scale. An + overview will be given on the technology and architecture + and use cases be discussed. Special focus will be put on + security concerns raised by the community. Since vendors + don't support filters that prevent potential intrusion into + local VPNs, a netflow-based detector was developed that is + able to detect such attacks. In addition an openflow based + solution for filtering is under development in cooperation + with a switch vendor. As of today ca. 500 PEs take part in + the MDVPN domain allowing VPN services such as L2 P2P, + VPLS, EVPN, L3 VPNs. In the coming year, a small + office-router will be developed that allows rapid + connection to the MDVPN cloud + + Thomas Schmid, DFN + + + + Slides + + + + 2015-10-30T11:30:00+01:00 + DENOG + Your Cache/Recursive DNS server also requires your + attention + 11:30 + lecture + 0:30 + Nowadays, most of the DDoS attacks making the + news are targeted against Authoritative DNS servers. While + those attacks are the easiest to realise, as Authoritative + DNS servers are public, it is important not to lose track + of Cache/Recursive servers (As few PCs or laptops within + the LAN can take it down very easily if they are infested + by botnets). This presentation will focus on the + Recursive/Cache part of DNS Security, and will take as + example a specific attack that EfficientIP has named "Sloth + Domain Attack", to illustrate how vulnerable a + Recursive/Cache server is, and how easy it is to bring it + down. We will also discuss some ideas and the necessity to + take a new approach when dealing with DNS attacks on + Cache/Recursive servers. + + Nicolas Cartron, EfficientIP + + + + Slides + + + + 2015-10-30T12:00:00+01:00 + DENOG + Securing Data in Motion + 12:00 + lecture + 0:30 + Driven by the relentless news about cyber + threats, security breaches and data loss, law makers and + regulators are increasingly engaged in implementing new + legal frameworks and defining new obligations for data + security. Prominent within recent legal developments has + been a focus on network encryption. Our presentation + provides an introduction to network encryption technology + – including encryption algorithms, key + management and authentication – and + introduces the concept of post quantum security. We clarify + the most prominent myths of network encryption and evaluate + the applicability of encryption technology on different + network layers. + + Ulrich Schlegel, ADVA Optical Networking + + + + Slides + + + + 2015-10-30T12:30:00+01:00 + DENOG + Aus der sys4 Projektwerkstatt + 12:30 + lecture + 0:30 + + Patrick Ben Koetter, sys4 AG + + + + Slides + + + + 2015-10-30T13:00:00+01:00 + DENOG + Reliable and Secure DHCPv6 Expected + 13:00 + lecture + 0:30 + Many organizations have high hopes with regard to + DHCPv6 as it might allow them to deploy IPv6 based on an + operations model they usually have long-time experience + with. There's one (not so) minor problem though: DHCPv6 is + a very different beast from its IPv4 equivalent. This talk + covers the main DHCPv6 specifics from a design and security + perspective and discusses what is needed to deploy it in a + reliable and secure way. + + Christopher Werny, ERNW GmbH + + + + Slides + + + + 2015-10-30T13:30:00+01:00 + DENOG + Closing Talk + 13:30 + lecture + 0:15 + + DENOG Orga + + + + Slides + + + + +