{"id":273,"date":"2016-09-21T14:35:36","date_gmt":"2016-09-21T12:35:36","guid":{"rendered":"https:\/\/sebastian.fam-knopp.de\/?p=273"},"modified":"2017-09-21T14:55:51","modified_gmt":"2017-09-21T12:55:51","slug":"ksj-eventmanager","status":"publish","type":"post","link":"https:\/\/sebastian.knopp.it\/?p=273","title":{"rendered":"KSJ &#8211; EventManager"},"content":{"rendered":"<p>Als Jugendgruppenleiter engagiere ich mich ehrenamtlich und organisierte so mit anderen zusammen das Sommerlager meiner Jugendgruppe mit immerhin \u00fcber 180 Teilnehmern.<br \/>\nLetztes Jahr kam mir die Idee die dort stattfindenden Arbeitskreise, zwischen welchen die Teilnehmer w\u00e4hlen k\u00f6nnen automatisch zuzuweisen. Hieraus\u00a0wuchs dann nach und nach eine komplette Verwaltungssoftware zur Durchf\u00fchrung von Jugendfahrten mit (fast) allem was man daf\u00fcr ben\u00f6tigt:<\/p>\n<ul>\n<li>Checkin-System f\u00fcr Reisebusse<\/li>\n<li>Zimmereinteilungssystem<\/li>\n<li>Wahlsystem f\u00fcr Arbeitskreise (kurz AK)<\/li>\n<li>Tagesprogramm-Planer mit Anzeige f\u00fcr die Teilnehmer<\/li>\n<li>Teilnehmer-Datenbank mit\u00a0Suchfunktion und allen Infos zum Teilnehmer \u00fcber Wahlen, Kontaktdaten der Eltern etc.<\/li>\n<\/ul>\n<p>Ich entschied mich f\u00fcr eine Umsetzung mit Node.JS. So konnte ich auf HTML5 und CSS setzen, eine Verf\u00fcgbarkeit \u00fcberall garantieren und\u00a0ohne viel Aufwand mit Websockets eine sehr dynamische Oberfl\u00e4che schaffen. Au\u00dferdem wollte ich schon l\u00e4nger mal etwas Gr\u00f6\u00dferes mit\u00a0Node.JS machen, was ich aber sicherlich nicht nochmals tun werde! Die Asynchronit\u00e4t und das fehlende\u00a0Multithreading fliegt einem sp\u00e4testens bei der Berechnung der AK-Wahlen um die Ohren.<\/p>\n<h2>Die Teilnehmer-Datenbank<\/h2>\n<p>Hier werden kurz gesagt alle Informationen, die das System \u00fcber einen Teilnehmer hat, zusammengefasst und durchsuchbar dargestellt.\u00a0Am meisten ben\u00f6tigt wurde es um die Eltern eines Teilnehmers kontaktieren zu k\u00f6nnen oder sein Zimmer rausfinden zu k\u00f6nnen.<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">Diese Diashow ben\u00f6tigt JavaScript.<\/p><div id=\"gallery-273-1-slideshow\" class=\"jetpack-slideshow-window jetpack-slideshow jetpack-slideshow-black\" data-trans=\"fade\" data-autostart=\"1\" data-gallery=\"[{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot3-1024x588.png&quot;,&quot;id&quot;:&quot;335&quot;,&quot;title&quot;:&quot;screenshot3&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot4-1024x546.png&quot;,&quot;id&quot;:&quot;336&quot;,&quot;title&quot;:&quot;screenshot4&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;}]\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><\/div>\n<h2>Das Check-In System f\u00fcr die Reisebusse<\/h2>\n<p>Am Abfahrtstag muss m\u00f6glichst schnell festgestellt werden, dass alle Teilnehmer da sind und vor allem wer in welchem Bus f\u00e4hrt. Den Kindern ist dabei wichtig mit ihren Freunden zusammen fahren zu k\u00f6nnen. Also machen wir jedes Jahr mehrere Check-Ins (f\u00fcr jeden Reisebus einen) und lassen die Leute sich hier einchecken. Nebenbei werden auch noch andere letzte Formalia gekl\u00e4rt.<br \/>\nUm anschlie\u00dfend nicht x Papierlisten von Hand auf Vollst\u00e4ndigkeit pr\u00fcfen zu m\u00fcssen, existiert dieses Checkin-System, welches auch \u00fcber mehrere Computer hinweg immer den aktuellen F\u00fcllstand der Busse und fehlenden Personen anzeigt und aktualisiert. Am Ende kann ganz einfach eine PDF-Datei mit der genauen Liste f\u00fcr jeden Bus gedruckt werden.<\/p>\n<p><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2017\/09\/screenshot12.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"344\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=344\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12.png\" data-orig-size=\"2160,1240\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"screenshot12\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-300x172.png\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-1024x588.png\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2017\/09\/screenshot12-1024x588.png\" alt=\"\" width=\"634\" height=\"364\" class=\"aligncenter size-large wp-image-344\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-1024x588.png 1024w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-300x172.png 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-768x441.png 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot12-816x468.png 816w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/a><\/p>\n<h2>Die Zimmerverwaltung<\/h2>\n<p>Bei der Zimmerverwaltung handelt es sich um eine Art zweitem Check-In vor Ort. Hier werden zuvor vom Vortrupp die verf\u00fcgbaren Zimmer samt Betten- und Zustellbettenzahl erfasst und ihnen anschlie\u00dfend eine Kategorie (&#8222;Leiter m&#8220;, &#8222;Leiter w&#8220;, &#8222;Teilnehmer m&#8220;, &#8222;Teilnehmer w&#8220;) zugewiesen.<br \/>\nDie Kinder kommen nun mit ihrem Teilnehmerausweis und k\u00f6nnen durch Scannen des aufgedruckten Barcodes in das richtige Zimmer sehr schnell eingecheckt werden. Gleichzeitig wird sichergestellt, dass M\u00e4dchen nicht aus Versehen in ein Jungszimmer oder Leiter in ein Teilnehmerzimmer gebucht werden. Sp\u00e4tere \u00c4nderungen sind schnell per Drag&#038;Drop m\u00f6glich, sollten sich einzelne Teilnehmer noch umentscheiden (was jedes Jahr zu Hauf passiert).<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">Diese Diashow ben\u00f6tigt JavaScript.<\/p><div id=\"gallery-273-2-slideshow\" class=\"jetpack-slideshow-window jetpack-slideshow jetpack-slideshow-black\" data-trans=\"fade\" data-autostart=\"1\" data-gallery=\"[{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot8-1024x590.png&quot;,&quot;id&quot;:&quot;340&quot;,&quot;title&quot;:&quot;screenshot8&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot9-1024x697.png&quot;,&quot;id&quot;:&quot;341&quot;,&quot;title&quot;:&quot;screenshot9&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;}]\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><\/div>\n<h2>Das Tagesprogramm<\/h2>\n<p>Hier wird das genaue Tagesprogramm f\u00fcr jeden Tag eingetragen. Ein typischer Tagesablauf beinhaltet mehrere K\u00fcchendienste samt anschlie\u00dfender Mahlzeiten, Gro\u00dfgruppenspiele, ein B\u00fchnenprogramm und einen Reinigungs- und einen Nachtdienst. F\u00fcr jeden dieser Typen und ein paar Weitere k\u00f6nnten spezifische Zusatzinformationen gespeichert werden. Zurzeit geht dies jedoch nur f\u00fcr die K\u00fcchen- und Nachtdienste (wo Dienstteilnehmer eingetragen werden k\u00f6nnen), sowie Hauptverantwortungen f\u00fcr Gro\u00dfgruppenspiele. Diese Informationen werden auf dem Infoboard angezeigt.<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">Diese Diashow ben\u00f6tigt JavaScript.<\/p><div id=\"gallery-273-3-slideshow\" class=\"jetpack-slideshow-window jetpack-slideshow jetpack-slideshow-black\" data-trans=\"fade\" data-autostart=\"1\" data-gallery=\"[{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot5-1024x588.png&quot;,&quot;id&quot;:&quot;337&quot;,&quot;title&quot;:&quot;screenshot5&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot6-1024x650.png&quot;,&quot;id&quot;:&quot;338&quot;,&quot;title&quot;:&quot;screenshot6&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot7.png&quot;,&quot;id&quot;:&quot;339&quot;,&quot;title&quot;:&quot;screenshot7&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;}]\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><\/div>\n<h2>Das Infoboard &#8211; Die Anzeige f\u00fcr Teilnehmer<\/h2>\n<p>Hier werden die f\u00fcr den heutigen Tag wichtigen Informationen in Form eines Blackboards angezeigt. Dazu geh\u00f6ren der n\u00e4chste K\u00fcchen- und Reinigungsdienst, das heutige und morgige Tagesprogramm, bisher ver\u00f6ffentlichte Bilder der Fahrt (direkt verkn\u00fcpft mit unserem Online-Fotoalbum), sowie einen Lauftext und eine Freifl\u00e4che zum Einblenden sonstiger Informationen f\u00fcr uns.<\/p>\n<p><a href=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2017\/09\/IMG_2549.jpg\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"348\" data-permalink=\"https:\/\/sebastian.knopp.it\/?attachment_id=348\" data-orig-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549.jpg\" data-orig-size=\"5184,3456\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;5.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 100D&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1468338716&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;55&quot;,&quot;iso&quot;:&quot;320&quot;,&quot;shutter_speed&quot;:&quot;0.0125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"IMG_2549\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-300x200.jpg\" data-large-file=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-1024x683.jpg\" src=\"https:\/\/sebastian.fam-knopp.de\/wp-content\/uploads\/2017\/09\/IMG_2549-1024x683.jpg\" alt=\"\" width=\"634\" height=\"423\" class=\"aligncenter size-large wp-image-348\" srcset=\"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-1024x683.jpg 1024w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-300x200.jpg 300w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-768x512.jpg 768w, https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/IMG_2549-816x544.jpg 816w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/a><\/p>\n<h2>Das Arbeitskreis-Wahlsystem<\/h2>\n<p><strong>Problem:<\/strong> Die Kinder kriegen eine Auswahl von 12-15 Arbeitskreisen (zB. Seifenkisten bauen, Scrapbooks basteln, Drachen bauen) zu Beginn vorgestellt und k\u00f6nnen w\u00e4hlen was sie am Liebsten machen w\u00fcrden, was am zweitliebsten und was am drittliebsten. Es finden insgesamt 3 Durchl\u00e4ufe statt, also\u00a0nach jedem Durchlauf wechselt man in einen anderen Arbeitskreis. Die Kinder w\u00e4hlen, indem sie ihre W\u00fcnsche auf einen Zettel schreiben. Das wurde dann bisher von Hand ausgewertet und versucht m\u00f6glichst gut zuzuteilen. Das kostete die zust\u00e4ndigen Leiter 2 Tage ihrer wertvollen Urlaubszeit im Leiterb\u00fcro.<\/p>\n<p>Es schrie f\u00f6rmlich nach einer automatisierten L\u00f6sung. Und da ich in der Uni gerade das Modul &#8222;<em>Algorithmen und Berechnungskomplexit\u00e4t I<\/em>&#8220;\u00a0belegte, versuchte ich\u00a0die Sache auf das <a href=\"https:\/\/de.wikipedia.org\/wiki\/Rucksackproblem\">Rucksack-Problem<\/a>\u00a0zu reduzieren. Das scheiterte letztlich an der Tatsache, dass die 3 Priorit\u00e4ten der Wahl nicht den 3 Durchl\u00e4ufen entsprachen, sondern jeweils eigenst\u00e4ndige Teilaspekte waren und das Problem somit etwas komplexer. Es musste also eine eigene L\u00f6sung her.\u00a0Die entsprechende Umsetzung in Node.JS kostete mich sehr viel Zeit, was auch daran lag, dass Node.JS sehr schnell sehr frustrierend f\u00fcr\u00a0solche komplexeren Algorithmen wird. Ich setzte sogar\u00a0w\u00e4hrend der Konzeption\u00a0zwischenzeitlich\u00a0auf Java, nur um\u00a0\u00fcberhaupt mal einen funktionierenden Algorithmus erarbeiten zu k\u00f6nnen.<\/p>\n<p>F\u00fcr die\u00a0Bedienung wollte ich eine\u00a0m\u00f6glichst intuitive UI haben, da auch Technik-Laien das System bedienen sollten und vor allem es auch nach meiner Zeit noch verwendet werden soll.<\/p>\n<p><strong>Die L\u00f6sung:<\/strong><\/p>\n<ol>\n<li>Die Arbeitskreise werden zu Beginn der Fahrt vorgestellt. Jeder AK hat eine feste Nummer<\/li>\n<li>Die Teilnehmer w\u00e4hlen direkt nach der Vorstellung auf Zetteln ihre AK&#8217;s,\u00a0indem sie 3\u00a0AK-Nummern nach Priorit\u00e4ten sortiert auf ihren Wahlzettel schreiben<\/li>\n<li>Der zust\u00e4ndige Leiter tippt die Wahlen in die Liste (Screenshot) ab. Wenn eine Wahl zul\u00e4ssig ist (keine Doppelwahlen), wird die Zeile gr\u00fcn unterlegt, andernfalls ein Fehler ausgegeben und die Eingabe gel\u00f6scht<\/li>\n<li>Die Berechnung\u00a0wird \u00fcber die Weboberfl\u00e4che gestartet und vom Node.JS-Server ausgef\u00fchrt. Hierzu werden 5000 m\u00f6gliche Zuteilungen berechnet, indem\u00a0die Eingabe (also die gew\u00e4hlten AK&#8217;s) vor jedem Durchlauf randomisiert wird.<\/li>\n<li>Der Algorithmus ermittelt f\u00fcr jeden Durchlauf einen Gesamtzufriedenheitswert basierend darauf, ob der AK gew\u00e4hlt wurde, mit welcher Priorit\u00e4t, und wie viele potenzielle Freunde auch in dem AK sind (Vergleich mit Zimmergenossen, Jahrgangsstufe und Klasse des Teilnehmers).\u00a0Das Ergebnis des besten Durchlaufs wird gespeichert<\/li>\n<li>Das Ergebnis wird ausgegeben und kann per Drag&amp;Drop von Hand nachtr\u00e4glich korrigiert werden (vgl. Screenshot)<\/li>\n<\/ol>\n<p>Man sieht, dass die einzelnen Teilnehmer farblich hinterlegt sind. Die Farbe sagt dabei aus, wie viele ihrer gew\u00e4hlten Arbeitskreise die Teilnehmer auch tats\u00e4chlich bekommen haben.<\/p>\n<p class=\"jetpack-slideshow-noscript robots-nocontent\">Diese Diashow ben\u00f6tigt JavaScript.<\/p><div id=\"gallery-273-4-slideshow\" class=\"jetpack-slideshow-window jetpack-slideshow jetpack-slideshow-black\" data-trans=\"fade\" data-autostart=\"1\" data-gallery=\"[{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot10-1024x586.png&quot;,&quot;id&quot;:&quot;342&quot;,&quot;title&quot;:&quot;screenshot10&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot13-1024x588.png&quot;,&quot;id&quot;:&quot;345&quot;,&quot;title&quot;:&quot;screenshot13&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;},{&quot;src&quot;:&quot;https:\\\/\\\/sebastian.knopp.it\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/screenshot11-1024x585.png&quot;,&quot;id&quot;:&quot;343&quot;,&quot;title&quot;:&quot;screenshot11&quot;,&quot;alt&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;itemprop&quot;:&quot;image&quot;}]\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Als Jugendgruppenleiter engagiere ich mich ehrenamtlich und organisierte so mit anderen zusammen das Sommerlager meiner Jugendgruppe mit immerhin \u00fcber 180 Teilnehmern. Letztes Jahr kam mir die Idee die dort stattfindenden Arbeitskreise, zwischen welchen die Teilnehmer w\u00e4hlen k\u00f6nnen automatisch zuzuweisen. Hieraus\u00a0wuchs dann nach und nach eine komplette Verwaltungssoftware zur Durchf\u00fchrung von Jugendfahrten mit (fast) allem was [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":334,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"gallery","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,3],"tags":[],"class_list":["post-273","post","type-post","status-publish","format-gallery","has-post-thumbnail","hentry","category-allgemein","category-projekt","post_format-post-format-gallery"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/sebastian.knopp.it\/wp-content\/uploads\/2017\/09\/screenshot2.png","jetpack_shortlink":"https:\/\/wp.me\/p4onxe-4p","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=273"}],"version-history":[{"count":8,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":349,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/posts\/273\/revisions\/349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=\/wp\/v2\/media\/334"}],"wp:attachment":[{"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sebastian.knopp.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}