<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HTML Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/html/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 23 Mar 2025 15:53:21 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>HTML Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/html/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>W3C – Das Rückgrat des modernen Internets</title>
		<link>https://ceosbay.com/2025/03/22/w3c-das-rueckgrat-des-modernen-internets/</link>
					<comments>https://ceosbay.com/2025/03/22/w3c-das-rueckgrat-des-modernen-internets/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 20:17:00 +0000</pubDate>
				<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Wissenschaft & Forschung]]></category>
		<category><![CDATA[Wissenschaftskommunikation]]></category>
		<category><![CDATA[Barrierefreiheit]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Digitalisierung]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Interoperabilität]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[WebAuthn]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Webstandards]]></category>
		<category><![CDATA[Webtechnologien]]></category>
		<category><![CDATA[Zukunft des Webs]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=5487</guid>

					<description><![CDATA[<p>Wenn Du heute eine Website aufrufst, ist Dir wahrscheinlich nicht bewusst, wie viele Standards im Hintergrund dafür sorgen, dass alles reibungslos funktioniert – egal ob Du mit dem Smartphone, dem Laptop oder deinem Smart-TV surfst. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/22/w3c-das-rueckgrat-des-modernen-internets/">W3C – Das Rückgrat des modernen Internets</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wenn Du heute eine Website aufrufst, ist Dir wahrscheinlich nicht bewusst, wie viele Standards im Hintergrund dafür sorgen, dass alles reibungslos funktioniert – egal ob Du mit dem Smartphone, dem Laptop oder deinem Smart-TV surfst. Ein zentraler Akteur hinter diesen Standards ist das <strong>W3C</strong>, das World Wide Web Consortium.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="871" height="871" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/W3C.jpg?resize=871%2C871&#038;ssl=1" alt="W3C" class="wp-image-5489" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/W3C.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/W3C.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/W3C.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/W3C.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h3 class="wp-block-heading">Wer oder was ist das W3C?</h3>



<p>Das <strong>(World Wide Web Consortium)</strong> ist eine internationale Organisation, die sich der Entwicklung offener Standards für das Web verschrieben hat. Gegründet wurde sie 1994 von <strong>Tim Berners-Lee</strong>, dem Erfinder des World Wide Web. Ihr Ziel: Das volle Potenzial des Webs auszuschöpfen – für alle, überall.</p>



<p>Der Leitsatz lautet:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>“Leading the Web to its full potential.”</p>
</blockquote>



<h3 class="wp-block-heading">Warum ist das W3C so wichtig?</h3>



<p>Das Web besteht aus einer Vielzahl an Technologien – <a href="https://ceosbay.com/2022/12/29/erklaerung-html/">HTML</a>, <a href="https://ceosbay.com/2023/02/27/erklaerung-css/">CSS</a>, <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>, SVG, Web <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a> und viele mehr. Damit Websites und Webanwendungen unabhängig vom Gerät, Browser oder <a href="https://ceosbay.com/category/technologie/betriebssystem/">Betriebssystem</a> gleich gut funktionieren, braucht es gemeinsame Regeln. Genau diese entwickelt das W3C.</p>



<p>Ein paar zentrale Aufgaben:</p>



<ul class="wp-block-list">
<li><strong>Standardisierung</strong>: Das W3C legt fest, wie grundlegende Webtechnologien funktionieren (z. B. HTML5 oder CSS3).</li>



<li><strong>Interoperabilität</strong>: Standards sorgen dafür, dass Inhalte plattformübergreifend nutzbar sind.</li>



<li><strong>Barrierefreiheit</strong>: Mit den <strong>WCAG-Richtlinien</strong> fördert das W3C die Zugänglichkeit von Websites für Menschen mit Behinderungen. </li>



<li><strong>Datenschutz &amp; Sicherheit</strong>: Das W3C entwickelt auch Sicherheitsstandards wie WebAuthn für sicheres, passwortloses Login.</li>
</ul>



<h3 class="wp-block-heading">Wer steckt dahinter?</h3>



<p>Das Konsortium besteht nicht nur aus technischen Experten. Über 400 Mitgliedsorganisationen aus aller Welt – darunter große Tech-Unternehmen (wie Google, Apple, Microsoft), Universitäten, NGOs und Behörden – arbeiten gemeinsam an der Zukunft des Webs. Alle bringen ihre Perspektiven ein und diskutieren Vorschläge offen und transparent.</p>



<h3 class="wp-block-heading">Wie entstehen neue Webstandards?</h3>



<p>Der Prozess ist strukturiert und besteht aus mehreren Phasen. Zunächst wird ein <strong>Entwurf</strong> vorgestellt, der dann über mehrere Stufen hinweg (z. B. “Working Draft”, “Candidate Recommendation”, “Proposed Recommendation”) verfeinert wird, bis er schließlich als <strong>offizieller W3C-Standard</strong> verabschiedet wird. Dabei werden Feedback, Tests und Kompatibilität sorgfältig geprüft.</p>



<h3 class="wp-block-heading">Fazit: Ohne W3C kein einheitliches Web</h3>



<p>Ob Du eine Website entwickelst, eine App designst oder einfach nur surfst – die Arbeit des W3C betrifft Dich direkt. Dank dieser Organisation ist das Web so offen, flexibel und zugänglich geblieben wie es ist – ein globales, plattformübergreifendes Medium für Information, Kreativität und Innovation.</p>



<p><strong>Tipp für Entwickler:innen:</strong> Wer tiefer einsteigen möchte, kann auf <a href="https://www.w3.org">https://www.w3.org</a> die aktuellsten Spezifikationen, Tutorials und Mitmachmöglichkeiten finden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/22/w3c-das-rueckgrat-des-modernen-internets/">W3C – Das Rückgrat des modernen Internets</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/03/22/w3c-das-rueckgrat-des-modernen-internets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5487</post-id>	</item>
		<item>
		<title>MathJax &#8211; Beste Wahl für Formeln in WordPress?</title>
		<link>https://ceosbay.com/2025/02/04/mathjax-beste-wahl-fuer-formeln-in-wordpress/</link>
					<comments>https://ceosbay.com/2025/02/04/mathjax-beste-wahl-fuer-formeln-in-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 04 Feb 2025 17:44:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Automatisierte Formatierung]]></category>
		<category><![CDATA[Bildungstechnologie]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Blogging-Tools]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Datenvisualisierung]]></category>
		<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Formeldarstellung]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[Mathematik in WordPress]]></category>
		<category><![CDATA[MathJax]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[TeX]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Website-Optimierung]]></category>
		<category><![CDATA[Wissenschaftliche Notation]]></category>
		<category><![CDATA[Wissenschaftskommunikation]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress-Plugins]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=4037</guid>

					<description><![CDATA[<p>Wenn es um die Darstellung mathematischer Formeln in WordPress geht, gibt es mehrere Lösungen: MathJax, KaTeX, WP QuickLaTeX und Jetpack LaTeX. Nach einer gründlichen Analyse habe ich mich bewusst für MathJax entschieden – und in &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/04/mathjax-beste-wahl-fuer-formeln-in-wordpress/">MathJax &#8211; Beste Wahl für Formeln in WordPress?</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wenn es um die Darstellung mathematischer Formeln in WordPress geht, gibt es mehrere Lösungen: <strong>MathJax</strong>, <strong>KaTeX</strong>, <strong>WP QuickLaTeX</strong> und <strong>Jetpack LaTeX</strong>. Nach einer gründlichen Analyse habe ich mich bewusst für <strong>MathJax</strong> entschieden – und in diesem Beitrag erkläre ich, warum.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="871" height="871" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/MathJax.jpg?resize=871%2C871&#038;ssl=1" alt="MathJax" class="wp-image-4072" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/MathJax.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/MathJax.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/MathJax.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/MathJax.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h3 class="wp-block-heading">Warum MathJax besser ist als andere Lösungen</h3>



<h4 class="wp-block-heading">Hier sind die wichtigsten Gründe, warum ich mich für <strong>MathJax</strong> entschieden habe:</h4>



<h4 class="wp-block-heading">Umfangreiche LaTeX-Unterstützung</h4>



<p>Es unterstützt die vollständige LaTeX-Syntax, was bedeutet, dass ich auch komplexe Formeln und mathematische Notationen problemlos darstellen kann.</p>



<h4 class="wp-block-heading">Beispiele für komplexe Formeln</h4>



<p>Hier sind einige komplexe Formeln, um die Funktionalität von MathJax zu testen:</p>



<h4 class="wp-block-heading">Quadratische Formel</h4>



<p>\(x = \frac{-b \pm \sqrt{b^2 &#8211; 4ac}}{2a}\)</p>



<h4 class="wp-block-heading">Eulersche Formel</h4>



<p>\(e^{i\pi} + 1 = 0\)</p>



<h4 class="wp-block-heading">Fourier-Transform</h4>



<p>\(F(k) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i k x} dx\)</p>



<h4 class="wp-block-heading">Maxwell-Gleichungen</h4>



<p><p>\(\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}, \quad \nabla \cdot \mathbf{B} = 0\)</p>
<p>\(\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t}, \quad \nabla \times \mathbf{B} = \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t}\)</p></p>



<h3 class="wp-block-heading">Fazit:</h3>



<p>Nach ausführlichen Tests habe ich mich entschieden, <strong>MathJax als Standard für mathematische Formeln in meinem Blog zu verwenden</strong>. Die Vorteile – insbesondere in Bezug auf <strong>umfangreiche LaTeX-Unterstützung, regelmäßige Updates und flexible Nutzungsmöglichkeiten</strong> – überwiegen deutlich gegenüber den anderen Lösungen. Folglich werde ich zukünftige Beiträge mit Formeln damit erstellen und ältere Beiträge nach und nach anpassen.</p>



<p>Falls Du ebenfalls überlegst, MathJax in WordPress zu nutzen, kann ich es nur empfehlen! Eine einfache Installation über ein passendes WordPress-Plugin macht die Implementierung zum Kinderspiel.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/04/mathjax-beste-wahl-fuer-formeln-in-wordpress/">MathJax &#8211; Beste Wahl für Formeln in WordPress?</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/02/04/mathjax-beste-wahl-fuer-formeln-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4037</post-id>	</item>
		<item>
		<title>Konfusionsmatrix &#8211; Schlüsselwerkzeug zur Bewertung von KI-Modellen</title>
		<link>https://ceosbay.com/2025/01/30/konfusionsmatrix-schluesselwerkzeug-zur-bewertung-von-ki-modellen/</link>
					<comments>https://ceosbay.com/2025/01/30/konfusionsmatrix-schluesselwerkzeug-zur-bewertung-von-ki-modellen/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 30 Jan 2025 19:28:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Deep Learning]]></category>
		<category><![CDATA[Deepfakes]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Explainable AI]]></category>
		<category><![CDATA[KI-Modelle]]></category>
		<category><![CDATA[KI-Testing]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Maschinelles Lernen]]></category>
		<category><![CDATA[Natural Language Processing]]></category>
		<category><![CDATA[Neuronales Netzwerk]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Spieleentwicklung]]></category>
		<category><![CDATA[Super AI]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Accuracy]]></category>
		<category><![CDATA[Datenanalyse]]></category>
		<category><![CDATA[F1-Score]]></category>
		<category><![CDATA[False Negative]]></category>
		<category><![CDATA[False Positive]]></category>
		<category><![CDATA[Fehleranalyse]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[interaktive Anwendung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[KI]]></category>
		<category><![CDATA[Klassifikation]]></category>
		<category><![CDATA[Konfusionsmatrix]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Modellbewertung]]></category>
		<category><![CDATA[Modelloptimierung]]></category>
		<category><![CDATA[Precision]]></category>
		<category><![CDATA[Recall]]></category>
		<category><![CDATA[Sensitivität]]></category>
		<category><![CDATA[Spezifität]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[True Negative]]></category>
		<category><![CDATA[True Positive]]></category>
		<category><![CDATA[Vorhersagemodell]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=3144</guid>

					<description><![CDATA[<p>Die Konfusionsmatrix ist eines der wichtigsten Werkzeuge zur Bewertung von Klassifikationsmodellen in der Datenanalyse und künstlichen Intelligenz. Sie hilft dabei, die Leistung eines Modells zu analysieren und zu verstehen, wo es Fehler macht. Dabei werden tatsächliche Werte mit vom Modell vorhergesagten &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/01/30/konfusionsmatrix-schluesselwerkzeug-zur-bewertung-von-ki-modellen/">Konfusionsmatrix &#8211; Schlüsselwerkzeug zur Bewertung von KI-Modellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><p style="font-family: Arial, sans-serif;">Die <strong>Konfusionsmatrix</strong> ist eines der wichtigsten Werkzeuge zur Bewertung von Klassifikationsmodellen in der <strong>Datenanalyse und <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">künstlichen Intelligenz</a></strong>. Sie hilft dabei, die Leistung eines Modells zu analysieren und zu verstehen, wo es Fehler macht. Dabei werden <strong>tatsächliche Werte</strong> mit <strong>vom Modell vorhergesagten Werten</strong> verglichen.</p></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="871" height="871" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/01/Konfusionsmatrix.jpg?resize=871%2C871&#038;ssl=1" alt="Konfusionsmatrix" class="wp-image-3823" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/01/Konfusionsmatrix.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/01/Konfusionsmatrix.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/01/Konfusionsmatrix.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/01/Konfusionsmatrix.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h3 class="wp-block-heading">Bedeutung der einzelnen Werte:</h3>



<ul class="wp-block-list">
<li><strong>True Positive (TP)</strong> – Das Modell hat ein positives Ereignis korrekt erkannt.</li>



<li><strong>False Negative (FN)</strong> – Das Modell hat ein positives Ereignis fälschlicherweise als negativ klassifiziert.</li>



<li><strong>False Positive (FP)</strong> – Das Modell hat ein negatives Ereignis fälschlicherweise als positiv klassifiziert.</li>



<li><strong>True Negative (TN)</strong> – Das Modell hat ein negatives Ereignis korrekt erkannt.</li>
</ul>



<p>Durch diese Werte lassen sich&nbsp;<strong>wichtige Metriken</strong>&nbsp;berechnen, die die Qualität des Modells bewerten:</p>



<ul class="wp-block-list">
<li><strong>Accuracy (Genauigkeit)</strong> – Anteil der korrekten Vorhersagen.</li>



<li><strong>Precision (Präzision)</strong> – Wie viele der als positiv klassifizierten Werte tatsächlich positiv sind.</li>



<li><strong>Recall (Sensitivität)</strong> – Wie viele der tatsächlich positiven Fälle erkannt wurden.</li>



<li><strong>F1-Score</strong> – Eine Kombination aus Präzision und Recall für ein ausgewogenes Bild der Modellqualität.</li>
</ul>



<p><p style="font-family: Arial, sans-serif;">Eine typische Konfusionsmatrix für ein binäres Klassifikationsmodell sieht folgendermaßen aus:</p></p>



<table style="font-family: Arial, sans-serif; border-collapse: collapse; width: 100%;">
<thead>
<tr style="background-color: #f2f2f2;">
<th style="border: 1px solid #ddd; padding: 8px;"></th>
<th style="border: 1px solid #ddd; padding: 8px;">Vorhergesagt: Positiv</th>
<th style="border: 1px solid #ddd; padding: 8px;">Vorhergesagt: Negativ</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;"><strong>Tatsächlich: Positiv</strong></td>
<td style="border: 1px solid #ddd; padding: 8px;">True Positive (TP)</td>
<td style="border: 1px solid #ddd; padding: 8px;">False Negative (FN)</td>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;"><strong>Tatsächlich: Negativ</strong></td>
<td style="border: 1px solid #ddd; padding: 8px;">False Positive (FP)</td>
<td style="border: 1px solid #ddd; padding: 8px;">True Negative (TN)</td>
</tr>
</tbody>
</table>



<p><p style="font-family: Arial, sans-serif;">Die Werte der Matrix helfen dabei, verschiedene Kennzahlen zur Bewertung des Modells zu berechnen:</p></p>



<ul style="font-family: Arial, sans-serif;">
<li><strong>Accuracy (Genauigkeit)</strong>: (TP + TN) / (TP + TN + FP + FN) – Anteil der korrekt klassifizierten Fälle</li>
<li><strong>Precision (Präzision)</strong>: TP / (TP + FP) – Wie viele der als positiv vorhergesagten Werte tatsächlich positiv sind</li>
<li><strong>Recall (Sensitivität)</strong>: TP / (TP + FN) – Wie viele der tatsächlich positiven Fälle korrekt erkannt wurden</li>
<li><strong>F1-Score</strong>: 2 × (Precision × Recall) / (Precision + Recall) – Harmonisches Mittel aus Präzision und Recall</li>
</ul>



<h3 class="wp-block-heading">Interaktive Anwendung</h3>



<p>Um die Berechnung dieser Metriken besser zu verstehen, bietet die folgende interaktive Anwendung die Möglichkeit, Werte für TP, FP, TN und FN einzugeben. Das System berechnet daraufhin automatisch die entsprechenden Metriken und zeigt zudem den vollständigen Rechenweg an.</p>



<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interaktive Konfusionsmatrix</title>
    <style>
        body { font-family: Arial, sans-serif; text-align: center; }
        table { margin: auto; border-collapse: collapse; width: 50%; }
        th, td { border: 1px solid #ddd; padding: 10px; text-align: center; }
        input { width: 80px; height: 40px; font-size: 16px; text-align: center; }
        .result { margin-top: 20px; font-weight: bold; text-align: left; display: inline-block; }
        .button-container { margin-top: 20px; }
        button { padding: 15px 30px; font-size: 18px; border: none; cursor: pointer; border-radius: 5px; }
        button:hover { opacity: 0.9; }
        .calculate-btn { background-color: #007BFF; color: white; }
    </style>
</head>
<body>
    <h2>Interaktive Konfusionsmatrix</h2>
    <table>
        <tr>
            <th></th>
            <th>Vorhergesagt: Positiv</th>
            <th>Vorhergesagt: Negativ</th>
        </tr>
        <tr>
            <td><strong>Tatsächlich: Positiv</strong></td>
            <td><input type="number" id="tp" value="50" min="0"></td>
            <td><input type="number" id="fn" value="10" min="0"></td>
        </tr>
        <tr>
            <td><strong>Tatsächlich: Negativ</strong></td>
            <td><input type="number" id="fp" value="5" min="0"></td>
            <td><input type="number" id="tn" value="100" min="0"></td>
        </tr>
    </table>
    <div class="result" id="results"></div>
    <div class="button-container">
        <button class="calculate-btn" onclick="calculateMetrics()">Berechnen</button>
    </div>
    
    <script>
        function calculateMetrics() {
            let tp = parseInt(document.getElementById('tp').value) || 0;
            let fp = parseInt(document.getElementById('fp').value) || 0;
            let tn = parseInt(document.getElementById('tn').value) || 0;
            let fn = parseInt(document.getElementById('fn').value) || 0;

            let accuracy = ((tp + tn) / (tp + tn + fp + fn)).toFixed(2);
            let precision = (tp / (tp + fp)).toFixed(2);
            let recall = (tp / (tp + fn)).toFixed(2);
            let f1Score = (2 * (precision * recall) / (parseFloat(precision) + parseFloat(recall))).toFixed(2);

            document.getElementById('results').innerHTML = `
                <p>Genauigkeit (Accuracy): <strong>${accuracy}</strong></p>
                <p>Berechnung: (${tp} + ${tn}) / (${tp} + ${tn} + ${fp} + ${fn})</p>
                <p>Präzision (Precision): <strong>${precision}</strong></p>
                <p>Berechnung: ${tp} / (${tp} + ${fp})</p>
                <p>Recall (Sensitivität): <strong>${recall}</strong></p>
                <p>Berechnung: ${tp} / (${tp} + ${fn})</p>
                <p>F1-Score: <strong>${f1Score}</strong></p>
                <p>Berechnung: 2 × (${precision} × ${recall}) / (${precision} + ${recall})</p>
            `;
        }
    </script>
</body>
</html>



<p><p style="font-family: Arial, sans-serif;">Die Konfusionsmatrix ist also ein essenzielles Hilfsmittel, um die Stärken und Schwächen eines Modells zu verstehen. Sie liefert detaillierte Einblicke in die Klassifikationsleistung und hilft dabei, das Modell gezielt zu verbessern.</p></p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/01/30/konfusionsmatrix-schluesselwerkzeug-zur-bewertung-von-ki-modellen/">Konfusionsmatrix &#8211; Schlüsselwerkzeug zur Bewertung von KI-Modellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/01/30/konfusionsmatrix-schluesselwerkzeug-zur-bewertung-von-ki-modellen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3144</post-id>	</item>
		<item>
		<title>http und https &#8211; Eine Reise zur Web-Sicherheit</title>
		<link>https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/</link>
					<comments>https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 04 Jul 2023 14:00:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Chunked]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Get]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Head]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Kompression]]></category>
		<category><![CDATA[Kredit]]></category>
		<category><![CDATA[Layer]]></category>
		<category><![CDATA[Multiplexing]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Passwörter]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Secure]]></category>
		<category><![CDATA[Sensible Daten]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Sicherheitsrisiken]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[Übertragungen]]></category>
		<guid isPermaLink="false"></guid>

					<description><![CDATA[<p>In der heutigen digitalen Welt sind HTTP und HTTPS Begriffe, die man sicher schon gehört hat, besonders wenn man eine Website betreibt oder plant eine zu betreiben. Aber was bedeuten diese Akronyme, und was sind &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/">http und https &#8211; Eine Reise zur Web-Sicherheit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der heutigen digitalen Welt sind HTTP und HTTPS Begriffe, die man sicher schon gehört hat, besonders wenn man eine Website betreibt oder plant eine zu betreiben. Aber was bedeuten diese Akronyme, und was sind die Unterschiede?</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Die Geschichte von HTTP beginnt 1989 mit Tim Berners-Lee, einem Physiker am CERN. Er entwickelte das HTTP-Protokoll, um die Übertragung von HTML-Dokumenten, den sogenannten Hypertexten, über das Internet zu ermöglichen. Dies war ein Schlüsselbestandteil seiner Vision vom World Wide Web, einem Informationsmanagement-System, dass es Benutzern ermöglicht, Informationen über das Internet zu teilen und zu verlinken.</p>



<p>Die Veröffentlichung der ersten dokumentierten Version von HTTP, HTTP/0.9, erfolgte 1991. Es war ein sehr einfaches Protokoll, die lediglich die GET-Methode unterstützte. Dies erlaubte einem Webbrowser, eine Anfrage an einen Webserver zu senden und ein HTML-Dokument zurückzuerhalten.</p>



<p>Die Veröffentlichung von HTTP/1.0 erfolgte 1996 als IETF <a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC</a> 1945. Es fügte weitere Methoden wie POST und HEAD hinzu und unterstützte auch HTTP-Header, was zusätzliche Metainformationen über die Anfrage und die Antwort ermöglichte.</p>



<p>HTTP/1.1, das heute weit verbreitet ist, kam 1997 zum Einsatz und man hat es später in <a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC</a> 2616 festgelegt. Es fügte wichtige Verbesserungen wie Persistente Verbindungen, Chunked-Übertragungen und zusätzliche Cache-Steuerung hinzu.</p>



<p>HTTP/2, im Jahr 2015, mit dem Ziel, die Leistung zu verbessern und die Latenz zu reduzieren. Es unterstützt Multiplexing, Priorisierung und Kompression von HTTP-Headern.</p>



<h3 class="wp-block-heading">HTTPS – Hypertext Transfer Protocol Secure</h3>



<p>Eingeführt, um die Übertragung sensibler Daten über das Internet sicherer zu machen. Es verwendet eine Verschlüsselung, um die Daten vor der Abhörung und Manipulation zu schützen.</p>



<p>Die Geschichte von HTTPS beginnt 1994 mit Netscape Communications, dem Unternehmen hinter dem damals populären Netscape Navigator Webbrowser. Sie führten HTTPS ein, zusammen mit dem SSL (Secure Sockets Layer) Protokoll, um sichere Transaktionen über das Web zu ermöglichen.</p>



<p>Das SSL-Protokoll entwickelte sich über die Jahre weiter und es fand schließlich eine Ersetzung durch das TLS (Transport Layer Security) Protokoll statt, dass man heute für HTTPS verwendet. Die aktuelle Version (Stand Juli 2023) ist TLS 1.3, dessen Veröffentlichung im Jahr 2018 stattfand.</p>



<p>Heute wird HTTPS von fast allen Websites verwendet, die sensible Daten übertragen, wie Online-Banking, E-Commerce und E-Mail-Dienste. Mit der Einführung von Let&#8217;s Encrypt, einer kostenlosen, automatisierten und offenen Zertifizierungsstelle, ist HTTPS auch zunehmend auf anderen Websites verbreitet, was zu einem sichereren Web für alle beiträgt. Auch Google achtet auf das Protokoll, wenn man beabsichtigt, das Ranking der Website auf Dauer zu verbessern.</p>



<p>Auch wenn es über die Geschichte ersichtlich ist, wofür unsere beiden Kandidaten gut sind, gehe ich nachfolgend nochmals etwas spezifischer auf die Definitionen, sowie auf die Vor- und Nachteile ein.</p>



<h3 class="wp-block-heading">HTTP: Was ist das?</h3>



<p>HTTP steht für Hypertext Transfer Protocol. Es ist ein Protokoll, das für die Übertragung von Informationen im World Wide Web verwendet wird. HTTP ist zustandslos, das bedeutet, dass jede Anfrage, die über HTTP gesendet wird, unabhängig von den vorherigen Anfragen ist.</p>



<h3 class="wp-block-heading">HTTPS: Was ist das?</h3>



<p>HTTPS steht für Hypertext Transfer Protocol Secure. Wie der Name schon sagt, ist es eine sichere Version von HTTP. Es verwendet SSL (Secure Sockets Layer) oder TLS (Transport Layer Security) Protokolle, um eine verschlüsselte Verbindung zwischen dem Client (zum Beispiel einem Webbrowser) und dem Server herzustellen. Dies bedeutet, dass alle Daten, die zwischen Client und Server übertragen werden, verschlüsselt und daher sicher sind.</p>



<h3 class="wp-block-heading">Unterschiede zwischen den beiden Protokollen</h3>



<p>Der Hauptunterschied zwischen HTTP und HTTPS ist die Sicherheit. HTTP überträgt Daten in Klartext. Das bedeutet, wenn jemand die Daten während der Übertragung abfangen kann, kann er sie leicht lesen und verstehen. HTTPS dagegen verschlüsselt die Daten, die übertragen werden. Das bedeutet, selbst wenn jemand die Daten abfängt, kann er sie nicht lesen, ohne den richtigen Schlüssel zu haben, um die Verschlüsselung zu entschlüsseln.</p>



<p>Ein weiterer Unterschied ist die Port-Nummer, die von den beiden Protokollen verwendet wird. HTTP verwendet Port 80, während HTTPS Port 443 verwendet.</p>



<h3 class="wp-block-heading">Vorteile von HTTP</h3>



<p>Einfachheit: HTTP ist einfacher zu implementieren, da es keine Zertifikate oder Schlüssel benötigt.</p>



<p>Geschwindigkeit: Da es keine Verschlüsselung gibt, ist HTTP in der Regel schneller als HTTPS.</p>



<h3 class="wp-block-heading">Nachteile von HTTP</h3>



<p>Sicherheit: HTTP ist unsicher. Jede übertragene Information, einschließlich sensibler Daten wie Kreditkartennummern und Passwörtern, kann abgefangen und gelesen werden.</p>



<h3 class="wp-block-heading">Vorteile von HTTPS</h3>



<p>Sicherheit: HTTPS ist sicher. Es schützt die übertragenen Daten vor Abhören und Manipulation.</p>



<p>Vertrauen: Websites, die es verwenden, sind in der Regel von Benutzern und Suchmaschinen als vertrauenswürdiger eingestuft.</p>



<p>SEO: Suchmaschinen wie Google bevorzugen HTTPS-Websites und ordnen sie in den Suchergebnissen höher ein.</p>



<h3 class="wp-block-heading">Nachteile von HTTPS</h3>



<p>Komplexität: Die Einrichtung von HTTPS erfordert den Kauf und die Installation eines SSL-Zertifikats. Dies kann für einige Benutzer kompliziert sein.</p>



<p>Leistung: Aufgrund der Verschlüsselung kann es etwas langsamer sein als HTTP.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Die Nutzung der beiden Protokolle hängt stark von den Anforderungen und dem Schutzbedarf von Nutzerdaten ab. HTTP, obwohl weniger komplex und in manchen Fällen schneller, bietet keine Sicherheit für übertragene Daten. Jede Information, die über HTTP gesendet wird, ist anfällig für das Abfangen und den Missbrauch.</p>



<p>HTTPS hingegen stellt sicher, dass alle übertragenen Daten verschlüsselt und somit sicher sind. Es bietet ein höheres Maß an Vertrauen für Benutzer und kann sogar die SEO-Positionierung verbessern. Obwohl die Einrichtung der sichereren Variante eine gewisse Komplexität mit sich bringt und die Performance potenziell etwas beeinträchtigt werden kann, sind die Sicherheits- und Vertrauensvorteile in der heutigen digitalen Landschaft unverzichtbar. Aus diesem Grund fällt einem auch immer wieder das Schlosssymbol in der URL Leiste auf, die auf eine ungeschützte oder eben geschützte Website hinweist.</p>



<p>Insgesamt ist es klar, dass der Wechsel zu HTTPS nicht nur für Websites, die sensible Informationen verarbeiten, sondern für alle Websites von Vorteil ist. Dieser Trend zur Universalverschlüsselung ist ein positiver Schritt in Richtung eines sichereren und vertrauenswürdigeren Internets für alle Benutzer und ist in Bezug auf das Kosten-Nutzen-Verhältnis innerhalb eines vertretbaren Rahmens.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/">http und https &#8211; Eine Reise zur Web-Sicherheit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1811</post-id>	</item>
		<item>
		<title>Vue.js &#8211; Das progressive JavaScript Framework</title>
		<link>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/</link>
					<comments>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 10:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Aktiv]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Ecosystem]]></category>
		<category><![CDATA[Einarbeitung]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Ökosystem]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Vast]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1743</guid>

					<description><![CDATA[<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges Open Source JavaScript&#8211;Framework für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat es sich rasch zu einem der beliebtesten <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> für die Webentwicklung entwickelt. In diesem Beitrag geht es um die Hauptmerkmale von Vue.js und warum es für Entwickler in der Webentwicklung von Vorteil ist.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Vue.js</h3>



<ul class="wp-block-list">
<li>Leichtgewichtig und Modularität: Vue.js ist für seine geringe Größe bekannt, wobei die kompilierte und gzip-komprimierte Version gerade einmal 20 KB wiegt. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> ist in verschiedene Module unterteilt, sodass Entwickler nur diejenigen auswählen müssen, die sie für ihr Projekt benötigen, um den Overhead gering zu halten.</li>



<li>Progressive Anpassung: Vue.js ist als progressives <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> konzipiert, was bedeutet, dass man es schrittweise in bestehende Projekte implementieren kann. Es ermöglicht Entwicklern, bestehenden Anwendungen schrittweise Verbesserungen hinzuzufügen, ohne die gesamte Anwendung neu schreiben zu müssen.</li>



<li>Reaktive Datenbindung: Eine der Hauptstärken von Vue.js ist die reaktive Datenbindung. Dies bedeutet, dass die Übertragung aller Änderungen auf die Benutzeroberfläche automatisch stattfindet, ohne dass der Entwickler explizit eingreifen muss.</li>



<li>Single-File-Komponenten: Vue.js bietet eine einfache Möglichkeit, wiederverwendbare Komponenten zu erstellen, indem <a href="https://ceosbay.com/2022/12/29/erklaerung-html/">HTML</a>, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und <a href="https://ceosbay.com/2023/02/27/erklaerung-css/">CSS</a> via Kapselung in einer einzigen .vue-Datei zusammengefasst sind. Diese Tatsache vereinfacht die Strukturierung und Wartung von Projekten maßgeblich.</li>



<li>Declarative Rendering: Mit Vue.js können Entwickler deklarativ angeben, wie die Anwendung auf der Grundlage der zugrunde liegenden Daten rendert. Diese Herangehensweise verbessert die Lesbarkeit und Wartbarkeit des Codes, indem sie sich auf die Logik und das Verhalten der Anwendung konzentriert, anstatt auf die Implementierungsdetails.</li>



<li>Hervorragende Dokumentation und Community: Die offizielle Dokumentation von Vue.js ist umfassend und gut organisiert, was den Einstieg in das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> wesentlich erleichtert. Die Vue.js-Community ist aktiv und wächst stetig, was zu einer Vielzahl von Ressourcen, Plugins und Erweiterungen führt, die Entwicklern zur Verfügung stehen.</li>
</ul>



<h3 class="wp-block-heading">Warum Vue.js für Webentwickler von Vorteil ist</h3>



<ul class="wp-block-list">
<li>Einfache Einarbeitung: Im Vergleich zu anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular</a> oder <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, ist die Lernkurve relativ flach. Dies ermöglicht neuen Entwicklern einen schnellen Einstieg, während erfahrene Entwickler leicht von anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> umsteigen können.</li>



<li>Flexibilität und Skalierbarkeit: Aufgrund der modularen Architektur und progressiven Anpassung eignet sich Vue.js sowohl für kleine als auch für große Projekte. Entwickler können es sowohl für einfache Widgets als auch für komplexe Anwendungen verwenden. Man kann es problemlos in bestehende Projekte integrieren oder als Grundlage für neue Projekte verwenden.</li>



<li>Verbesserte Produktivität: Durch die Verwendung von Single-File-Komponenten und reaktiven Datenbindungen ermöglicht Vue.js Entwicklern, schneller und effizienter zu arbeiten. Weniger Zeit wird für die Aktualisierung des UI-Codes und die Synchronisierung von Daten aufgewendet, was zu einer höheren Produktivität führt.</li>



<li>Vast Ecosystem: Das Vue.js-Ökosystem umfasst eine breite Palette von Tools, Bibliotheken und Erweiterungen, die die Entwicklung von Anwendungen beschleunigen und vereinfachen. Beispiele hierfür sind das Vue CLI (Command Line Interface), Vuex für State Management und das Vue Router-Modul für die Navigation.</li>



<li>Aktive Entwicklung und Wartung: Die Weiterentwicklung und Wartung erfolgt stetig. Folglich kann man immer mit zeitgemäßen neuen Funktionen und Verbesserungen rechnen. Dies stellt sicher, dass das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> auf dem neuesten Stand der Webentwicklungstechniken bleibt und gleichzeitig sicher und stabil ist.</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Vue.js hat sich als vielseitiges und leistungsstarkes <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> etabliert, das Entwicklern ermöglicht, auf einfache Weise schnelle und skalierbare Webanwendungen zu erstellen. Mit seinen progressiven Anpassungsmöglichkeiten, reaktiven Datenbindungen und einem wachsenden Ökosystem ist es ein ausgezeichnetes Werkzeug für Webentwickler, unabhängig von ihrem Erfahrungsstand. Die einfache Einarbeitung und Flexibilität von Vue.js machen es zu einer attraktiven Wahl für Entwickler, die nach einer modernen Lösung für die Webentwicklung suchen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1743</post-id>	</item>
		<item>
		<title>RFC &#8211; Grundlage für Internetprotokolle und Kommunikationsstandards</title>
		<link>https://ceosbay.com/2023/04/12/erklaerung-rfc/</link>
					<comments>https://ceosbay.com/2023/04/12/erklaerung-rfc/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 12 Apr 2023 19:37:33 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Advanced]]></category>
		<category><![CDATA[Austausch]]></category>
		<category><![CDATA[Autor]]></category>
		<category><![CDATA[BCP]]></category>
		<category><![CDATA[Bitte]]></category>
		<category><![CDATA[Diskurs]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Erde]]></category>
		<category><![CDATA[For]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[Funktionsweise]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Idee]]></category>
		<category><![CDATA[IETF]]></category>
		<category><![CDATA[Informationen]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Kommentare]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Menschen]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Protokolle]]></category>
		<category><![CDATA[Referenzen]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Systeme]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[Titel]]></category>
		<category><![CDATA[Um]]></category>
		<category><![CDATA[Veröffentlichung]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1403</guid>

					<description><![CDATA[<p>Das Internet ist heutzutage allgegenwärtig und unerlässlich für Kommunikation, Geschäfte und Bildung. Es verbindet Milliarden von Geräten und ermöglicht die Zusammenarbeit und den Austausch von Informationen zwischen Menschen auf der ganzen Welt. Damit dies möglich &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC &#8211; Grundlage für Internetprotokolle und Kommunikationsstandards</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Das Internet ist heutzutage allgegenwärtig und unerlässlich für Kommunikation, Geschäfte und Bildung. Es verbindet Milliarden von Geräten und ermöglicht die Zusammenarbeit und den Austausch von Informationen zwischen Menschen auf der ganzen Welt. Damit dies möglich ist, müssen alle beteiligten Systeme dieselben Regeln und Standards befolgen, um effizient miteinander zu kommunizieren. Eine Schlüsselkomponente dafür sind die Request for Comments (RFCs) auf Deutsch &#8222;Bitte um Kommentare&#8220;.</p>



<h3 class="wp-block-heading">Eine kurze Zeitreise</h3>



<p>Die Geschichte der RFCs geht auf das Jahr 1969 zurück, als man das ARPANET (Advanced Research Projects Agency Network), den Vorläufer des Internets, ins Leben gerufen hat. Steve Crocker, ein Forscher am ARPANET-Projekt, veröffentlichte das erste RFC-Dokument, RFC 1, am 7. April 1969. Das Ziel war es, eine Plattform zu schaffen, auf der sich Forscher und Entwickler austauschen und Ideen zur Verbesserung und Standardisierung der Kommunikationsprotokolle diskutieren konnten.</p>



<p>Im Laufe der Jahre entwickelte sich das RFC-System zur zentralen Anlaufstelle für die Veröffentlichung und Diskussion von Internetstandards, Protokollen und Best Practices. Die <a href="https://www.ietf.org" target="_blank" rel="noreferrer noopener">Internet Engineering Task Force</a> (<a href="https://www.ietf.org" target="_blank" rel="noreferrer noopener">IETF</a>) übernahm die Verantwortung für die Verwaltung und Entwicklung der RFCs, und das RFC-Editor-Team kümmerte sich um die Veröffentlichung und das Format der Dokumente. Übrigens gibt es hier den Link zum RFC Editor mit Index aller RFCs und in <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a> 😉</p>



<p></p>



<h3 class="wp-block-heading">Die Struktur der RFCs</h3>



<p>Jedes RFC-Dokument hat eine eindeutige Nummer und einen Titel, der den Inhalt des Dokuments beschreibt. Die Dokumente sind in der Regel in einem einfachen Textformat verfasst, um die Lesbarkeit und den Zugang zu gewährleisten. Eine typische RFC-Struktur umfasst:</p>



<ul class="wp-block-list">
<li>Titel</li>



<li>Autor(en)</li>



<li>Datum der Veröffentlichung</li>



<li>Abstract: Eine Zusammenfassung des Inhalts</li>



<li>Einleitung: Einführung in das Thema</li>



<li>Hauptteil: Ausführliche Diskussion und Definition der Standards, Protokolle oder Best Practices</li>



<li>Referenzen: Liste der verwendeten und zitierten Quellen</li>



<li>Anhänge (falls erforderlich): Ergänzende Informationen oder BeispieleDie Bedeutung der RFCs</li>
</ul>



<p>RFCs sind von zentraler Bedeutung für das Internet und seine Funktionsweise. Sie dienen als offizielle Dokumentation für Internetstandards und Kommunikationsprotokolle wie https, SMTP, DNS und viele andere. Darüber hinaus decken RFCs auch Best Practices und Leitlinien für verschiedene Aspekte der Internetkommunikation ab.</p>



<h3 class="wp-block-heading">Einige wichtige RFCs sind:</h3>



<ul class="wp-block-list">
<li>RFC 791: Internet Protocol (IP)</li>



<li>RFC 793: Transmission Control Protocol (TCP)</li>



<li>RFC 1034 und RFC 1035: Domain Name System (DNS)</li>



<li>RFC 2616: Hypertext Transfer Protocol (https/1.1)</li>
</ul>



<p>Die Veröffentlichung von RFCs erfolgt in einem offenen, transparenten Prozess, bei dem Entwickler, Forscher und Interessierte aus der ganzen Welt teilnehmen können. Dieser kollaborative Ansatz fördert Innovation und ermöglicht es, dass die entwickelten Standards und Protokolle auf breite Zustimmung und Anwendung stoßen.</p>



<h3 class="wp-block-heading">RFC-Kategorien</h3>



<h4 class="wp-block-heading">RFCs kann man in verschiedene Kategorien eingeteilen:</h4>



<ul class="wp-block-list">
<li>Standards-Track RFCs: Diese RFCs definieren offizielle Internetstandards und Protokolle. Sie sind von der <a href="https://www.ietf.org" target="_blank" rel="noreferrer noopener">IETF</a> entwickelt und genehmigt. Sie durchlaufen einen mehrstufigen Prozess, der von der Entwurfsphase bis zur Verabschiedung als Internetstandard reicht.</li>



<li>Informational RFCs: Diese RFCs enthalten nützliche Informationen und Ratschläge, die zwar nicht normativ sind, aber dennoch zur Verbesserung der Internetkommunikation und -technologie beitragen können. Beispiele sind Leitlinien, Hintergrundinformationen oder Untersuchungen über neue Technologien.</li>



<li>Experimental RFCs: Diese RFCs beschreiben experimentelle Ideen oder Protokolle, die noch nicht zur Standardisierung bereit sind. Sie dienen als Plattform, um neue Technologien zu präsentieren und Feedback aus der Community zu sammeln.</li>



<li>Best Current Practice (BCP) RFCs: Diese RFCs dokumentieren etablierte Verfahren und Leitlinien. Sie sind von der IETF als bewährte Praktiken anerkannt.</li>
</ul>



<h3 class="wp-block-heading">Der RFC-Prozess</h3>



<h4 class="wp-block-heading">Der Prozess der Erstellung, Prüfung und Verabschiedung eines RFC ist offen und kollaborativ:</h4>



<ol class="wp-block-list" type="1">
<li>Ideenentwicklung: Ein Autor oder eine Gruppe von Autoren erstellt bzw. erstellen einen Entwurf, der die Idee, das Protokoll oder die Best Practice beschreibt.</li>



<li>Community-Feedback: Die IETF-Community erhält den Entwurf zur Überprüfung und Diskussion.</li>



<li>Überarbeitung und Verbesserung: Überarbeitung und Verbesserung auf Grundlage des erhaltenen Feedbacks, bis dieser für eine formelle Veröffentlichung als RFC bereit ist.</li>



<li>IETF-Genehmigung: Für Standards-Track und BCP RFCs ist die Genehmigung der IETF erforderlich, bevor man sie veröffentlichen kann.</li>



<li>Veröffentlichung: Nachdem alle notwendigen Schritte abgeschlossen sind, übernimmt das RFC-Editor-Team die Veröffentlichung des Dokuments und das Dokument erhält eine eindeutige RFC-Nummer.</li>
</ol>



<h3 class="wp-block-heading">Fazit</h3>



<p>RFCs sind ein wesentlicher Bestandteil der Funktionsweise des Internets und der Kommunikation zwischen verschiedenen Systemen und Geräten. Sie stellen eine offene, kollaborative Plattform dar, die es ermöglicht, gemeinsam an der Entwicklung von Internetstandards, Protokollen und Best Practices zu arbeiten. Die Bedeutung der RFCs für das Internet kann man nicht hoch genug schätzen, da sie für die Interoperabilität und Stabilität des gesamten Netzwerks von entscheidender Bedeutung sind.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC &#8211; Grundlage für Internetprotokolle und Kommunikationsstandards</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/12/erklaerung-rfc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1403</post-id>	</item>
		<item>
		<title>HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/29/erklaerung-hateoas/</link>
					<comments>https://ceosbay.com/2023/03/29/erklaerung-hateoas/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 29 Mar 2023 20:49:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1055</guid>

					<description><![CDATA[<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der REST-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding im Rahmen seiner Dissertation bzw. bei der Definition von <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a> eingeführt hat. Im Wesentlichen bedeutet dies, dass ein Client in der Lage ist, den Zustand der Anwendung zu verändern und den Server zu navigieren, indem er Hypertext-Links folgt, anstatt explizit URLs anzugeben.</p>



<p>Es beschreibt unter anderem eines der wichtigsten <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Eigenschaften. Da der Architekturstil eine universelle Schnittstelle bieten soll, fordert HATEOAS, dass der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Client sich ausschließlich durch das Folgen von URIs (Uniform Resource Identifier) im Hypermedia-Format durch die Webanwendung bewegen kann. Wird dieses Prinzip umgesetzt, benötigt der Client abgesehen von einem grundsätzlichen Verständnis von Hypermedia. Keinerlei weitere Informationen, um mit der Anwendung bzw. dem Server zu kommunizieren.</p>



<p>Die Bereitstellung der einzelnen URIs erfolgt dabei beispielsweise in Form von href- und src-Attributen. Vorausgesetzt es handelt sich um <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Dokumente oder -Snippets. Auch durch <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>&#8211; bzw. <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Attribute/-Elemente, die der jeweilige Client automatisch erkennt.</p>



<p>Durch die Umsetzung des HATEOAS-Prinzips lässt sich die Schnittstelle eines <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Services jederzeit anpassen. Dies kann ein wichtiger Vorteil dieser Architektur gegenüber anderen Applikationsstrukturen sein. Vor allem im direkten Vergleich mit Anwendungen, die man auf Grundlage von SOAP (Simple Object Access Protocol) ausführt.</p>



<p>Das HATEOAS-Konzept ist wichtig, weil es die Flexibilität und Skalierbarkeit von RESTful APIs verbessert. Ohne HATEOAS müsste ein Client spezifische URLs und Endpunkte kennen, um eine Anwendung effektiv zu nutzen. Dies kann jedoch kritisch sein, da URLs sich in der Regel ändern können. Diese Tatsache kann jedoch eben auch zu Fehlern und fehlerhaften Anfragen führen.</p>



<p>Durch die Verwendung von Hypertext-Links wird ein Client in die Lage versetzt, den aktuellen Zustand der Anwendung zu verstehen und dynamisch zu navigieren. Wenn beispielsweise ein Client eine Anfrage an den Server sendet, um eine Liste von Benutzern abzurufen, könnte der Server eine Antwort zurückgeben, die Links zu den einzelnen Benutzerdetails enthält. Der Client kann dann den Link zu einem bestimmten Benutzer folgen, um weitere Informationen abzurufen.</p>



<p>Ein Beispiel ist eine Bestellungsverwaltung in einem Online-Shop. Wenn ein Kunde eine Bestellung aufgeben möchte, kann der Server eine Antwort zurückgeben. Die enthalten wiederum Links zu den verschiedenen Schritten des Bestellvorgangs. Um beispielsweise den Warenkorb anzuzeigen, die Versandadresse anzugeben, Zahlungsinformationen anzugeben, etc. Der Client kann dann den Link zum nächsten Schritt folgen, ohne spezifische URLs oder Endpunkte zu kennen.</p>



<p>HATEOAS ist jedoch nicht nur für die Navigation innerhalb einer Anwendung wichtig. Es ermöglicht auch eine einfache Integration mit anderen Anwendungen und Diensten. Wenn eine API beispielsweise HATEOAS-konform ist, kann man sie von anderen Anwendungen oder Diensten aus leichter nutzen, da sie den Zustand der Anwendung und die verfügbaren Aktionen verstehen können.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Insgesamt verbessert das HATEOAS-Konzept die Flexibilität und Skalierbarkeit von RESTful APIs, indem es Clients in die Lage versetzt, dynamisch zu navigieren und den aktuellen Zustand der Anwendung zu verstehen. Durch die Verwendung von Hypertext-Links werden Anwendungen leichter integrierbar und besser wartbar. Wenn man also eine RESTful API entwirft, sollte man in Betracht ziehen, HATEOAS zu verwenden, um die Nutzbarkeit und die Flexibilität der Anwendung zu optimieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/29/erklaerung-hateoas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1055</post-id>	</item>
		<item>
		<title>JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/25/erklaerung-jacoco/</link>
					<comments>https://ceosbay.com/2023/03/25/erklaerung-jacoco/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 20:22:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Abdeckung]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[City]]></category>
		<category><![CDATA[Co]]></category>
		<category><![CDATA[Codeabdeckungsanalyse]]></category>
		<category><![CDATA[Coverage]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Ecl]]></category>
		<category><![CDATA[EclEmma]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[EMMA]]></category>
		<category><![CDATA[Fälle]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Grün]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Ja]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Modulare]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Qube]]></category>
		<category><![CDATA[Rot]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[SonarQube]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testfälle]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1238</guid>

					<description><![CDATA[<p>JaCoCo ist ein Open-Source-Toolkit zur Analyse und Anzeige der Java-Codeabdeckung. Es wird unter der Eclipse Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für Eclipse. Im &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JaCoCo ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Toolkit zur Analyse und Anzeige der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Codeabdeckung. Es wird unter der <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a>.</p>



<p>Im Grunde genommen handelt es sich dabei um zwei Arten von Tools, die zum einen Anweisungen dem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Quellcode hinzufügen und dessen Neukompilierung einfordern und zum anderen Tools, die den Bytecode entweder vor oder während der Ausführung instrumentieren. Das Ziel von JaCoCo ist es, herauszufinden, welche Teile des Codes getestet werden, indem es die Codezeilen registriert, die man bei der Ausführung eines Tests ausführt. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a> bzw. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> ist diesbezüglich ebenfalls ein gutes Stichwort.</p>



<h3 class="wp-block-heading">Features von JaCoCo</h3>



<ul class="wp-block-list">
<li>Abdeckungsanalyse von Anweisungen (C0), Verzweigungen (C1), Zeilen, Methoden, Typen und zyklomatischer Komplexität (McCabe-Metrik).</li>



<li>Basiert auf <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Bytecode und funktioniert daher auch ohne Quelldateien.</li>



<li>Einfache Integration durch <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agent-basierte On-the-fly-Instrumentierung. Andere Integrationsszenarien wie benutzerdefinierte class loader sind über die API möglich.</li>



<li><a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>-unabhängig: Reibungslose Integration in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">VM</a>-basierte Anwendungen wie einfache <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Programme, OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>, Web-Container oder EJB-Server.</li>



<li>Kompatibel mit allen freigegebenen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Klassendateiversionen.</li>



<li>Unterstützung für verschiedene JVM-Sprachen.</li>



<li>Verschiedene Berichtsformate (<a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>, CSV).</li>



<li>Remote-Protokoll und JMX-Steuerung zur Anforderung von Ausführungsdaten-Dumps vom Coverage Agent zu jedem beliebigen Zeitpunkt.</li>



<li>Ant-Tasks zum Sammeln und Verwalten von Ausführungsdaten und zum Erstellen strukturierter Abdeckungsberichte.</li>



<li><a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Plug-in zum Sammeln von Abdeckungsinformationen und Erstellen von Berichten in <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Builds.</li>
</ul>



<p>JaCoCo bietet die Instructions, Line- und Branchabdeckung. Im Gegensatz zu beispielsweise Atlassian Clover und OpenClover, die eine Instrumentierung des Quellcodes erfordern, kann JaCoCo <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Bytecode mit zwei verschiedenen Ansätzen instrumentieren:</p>



<ol class="wp-block-list" type="1">
<li>JCov on the fly, während der Code mit einem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agenten ausgeführt wird beispielsweise wie Cobertura und JCov vor der Ausführung (offline)</li>



<li>Man kann es aber auch so konfigurieren, dass man die gesammelten Daten in einer Datei speichert oder via TCP versendet. Im Gegensatz zu Cobertura und EMMA ist die Unterstützung von so ziemlich allen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Versionen ab der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Version 7 gewährleistet.</li>
</ol>



<h3 class="wp-block-heading">Tools, die JaCoCo verwenden oder enthalten</h3>



<p>Einige davon habe ich bereits in diversen Beiträgen thematisiert. Mit einem Klick auf das jeweilige Tool kommt man auf den jeweiligen Beitrag.</p>



<ul class="wp-block-list">
<li><a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/" target="_blank" rel="noreferrer noopener">SonarQube</a> JaCoCo Plugin &#8211; Standardmäßig für Code Abdeckungsanalysen innerhalb der Code-Qualitätsmanagement-Plattform</li>



<li>EclEmma <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> (Software) Code Coverage Plugin</li>



<li><a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Jenkins</a> JaCoCo Plugin</li>



<li>Netbeans JaCoCo support</li>



<li><a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ IDEA</a> (Seit Version 11)</li>



<li>Gradle JaCoCo Plugin</li>



<li>Visual Studio Team Services</li>



<li>TeamCity</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>JaCoCo bietet sich für die Codeabdeckungsanalyse bei der modularen Softwareentwicklung bzw. bei den Unit Tests an. Die Abdeckungsgrade geben an, wie viele Anweisungen, Zweige usw. die Tests durchlaufen. Auf Basis der so gewonnenen Erkenntnisse kann man weitere sinnvolle Testfälle ermitteln oder aber nicht beanspruchten bzw. toten Code entfernen. Es gibt kein allgemeingültiges Mindestmaß an Codeabdeckung. Man definiert die jeweils erforderliche Testabdeckung in Anbetracht des Anwendungsfalls nach einer Risikoeinschätzung sowie der eigenen Entwickler-Fähigkeiten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/25/erklaerung-jacoco/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1238</post-id>	</item>
		<item>
		<title>Parser &#8211; Die Macht der Datenverarbeitung</title>
		<link>https://ceosbay.com/2023/03/15/erklaerung-parser/</link>
					<comments>https://ceosbay.com/2023/03/15/erklaerung-parser/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 15 Mar 2023 15:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Dos]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Adventure]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Baumstruktur]]></category>
		<category><![CDATA[Computerlinguistik]]></category>
		<category><![CDATA[Dateien]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Down]]></category>
		<category><![CDATA[Grammatik]]></category>
		<category><![CDATA[Grammatikart]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Kontextsensitive]]></category>
		<category><![CDATA[Mathematisch]]></category>
		<category><![CDATA[Pars]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[Quellen]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Schumaschine]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Verfahren]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[Zerteiler]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1094</guid>

					<description><![CDATA[<p>Ein Parser, von „analysieren“, bzw. lateinisch pars, „Teil“; im Deutschen gelegentlich auch Zerteiler genannt, ist ein Computerprogramm, dass in der Informatik für die Zerlegung und Umwandlung einer Eingabe in ein für die Weiterverarbeitung geeigneteres Format &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/15/erklaerung-parser/">Parser &#8211; Die Macht der Datenverarbeitung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ein Parser, von „analysieren“, bzw. lateinisch pars, „Teil“; im Deutschen gelegentlich auch Zerteiler genannt, ist ein Computerprogramm, dass in der Informatik für die Zerlegung und Umwandlung einer Eingabe in ein für die Weiterverarbeitung geeigneteres Format zuständig ist. Häufig werden Parser eingesetzt, um im Anschluss an den Analysevorgang die Semantik der Eingabe zu erschließen, um im Anschluss Aktionen auszuführen.</p>



<p>Im Vergleich zu einem Recognizer, der die Eingabe analysiert und ausgibt, ob diese im Sinne der Vorgaben richtig oder falsch ist, gibt der Parser die Analyse einer Eingabe in einer gewünschten Form aus und erzeugt zusätzlich Strukturbeschreibungen.</p>



<h3 class="wp-block-heading">Wie funktioniert ein Parser?</h3>



<p>Zur Analyse des Texts verwenden Parser in der Regel einen separaten Lexer. Dieser zerlegt die als Zeichenkette vorliegenden Eingabedaten in Token (Eingabesymbole bzw. „Wörter“, die es versteht). Weil die Zerlegung in Token einer regulären Grammatik folgt, ist der Scanner meist ein endlicher Automat. Token dienen als atomare Eingabezeichen des Parsers. Parser, die keinen separaten Scanner verwenden, nennt man Scannerless Parser.</p>



<p>Der eigentliche Parser als Implementierung eines abstrakten Automaten, meist realisiert als Kellerautomat, kümmert sich dagegen um die Grammatik der Eingabe, führt eine syntaktische Überprüfung der Eingangsdaten durch und erstellt in der Regel aus den Daten einen Ableitungsbaum, den man im Anschluss zur Weiterverarbeitung der Daten verwendet. Typische Anwendungen sind die semantische Analyse, Codegenerierung in einem Compiler oder die Ausführung durch einen Interpreter.</p>



<p>Bei <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a> zerlegt ein lexikalischer Scanner beispielsweise die <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Datei in <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Tags und Fließtext. Diese Bestandteile reicht es dann an den Parser weiter. Der Scanner ist also ausschließlich auf das Aussehen der Syntaxelemente aus. Spitze Klammern = <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Tag 😉&nbsp;<a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">Siehe auch meinen Beitrag über HTML</a>.</p>



<p>Der Parser übernimmt die übernimmt die Verarbeitung der syntaktischen Zusammenhänge, untersucht, welche Paare von Tags zusammengehören bzw. wie die Tags ineinander verschachtelt sind. Die inhaltliche Bedeutung der Tags interessiert den Parser dagegen nicht. Die Berücksichtigung findet erst in der darauffolgenden Weiterverarbeitung statt.</p>



<p>Veranschaulicht, ist ein Parser die Software, welche die Anweisungen im Quelltext des Users überprüft, weiterverarbeitet und weiterleitet.</p>



<h3 class="wp-block-heading">Welche Typen von Parsern gibt es?</h3>



<p>Man unterscheidet bei der allgemeinen Vorgehensweise verschiedene Parse-Verfahren. Folglich erfolgt die Unterscheidung nach der Reihenfolge, in der die Knoten des Ableitungsbaums erstellt sind. Beispiele hierfür sind: Top-Down, auch theoriegetriebenes Parsing; Bottom-Up, auch eingabegetriebenes Parsing; Left Corner, spezifischer Vorgehensweise (LL, LR, SLR, LALR, LC, …) und Implementierungstechnik (rekursiv absteigend, rekursiv aufsteigend oder tabellengesteuert) unterschieden. Weiter erfolgt die Unterscheidung auch, wie bereits erwähnt, nach der Grammatikart.</p>



<h3 class="wp-block-heading">Parser für kontextsensitive Grammatiken</h3>



<p>Das Parsen wohldefinierter künstlicher Sprachen, hierbei ist natürlich die Rede von Programmiersprachen, ist weniger komplex als das Parsen frei gewachsener natürlicher Sprachen wie Englisch, Deutsch oder einer anderen Sprache, die durch eine Vielzahl von Mehrdeutigkeiten, Irregularitäten und Inkonsistenzen geprägt sind. Wobei man hierüber mehr in der Computerlinguistik erfährt, über die ich in einem zukünftigen Beitrag schreiben werde.</p>



<h3 class="wp-block-heading">Fallbeispiel</h3>



<p>Man setzt Parser häufig ein, um eine Aneinanderreihung von Symbolen zu einer Baumstruktur zu adaptieren. Dies kann bei einem mathematischen Ausdruck folgenderweise aussehen:</p>



<pre class="wp-block-code"><code>7+(7+7)-sin(π) </code></pre>



<figure class="wp-block-table"><table><tbody><tr><td>Symbol</td><td>Kategorie</td><td>Erläuterung</td></tr><tr><td>7</td><td>Zahl</td><td></td></tr><tr><td>+</td><td>Rechenzeichen</td><td></td></tr><tr><td>(</td><td>Klammer auf</td><td></td></tr><tr><td>7</td><td>Zahl</td><td></td></tr><tr><td>+</td><td>Rechenzeichen</td><td></td></tr><tr><td>7</td><td>Zahl</td><td></td></tr><tr><td>)</td><td>Klammer zu</td><td></td></tr><tr><td>&#8211;</td><td>Rechenzeichen</td><td></td></tr><tr><td>sin</td><td>Symbolname</td><td>(hier: die Sinus-Funktion)</td></tr><tr><td>(</td><td>Klammer auf</td><td></td></tr><tr><td>π</td><td>Symbolname</td><td>(hier: die Kreiszahl π)</td></tr><tr><td>)</td><td>Klammer zu</td><td></td></tr></tbody></table></figure>



<p>Die weitere Aufgabe des Parsers ist nun, die zugrundeliegende Struktur dieser Symbolfolge zu erkennen. Häufig geschieht dies in Form eines Parsebaums (abstrakter Syntaxbaum), der in diesem Fall folgendermaßen aussehen kann:</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="871" height="442" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?resize=871%2C442&#038;ssl=1" alt="" class="wp-image-1161" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?resize=1024%2C520&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?resize=300%2C152&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?resize=768%2C390&amp;ssl=1 768w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?resize=1070%2C543&amp;ssl=1 1070w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/03/ParserOrganigram.jpg?w=1434&amp;ssl=1 1434w" sizes="auto, (max-width: 871px) 100vw, 871px" /><figcaption class="wp-element-caption">So kann die Ausgabe eines einfachen Parsers aussehen und die Analyse erfolgt ausschließlich durch weitere Programme.</figcaption></figure>



<h3 class="wp-block-heading">Wo finden Parser Anwendung</h3>



<ul class="wp-block-list">
<li><a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Code besteht aus reinem Text. Der in einem Webbrowser standardmäßig enthaltene Parser erstellt daraus den logischen Aufbau als Datenstruktur. Das Aussehen dieser Elemente wird getrennt via CSS definiert.</li>



<li><a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Parser analysieren <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Dokumente und stellen die darin enthaltenen Informationen für die weitere Verarbeitung zur Verfügung.</li>



<li><a href="https://ceosbay.com/2022/12/28/erklaerung-rss/" target="_blank" rel="noreferrer noopener">RSS</a>-Parser wandeln <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/" target="_blank" rel="noreferrer noopener">RSS</a>-Feeds in ein passendes Datenformat um. Beispielsweise für eine <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Seite.</li>



<li>URI-Parser lösen Schemata wie URLs in ihren hierarchischen Aufbau auf.</li>



<li>Logdatei-Parser dienen zum Extrahieren von relevanten Informationen aus Webserver-Protokolldateien, Ereignisprotokollen und anderer in Logdateien gespeicherter Informationen zur automatisierten Analyse.</li>



<li>Suchmaschinen parsen Webseiten und crawlen relevante Textpassagen.</li>



<li>Auslesen einer Programmiersprache. Aus der erhaltenen Datenstruktur kann ein Compiler dann Maschinencode bzw. Bytecode erzeugen.</li>



<li>Ein Kommandozeileninterpreter parst Befehle mitsamt deren Parameter für die korrekte Ausführung der Anweisungen des Benutzers. Das ältere Publikum, die mit DOS vertraut sind, kennen dies vielleicht noch aus der command.com Datei 😉</li>



<li>In Textadventures wie erfolgt die Steuerung der Spielfigur über die Eingabe von Befehlen in natürlicher Sprache, z. B. „Gehe in den Raum“, „Öffne Tür“ usw. Der Parser greift auf eine Datenbank aller manipulierbarer Objekte im Spiel zu und analysiert, welche Interaktion mit welchen Objekten der Spielwelt der Spieler mit seiner Befehlseingabe meinte.</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Es gibt verschiedene Parser. Je nach der zu analysierenden Grammatik sucht man sich den passenden Parser aus. Durch die richtige Wahl resultieren bessere und akkuratere Ergebnisse. Durch den Einsatz von diversen Parsern ist es auch möglich, sich relevante Informationen aus den verschiedensten Quellen heranzuziehen. Angefangen von Börsen Daten, über Wetterinformationen und bis hin zu allem, was das Herz begehrt. Sowohl die Anwendungsentwicklung, als auch das Web ist heute ohne einen Parser kaum mehr vorstellbar.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/15/erklaerung-parser/">Parser &#8211; Die Macht der Datenverarbeitung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/15/erklaerung-parser/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1094</post-id>	</item>
		<item>
		<title>JSON &#8211; Schönheit der einfachen Datenübertragung</title>
		<link>https://ceosbay.com/2023/03/14/erklaerung-json/</link>
					<comments>https://ceosbay.com/2023/03/14/erklaerung-json/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 18:23:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[8]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Bibliotheken]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Echtzeit]]></category>
		<category><![CDATA[Gründer]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Notation]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[Socket]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1071</guid>

					<description><![CDATA[<p>JSON JavaScript Object Notation, ist ein offenes Standard-Datei- und Datenaustauschformat, dass menschenlesbaren Text zur Speicherung und Übertragung (Serialisierung) von Datenobjekten, einschließlich dem von Webanwendungen mit Servern ermöglicht. JSON ist von JavaScript abgeleitet und Programmiersprachen unabhängig. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON &#8211; Schönheit der einfachen Datenübertragung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JSON <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Object Notation, ist ein offenes Standard-Datei- und Datenaustauschformat, dass menschenlesbaren Text zur Speicherung und Übertragung (Serialisierung) von Datenobjekten, einschließlich dem von Webanwendungen mit Servern ermöglicht. JSON ist von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> abgeleitet und Programmiersprachen unabhängig. Parser und Generatoren existieren in allen verbreiteten Sprachen.&nbsp;</p>



<p>Insbesondere trifft man auf JSON bei Webanwendungen und mobilen Apps in Verbindung mit <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, Ajax oder WebSockets zum Übertragen von Daten zwischen dem Client und dem Server.</p>



<h3 class="wp-block-heading">Serialisierung</h3>



<p>Bei einer Abbildung von strukturierten Daten auf eine sequenzielle Darstellungsform, spricht man in der Informatik von einer Serialisierung. Die Serialisierung wird hauptsächlich für die Speicherung von Objekten in Dateien und für die Übertragung von Objekten über das Netzwerk bei verteilten Softwaresystemen verwendet.</p>



<p>Übliche Speichermedien sind nur in der Lage, Datenströme zu speichern. Serialisierung für die Persistenz von Objekten. Hier wird der komplette Zustand des Objektes, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird.</p>



<p>Nach der Serialisierung liegt ein Objekt mehrfach vor. Sowohl in der externen Darstellung, beispielsweise als Datei als auch im Arbeitsspeicher. Wird nach der Serialisierung eine Änderung am Objekt im Arbeitsspeicher vorgenommen, hat dieses keine Auswirkung auf das serialisierte Objekt in der externen Darstellung.</p>



<p>Die Umkehrung der Serialisierung, also die Umwandlung eines Datenstroms in Objekte, bezeichnet man als Deserialisierung.</p>



<p>In der Linguistik bezeichnet man mit Serialisierung die Art und Weise, wie hierarchische grammatikalische Strukturen in eine lineare Abfolge gebracht sind, damit sie in einer zeitlichen Abfolge sprachlicher Ausdrücke dargestellt werden kann. Diese Reihenfolge kann in verschiedenen Sprachen unterschiedlich sein.</p>



<h3 class="wp-block-heading">Eine kurze Zeitreise</h3>



<p>JSON entstand aus der Notwendigkeit heraus, ein zustandsloses (stateless) Echtzeit-Kommunikationsprotokoll zwischen Server und Browser zu haben, ohne Browser-PlugIns wie Flash oder Java-Applets zu verwenden, die sich Anfang der 2000er Jahre als vorherrschende Methoden, im Einsatz befanden.</p>



<p>Crockford spezifizierte und verbreitete als Erster das JSON-Format. Das Akronym stammt von State Software, ein von Crockford und anderen im März 2001 gegründetes Unternehmen. Die Gründer hatten sich geeinigt, ein System zu entwickeln, dass Standard-Browser-Funktionen nutzte und eine Abstraktionsschicht für Web-Entwickler bereitstellte, um zustandsbehaftete (abstraction layer) Web-Anwendungen zu erstellen, die über eine dauerhafte Duplex-Verbindung zu einem Web-Server verfügten. Sie hielten dafür zwei Hypertext Transfer Protocol (https)-Verbindungen offen und bauten die Verbindung wieder auf, bevor die Standard-Browser-Timeouts eintraten, wenn kein Datenaustausch stattfand. Die Gründer stimmten darüber ab, ob das Datenformat JSML (<a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Markup Language) oder JSON (<a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Object Notation) genannt und unter welcher Lizenz die Verfügungstellung stattfinden sollte. Die Website JSON.org ging dann im Jahr 2002 online. Im Dezember 2005 begann Yahoo! damit, die ersten Webdienste (Web-Services) in JSON anzubieten.</p>



<h3 class="wp-block-heading">Vorgänger geht auf ein Spiel für Kinder</h3>



<p>Ein Vorläufer der JSON-Bibliotheken wurde in einem Projekt für Kinder, einem digitalen Trading-Spiel namens Cartoon Orbit bei Communities.com (Die Gründer von State hatten alle zuvor bei diesem Unternehmen gearbeitet), für Cartoon Network verwendet, dass ein browserseitiges Plugin mit einem proprietären Nachrichtenformat zur Manipulation von DHTML-Elementen nutzte (Dieses System gehört übriges 3DO). Nach der Entdeckung der frühen Ajax-Fähigkeiten verwendeten digiGroups, Noosh und andere, Frames, um Informationen in das visuelle Feld des Browsers zu übertragen, ohne den visuellen Kontext einer Webanwendung aktualisieren zu müssen. So hatten sie Rich-Web-Anwendungen in Echtzeit erstellt, die nur die Standard https-, <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>&#8211; und <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Fähigkeiten von Netscape 4.0.5+ und IE 5+ verwendeten. Crockford fand darauf heraus, dass <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> als objektbasiertes Nachrichtenformat für ein solches System verwendet werden kann. Das System wurde später an Sun Microsystems, Amazon.com und EDS verkauft.</p>



<p>JSON basiert teilweise auf <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und wird häufig auch mit <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> verwendet. Dennoch ist es ein sprachunabhängiges Datenformat. Code zum Parsen und Generieren von JSON-Daten ist in vielen Programmiersprachen leicht verfügbar. Auf der JSON-Website sind die JSON-Bibliotheken nach Sprachen geordnet.</p>



<p>Im Oktober 2013 veröffentlichte Ecma International die erste Ausgabe seines JSON-Standards ECMA-404. Im selben Jahr verwendete RFC 7158 ECMA-404 als Referenz. 2014 wurde RFC 7159 zur Hauptreferenz für die Verwendung von JSON im Internet und löste RFC 4627 sowie RFC 7158 ab (wobei ECMA-262 und ECMA-404 als Hauptreferenzen beibehalten wurden). Im November 2017 veröffentlichte ISO/IEC JTC 1/SC 22 ISO/IEC 21778:2017 als internationalen Standard. Am 13. Dezember 2017 hat die Internet Engineering Task Force RFC 7159 durch die Veröffentlichung von RFC 8259, der aktuellen Version des Internet-Standards STD 90, überholt (ersetzt).</p>



<p>Crockford fügte der JSON-Lizenz eine Klausel hinzu, die besagt, dass &#8222;die Software für das Gute, nicht für das Böse verwendet werden soll&#8220;, um die JSON-Bibliotheken zu öffnen und sich gleichzeitig über Unternehmensjuristen und diejenigen lustig zu machen, die übermäßig pedantisch sind. Ironischer- und lustigerweise führte diese Klausel zu Konflikten der JSON-Lizenz mit anderen <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Lizenzen, da <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Software und freie Software in der Regel keine Einschränkungen hinsichtlich des Verwendungszwecks implizieren.</p>



<h3 class="wp-block-heading">Wie ist JSON aufgebaut?</h3>



<p>Die Daten können beliebig verschachtelt werden, beispielsweise ist ein Array (indizierte Liste) von Objekten möglich, die wiederum Arrays oder Objekte enthalten. Als Zeichenkodierung benutzt JSON standardmäßig UTF-8. Auch UTF-16 und UTF-32 werden unterstützt.</p>



<h3 class="wp-block-heading">JSON und die Typen von Elementen</h3>



<ul class="wp-block-list">
<li>null = Nullwert (Wird durch das Schlüsselwort null dargestellt.)</li>



<li>Boolean = Boolescher Wert (Wird durch die Schlüsselwörter true und false dargestellt. Dies sind keine Zeichenketten. Sie werden daher, wie null, nicht in Anführungszeichen gesetzt.</li>



<li>Number = Zahl (Ist eine Folge der Ziffern 0–9. Diese Folge kann durch ein negatives Vorzeichen &#8211; eingeleitet und durch einen Dezimalpunkt . unterbrochen sein. Die Zahl kann durch die Angabe eines Exponenten e oder E ergänzt werden, dem ein optionales Vorzeichen + oder &#8211; und eine Folge der Ziffern 0–9 folgt.)</li>



<li>String = Zeichenkette (Eine Folge von null oder mehr Unicode-Zeichen. Es beginnt und endet mit doppelten geraden Anführungszeichen (&#8222;). Es kann Unicode-Zeichen und durch \ eingeleitete Escape-Sequenzen enthalten.</li>



<li>Array = Anordnung (Beginnt mit [ und endet mit ]. Es enthält eine durch Kommata geteilte, indizierte Liste von Elementen gleichen oder verschiedenen Typen. Leere Arrays sind ebenfalls zulässig.</li>



<li>Object = Objekt (Beginnt mit { und endet mit }. Es enthält eine durch Kommata geteilte, ungeordnete Liste von Eigenschaften. Objekte ohne Eigenschaften („leere Objekte“) sind ebenfalls zulässig. Das Objekt besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt (Schlüssel : Wert). Die Schlüssel sollten eindeutig sein, da unterschiedliche Parser mit mehrfach vorkommenden Schlüsseln unterschiedlich umgehen. Während ECMA-404 keine Eindeutigkeit voraussetzt, fordert RFC 7159, dass Schlüssel innerhalb eines Objekts eindeutig sind. Folglich ist der Schlüssel eine Zeichenkette und der Wert ein beliebiges Element.</li>
</ul>



<p>Nicht signifikante Leerraum-Zeichen sind erlaubt, also Leerzeichen (Unicode U+0020), horizontale Tabs (U+0009), Zeilenumbrüche mittels LF und / oder CR (U+000D und U+000A). Diese Zeichen werden außerhalb von Zeichenketten bei der Interpretation ignoriert.</p>



<h3 class="wp-block-heading">Die Grenzen von JSON</h3>



<p>JSON unterstützt nicht alle von JavaScript unterstützten Datentypen. Bei nicht unterstützten Datentypen wird folgendermaßen serialisiert:</p>



<ul class="wp-block-list">
<li>NaN, Infinity und -Infinity werden zu null serialisiert.</li>



<li>Date-Objekte werden in eine Zeichenkette konvertiert, die einer Datumsformatbeschreibung nach ISO-8601 genügt.</li>



<li>Function-, RegExp- und Error-Objekte werden verworfen.</li>
</ul>



<h3 class="wp-block-heading">Das folgende Beispiel zeigt eine mögliche JSON-Darstellung zur Beschreibung meiner Person.</h3>



<pre class="wp-block-code"><code>{
  "Unternehmen": "COEZBAY",
  "Nummer": "2023-23-23-777",
  "Waehrung": "BTC",
  "Inhaber": "CEO"
  {
    "Name": "Oezbay",
    "Vorname": "Cagatay",
    "maennlich": true,
    "Hobbys": &#91;"IT", "Schach", "Basketball"],
    "Alter": 38,
    "Kinder": &#91;],
    "Partner": null
  }
}</code></pre>



<h3 class="wp-block-heading">Das JSON-Schema</h3>



<p>Das JSON-Schema gibt ein JSON-basiertes Format an, um die Struktur von JSON-Daten für die Validierung, Dokumentation und Interaktionssteuerung zu definieren. Es enthält einen Contract für die JSON-Daten, die für eine bestimmte Anwendung erforderlich sind und wie diese Daten geändert werden können.</p>



<p>Das Schema basiert auf den Konzepten des <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Schemas, ist jedoch JSON-basiert. Wie in XSD (<a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> Schema Definition) können dieselben Serialisierungs- und Deserialisierungsprogramme sowohl für das Schema als auch für die Daten verwendet werden. Es ist selbstbeschreibend und in einem Internet-Entwurf der <a href="https://www.ietf.org" target="_blank" rel="noreferrer noopener">Internet Engineering Task Force</a>&nbsp;festgelegt. Für verschiedene Programmiersprachen stehen mehrere Validatoren mit jeweils unterschiedlichen Konformitätsstufen zur Verfügung.</p>



<h3 class="wp-block-heading">Der Vergleich mit XML</h3>



<p>Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> beschreiben die Struktur eines Datensatzes. Der Datensatz kann weitere Datensätze enthalten. Dadurch sind beliebig tief verschachtelte Strukturen möglich.</p>



<p>In XML sind die einzelnen Knoten der Datenstruktur benannt, während die Knoten in JSON unbenannt bleiben.</p>



<p>Einfache Zeichenketten in <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> können sowohl als Attribut eines Elements als auch als eigenständiges Element beschrieben sein. In JSON gibt es diese Unterscheidung nicht. Diese in den meisten Fällen irrelevante Flexibilität führt dazu, dass sich die Struktur von <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Dokumenten häufig unnötigerweise unterscheidet.</p>



<p>Sowohl für JSON als auch für <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> gibt es Beschreibungssprachen, um weiter einzugrenzen, wie „gültige“ Dokumente auszusehen haben. Ganz im Gegensatz zu „wohlgeformten“ Dokumenten.</p>



<p>Die Syntax von JSON ist einfacher gestaltet und erscheint daher oft lesbarer und insbesondere leichter schreibbar. In der Regel produziert JSON auch einen geringeren Overhead im Vergleich zu <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>.</p>



<p>Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> müssen von einem speziellen Parser eingelesen werden. Traditionell ist jedes wohlgeformte JSON-Dokument ein gültiger <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Ausdruck. Das unaufmerksame Interpretieren von JSON-Dokumenten mit eval() führt jedoch zu Sicherheitslücken, die nicht zu unterschätzen sind.</p>



<p>Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> sind nicht gut zum Repräsentieren von Binärdaten geeignet, da beide Datenformate als Grundelement zeichenbasiert sind und nicht bytebasiert.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON &#8211; Schönheit der einfachen Datenübertragung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/14/erklaerung-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1071</post-id>	</item>
	</channel>
</rss>
