diff --git a/compose/production/django/start b/compose/production/django/start index 297e610..80e9786 100644 --- a/compose/production/django/start +++ b/compose/production/django/start @@ -5,6 +5,6 @@ set -o pipefail set -o nounset -python /app/manage.py collectstatic --noinput python /app/manage.py compress +python /app/manage.py collectstatic --noinput /usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app diff --git a/config/settings/base.py b/config/settings/base.py index 9edcc14..a7d9a5f 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -142,8 +142,6 @@ STATIC_ROOT = str(ROOT_DIR("staticfiles")) STATIC_URL = "/static/" # https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS STATICFILES_DIRS = [str(APPS_DIR.path("static"))] -STATICFILES_STORAGE = 'schickmacher.storage.WhiteNoiseStaticFilesStorage' - # https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders STATICFILES_FINDERS = [ "django.contrib.staticfiles.finders.FileSystemFinder", diff --git a/schickmacher/renderer/templatetags/__init__.py b/schickmacher/renderer/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/schickmacher/renderer/templatetags/extra_filters.py b/schickmacher/renderer/templatetags/extra_filters.py deleted file mode 100644 index b05ae2e..0000000 --- a/schickmacher/renderer/templatetags/extra_filters.py +++ /dev/null @@ -1,8 +0,0 @@ -from django import template -import re - -register = template.Library() - -@register.filter -def escape_css_content(value): - return re.sub(r'''['"\n\\]''', lambda m: '\{:06X}'.format(ord(m.group())), value) diff --git a/schickmacher/renderer/tests/test_extra_filters.py b/schickmacher/renderer/tests/test_extra_filters.py deleted file mode 100644 index 6c4925d..0000000 --- a/schickmacher/renderer/tests/test_extra_filters.py +++ /dev/null @@ -1,12 +0,0 @@ -from schickmacher.renderer.templatetags.extra_filters import escape_css_content - -# we use the padded 6 digit css escape sequences -# https://www.w3.org/International/questions/qa-escapes -def test_css_content(): - assert escape_css_content("head\"tail") == "head\\000022tail" - assert escape_css_content("head\'tail") == "head\\000027tail" - assert escape_css_content("head\\tail") == "head\\00005Ctail" - assert escape_css_content("head\ntail") == "head\\00000Atail" - assert escape_css_content("\"\"") == "\\000022\\000022" - assert escape_css_content("\\\\") == "\\00005C\\00005C" - assert escape_css_content("ABCD1234
  • ") == "ABCD1234
  • " diff --git a/schickmacher/static/images/banner.jpg b/schickmacher/static/images/banner.jpg index a81a37e..8d7aab8 100644 Binary files a/schickmacher/static/images/banner.jpg and b/schickmacher/static/images/banner.jpg differ diff --git a/schickmacher/static/images/banner.svg b/schickmacher/static/images/banner.svg new file mode 100644 index 0000000..d5d62ef --- /dev/null +++ b/schickmacher/static/images/banner.svg @@ -0,0 +1,700 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schickmacher/static/images/favicons/favicon.ico b/schickmacher/static/images/favicons/favicon.ico index 33f5cbc..a40e91d 100644 Binary files a/schickmacher/static/images/favicons/favicon.ico and b/schickmacher/static/images/favicons/favicon.ico differ diff --git a/schickmacher/static/images/logo.png b/schickmacher/static/images/logo.png new file mode 100644 index 0000000..1c1086a Binary files /dev/null and b/schickmacher/static/images/logo.png differ diff --git a/schickmacher/static/images/qabel-kl.png b/schickmacher/static/images/qabel-kl.png new file mode 100644 index 0000000..5164222 Binary files /dev/null and b/schickmacher/static/images/qabel-kl.png differ diff --git a/schickmacher/static/sass/colors.scss b/schickmacher/static/sass/colors.scss index 191c1d6..3631571 100644 --- a/schickmacher/static/sass/colors.scss +++ b/schickmacher/static/sass/colors.scss @@ -1,2 +1,2 @@ -$orange: rgb(74, 60, 255); +$orange: rgb(255, 105, 15); diff --git a/schickmacher/static/sass/project.scss b/schickmacher/static/sass/project.scss index 787c6a5..bf4ec76 100644 --- a/schickmacher/static/sass/project.scss +++ b/schickmacher/static/sass/project.scss @@ -3,7 +3,7 @@ // project specific CSS goes here //////////////////////////////// -//Variables// + //Variables// //////////////////////////////// // Alert colors @@ -16,7 +16,7 @@ $dark-pink: #eed3d7; $red: #b94a48; //////////////////////////////// -//Alerts// + //Alerts// //////////////////////////////// // bootstrap alert CSS, translated to the django-standard levels of @@ -34,16 +34,6 @@ $red: #b94a48; color: $red; } -.markdownx { - display: flex; - column-gap: 2.5em; -} - -.markdownx-editor { - width: 50%; -} - .markdownx-preview { - width: 50%; @import 'render'; } diff --git a/schickmacher/static/sass/render.scss b/schickmacher/static/sass/render.scss index d4babcd..193da10 100644 --- a/schickmacher/static/sass/render.scss +++ b/schickmacher/static/sass/render.scss @@ -12,7 +12,7 @@ } @bottom-center { - content: ''; + content: 'qabel.de'; font-weight: bold; color: $orange; } diff --git a/schickmacher/storage.py b/schickmacher/storage.py deleted file mode 100644 index a89f6e9..0000000 --- a/schickmacher/storage.py +++ /dev/null @@ -1,5 +0,0 @@ -from whitenoise.storage import CompressedManifestStaticFilesStorage - - -class WhiteNoiseStaticFilesStorage(CompressedManifestStaticFilesStorage): - manifest_strict = False \ No newline at end of file diff --git a/schickmacher/templates/renderer/render_form.html b/schickmacher/templates/renderer/render_form.html index cb7e8b0..f0db677 100644 --- a/schickmacher/templates/renderer/render_form.html +++ b/schickmacher/templates/renderer/render_form.html @@ -17,5 +17,7 @@ {% csrf_token %} {{ form|crispy }} +
    {{ form.media }} +
    {% endblock %} diff --git a/schickmacher/templates/renderer/rendered.html b/schickmacher/templates/renderer/rendered.html index d3f0198..2ca154b 100644 --- a/schickmacher/templates/renderer/rendered.html +++ b/schickmacher/templates/renderer/rendered.html @@ -1,4 +1,4 @@ -{% load extra_filters %}{% load static compress tz %} +{% load static compress tz %} @@ -16,7 +16,7 @@ content: "{{ date | date:'d.m.Y' }}"; } @top-left { - content: "{{ title | escape_css_content | safe }}" + content: "{{ title }}" } @top-right-corner { } diff --git a/test.md b/test.md index 6acc5a5..a9b6a6d 100644 --- a/test.md +++ b/test.md @@ -1,3 +1,167 @@ +# Lead Developer + - Jahrgang: 1988 + - Ausbildung: Bachelor of Science Informatik, Leibniz Universität Hannover + +## Fachkenntnisse +### Softwareentwicklung +#### Kernkompetenzen + - Agile Development, Test-Driven-Development + - Reactive Design, Microservices + - Clean Architecture, Domain Driven Development + - OpenSource Lizenzen im kommerziellen Einsatz + +#### Tiefgreifende Erfahrung + - Testmanagement und -automatisierung (xUnit, Selenium, pytest, Espresso, etc) + - Logisches Datenbankdesign, relational und NoSQL (PostgreSQL, MySQL / MariaDB, SQLite, MongoDB, Redis, Elasticsearch) + - Android App-Entwicklung (RxJava, MVVM, Jetpack, Architecture Components, USB-CDC) + - Python (Django, Django-Rest-Framework, Tornado), Kotlin, Java (Spring Boot), PHP (Yii, Zend Framework 3), Ruby (Rails) + - Web-Frontends mit Angular (Material Design, Redux), jQuery, TypeScript, JavaScript + +#### Grundlegende Erfahrung + - Oracle DB, C++ (embedded development), .NET, C#, Haskell, Go + +### Infrastruktur + - Deployment und Integration bei Amazon Web Services (S3, EC2) und Firebase + - Git, SVN, Mercurial + - JetBrains Toolchain (Hub, YouTrack, Teamcity, Upsource), Jenkins, Jira, GoCD, Redmine + - Linux Server, nginx, Docker, Docker-Compose + +### Datenschutz/Datensicherheit + - Privacy by Design in der Praxis, DSGVO-Zusammenhänge + - Implementation intern entwickelter Kryptographieprotokolle, Entwicklung und Review von Kryptographieprotokollen + - Auditierung von Full-Stack Webanwendungen + +### Wissensvermittlung + - Konzeption von Präsentationen und Vorträgen, Durchführung von Präsentationen und Vorträgen + - Entwicklerschulungen, Beratung für Software-Architektur, Security by Design und Teamleitung + +## Weitere Kenntnisse +### Branchen + - Universitäten + - Veranstaltungsbranche + - Medizinbranche + - Büroelektronik + - Telekommunikationsbranche + +### Sprachen + - Deutsch (Muttersprache) + - Englisch (fließend) + +## Ausgewählte Projekte +### 2019 +#### Niedersächsische Tierseuchenkasse, Hannover +Diverse Module einer Website mit Integration von Services Dritter + +Technologien + - PHP 7.2, Zend Framework 3, PHPUnit + - Bootstrap 3, jQuery + - Docker + - MySQL/MariaDB + + +### 2019 +#### Arconic Fastening Systems, Hildesheim +Informationsflussanalyse und Erarbeitung von Optimierungspotenzialen im Kontext von Industrie 4.0 in einem +Hauptfertigungsstandort anhand von Interviews und bestehender Dokumentation + - Interdisziplinäre Zusammenarbeit mit dem Institut für Integrierte Produktion Hannover + +### 2018 +#### Büroelektronik Konzern, Hannover +Implementierung eines Mock-Ups zur Demonstration eines neuen kryptographischen +Konzepts und seiner Anwendungsmöglichkeiten + - Entwicklung eines Mock-Ups +Technologien + - Angular, Clarity Design + +#### Büroelektronik Konzern, Hannover +Privacy Firewall zur Einstufung personenbezogener Daten in +Unternehmensnetzwerken als Teil eines Großprojekts + - Entwicklung einer Server Applikation + - Beratung in den Bereichen Natural Language Processing und KI + - Review der Gesamtarchitektur mit Bezug auf IT-Security und Performance / Skalierung + +Technologien + - Python, MQTT + - spaCy - Industrial Streng Natural Language Processing + +### 2017 - 2018 +#### Softwareentwicklungsbranche, Hannover +Entwicklung einer sicheren Telekommikationslösung mit IoT-Komponenten + - Software-Entwicklung (Android, Embedded, Webserver) + - Leitung eines verteilten und interdisziplinären Teams + +Technologien + - C++ auf ARM32 + - Kotlin, Python, Django + - Angular, Typescript, Clarity Design + - WebSockets, WebRTC + - USB-CDC mit Android Device als USB-Host + - Protobuf, serielle Protokolle + - Docker + +### 2017 +#### Frankiermaschinenhersteller, Berlin +Auditing einer umfangreichen online Software für digitale Signaturen + - Durchführung der Auditierung + - Coaching der Teamleitung (insb. Testing, Teamführung und Kommunikation +mit der Projektleitung) + - Beratung bzgl. Verbesserung der vorhanden Entwicklungsprozesse +hinsichtlich agile Development + +#### Büroelektronik Konzern, Hannover +Entwicklung eines Demonstrators für eine smarte Arbeitsumgebung unter +Berücksichtigung von Privacy-by-design and default Vorgaben + - Software Entwicklung + +Technologien + - MQTT, IoT + - Windows 10 C# .NET App + +#### Büroelektronik Konzern, Hannover +Entwicklung eines Demonstrators zum Einsatz von Attribute-Based-Credentials zur anonymen Authentifizierung und Authorisierung von Mitarbeitern mithilfe von Smart Devices + - Software-Entwicklung + - Konzept-Entwicklung - Attribute-Based-Credentials im Enterprise Umfeld + +Technologien + - Python, Flask + - Angular, Material Design + - Android, Kotlin, AndroidWear (Smartwatches), NFC + +### 2015 - 2016 +#### Qabel GmbH (internes Projekt), Hannover +Kryptographie-Plattform zur sicheren Kommunikation mit Ende-zu-Ende Verschlüsselung und Dokumentenablage in der Amazon Cloud mit Client-Anwendungen für Android und Windows/Mac/Linux + +Technologien + - Java, Kotlin, Android + - Python, Django + - Docker + - Angular + - PostgreSQL, SQLite + +### 2011 - 2014 +#### Event Software Hersteller, Hannover +Entwicklung einer modularen und skalierbaren Webanwendung zur Organisation von Veranstaltungen wie beispielsweise Messen + - Performance-optimiertes ORM auf Basis von MongoDB und Redis + - Massen-Email-Versand in Hintergrundprozessen + +Technologien + - Python + - PHP, Yii-Framework + - MongoDB, Redis + - HTML 5, CSS3, jQuery, DataTables + +### 2008 - 2012 +#### Juristische Fakultät, Leibniz Universität Hannover +Administration, Webentwicklung und Druck-Layouting + +Technologien + - PHP + - Python + - LaTeX + - MySQL + +*** + # Markdown Test Page * [Headings](#Headings)