1<!DOCTYPE html> 2<html lang="en" class="astro-CJSWUDYU"> 3 <head> 4 <!-- Global Metadata --><meta charset="utf-8"> 5<meta name="viewport" content="width=device-width,initial-scale=1"> 6<link rel="icon" type="image/svg+xml" href="/favicon.svg"> 7 8<!-- Primary Meta Tags --> 9<title>Jonas Duri | Personal Website</title> 10<meta name="title" content="Jonas Duri | Personal Website"> 11<meta name="description" content="This is my personal website. Here I share links to my articles and projects."> 12 13<!-- Open Graph / Facebook --> 14<meta property="og:type" content="website"> 15<meta property="og:url" content="https://example.com/imprint/"> 16<meta property="og:title" content="Jonas Duri | Personal Website"> 17<meta property="og:description" content="This is my personal website. Here I share links to my articles and projects."> 18 19<!-- Twitter --> 20<meta property="twitter:card" content="summary_large_image"> 21<meta property="twitter:url" content="https://example.com/imprint/"> 22<meta property="twitter:title" content="Jonas Duri | Personal Website"> 23<meta property="twitter:description" content="This is my personal website. Here I share links to my articles and projects."> 24 25<meta name="google-site-verification" content="i2mlWMlNMZm7IgGIoKHWy1-3AGiwu5Wszp-A9dvKgnI"> 26 <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png"> 27 <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png"> 28 <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png"> 29 <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png"> 30 <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png"> 31 <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png"> 32 <link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png"> 33 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 34 <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"> 35 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 36
37<script type="application/ld+json"> 38 { 39 "@context": "http://www.schema.org", 40 "@type": "Person", 41 "@id": "https://jduri.com", 42 "name": "Jonas Duri", 43 "alternateName": "Jonas Duri", 44 "nationality": "German", 45 "Description": "Software Engineer | Platform Architect", 46 "jobTitle": "Software Engineer | Platform Architect", 47 "worksFor": [ 48 { 49 "@type": "Organization", 50 "name": "E. Breuninger GmbH & Co.", 51 "sameAs": [ 52 "https://breunigner.com/" 53 ] 54 } 55 ], 56 "url": "https://jduri.com", 57 "image": "https://s.gravatar.com/avatar/b58d54558259eeeaf1b590008d68d1d0?s=512&r=g", 58 "address": { 59 "@type": "PostalAddress", 60 "addressLocality": "Düsseldorf", 61 "addressRegion": "NRW", 62 "addressCountry": "Germany" 63 }, 64 "sameAs": [ 65 "https://github.com/Gioni06", 66 "https://medium.com/@jonas_duri", 67 "https://dribbble.com/jonas_duri", 68 "https://www.linkedin.com/in/jonasduri/", 69 "https://twitter.com/jonas_duri" 70 ] 71 } 72 </script>
72 73 74 75 <link href='https://d33wubrfki0l68.cloudfront.net/bundles/6e895b1814bd54de5d64f55e2419ef78e779506f.css' rel='stylesheet'/>
76<script>/** @license Copyright 2020 Google LLC (BSD-3-Clause) */ 77/** Bundled JS generated from "@astrojs/lit/client-shim.js" */ 78var N = Object.defineProperty; 79var i = (t, n) => () => (t && (n = t((t = 0))), n); 80var b = (t, n) => { 81 for (var a in n) N(t, a, { get: n[a], enumerable: !0 }); 82}; 83function s() { 84 if (d === void 0) { 85 let t = document.createElement('div'); 86 (t.innerHTML = '<div><template shadowroot="open"></template></div>'), 87 (d = !!t.firstElementChild.shadowRoot); 88 } 89 return d; 90} 91var d, 92 m = i(() => {}); 93var p, 94 c, 95 f, 96 u = i(() => { 97 (p = (t) => t.parentElement === null), 98 (c = (t) => t.tagName === 'TEMPLATE'), 99 (f = (t) => t.nodeType === Node.ELEMENT_NODE); 100 }); 101var h, 102 E = i(() => { 103 m(); 104 u(); 105 h = (t) => { 106 var n; 107 if (s()) return; 108 let a = [], 109 e = t.firstElementChild; 110 for (; e !== t && e !== null; ) 111 if (c(e)) a.push(e), (e = e.content); 112 else if (e.firstElementChild !== null) e = e.firstElementChild; 113 else if (f(e) && e.nextElementSibling !== null) e = e.nextElementSibling; 114 else { 115 let o; 116 for (; e !== t && e !== null; ) 117 if (p(e)) { 118 o = a.pop(); 119 let r = o.parentElement, 120 l = o.getAttribute('shadowroot'); 121 if (((e = o), l === 'open' || l === 'closed')) { 122 let y = o.hasAttribute('shadowrootdelegatesfocus'); 123 try { 124 r.attachShadow({ mode: l, delegatesFocus: y }).append(o.content); 125 } catch {} 126 } else o = void 0; 127 } else { 128 let r = e.nextElementSibling; 129 if (r != null) { 130 (e = r), o !== void 0 && o.parentElement.removeChild(o); 131 break; 132 } 133 let l = 134 (n = e.parentElement) === null || n === void 0 ? void 0 : n.nextElementSibling; 135 if (l != null) { 136 (e = l), o !== void 0 && o.parentElement.removeChild(o); 137 break; 138 } 139 (e = e.parentElement), o !== void 0 && (o.parentElement.removeChild(o), (o = void 0)); 140 } 141 } 142 }; 143 }); 144var w = i(() => { 145 E(); 146}); 147var v = {}; 148b(v, { hasNativeDeclarativeShadowRoots: () => s, hydrateShadowRoots: () => h }); 149var S = i(() => { 150 m(); 151 w(); 152}); 153async function g() { 154 let { hydrateShadowRoots: t } = await Promise.resolve().then(() => (S(), v)); 155 window.addEventListener('DOMContentLoaded', () => t(document.body), { once: true }); 156} 157var x = new DOMParser() 158 .parseFromString('<p><template shadowroot="open"></template></p>', 'text/html', { 159 includeShadowRoots: !0, 160 }) 161 .querySelector('p'); 162(!x || !x.shadowRoot) && g(); 163</script>
163</head> 164 <body class="astro-CJSWUDYU"> 165 <main class="flex flex-col gap-4 astro-CJSWUDYU"> 166 <div class="pt-10 pb-10 astro-CJSWUDYU"> 167 <div class=" astro-CJSWUDYU"> 168 <div class="container astro-CJSWUDYU"> 169 <div class="container-center astro-CJSWUDYU"> 170 <div class="flex flex-row justify-between w-full items-end astro-CJSWUDYU"> 171 <div class="l_and_up:max-w-[60%] astro-CJSWUDYU"> 172 <header role="banner"> 173 <h1 class="heading-extralarge"> 174 Jonas Duri 175 </h1> 176</header> 177 <p class="lead astro-CJSWUDYU" style="margin-top: 4rem"> 178 Platform Architect at breuninger.com working on frontend & UI solutions for distributed e-commerce systems. You can find me on Github, Medium, Dribbble, LinkedIn or Twitter. 179 </p> 180 </div> 181 </div> 182 </div> 183 </div> 184 </div> 185 </div> 186 <div class="container astro-CJSWUDYU"> 187 <div class="container-center astro-CJSWUDYU"> 188 <h2 class="prose-heading-large my-4">Impressum</h2> 189<h3 class="prose-heading-medium my-4" id="angaben-gemäÃ-§-5-tmg">Angaben gemäà § 5 TMG</h3> 190<p class="prose-copy mb-4">Jonas Duri<br>Jahnstrasse 90<br>40215 Düsseldorf</p> 191<h3 class="prose-heading-medium my-4" id="kontakt">Kontakt</h3> 192<p class="prose-copy mb-4">E-Mail: hallo[at]jduri.com</p> 193<h3 class="prose-heading-medium my-4" id="verantwortlich-für-den-inhalt-nach-§-55-abs-2-rstv">Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</h3> 194<p class="prose-copy mb-4">Jonas Duri<br>JahnstraÃe 90<br>40215 Düsseldorf</p> 195 </div> 196 </div> 197 </main> 198 <div class="container"> 199 <div class="container-center"> 200 <footer class="w-full mt-10 py-5 flex flex-col m_and_up:flex-row justify-between m_and_up:items-baseline" role="contentinfo"> 201 <nav class="mt-4" role="navigation"> 202 <ul class="flex flex-col gap-2 m_and_up:flex-row m_and_up:gap-2"> 203 <li> 204 <style>astro-island,astro-slot{display:contents}</style>
204<script>(self.Astro=self.Astro||{}).visible=(s,c,n)=>{const r=async()=>{await(await s())()};let i=new IntersectionObserver(e=>{for(const t of e)if(!!t.isIntersecting){i.disconnect(),r();break}});for(let e=0;e<n.children.length;e++){const t=n.children[e];i.observe(t)}},window.dispatchEvent(new Event("astro:visible"));var l;{const c={0:t=>t,1:t=>JSON.parse(t,o),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(JSON.parse(t,o)),5:t=>new Set(JSON.parse(t,o)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(JSON.parse(t)),9:t=>new Uint16Array(JSON.parse(t)),10:t=>new Uint32Array(JSON.parse(t))},o=(t,s)=>{if(t===""||!Array.isArray(s))return s;const[e,n]=s;return e in c?c[e](n):void 0};customElements.get("astro-island")||customElements.define("astro-island",(l=class extends HTMLElement{constructor(){super(...arguments);this.hydrate=()=>{if(!this.hydrator||this.parentElement&&this.parentElement.closest("astro-island[ssr]"))return;const s=this.querySelectorAll("astro-slot"),e={},n=this.querySelectorAll("template[data-astro-template]");for(const r of n){const i=r.closest(this.tagName);!i||!i.isSameNode(this)||(e[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(const r of s){const i=r.closest(this.tagName);!i||!i.isSameNode(this)||(e[r.getAttribute("name")||"default"]=r.innerHTML)}const a=this.hasAttribute("props")?JSON.parse(this.getAttribute("props"),o):{};this.hydrator(this)(this.Component,a,e,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),window.removeEventListener("astro:hydrate",this.hydrate),window.dispatchEvent(new CustomEvent("astro:hydrate"))}}connectedCallback(){!this.hasAttribute("await-children")||this.firstChild?this.childrenConnectedCallback():new MutationObserver((s,e)=>{e.disconnect(),this.childrenConnectedCallback()}).observe(this,{childList:!0})}async childrenConnectedCallback(){window.addEventListener("astro:hydrate",this.hydrate);let s=this.getAttribute("before-hydration-url");s&&await import(s),this.start()}start(){const s=JSON.parse(this.getAttribute("opts")),e=this.getAttribute("client");if(Astro[e]===void 0){window.addEventListener(`astro:${e}`,()=>this.start(),{once:!0});return}Astro[e](async()=>{const n=this.getAttribute("renderer-url"),[a,{default:r}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),i=this.getAttribute("component-export")||"default";if(!i.includes("."))this.Component=a[i];else{this.Component=a;for(const d of i.split("."))this.Component=this.Component[d]}return this.hydrator=r,this.hydrate},s,this)}attributeChangedCallback(){this.hydrator&&this.hydrate()}},l.observedAttributes=["props"],l))}</script>
204<astro-island uid="wXw3k" component-url="/x-dialog.c79b77f2.js" ssr="" client="visible" before-hydration-url="/chunks/astro_scripts/before-hydration.js.54179fb6.js" opts="{"name":"XDialog","value":true}" await-children=""><x-dialog><template shadowroot="open"><style> 205 :host { 206 display: block !important; 207 visibility: visible !important; 208 opacity: 1 !important; 209 max-height: 100% !important; 210 } 211 212 dialog[open] { 213 position: fixed; 214 display: grid; 215 max-width: 800px; 216 margin: 0 auto; 217 top: 10rem; 218 border: none; 219 text-align: left; 220 } 221 dialog::backdrop { 222 background-color: var(--backdrop-layer, rgba(0, 0, 0, 0.3)); 223 backdrop-filter: grayscale(1); 224 } 225 226 .container { 227 padding: 4rem; 228 padding-bottom: 8rem; 229 } 230 </style><!--lit-part 6ADRzIdyFso=--> 231 <slot name="button"><!--lit-node 0--></slot> 232 <dialog ><!--lit-node 1--> 233 <div class="container"> 234 <div class="container-center"> 235 <slot></slot> 236 </div> 237 </div> 238 </dialog> 239 <!--/lit-part--></template><astro-slot slot="button"><a href="/imprint" target="_blank" class="copy-small-bold bg-none border-0 py-1 block">Imprint</a></astro-slot><astro-slot><h2 class="prose-heading-large my-4">Impressum</h2> 240<h3 class="prose-heading-medium my-4" id="angaben-gemäÃ-§-5-tmg">Angaben gemäà § 5 TMG</h3> 241<p class="prose-copy mb-4">Jonas Duri<br>Jahnstrasse 90<br>40215 Düsseldorf</p> 242<h3 class="prose-heading-medium my-4" id="kontakt">Kontakt</h3> 243<p class="prose-copy mb-4">E-Mail: hallo[at]jduri.com</p> 244<h3 class="prose-heading-medium my-4" id="verantwortlich-für-den-inhalt-nach-§-55-abs-2-rstv">Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</h3> 245<p class="prose-copy mb-4">Jonas Duri<br>JahnstraÃe 90<br>40215 Düsseldorf</p></astro-slot></x-dialog><template data-astro-template="button"><a href="/imprint" target="_blank" class="copy-small-bold bg-none border-0 py-1 block">Imprint</a></template></astro-island> 246 </li> 247 <li> 248 <astro-island uid="Z21lqDm" component-url="/x-dialog.c79b77f2.js" ssr="" client="visible" before-hydration-url="/chunks/astro_scripts/before-hydration.js.54179fb6.js" opts="{"name":"XDialog","value":true}" await-children=""><x-dialog><template shadowroot="open"><style> 249 :host { 250 display: block !important; 251 visibility: visible !important; 252 opacity: 1 !important; 253 max-height: 100% !important; 254 } 255 256 dialog[open] { 257 position: fixed; 258 display: grid; 259 max-width: 800px; 260 margin: 0 auto; 261 top: 10rem; 262 border: none; 263 text-align: left; 264 } 265 dialog::backdrop { 266 background-color: var(--backdrop-layer, rgba(0, 0, 0, 0.3)); 267 backdrop-filter: grayscale(1); 268 } 269 270 .container { 271 padding: 4rem; 272 padding-bottom: 8rem; 273 } 274 </style><!--lit-part 6ADRzIdyFso=--> 275 <slot name="button"><!--lit-node 0--></slot> 276 <dialog ><!--lit-node 1--> 277 <div class="container"> 278 <div class="container-center"> 279 <slot></slot> 280 </div> 281 </div> 282 </dialog> 283 <!--/lit-part--></template><astro-slot slot="button"><a href="/privacy" target="_blank" class="copy-small-bold bg-none border-0 py-1 block">Privacy Policy</a></astro-slot><astro-slot><h2 class="prose-heading-large my-4">Datenschutzerklärung</h2> 284<p class="prose-copy mb-4">Personenbezogene Daten (nachfolgend zumeist nur âDatenâ genannt) werden von uns nur im Rahmen der Erforderlichkeit sowie zum Zwecke der Bereitstellung eines funktionsfähigen und nutzerfreundlichen Internetauftritts, inklusive seiner Inhalte und der dort angebotenen Leistungen, verarbeitet.</p> 285<p class="prose-copy mb-4">Gemäà Art. 4 Ziffer 1. der Verordnung (EU) 2016/679, also der Datenschutz-Grundverordnung (nachfolgend nur âDSGVOâ genannt), gilt als âVerarbeitungâ jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführter Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten, wie das Erheben, das Erfassen, die Organisation, das Ordne
285n, die Speicherung, die Anpassung oder Veränderung, das Auslesen, das Abfragen, die Verwendung, die Offenlegung durch Ãbermittlung, Verbreitung oder eine andere Form der Bereitstellung, den Abgleich oder die Verknüpfung, die Einschränkung, das Löschen oder die Vernichtung.</p> 286<p class="prose-copy mb-4">Mit der nachfolgenden Datenschutzerklärung informieren wir Sie insbesondere über Art, Umfang, Zweck, Dauer und Rechtsgrundlage der Verarbeitung personenbezogener Daten, soweit wir entweder allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung entscheiden. Zudem informieren wir Sie nachfolgend über die von uns zu Optimierungszwecken sowie zur Steigerung der Nutzungsqualität eingesetzten Fremdkomponenten, soweit hierdurch Dritte Daten in wiederum eigener Verantwortung verarbeiten.</p> 287<p class="prose-copy mb-4">Die Datenschutzerklärung ist wie folgt gegliedert:</p> 288<p class="prose-copy mb-4">I. Informationen über uns als Verantwortliche<br>II. Rechte der Nutzer und Betroffenen<br>III. Informationen zur Datenverarbeitung</p> 289<h3 class="prose-heading-medium my-4" id="i-informationen-über-verantwortliche-personen">I. Informationen über verantwortliche Personen</h3> 290<p class="prose-copy mb-4">Verantwortlicher Anbieter dieses Internetauftritts im datenschutzrechtlichen Sinne ist:</p> 291<p class="prose-copy mb-4">Jonas Duri<br>JahnstraÃe 90<br>40215 Düsseldorf<br>Deutschland</p> 292<p class="prose-copy mb-4">E-Mail: hallo[at]jduri.com</p> 293<h3 class="prose-heading-medium my-4" id="ii-rechte-der-nutzer-und-betroffenen">II. Rechte der Nutzer und Betroffenen</h3> 294<p class="prose-copy mb-4">Mit Blick auf die nachfolgend noch näher beschriebene Datenverarbeitung haben die Nutzer und Betroffenen das Recht</p> 295<ul class="prose-copy pl-4 list-disc mb-4"> 296<li>auf Bestätigung, ob sie betreffende Daten verarbeitet werden, auf Auskunft über die verarbeiteten Daten, auf weitere Informationen über die Datenverarbeitung sowie auf Kopien der Daten (vgl. auch Art. 15 DSGVO);</li> 297<li>auf Berichtigung oder Vervollständigung unrichtiger bzw. unvollständiger Daten (vgl. auch Art. 16 DSGVO);</li> 298<li>auf unverzügliche Löschung der sie betreffenden Daten (vgl. auch Art. 17 DSGVO), oder, alternativ, soweit eine weitere Verarbeitung gemäà Art. 17 Abs. 3 DSGVO erforderlich ist, auf Einschränkung der Verarbeitung nach MaÃgabe von Art. 18 DSGVO;</li> 299<li>auf Erhalt der sie betreffenden und von ihnen bereitgestellten Daten und auf Ãbermittlung dieser Daten an andere Anbieter/Verantwortliche (vgl. auch Art. 20 DSGVO);</li> 300<li>auf Beschwerde gegenüber der Aufsichtsbehörde, sofern sie der Ansicht sind, dass die sie betreffenden Daten durch den Anbieter unter Verstoà gegen datenschutzrechtliche Bestimmungen verarbeitet werden (vgl. auch Art. 77 DSGVO).</li> 301</ul> 302<p class="prose-copy mb-4">Darüber hinaus ist der Anbieter dazu verpflichtet, alle Empfänger, denen gegenüber Daten durch den Anbieter offengelegt worden sind, über jedwede Berichtigung oder Löschung von Daten oder die Einschränkung der Verarbeitung, die aufgrund der Artikel 16, 17 Abs. 1, 18 DSGVO erfolgt, zu unterrichten. Diese Verpflichtung besteht jedoch nicht, soweit diese Mitteilung unmöglich oder mit einem unverhältnismäÃigen Aufwand verbunden ist. Unbeschadet dessen hat der Nutzer ein Recht auf Auskunft über diese Empfänger.</p> 303<p class="prose-copy mb-4"><strong>Ebenfalls haben die Nutzer und Betroffenen nach Art. 21 DSGVO das Recht auf Widerspruch gegen die künftige Verarbeitung der sie betreffenden Daten, sofern die Daten durch den Anbieter nach MaÃgabe von Art. 6 Abs. 1 lit. f) DSGVO verarbeitet werden. Insbesondere ist ein Widerspruch gegen die Datenverarbeitung zum Zwecke der Direktwerbung statthaft.</strong></p> 304<h3 class="prose-heading-medium my-4" id="iii-informationen-zur-datenverarbeitung">III. Informationen zur Datenverarbeitung</h3> 305<p class="prose-copy mb-4">Ihre bei Nutzung unseres Internetauftritts verarbeiteten Daten werden gelöscht oder gesperrt, sobald der Zweck der Speicherung entfällt, der Löschung der Daten keine gesetzlichen Aufbewahrungspflichten entgegenstehen und n
305achfolgend keine anderslautenden Angaben zu einzelnen Verarbeitungsverfahren gemacht werden.</p> 306<h4 class="prose-heading my-2" id="serverdaten">Serverdaten</h4> 307<p class="prose-copy mb-4">Aus technischen Gründen, insbesondere zur Gewährleistung eines sicheren und stabilen Internetauftritts, werden Daten durch Ihren Internet-Browser an uns bzw. an unseren Webspace-Provider übermittelt. Mit diesen sog. Server-Logfiles werden u.a. Typ und Version Ihres Internetbrowsers, das Betriebssystem, die Website, von der aus Sie auf unseren Internetauftritt gewechselt haben (Referrer URL), die Website(s) unseres Internetauftritts, die Sie besuchen, Datum und Uhrzeit des jeweiligen Zugriffs sowie die IP-Adresse des Internetanschlusses, von dem aus die Nutzung unseres Internetauftritts erfolgt, erhoben.</p> 308<p class="prose-copy mb-4">Diese so erhobenen Daten werden vorrübergehend gespeichert, dies jedoch nicht gemeinsam mit anderen Daten von Ihnen.</p> 309<p class="prose-copy mb-4">Diese Speicherung erfolgt auf der Rechtsgrundlage von Art. 6 Abs. 1 lit. f) DSGVO. Unser berechtigtes Interesse liegt in der Verbesserung, Stabilität, Funktionalität und Sicherheit unseres Internetauftritts.</p> 310<p class="prose-copy mb-4">Die Daten werden spätestens nach sieben Tage wieder gelöscht, soweit keine weitere Aufbewahrung zu Beweiszwecken erforderlich ist. Andernfalls sind die Daten bis zur endgültigen Klärung eines Vorfalls ganz oder teilweise von der Löschung ausgenommen.</p> 311<h4 class="prose-heading my-2" id="kontaktanfragen--kontaktmöglichkeit">Kontaktanfragen / Kontaktmöglichkeit</h4> 312<p class="prose-copy mb-4">Sofern Sie per Kontaktformular oder E-Mail mit uns in Kontakt treten, werden die dabei von Ihnen angegebenen Daten zur Bearbeitung Ihrer Anfrage genutzt. Die Angabe der Daten ist zur Bearbeitung und Beantwortung Ihre Anfrage erforderlich - ohne deren Bereitstellung können wir Ihre Anfrage nicht oder allenfalls eingeschränkt beantworten.</p> 313<p class="prose-copy mb-4">Rechtsgrundlage für diese Verarbeitung ist Art. 6 Abs. 1 lit. b) DSGVO.</p> 314<p class="prose-copy mb-4">Ihre Daten werden gelöscht, sofern Ihre Anfrage abschlieÃend beantwortet worden ist und der Löschung keine gesetzlichen Aufbewahrungspflichten entgegenstehen, wie bspw. bei einer sich etwaig anschlieÃenden Vertragsabwicklung.</p> 315<h4 class="prose-heading my-2" id="content-delivery-network-von-netlify">Content-Delivery-Network von Netlify</h4> 316<p class="prose-copy mb-4">Wir setzen ein so genanntes "Content Delivery Network" (CDN), angeboten von Netlify, Inc., 2325 3rd Street Suite 215, San Francisco, CA 94107, USA, ein. Netlify ist unter dem Privacy-Shield-Abkommen zertifiziert und bietet hierdurch eine Garantie, das europäische Datenschutzrecht einzuhalten.</p> 317<p class="prose-copy mb-4">Ein CDN ist ein Dienst, mit dessen Hilfe Inhalte unseres Onlineangebotes, insbesondere groÃe Mediendateien, wie Grafiken oder Skripte mit Hilfe regional verteilter und über das Internet verbundener Server, schneller ausgeliefert werden. Die Verarbeitung der Daten der Nutzer erfolgt alleine zu den vorgenannten Zwecken und der Aufrechterhaltung der Sicherheit und Funktionsfähigkeit des CDN.</p> 318<p class="prose-copy mb-4">Die Nutzung erfolgt auf Grundlage unserer berechtigten Interessen, d.h. Interesse an einer sicheren und effizienten Bereitstellung, Analyse sowie Optimierung unseres Onlineangebotes gem. Art. 6 Abs. 1 lit. f. DSGVO.</p> 319<p class="prose-copy mb-4">Weitere Informationen erhalten Sie in der Datenschutzerklärung von Netlify.</p> 320<p class="prose-copy mb-4"><a href="https://www.ratgeberrecht.eu/leistungen/muster-datenschutzerklaerung.html">Muster-Datenschutzerklärung</a> der <a href="https://www.ratgeberrecht.eu/">Anwaltskanzlei Weià & Partner</a></p></astro-slot></x-dialog><template data-astro-template="button"><a href="/privacy" target="_blank" class="copy-small-bold bg-none border-0 py-1 block">Privacy Policy</a></template></astro-island> 321 </li> 322 </ul> 323 </nav> 324 <div class="copy-extra-small mt-4"> 325 <i aria-label="Copyright">©</i><time datetime="2023-08-23T22:09:02.188Z">2023</time> Jonas Duri. All rights reserved. 326 </div> 327 </footer> 328 </div> 329</div> 330 </body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.