<?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>GitHub Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/github/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/github/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sat, 29 Mar 2025 22:08:12 +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>GitHub Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/github/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>GitHub Flow &#8211; Der einfache Workflow für moderne Softwareentwicklung</title>
		<link>https://ceosbay.com/2025/03/28/github-flow-der-einfache-workflow-fuer-moderne-softwareentwicklung/</link>
					<comments>https://ceosbay.com/2025/03/28/github-flow-der-einfache-workflow-fuer-moderne-softwareentwicklung/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 28 Mar 2025 21:51:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Agile Methoden]]></category>
		<category><![CDATA[Branching]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Feature Branches]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Git Flow]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitHub Flow]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Pull Request]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Versionierung]]></category>
		<category><![CDATA[Workflow]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=5554</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung ist ein sauberer, klarer Workflow entscheidend für effiziente Zusammenarbeit und stabile Releases. Einer der beliebtesten Ansätze, besonders bei Teams, die kontinuierlich Software ausliefern, ist GitHub Flow. In diesem Blogbeitrag schauen wir &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/28/github-flow-der-einfache-workflow-fuer-moderne-softwareentwicklung/">GitHub Flow &#8211; Der einfache Workflow für moderne Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der <a href="https://ceosbay.com/category/software/softwareentwicklung/">Softwareentwicklung</a> ist ein sauberer, klarer Workflow entscheidend für effiziente Zusammenarbeit und stabile Releases. Einer der beliebtesten Ansätze, besonders bei Teams, die kontinuierlich Software ausliefern, ist <strong>GitHub Flow</strong>.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="871" height="581" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?resize=871%2C581&#038;ssl=1" alt="GitHub Flow" class="wp-image-5587" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?resize=1024%2C683&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?resize=300%2C200&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?resize=768%2C512&amp;ssl=1 768w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?resize=1070%2C713&amp;ssl=1 1070w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/GitHubFlow.jpg?w=1536&amp;ssl=1 1536w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<p>In diesem Blogbeitrag schauen wir uns an, was GitHub Flow ist, wie er funktioniert und warum er so beliebt ist – gerade bei agilen Teams und <a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps</a>-orientierten Projekten.</p>



<h2 class="wp-block-heading">Was ist GitHub Flow?</h2>



<p>Es ist ein leichtgewichtiger Workflow zur Versionskontrolle mit <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>, der speziell auf die Arbeit mit <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub</a> ausgelegt ist. Der Fokus liegt auf <strong>einfacher Zusammenarbeit, kontinuierlicher Integration und schneller Auslieferung</strong>.</p>



<p>Er eignet sich besonders für:</p>



<ul class="wp-block-list">
<li>Webanwendungen oder <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a></li>



<li>Continuous Deployment (CD)</li>



<li>Teams, die oft neue Features oder Bugfixes releasen</li>
</ul>



<h2 class="wp-block-heading">Die Grundprinzipien von GitHub Flow</h2>



<p>Es besteht im Wesentlichen aus <strong>sechs Schritten</strong>:</p>



<h3 class="wp-block-heading">1. Hauptzweig:&nbsp;<code>main</code>&nbsp;ist heilig</h3>



<p>Der&nbsp;<code>main</code>-Branch (oder&nbsp;<code>master</code>) stellt immer den aktuellen Stand der produktiven Anwendung dar. Alles, was hier landet, sollte&nbsp;<strong>bereit für den Einsatz</strong>&nbsp;sein.</p>



<h3 class="wp-block-heading">2. Branch erstellen</h3>



<p>Für jede neue Aufgabe – sei es ein Feature, ein Bugfix oder eine Verbesserung – wird ein neuer Branch vom&nbsp;<code>main</code>-Branch erstellt:</p>



<pre class="wp-block-preformatted">bashKopierenBearbeiten<code>git checkout -b feature/neues-formular
</code></pre>



<p>Gute Branch-Namen sind beschreibend und folgen oft einem Namensschema wie&nbsp;<code>feature/</code>,&nbsp;<code>bugfix/</code>, etc.</p>



<h3 class="wp-block-heading">3. Arbeiten &amp; Committen</h3>



<p>Änderungen werden lokal vorgenommen und regelmäßig committed. Jeder Commit sollte einen klaren, sinnvollen Kommentar haben:</p>



<pre class="wp-block-preformatted">bashKopierenBearbeiten<code>git commit -m "Fügt neues Kontaktformular hinzu"
</code></pre>



<h3 class="wp-block-heading">4. Push &amp; Pull Request (PR)</h3>



<p>Der Branch wird nach GitHub gepusht und es wird ein&nbsp;<strong>Pull Request</strong>&nbsp;(PR) erstellt. Das ist der zentrale Ort für:</p>



<ul class="wp-block-list">
<li>Code Review durch Teamkollegen</li>



<li>Diskussionen und Feedback</li>



<li>Automatische Tests über GitHub Actions oder CI-Tools</li>
</ul>



<h3 class="wp-block-heading">5. Review &amp; Merge</h3>



<p>Nach erfolgreichem Review und Bestehen aller Tests wird der PR in&nbsp;<code>main</code>&nbsp;gemerged – per „Merge Commit“, „Squash and Merge“ oder „Rebase and Merge“, je nach Team-Vorlieben.</p>



<h3 class="wp-block-heading">6. Deploy</h3>



<p>Oft wird das Mergen automatisch mit einem Deployment gekoppelt – z. B. über GitHub Actions, Vercel oder andere <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/">CI/CD-Systeme</a>. So landet die Änderung schnell in der Produktion.</p>



<h2 class="wp-block-heading">Vorteile von GitHub Flow</h2>



<p><strong>Einfachheit</strong> – Der Workflow ist leicht verständlich, auch für Einsteiger.<br><strong>Transparenz</strong> – Pull Requests sorgen für klare Kommunikation und saubere Historie.<br><strong>Schnelles Feedback</strong> – <a href="https://ceosbay.com/category/softwarequalitaet/testautomatisierung/">Automatisierte Tests</a> und kurze Review-Zyklen fördern Qualität.<br><strong>Kontinuierliche Auslieferung</strong> – Änderungen landen schnell und sicher beim Nutzer.</p>



<h2 class="wp-block-heading">Wann ist GitHub Flow nicht ideal?</h2>



<p>GitHub Flow ist nicht immer die beste Wahl – etwa bei:</p>



<ul class="wp-block-list">
<li>Komplexen Release-Zyklen mit mehreren Versionen (hier wäre <a href="https://ceosbay.com/2025/03/26/git-flow-ein-bewaehrtes-modell-fuer-die-zusammenarbeit-mit-git/">Git Flow</a> besser geeignet)</li>



<li>Teams mit langen Entwicklungsphasen und seltenen Releases</li>



<li>Projekten mit Release-Branches, Hotfixes oder Pre-Release-Testing</li>
</ul>



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



<p><strong>GitHub Flow</strong>&nbsp;ist ein moderner, agiler Workflow, der die Zusammenarbeit in Softwareprojekten vereinfacht. Besonders in Kombination mit Continuous Deployment bietet er eine ideale Grundlage für schnelle, sichere Releases.</p>



<p>Wenn du also auf der Suche nach einem schlanken Git-Workflow bist, der perfekt zu <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub</a> passt – probier GitHub Flow aus!</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/28/github-flow-der-einfache-workflow-fuer-moderne-softwareentwicklung/">GitHub Flow &#8211; Der einfache Workflow für moderne Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/03/28/github-flow-der-einfache-workflow-fuer-moderne-softwareentwicklung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5554</post-id>	</item>
		<item>
		<title>Sourcetree &#8211; Git-Management mit Komfort</title>
		<link>https://ceosbay.com/2025/03/27/sourcetree-git-management-mit-komfort/</link>
					<comments>https://ceosbay.com/2025/03/27/sourcetree-git-management-mit-komfort/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 27 Mar 2025 20:21:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Atlassian]]></category>
		<category><![CDATA[Bitbucket]]></category>
		<category><![CDATA[Branching]]></category>
		<category><![CDATA[Entwickler-Tool]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Git-Client]]></category>
		<category><![CDATA[Git-Einsteiger]]></category>
		<category><![CDATA[Git-Visualisierung]]></category>
		<category><![CDATA[Git-Workflow]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GUI für Git]]></category>
		<category><![CDATA[Kommandozeilen-Alternative]]></category>
		<category><![CDATA[Merge]]></category>
		<category><![CDATA[Rebase]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sourcetree]]></category>
		<category><![CDATA[Staging]]></category>
		<category><![CDATA[Submodule]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=5558</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung ist Versionskontrolle ein absolutes Muss. Wenn Du regelmäßig mit Git arbeitest, kennst Du die Macht (und manchmal auch die Tücken) der Kommandozeile. Für alle, die sich ein visuelles und intuitives &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/27/sourcetree-git-management-mit-komfort/">Sourcetree &#8211; Git-Management mit Komfort</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der <a href="https://ceosbay.com/category/software/softwareentwicklung/">Softwareentwicklung</a> ist Versionskontrolle ein absolutes Muss. Wenn Du regelmäßig mit <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> arbeitest, kennst Du die Macht (und manchmal auch die Tücken) der Kommandozeile. Für alle, die sich ein visuelles und intuitives Tool wünschen, gibt es <strong>Sourcetree</strong> – ein kostenloser <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>-Client von Atlassian, der Entwicklern das Leben leichter macht.</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/03/Sourcetree.jpg?resize=871%2C871&#038;ssl=1" alt="Sourcetree" class="wp-image-5568" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/Sourcetree.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/Sourcetree.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/Sourcetree.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/03/Sourcetree.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h3 class="wp-block-heading"><strong>Was ist Sourcetree?</strong></h3>



<p>Sourcetree ist eine grafische Benutzeroberfläche für <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> und Mercurial. Es ermöglicht Dir, Deine Repositories visuell zu verwalten, ohne ständig Befehle in der Konsole eintippen zu müssen. Du kannst Branches erstellen, Merges durchführen, Stashes verwalten oder Rebase-Aktionen starten – alles per Mausklick.</p>



<h3 class="wp-block-heading"><strong>Die wichtigsten Features im Überblick</strong></h3>



<ul class="wp-block-list">
<li><strong>Klar strukturierte Oberfläche:</strong> Du siehst auf einen Blick, was in Deinem Projekt passiert – von Branches über Commits bis hin zu Merge-Konflikten.</li>



<li><strong>Branch-Management:</strong> Erstelle, verwalte und merge Branches schnell und visuell. Ideal für Feature-Branches und <a href="https://ceosbay.com/2025/03/26/git-flow-ein-bewaehrtes-modell-fuer-die-zusammenarbeit-mit-git/">Git-Flow</a>.</li>



<li><strong>Staging &amp; Commit:</strong> Wähle gezielt aus, welche Änderungen Du stagen willst und formuliere Deine Commit-Nachrichten direkt im Interface.</li>



<li><strong>Submodule-Unterstützung:</strong> Auch komplexe Projekte mit Submodulen lassen sich bequem verwalten.</li>



<li><strong>Integration mit Bitbucket, <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub</a> &amp; Co.:</strong> Repositories lassen sich direkt aus der <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a> klonen und pushen.</li>
</ul>



<h3 class="wp-block-heading"><strong>Für wen eignet sich Sourcetree?</strong></h3>



<p>Sourcetree ist sowohl für <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>-Neulinge als auch für erfahrene Entwickler ein nützliches Tool. Anfänger profitieren vom visuellen Feedback, das hilft, <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>-Konzepte besser zu verstehen. Profis schätzen die schnelle Übersicht bei komplexen Repositories und die Möglichkeit, Fehlerquellen wie Merge-Konflikte frühzeitig zu erkennen.</p>



<h3 class="wp-block-heading"><strong>Sourcetree vs. Kommandozeile</strong></h3>



<p>Die Kommandozeile bleibt weiterhin mächtig – aber nicht jeder braucht oder will sie ständig nutzen. Sourcetree bietet eine komfortable Alternative mit vielen Funktionen, ohne auf Flexibilität zu verzichten. Und wenn Du willst, kannst Du jederzeit auch Shell-Befehle aus dem Tool heraus aufrufen.</p>



<h3 class="wp-block-heading"><strong>Fazit: Effizientes Git-Management mit Stil</strong></h3>



<p>Sourcetree ist ein solides, durchdachtes Tool, das <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>-Workflows deutlich übersichtlicher macht. Es ist kostenlos, leistungsfähig und erleichtert sowohl den Einstieg in <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> als auch die tägliche Arbeit an komplexen Projekten. Wenn Du Deine <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a>-Repos effizient und visuell verwalten möchtest, solltest Du Sourcetree definitiv ausprobieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/03/27/sourcetree-git-management-mit-komfort/">Sourcetree &#8211; Git-Management mit Komfort</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/03/27/sourcetree-git-management-mit-komfort/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5558</post-id>	</item>
		<item>
		<title>Jasmine &#8211; JavaScript Testautomatisierung</title>
		<link>https://ceosbay.com/2023/04/16/erklaerung-jasmine/</link>
					<comments>https://ceosbay.com/2023/04/16/erklaerung-jasmine/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 16 Apr 2023 06:23:35 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Ent-to-End]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Funktionsweise]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrationstests]]></category>
		<category><![CDATA[Jasmine]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Karma]]></category>
		<category><![CDATA[Konstrukt]]></category>
		<category><![CDATA[Mocking]]></category>
		<category><![CDATA[Mocks]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Prozesse]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Qualitätsmanagement]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spec]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Spy]]></category>
		<category><![CDATA[spyOn]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Strukturieren]]></category>
		<category><![CDATA[Suite]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testabdeckung]]></category>
		<category><![CDATA[Testbeschreibung]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Vorteile]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1483</guid>

					<description><![CDATA[<p>Die moderne Softwareentwicklung hat eine Vielzahl von Werkzeugen und Technologien, um Entwicklern bei der Gestaltung und Implementierung robuster Anwendungen zu helfen. Eines dieser Werkzeuge, dass ich in den letzten Tagen auf GitHub entdeckt habe, ist &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/16/erklaerung-jasmine/">Jasmine &#8211; JavaScript Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die moderne Softwareentwicklung hat eine Vielzahl von Werkzeugen und Technologien, um Entwicklern bei der Gestaltung und Implementierung robuster Anwendungen zu helfen. Eines dieser Werkzeuge, dass ich in den letzten Tagen auf <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">GitHub</a> entdeckt habe, ist <a href="https://jasmine.github.io" target="_blank" rel="noreferrer noopener">Jasmine</a>. Es ist ein bekanntes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur Testautomatisierung für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. In diesem Blogbeitrag schaue ich mir an, was Jasmine ist, wie es funktioniert und welche Vorteile es bietet, wenn es um das Testen von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen geht.</p>



<h3 class="wp-block-heading">Was ist Jasmine?</h3>



<p>Jasmine ist ein beliebtes Open-Source-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für <a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">Behavior-Driven Devel</a><a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/">opment</a> (<a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">BDD</a>) Tests in <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. Man verwendet es hauptsächlich, um das Verhalten von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Code durch das Schreiben von Test-Spezifikationen zu überprüfen. Jasmine bietet eine saubere, leicht verständliche Syntax und ermöglicht Entwicklern, ihre Tests unabhängig von ihrer Implementierung auszuführen. Dadurch können sie schnell und effizient sicherstellen, dass ihr Code wie erwartet funktioniert.</p>



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



<ul class="wp-block-list">
<li><strong>Einfachheit</strong>: Man hat Jasmine entwickelt, um leicht verständlich und zugänglich für Entwickler zu sein. Die Test-Syntax ist klar und einfach, sodass selbst Entwickler, die neu in der Testautomatisierung sind, schnell damit arbeiten können.</li>



<li><strong>Unabhängigkeit</strong>: Jasmine ist unabhängig von anderen <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/" target="_blank" rel="noreferrer noopener">Frameworks</a>, Browsern und DOM-Manipulationsbibliotheken, was bedeutet, dass man es praktisch jedem <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Projekt verwenden kann, unabhängig von der verwendeten Technologie.</li>



<li><strong>Flexibilität</strong>: Entwickler können Jasmine für Unit-Tests, Integrationstests und sogar für End-to-End-Tests verwenden. Dies gibt ihnen die Möglichkeit, das gesamte Verhalten ihrer Anwendung mit einem einzigen Tool abzudecken.</li>
</ul>



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



<p>Jasmine basiert auf einer Hierarchie von Suites und Specs. Suites sind Gruppen von verwandten Tests, während Specs einzelne Testfälle sind. Diese Hierarchie ermöglicht es Entwicklern, ihre Tests klar zu strukturieren und den Code leicht zu organisieren.</p>



<p>Es verwendet das &#8222;describe&#8220;-Konstrukt, um Test-Suites zu definieren. Jede Suite kann mehrere Test-Spezifikationen (Specs) enthalten, die mit dem &#8222;it&#8220;-Konstrukt definiert werden. Diese Specs enthalten Erwartungen (Expectations) in Bezug auf das zu testende Verhalten des Codes.</p>



<h4 class="wp-block-heading">Ein einfaches Beispiel für eine Jasmine Test-Suite sieht wie folgt aus:</h4>



<pre class="wp-block-code"><code>describe("A suite is just a function", function() {
  let a;

  it("and so is a spec", function() {
    a = true;

    expect(a).toBe(true);
  });
});</code></pre>



<p>oder</p>



<pre class="wp-block-code"><code>describe('Array', () =&gt; {
  describe('#indexOf()', () =&gt; {
    it('sollte -1 zurückgeben, wenn der Wert nicht im Array vorhanden ist', () =&gt; {
      expect(&#91;1, 2, 3].indexOf(4)).toBe(-1);
    });
  });
});</code></pre>



<h3 class="wp-block-heading">Integration in die Softwareentwicklung</h3>



<p>Man kann Jasmine problemlos in moderne <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Projekte und Build-Tools integrieren. Mit Integrationen für Tools wie Grunt, Gulp und Webpack lässt es sich nahtlos in bestehende Entwicklungsprozesse einfügen. Darüber hinaus gibt es auch Jasmine-Plugins für gängige Entwicklungsumgebungen wie Visual Studio Code oder <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a>, die das Schreiben und Ausführen von Tests noch einfacher und bequemer gestalten.</p>



<p>Man kann es auch mit anderen Testing-Tools und Libraries kombinieren, um noch umfassendere Testlösungen zu schaffen. Beispielsweise kann man es mit Karma (einem <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Test-Runner) verwenden, um Tests in verschiedenen Browsern auszuführen, oder mit Protractor für End-to-End-Tests in Angular-Anwendungen.</p>



<h3 class="wp-block-heading">Best Practices für Jasmine-Tests</h3>



<p>Um das Beste aus Jasmine herauszuholen und effektive Tests zu erstellen, sind hier einige bewährte Vorgehensweisen:</p>



<ul class="wp-block-list">
<li><strong>Klare Testbeschreibungen</strong>: Man sollte aussagekräftige und präzise Beschreibungen für Suites und Specs verwenden. Dies erleichtert das Verständnis des Testzwecks und die Identifizierung von Fehlern.</li>



<li><strong>Kleine, fokussierte Tests</strong>: Es ist ratsam, Tests zu schreiben, die nur eine Funktion oder ein Verhalten testen. Dies erleichtert das Auffinden und Beheben von Fehlern, da man dadurch genau im Blick behält, welcher Teil des Codes betroffen ist.</li>



<li><strong>Testabdeckung</strong>: Man sollte sicherstellen, dass man eine ausreichende Testabdeckung für den Code hat. Dies bedeutet, dass man alle wichtigen Funktionen und Szenarien in den Tests berücksichtigt.</li>



<li><strong>Mocking und Spies</strong>: Es ist zu empfehlen, Mock-Objekte und Spies zu verwenden, um externe Abhängigkeiten zu isolieren und den Testfokus auf den zu testenden Code zu richten. Jasmine bietet dafür eingebaute Funktionen wie createSpy und spyOn.</li>



<li><strong>Regelmäßige Testausführung</strong>: Man sollte die Tests regelmäßig ausführen, um sicherzustellen, dass Änderungen im Code nicht zu unerwarteten Fehlern führen. Daher ist es ratsam, Jasmine in den <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Integration (CI) bzw. Continuous Deployment</a> (<a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">CI/CD</a>) Prozess integrieren, um automatisch Tests auszuführen, sobald man Codeänderungen vornimmt.</li>
</ul>



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



<p>Jasmine ist ein leistungsstarkes und vielseitiges <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für das Testen von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen. Mit seiner klaren Syntax, Flexibilität und Integration in moderne Entwicklungsprozesse ist es ein unverzichtbares Werkzeug für jeden <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>-Entwickler. Durch die Befolgung der Best Practices und die regelmäßige Ausführung von Tests können Entwickler sicherstellen, dass ihr Code zuverlässig und fehlerfrei funktioniert. Insgesamt trägt Jasmine dazu bei, die Qualität von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen zu verbessern und die Entwicklungszeit zu reduzieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/16/erklaerung-jasmine/">Jasmine &#8211; JavaScript Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/16/erklaerung-jasmine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1483</post-id>	</item>
		<item>
		<title>Raspberry Pi &#8211; Der Kleine mit großem Potential</title>
		<link>https://ceosbay.com/2023/03/04/erklaerung-raspberry-pi/</link>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 04 Mar 2023 12:12:35 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Alleskönner]]></category>
		<category><![CDATA[B]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Center]]></category>
		<category><![CDATA[Commodore 64]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Einplatinencomputer]]></category>
		<category><![CDATA[Einplatiner]]></category>
		<category><![CDATA[Erfahrung]]></category>
		<category><![CDATA[Fein]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[Gemeinnützig]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Heimcomputer]]></category>
		<category><![CDATA[Instructables]]></category>
		<category><![CDATA[Klein]]></category>
		<category><![CDATA[Kodi]]></category>
		<category><![CDATA[Lernen]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Micro]]></category>
		<category><![CDATA[ML]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Pi]]></category>
		<category><![CDATA[Plex]]></category>
		<category><![CDATA[Praktisch]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Raspi]]></category>
		<category><![CDATA[RasPy]]></category>
		<category><![CDATA[Retro]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Skills]]></category>
		<category><![CDATA[Überwachung]]></category>
		<category><![CDATA[Webserver]]></category>
		<category><![CDATA[Zero]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=74</guid>

					<description><![CDATA[<p>Der Raspberry Pi hat die Welt der Heimcomputer und Bastler im Sturm erobert. Seit seiner Einführung im Jahr 2012 hat er Millionen von Menschen dazu inspiriert, Projekte und Anwendungen zu entwickeln, die früher als unerreichbar &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/04/erklaerung-raspberry-pi/">Raspberry Pi &#8211; Der Kleine mit großem Potential</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Der Raspberry Pi hat die Welt der Heimcomputer und Bastler im Sturm erobert. Seit seiner Einführung im Jahr 2012 hat er Millionen von Menschen dazu inspiriert, Projekte und Anwendungen zu entwickeln, die früher als unerreichbar galten.</p>



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



<p>Die Geschichte des Raspberry Pi geht zurück auf das Jahr 2006. Als ein Team von Wissenschaftlern und Technikern am Computer Laboratory der University of Cambridge, darunter Eben Upton, Rob Mullins, Jack Lang, Alan Mycroft und Pete Lomas, eine wachsende Besorgnis über den Rückgang der Informatikkenntnisse unter britischen Schülern feststellten. Die Anzahl der Schüler, die Informatik auf Universitätsebene studierten, nahm ab. Hinzu kam, dass die Schüler weniger praktische Programmiererfahrungen hatten, als in den Jahren vorher.</p>



<p>Als Hauptursache des Rückgangs identifizierten sie die Unzugänglichkeit von erschwinglichen, programmierbaren Computern für junge Menschen. In den 80er Jahren hatten Heimcomputer wie der BBC-Micro und der Commodore 64 eine Generation von Technikbegeisterten inspiriert. Dies ermöglichte auch vielen von ihnen Programmierkenntnisse zu erwerben. Doch die Komplexität der Computer steigerte sich im Laufe der Zeit. Vor allem stiegen damit auch die Anschaffungskosten, wodurch sie für viele unzugänglich geworden sind, insbesondere im Kontext der Bildung.</p>



<p>Um dieses Problem zu lösen, arbeitete das Team an der Entwicklung eines kleinen, erschwinglichen und benutzerfreundlichen Einplatinencomputers. Dieser sollte den Schülern ermöglichen, Programmieren und Computertechnik auf spielerische Weise zu erlernen. Die Idee, ein Gerät zu schaffen, dass in der Lage ist, grundlegende Programmieraufgaben auszuführen. Dies zu einem Bruchteil der Kosten eines herkömmlichen Computers. Dieses Projekt führte zur Entstehung des kleinen Alleskönners.</p>



<h4 class="wp-block-heading">Entstehung der Raspberry Pi Foundation</h4>



<p>Man gründete im Jahr 2009 die Raspberry Pi Foundation, eine gemeinnützige Organisation, um die Entwicklung des Geräts voranzutreiben und Bildungsressourcen bereitzustellen, die auf dem Raspberry Pi basierten. Im Februar 2012 kam dann die erste Version, das Model B, auf den Markt. Die Nachfrage nach dem Gerät, enorm. Und innerhalb weniger Jahre gingen Millionen von Raspberry Pi-Einheiten weltweit über die Ladentheke.</p>



<p>Seitdem hat die Raspberry Pi Foundation verschiedene Modelle und Generationen des Geräts veröffentlicht, die jeweils verbesserte Hardware und Funktionalität bieten. Weiterhin mit der Aufgabe, das Erlernen von Programmierkenntnissen und Computertechnik für Menschen aller Altersgruppen und Fähigkeiten zugänglich und erschwinglich zu machen. Der kleine Alleskönner hat inzwischen eine große und leidenschaftliche Gemeinde. Bestehend aus Bastlern, Entwicklern und Technikbegeisterten und man nutzt es für eine Vielzahl von Projekten und Anwendungen.</p>



<h3 class="wp-block-heading">Modelle und technische Daten</h3>



<p>Seit der ersten Version gibt es mehrere Modelle mit unterschiedlichen Spezifikationen. Hier sind einige der bekanntesten Modelle:</p>



<p>1. Raspberry Pi 1 Model B (2012): Das ursprüngliche Modell mit einem 700 MHz Single-Core-Prozessor, 512 MB RAM und 2 USB-Anschlüssen.</p>



<p>2. Raspberry Pi 2 Model B (2015): Eine Verbesserung des ursprünglichen Modells mit einem 900 MHz Quad-Core-Prozessor und 1 GB RAM.</p>



<p>3. Raspberry Pi 3 Model B (2016): Das erste Modell mit integriertem Wi-Fi und Bluetooth, ausgestattet mit einem 1,2 GHz Quad-Core-Prozessor und 1 GB RAM.</p>



<p>4. Raspberry Pi 4 Model B (2019): Das bisher leistungsstärkste Modell mit einem 1,5 GHz Quad-Core-Prozessor, bis zu 8 GB RAM und Unterstützung für Dual-4K-Displays.</p>



<p>(Hier sei noch zu erwähnen, dass es auch alternative Geräte gibt, die wesentlich leistungsstärker sind. Doch darüber schreibe ich noch einen gesonderten Beitrag.)</p>



<p>Raspberry Pi Zero (2015) und Zero W (2017): Kleinere und kostengünstigere Modelle, die sich gut für einfache Projekte eignen.</p>



<h3 class="wp-block-heading">Anwendungen und Projekte</h3>



<p>Die Vielseitigkeit des kleinen Alleskönners hat dazu geführt, dass man es in einer Vielzahl von Projekten und Anwendungen einsetzen kann. Einige Beispiele hierfür sind:</p>



<ul class="wp-block-list">
<li>Heimautomatisierung: Die Verwendung des kleinen Alleskönners, um die eigenen smarten Geräte zu steuern oder um das gesamte Zuhause zu automatisieren.</li>



<li>Retro-Gaming: Mit Emulatoren wie RetroPie kann man eine Vielzahl von klassischen Spielen aus verschiedenen Konsolen-Generationen genießen.</li>



<li>Media Center: Man kann den kleinen Alleskönner als Media Center nutzen, indem man Kodi oder Plex installiert und Lieblingsfilme sowie Serien streamen.</li>



<li>Lern- und Bildungsplattform: Um Programmieren zu lernen oder eigene Anwendungen zu entwickeln, um anderen dabei zu helfen, neue Fähigkeiten zu erlernen.</li>



<li>Wetterstation: Benutzerdefinierte Wetterstation, um die Umgebungsinformationen wie Temperatur, Luftfeuchtigkeit und Luftdruck zu überwachen.</li>



<li>Internet der Dinge (IoT) Projekte: Integration in ein IoT-Netzwerk, um Sensoren und Aktoren über das Internet zu steuern und um Daten zu sammeln.</li>



<li>Robotik: Als Gehirn des eigenen Roboters, der in der Lage ist, verschiedene Aufgaben auszuführen, wie z.B. automatisiertes Fahren, Objektverfolgung und mehr.</li>



<li>Sicherheit und Überwachung: Als kostengünstiges Sicherheitssystem mit Bewegungsmeldern, Kameras und Alarmen.</li>



<li>Webserver: Als eigenen Webserver, um Websites oder Webanwendungen zu hosten.</li>



<li>Künstliche Intelligenz und maschinelles Lernen: Experimente mit AI-Frameworks wie TensorFlow oder PyTorch, um Machine-Learning-Modelle auf dem Raspberry Pi zu erstellen oder auszuführen. Wobei sich hier auch NVIDIA’s Jetson anbietet und auch von der Performance her wahrscheinlich bei weitem besser aufgestellt ist 😉</li>
</ul>



<h3 class="wp-block-heading">Raspberry Pi Ressourcen und Community</h3>



<p>Eine der größten Stärken des Raspberry Pi ist die riesige und engagierte Community. Die Raspberry Pi Community bietet unzählige Ressourcen, Tutorials und Foren, um Fragen zu beantworten und bei der Lösung von Problemen zu helfen. Einige empfehlenswerte Ressourcen sind:</p>



<p><a href="https://www.raspberrypi.org" target="_blank" rel="noreferrer noopener">Die offizielle Website</a>: Hier findet man Neuigkeiten, Projekte und Lernressourcen direkt von der Raspberry Pi Foundation.</p>



<p><a href="https://forums.raspberrypi.com" target="_blank" rel="noreferrer noopener">Raspberry Pi Forums</a>: Eine aktive Community, in der man Fragen stellen, Antworten finden und sich mit anderen Enthusiasten austauschen kann.</p>



<p><a href="https://www.hackster.io" target="_blank" rel="noreferrer noopener">Hackster.io</a>: Eine Plattform für Bastler und Entwickler, um Raspberry Pi-Projekte mit detaillierten Anleitungen zu teilen und um neue Ideen zu entdecken.</p>



<p><a href="https://www.instructables.com" target="_blank" rel="noreferrer noopener">Instructables</a>: Eine weitere hervorragende Quelle für Schritt-für-Schritt-Anleitungen und Projekte, die auf dem Raspberry Pi basieren.</p>



<p><a href="https://github.com" target="_blank" rel="noreferrer noopener">GitHub</a>: Auf GitHub findet man zahlreiche Repositories, die Software, Tools und Projekte für den Kleinen enthalten. Einen <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">Beitrag über GitHub</a> selbst gibt es <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">hier</a> 😉</p>



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



<p>Der Raspberry Pi hat die Welt der Heimcomputer und Bastler revolutioniert und ist ein Paradebeispiel dafür, wie ein kleines, kostengünstiges Gerät großen Einfluss haben kann. Seine Vielseitigkeit, einfache Handhabung und große Community haben dazu geführt, dass man es heute in einer Vielzahl von Projekten und Anwendungen einsetzen kann. Leider sind die Preise aufgrund der Pandemie und den damit verbundenen Lieferengpässen wesentlich gestiegen. Ansonsten bietet sich der kleine Alleskönner an, spannende unzählige Möglichkeiten zu entdecken. Man kann es kaufen, verschenken und auch spenden. In der Regel kann man damit nichts falsch machen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/04/erklaerung-raspberry-pi/">Raspberry Pi &#8211; Der Kleine mit großem Potential</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">74</post-id>	</item>
		<item>
		<title>Visual Studio Code &#8211; Das leichte Schwergewicht</title>
		<link>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/</link>
					<comments>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 22 Feb 2023 20:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[Anpassung]]></category>
		<category><![CDATA[Arbeitsbereiche]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Clean]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coder]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Core]]></category>
		<category><![CDATA[Cross]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Definition]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Erweiterbarkeit]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[Live Share]]></category>
		<category><![CDATA[Multifunktionsfenster]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Plattform]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SHARE]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[To]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Umgebungen]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[VS]]></category>
		<category><![CDATA[Vue.js]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1498</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung gibt es unzählige Werkzeuge und Technologien, die Programmierern dabei helfen, effizienter und produktiver zu arbeiten. Eine solche Technologie ist die IDE Visual Studio Code, der sich in kürzester Zeit zu &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code &#8211; Das leichte Schwergewicht</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der Softwareentwicklung gibt es unzählige Werkzeuge und Technologien, die Programmierern dabei helfen, effizienter und produktiver zu arbeiten. Eine solche Technologie ist die IDE Visual Studio Code, der sich in kürzester Zeit zu einem der beliebtesten Editoren für Entwickler entwickelt hat. In diesem Blog-Beitrag thematisiere ich Visual Studio Code.</p>



<h3 class="wp-block-heading">Hintergrund von Visual Studio Code</h3>



<p>Visual Studio Code (VS Code) ist ein plattformübergreifender <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Code-Editor von Microsoft. Er wurde erstmals im Jahr 2015 veröffentlicht und hat sich seitdem kontinuierlich weiterentwickelt. Der Editor unterstützt Windows, macOS und <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/" target="_blank" rel="noreferrer noopener">Linux</a>. Es bietet Entwicklern eine nahtlose und einheitliche Erfahrung über verschiedene Plattformen hinweg.</p>



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



<p>Visual Studio Code entstand als Teil von Microsofts Bemühungen, Entwicklern leichtgewichtige, leistungsfähige und plattformübergreifende Werkzeuge zur Verfügung zu stellen. Die Geschichte von Visual Studio Code reicht zurück bis ins Jahr 2011. Als Erich Gamma, einer der Erfinder des berühmten Design-Patterns-Buchs und der <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a>-Plattform, bei Microsoft anfing. Zusammen mit anderen Entwicklern arbeitete er an einem Projekt namens &#8222;Project Monaco&#8220;. Es begann als Experiment, um browserbasierte Entwicklungs-Umgebungen zu erforschen.</p>



<p>Project Monaco fokussierte sich darauf, eine leistungsfähige, webbasierte Code-Editing-Umgebung zu schaffen. Genutzt von mehreren Microsoft-Produkten wie Azure DevOps (früher Visual Studio Online) und OneDrive. Im Laufe der Zeit vergrößerte sich das Projekt immer weiter. Das Team erkannte schon bald, dass die wachsende Codebasis und die leistungsstarken Funktionen das Zeug zu einem eigenständigen Produkt hatten.</p>



<p>Am 29. April 2015 stellte Microsoft Visual Studio Code erstmals während der Build-Konferenz in San Francisco vor. Es war von Anfang an als <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Projekt konzipiert und steht unter der MIT-Lizenz der Masse zur Verfügung. Seit der ersten Veröffentlichung hat VS Code eine große Entwickler-Community angezogen, die ständig zur Verbesserung des Produkts beiträgt.</p>



<p>Mit der Veröffentlichung von Visual Studio Code verfolgte Microsoft eine neue Strategie. Sie öffneten die Pforten zu der Technologie und zu den Werkzeugen für Entwickler aller Plattformen und Programmiersprachen. VS Code war eines der ersten Produkte, das diese neue Richtung widerspiegelte. Heute ist VS Code einer der am häufigsten verwendeten Code-Editoren. Darüber hinaus hat es dazu beigetragen, das Bild von Microsoft als Unternehmen zu verändern. Ein Bild der Offenheit und Zusammenarbeit in der Entwicklergemeinschaft.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Visual Studio Code</h3>



<ul class="wp-block-list">
<li><strong>Syntax-Hervorhebung und IntelliSense</strong>: VS Code unterstützt Syntax-Hervorhebung für eine Vielzahl von Programmiersprachen. Es bietet Entwicklern eine klar strukturierte und leicht verständliche Darstellung des Codes. IntelliSense ist eine intelligente Code-Vervollständigungsfunktion. KI-Algorithmen helfen dabei, den Code effizienter und schneller zu schreiben. Dies passiert, indem es automatisch Vorschläge für Variablen, Funktionen und andere Code-Elemente anzeigt.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Git-Integration</strong>: Die Integration von <a href="https://ceosbay.com/2022/11/18/erklaerung-git/" target="_blank" rel="noreferrer noopener">Git</a> ermöglicht es Entwicklern, direkt aus dem Editor heraus Änderungen am Code vorzunehmen. Sowohl das committen und mit Remote-Repositories zu synchronisieren sind möglich. Darüber hinaus erfolgt die Anzeige der Änderungen im Code direkt im Editor. Dadurch kann man leichter erkennen, was, wer, wann verändert hat.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Debugging</strong>: VS Code bietet umfangreiche Debugging-Möglichkeiten für viele Programmiersprachen und Plattformen. Es ermöglicht das Anlegen von Breakpoints, das Verfolgen von Variablenwerten und das Ausführen von Code schrittweise. Dies hilft Entwicklern, Fehler effizienter zu finden und zu beheben.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Anpassung und Erweiterbarkeit</strong>: VS Code ermöglicht es den Nutzern, den Editor individuell anzupassen und mit zusätzlichen Funktionen zu erweitern. Es gibt eine Vielzahl von Plugins und Erweiterungen, die man im Visual Studio Code Marketplace finden und installieren kann.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Terminal-Integration</strong>: VS Code integriert das Terminal direkt in den Editor. Dadurch kann man problemlos Terminal Befehle direkt im Editor ausführen. Auch die Build-Tools lassen sich direkt darüber verwenden. Folglich muss man den Editor nicht verlassen, um auf die Befehlszeile zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Code-Navigation und -Refactoring</strong>: Mithilfe von Funktionen wie &#8222;Go to Definition&#8220;, &#8222;Find All References&#8220; und &#8222;Rename Symbol&#8220; können Entwickler ihren Code effizienter navigieren und organisieren. Diese Funktionen machen das Code-Refactoring leichter und fördern die Erstellung von sauberem, gut strukturiertem Code. Nachdem ich erst kürzlich diese Funktion in <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> auch recht vorteilhaft fand noch der Verweis auf den <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">Beitrag</a>.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Unterstützung von Programmiersprachen und Framework</strong>s: VS Code unterstützt eine Vielzahl von Programmiersprachen und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>. Darunter <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, TypeScript, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, C#, <a href="https://ceosbay.com/2023/02/25/erklaerung-c/" target="_blank" rel="noreferrer noopener">C++</a>, <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>, <a href="https://ceosbay.com/2023/02/26/erklaerung-php/" target="_blank" rel="noreferrer noopener">PHP</a>, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a>, Go, Rust und viele mehr. Dank der Unterstützung von zahlreichen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/" target="_blank" rel="noreferrer noopener">Angular</a>, <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, Vue.js, Django und .NET Core sind Entwickler in der Lage, in ihren bevorzugten Sprachen und Umgebungen zu arbeiten.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Arbeitsbereiche und Multifunktionsfenster</strong>: VS Code ermöglicht das Öffnen mehrerer Projekte und Arbeitsbereiche gleichzeitig und unterstützt auch das Teilen von Fenstern, sodass man problemlos mehrere Dateien nebeneinander anzeigen und bearbeiten kann. Dies erleichtert die Zusammenarbeit an komplexen Projekten erheblich.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Live Share</strong>: Mit der Live Share-Funktion können Entwickler ihre Arbeitsbereiche in Echtzeit mit anderen teilen und gemeinsam am Code arbeiten. Dies ist besonders hilfreich für Teamarbeit, Pair-Programming und das Lösen von Problemen gemeinsam mit Kollegen.</li>
</ul>



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



<p>Visual Studio Code ist ein mächtiges und vielseitiges Tool für Entwickler, das sich in den letzten Jahren zu einem unverzichtbaren Bestandteil der Softwareentwicklung entwickelt hat. Durch die kontinuierliche Weiterentwicklung und die Anpassungsfähigkeit des Editors befindet sich VS Code mit an der Spitze der IDE’s bzw. Code Editoren und hilft Entwicklern dabei, produktiver und effizienter zu arbeiten. Obwohl es viele großartige Funktionen in Visual Studio Code gibt, ist es wichtig, sich daran zu erinnern, dass kein Tool oder Editor perfekt ist. Davon abgesehen hat jeder Entwickler seine eigenen Präferenzen und Arbeitsweisen. Wenn man jedoch auf der Suche nach einem leistungsstarken, anpassungsfähigen und umfangreichen Code-Editor ist, kann man Visual Studio Code auf jeden Fall in Betracht ziehen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code &#8211; Das leichte Schwergewicht</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1498</post-id>	</item>
		<item>
		<title>Python &#8211; Die Sprache für schnelle Prototypen, Datenanalyse und künstliche Intelligenz</title>
		<link>https://ceosbay.com/2022/12/20/erklaerung-python/</link>
					<comments>https://ceosbay.com/2022/12/20/erklaerung-python/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 20 Dec 2022 20:24:58 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[3]]></category>
		<category><![CDATA[ABC]]></category>
		<category><![CDATA[Autodesk]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[Cinema]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coder]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Flying]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Grafik]]></category>
		<category><![CDATA[Komplex]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Lernen]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Maschinensprache]]></category>
		<category><![CDATA[Mathematik]]></category>
		<category><![CDATA[Monty]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Paradigma]]></category>
		<category><![CDATA[Paradigmen]]></category>
		<category><![CDATA[Programme]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Py]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Quanten]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Syntax]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1012</guid>

					<description><![CDATA[<p>Python ist eine universelle gut lesbare höhere Programmiersprache. Code-Blöcke werden statt mit geschweiften Klammern durch Einrückungen strukturiert. Python unterstützt die objektorientierte, aspektorientierte und die funktionale Programmierung, wenn es um die Programmierparadigmen geht. Ferner bietet es &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/20/erklaerung-python/">Python &#8211; Die Sprache für schnelle Prototypen, Datenanalyse und künstliche Intelligenz</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Python ist eine universelle gut lesbare höhere Programmiersprache. Code-Blöcke werden statt mit geschweiften Klammern durch Einrückungen strukturiert.</p>



<p>Python unterstützt die objektorientierte, aspektorientierte und die funktionale Programmierung, wenn es um die Programmierparadigmen geht. Ferner bietet es eine dynamische Typisierung. Wie viele dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache weist ein offenes, gemeinschaftsbasiertes Entwicklungsmodell auf, dass durch die gemeinnützige <a href="https://www.python.org/psf-landing/" target="_blank" rel="noreferrer noopener">Python Software Foundation</a> gestützt wird, die die Definition der Sprache in der Referenzumsetzung CPython pflegt.</p>



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



<p>Die Sprache wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde &amp; Informatica in Amsterdam als Nachfolger für die Programmiersprache ABC entwickelt und war ursprünglich für das verteilte Betriebssystem Amoeba gedacht.</p>



<p>Wie in meinem Beitrag über <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">GitHub</a> bereits erwähnt, geht der Name nicht auf die gleichnamige Schlangengattung zurück, sondern bezog sich ursprünglich auf die englische Komikertruppe Monty Python. In der Dokumentation finden sich daher auch einige Anspielungen auf Sketche aus dem Flying Circus. Trotzdem etablierte sich die Assoziation zur Schlange, was sich unter anderem in der Programmiersprache Cobra sowie dem Python-Toolkit „Boa“ und schlussendlich in dem heutigen Logo wiederfindet. Die erste Vollversion erschien im Januar 1994 unter der Bezeichnung Python 1.0. Gegenüber früheren Versionen wurden einige Konzepte der funktionalen Programmierung implementiert, die allerdings später wieder aufgegeben wurden.</p>



<p>Python 2.0 erschien am 16. Oktober 2000. Neue Funktionen umfassten eine voll funktionsfähige Garbage Collection (automatische Speicherbereinigung) und die Unterstützung für den Unicode-Zeichensatz. In Version 2.6 wurde eine Hilfe eingebaut, mit der angezeigt werden konnte, welche Code-Sequenzen vom Nachfolger Python 3 nicht mehr unterstützt werden und daher in darauf aufbauenden Versionen nicht mehr funktionsfähig sind.</p>



<p>Python 3.0 (auch 3000 genannt) erschien am 3. Dezember 2008 nach längerer Entwicklungszeit. Es beinhaltet einige tiefgreifende Änderungen an der Sprache, etwa das Entfernen von Redundanzen bei Befehlssätzen und veralteten Konstrukten. Da Python 3.0 hierdurch teilweise inkompatibel zu früheren Versionen ist, beschloss die Python Software Foundation, 2.7 parallel zur Version 3 bis Ende 2019 weiter mit neuen Versionen zu unterstützen.</p>



<p>Freuen dürfen wir uns auf die mittlerweile Version 3.12, die im Oktober dieses Jahres folgen soll.</p>



<h3 class="wp-block-heading">Wieso Python?</h3>



<p>Es wurde mit dem Ziel größter Einfachheit und Übersichtlichkeit entworfen. Die Sprache kommt mit relativ wenigen Schlüsselwörtern aus und ist mit einer reduzierten Syntax auf Übersichtlichkeit optimiert. Dadurch lassen sich Python-basierte Skripte deutlich kleiner bzw. kompakter formulieren als in anderen Sprachen.</p>



<p>Van Rossum legte bei der Entwicklung großen Wert auf eine Standardbibliothek, die überschaubar und leicht erweiterbar ist. Dies war das Ergebnis seiner schlechten Erfahrung mit der Sprache ABC, in der das Gegenteil der Fall ist. Dieses Konzept ermöglicht, Module aufzurufen, die in anderen Programmiersprachen geschrieben wurden, etwa um Schwächen von Python auszugleichen. Beispielsweise können für zeitkritische Teile in maschinennäheren Sprachen wie C implementierte Routinen aufgerufen werden. Umgekehrt lassen sich damit Module und Plug-ins für andere Programme schreiben, die die entsprechende Unterstützung bieten. Dies ist unter anderem bei Blender, Cinema 4D, GIMP, Maya, OpenOffice bzw. LibreOffice, PyMOL, SPSS, QGIS oder KiCad der Fall. Über die ich bereits geschrieben habe und noch schreiben werde.</p>



<p>Wie bereits erwähnt, ist Python eine Multiparadigmensprache. Dies bedeutet, es zwingt den Programmierer nicht zu einem bestimmten Programmierstil, sondern erlaubt, dass für die jeweilige Aufgabe am besten geeignete Paradigma zu wählen. Die Freigabe nicht mehr benutzter Speicherbereiche erfolgt durch Referenzzählung. Datentypen werden dynamisch verwaltet, eine automatische statische Typprüfung wie z. B. bei C++ gibt es nicht. Jedoch unterstützt Python ab Version 3.5 optionale Typ-Annotationen, um eine statische Typprüfung mithilfe externer Software, wie zum Beispiel Mypy, zu vereinfachen.</p>



<h3 class="wp-block-heading">Wann Python?</h3>



<p>Python ist für die meisten gängigen Betriebssysteme frei erhältlich und bei den meisten Linux-Distributionen im Standardumfang enthalten. Um es in Webserver einzubinden, wird Webserver-umgreifend WSGI verwendet, welches die Nachteile von CGI umgeht. WSGI stellt eine universelle Schnittstelle zwischen Webserver und Python(-Framework) zur Verfügung.</p>



<p>Sowohl in der Wirtschaft, Wissenschaft als auch in der Spielebranche erfreut sich Python einer großen Beliebtheit, da es auf der einen Seite einsteigerfreundlich ist und auf der anderen Seite auch leistungsfähig genug, um theoretische Grundlagen der Programmierung zu vermitteln bzw. um moderne Anwendungen bis hin zu komplexen Datenanalysen, grafischer Programmierung oder Datenbankanwendungen zu entwickeln. Ganz zu schweigen von den Möglichkeiten in Bezug auf Machine learning bzw. künstliche Intelligenz. Doch diese Themen werde ich auch in zukünftigen Beiträgen angehen.</p>



<p>An dieser Stelle sei auch das Projekt „100-Dollar-Laptop“ erwähnt. Denn da wurde Python als Standardsprache der Benutzeroberfläche verwendet. Da der 100-Dollar-Rechner für die Schulausbildung von Kindern konzipiert war, sollte bei Benutzung der dafür gestalteten grafischen Benutzeroberfläche „Sugar“ auf Knopfdruck der gerade laufende Python-Quellcode angezeigt werden. Damit sollte Kindern die Möglichkeit gegeben werden, die dahinter liegende Informationstechnik real zu erleben und nach Belieben „hinter die Kulissen“ zu schauen oder sogar anzupassen. Doch darüber schreibe ich in einem zukünftigen Beitrag, da sich dieses Projekt komplexer entwickelt hat, als man es annehmen möchte.</p>



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



<p>Python kann verhältnismäßig schnell erlernt werden und man kann damit sehr kurze Programmtexte schreiben. Dies verbessert die Verständlichkeit einer Anwendung, erleichtert die Fehlersuche und verkürzt die Entwicklungszeit. Es unterstützt unterschiedliche Paradigmen (Programmierstile).</p>



<p>Auch gibt es viele frei verfügbare Erweiterungen (sogenannte Module) für spezielle Anwendungsbereiche wie etwa Grafik, Astronomie, Mathematik, Spracherkennung, Quantencomputer und künstliche Intelligenz.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/20/erklaerung-python/">Python &#8211; Die Sprache für schnelle Prototypen, Datenanalyse und künstliche Intelligenz</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/20/erklaerung-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1012</post-id>	</item>
		<item>
		<title>Signal &#8211; Vertrauliche Kommunikation und Datenschutz?</title>
		<link>https://ceosbay.com/2022/11/21/erklaerung-signal/</link>
					<comments>https://ceosbay.com/2022/11/21/erklaerung-signal/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 21 Nov 2022 17:22:48 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[E2EE]]></category>
		<category><![CDATA[Facenook]]></category>
		<category><![CDATA[FBI]]></category>
		<category><![CDATA[Freedom of Information]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Messenger]]></category>
		<category><![CDATA[MiTM]]></category>
		<category><![CDATA[Nachrichten]]></category>
		<category><![CDATA[Nachrichten-App]]></category>
		<category><![CDATA[Perfect Forward Secrecy]]></category>
		<category><![CDATA[PIN]]></category>
		<category><![CDATA[Signal]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[SQLCipher]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WhatsApp]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=644</guid>

					<description><![CDATA[<p>Signal &#8211; Nachdem ich bereits ein paar Instant Messenger unter die Lupe genommen habe, darf eines der &#8222;sichereren&#8220; Messenger nicht fehlen.&#160;Signal ist ein „freier“ bzw. „Open Source“ Messenger für verschlüsselte Kommunikation der US-amerikanischen, gemeinnützigen Signal-Stiftung. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/21/erklaerung-signal/">Signal &#8211; Vertrauliche Kommunikation und Datenschutz?</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Signal &#8211; Nachdem ich bereits ein paar Instant Messenger unter die Lupe genommen habe, darf eines der &#8222;sichereren&#8220; Messenger nicht fehlen.&nbsp;Signal ist ein „freier“ bzw. „<a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a>“ Messenger für verschlüsselte Kommunikation der US-amerikanischen, gemeinnützigen Signal-Stiftung. Warum ich dies in Anführungszeichen gesetzt habe, wird in den nächsten Zeilen erklärt. Der Messenger ist vor allem für die Datensparsamkeit bzw. E2EE (Ende-zu-Ende-Verschlüsselung) bekannt und wurde daher häufig von Sicherheitsexperten und Datenschutzorganisationen gelobt bzw. empfohlen.</p>



<h3 class="wp-block-heading">Zero-Knowledge-Prinzip </h3>



<p>Für die Datensparsamkeit wird das „Zero-Knowledge-Prinzip“ genutzt, bei dem der Betreiber keinerlei Zugriff auf Nutzerdaten hat, was unter anderem auch eine FOIA-Anfrage (FOIA &#8211;&nbsp;Der Freedom of Information Act ist ein, seit 1967, in den USA, in Kraft getretenes Gesetz, zur Informationsfreiheit und gibt jedem das Recht, Zugang zu Dokumenten von staatlichen Behörden zu verlangen) an das FBI bestätigte.</p>



<h3 class="wp-block-heading">Auf welchen Geräten kann Signal genutzt werden?</h3>



<p>Signal ist als App für Android und iOS sowie als Desktop-Version für Windows, macOS und Linux verfügbar. Auf eine Web-Version wurde aus Sicherheitsgründen verzichtet. Die Desktop-Version setzt allerdings voraus, dass die App bereits auf einem Smartphone installiert ist und durch dieses verifiziert wird. Eine anonyme oder pseudonyme Nutzung ohne Offenlegung der Rufnummer gegenüber Gesprächsteilnehmern ist weder mit der Smartphone-App noch mit der Desktop-Version möglich. Für die Verschlüsselung von Nachrichten, Anrufe und Videotelefonie kommt das „freie“ (Achtung – Auch hier sind Anführungszeichen 😉 ) Signal-Protokoll zum Einsatz.</p>



<h3 class="wp-block-heading">Erst einmal zu den Anführungszeichen bzgl. Signal</h3>



<p>Ab dem 22. April 2020, wurde der Source-Code, den man sonst immer auf GitHub „frei“ und aktualisiert vorgefunden hatte, für fast ein Jahr nicht aktualisiert und veröffentlicht. Die <a href="https://github.com/signalapp" target="_blank" rel="noreferrer noopener">Repo</a> (Siehe Erklärung in meinem Beitrag <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> bzw. <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub</a>), war voll von Beschwerden aus der <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Gemeinde. Eine Erklärung seitens Entwickler blieb bis heute aus. Sicherlich kann man jetzt versuchen, Gründe dafür zu finden, doch dies erachte ich als Nonsens. </p>



<p>Während die Kommunikation, durch die in den <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Client-Apps und dem Signal-Protokoll implementierte E2EE (Ende-zu-Ende-Verschlüsselung) sicher zu sein schien, verhinderte eine Closed-Source-Server-App, Forks und hinderte weiter jeden daran, die neuesten Versionen des Sourcecodes einzusehen, zu prüfen oder eigene aktuelle Signal-Server zu erstellen. Auf der Website des Unternehmens war in der Zwischenzeit immer noch ein Zitat von Twitter-CEO Jack Dorsey vorzufinden, der den Dienst lobte, weil dieser quelloffen bzw. <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> und von Fachleuten geprüft sei. Die fast einjährige Verzögerung bei der Freigabe des Server-Quellcodes, als auch die Funkstille über die Verzögerung sind beunruhigend, wenn man bedenkt, dass sie sich mit der Sicherheit und Anonymität im Internet rühmen bzw. man sich als Nutzer genau auf diese beiden Eigenschaften verlässt.</p>



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



<p>Im Grunde genommen werden alle Nachrichten, die zwischen registrierten Benutzern ausgetauscht werden, automatisch verschlüsselt. Signal ermöglicht das verschlüsselte Versenden von Textnachrichten, Dokumenten, Fotos und das Teilen von Kontaktinformationen in Einzel- oder Gruppenchats. Darüber hinaus werden auch Gruppentelefonate mit zuschaltbarer Videofunktion mit bis zu 40 Teilnehmern verschlüsselt übertragen.</p>



<h3 class="wp-block-heading">E2EE und PFS gegen MiTM</h3>



<p>Neben der Ende-zu-Ende-Verschlüsselung, wird auch Perfect Forward Secrecy genutzt, welches auch bei der Kompromittierung bzw. beim Bekanntwerden des geheimen persönlichen Schlüssels des Benutzers, Nachrichtenhistorien nur schwer entschlüsselt werden können. Dies hängt damit zusammen, dass für jede Nachricht aus dem Langzeitschlüssel ein eigener temporärer Schlüssel erzeugt wird, der nach Übermittlung vernichtet wird. Die Authentifizierung mit Gesprächspartnern erfolgt mittels QR-Codes, mit denen sich die Benutzer gegenseitig verifizieren. Auf diese Weise wird sichergestellt, dass wirklich mit der wahren Person kommuniziert wird und nicht mit einem Dritten. MiTM (Man-in-the-Middle-Angriffe) können dadurch minimiert werden. </p>



<p>Die Glaubhafte Abstreitbarkeit schützt Nutzer davor, dass eine bestimmte Nachricht, einer bestimmten Person zugewiesen werden kann. Da die Urheberschaft von Nachrichten nicht nachvollziehbar ist, bleibt der Quellenschutz größtenteils gewahrt. Verschlüsselte Benutzerprofile erlauben es, Benutzerfotos und Namen zwischen den Benutzern zu übertragen, ohne dass der Betreiber diese einsehen kann.</p>



<h3 class="wp-block-heading">View-Once-Funktion</h3>



<p>Einmalig präsentierte Medien bzw. Einmalansicht (View-Once &#8211; Sobald ein Foto oder Video mit einmaliger Ansicht gesendet wird, kann es lediglich 1x angesehen werden. Fotos oder Videos, die mit aktivierter Einmalansicht gesendet oder empfangen wurden, können nicht weitergeleitet oder gespeichert, mit Emojis versehen oder freigegeben werden. Ob ein Empfänger ein Foto oder Video mit Einmalansicht geöffnet hat, kann nur in Erfahrung gebracht werden, wenn die Gegenseite die Lesebestätigungen aktiviert hat) erlaubt es Mediendateien zu versenden, die nach einmaligem Ansehen aus der Unterhaltung entfernt werden. Diese Funktion wurde in der Betaversion aus 2019 in Signal implementiert. Es ist aber auf jeden Fall zu bedenken, dass derartige Inhalte durch weitere Geräte aufgezeichnet werden können. </p>



<p>Neben diesen Maßnahmen zur Übertragungsverschlüsselung werden von Signal sowohl in der iOS- als auch in der Android-Variante die auf dem Smartphone abgelegten Daten durch SQLCipher (SQLCipher ist eine Open-Source-SQLite-Erweiterung, die eine transparente, vollständige 256-Bit-AES-Datenbankverschlüsselung bietet – Darüber werde ich in einem zukünftigen Beitrag schreiben) verschlüsselt. Auf den Servern des Betreibers werden Kontoeinstellungen, Kontakte und blockierte Kontakte nicht im Klartext gespeichert, sondern mit einer PIN verschlüsselt, die nur dem Nutzer bekannt ist. Bei Gruppenchats sind die Mitgliederliste und der Admin-Status der Mitglieder sowie andere Gruppendetails als verschlüsselte Liste auf den Servern gespeichert. Aber diese sind auf einem Server gespeichert. Auch sind die Metadaten, zwar verschlüsselt, aber auf einem Server gespeichert 😀</p>



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



<p>Der dezentralisierte Gedanke greift bei Signal nicht, da es eine Servergebundene Lösung ist. Nichtsdestotrotz kann man durch die Nutzung des Open-Source Codes eigene Server aufsetzen &#8211; Vorausgesetzt Signal beschließt nicht mal wieder die Schranken zu schließen. Aus diesem Grund kann sowohl die Sicherstellung der Anonymität, als auch die Sicherheit in Frage gestellt werden 😉</p>



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



<p>Die Aktualisierung bzw. Veröffentlichung des Sourcecodes hat fast für ein Jahr nicht stattgefunden. Dies ist kein gutes Zeichen. Mag sein, dass sie die Updates wieder aktuell halten. Aber wer weiß, wann sie sich mal wieder Umentscheiden (lassen?). </p>



<p>Fakt ist auch, dass Signal ohne persönliche Zustimmung Kalendertermine hinzufügen oder ändern und E-Mails an eingeladene Gäste verschicken kann, die dem Anschein nach von einem selbst stammen. Signal kann auf alle auf dem Smartphone gespeicherten Kalendertermine zugreifen. Jederzeit und ohne Bestätigung kann die Kamera des Smartphones aktiviert werden und es können Bild- sowie Videoaufnahmen stattfinden. </p>



<p>Konventionelle SMS können durch die App gelesen, gesendet und gelöscht werden. Auf die Mikrofone des Smartphones kann die App auch zugreifen und zu jedem Zeitpunkt den Ton aufzeichnen. Die permanente Kommunikation mit einem Server ermöglicht der App und gegebenenfalls Dritten, wann und mit wem telefoniert wurde. Der Messenger kann ohne persönlichen Eingriff Telefonnummern wählen, was zu unerwarteten Kosten und Anrufen führen kann. Alles in allem läuft die App über einen amerikanischen Server und ist somit eine zentralisierte Lösung. Es mag sein, dass es viele Sicherheitsexperten gibt, die Signal für eine gute und „sicherere“ Alternative als Instant Messenger sehen. Nun, ich bin kein Sicherheitsexperte. Daher ist es jedem selbst überlassen, was man von der App hält.</p>



<p>Heute etwas später dran… Ein paar Zimmer benötigten einen neuen Anstrich 😀</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/21/erklaerung-signal/">Signal &#8211; Vertrauliche Kommunikation und Datenschutz?</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/21/erklaerung-signal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">644</post-id>	</item>
		<item>
		<title>GitHub &#8211; Das Zentrum kollaborativer Softwareentwicklung und der Ort, um Code, Ideen und Innovationen zu teilen</title>
		<link>https://ceosbay.com/2022/11/19/erklaerung-github/</link>
					<comments>https://ceosbay.com/2022/11/19/erklaerung-github/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 19 Nov 2022 05:30:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[Apfel]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Cloud Service]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Smartphone]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Versionskontrollsystem]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>
		<category><![CDATA[Zweige]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=563</guid>

					<description><![CDATA[<p>Nachdem ich im gestrigen Beitrag über Git geschrieben habe, widme ich mich heute kurzerhand GitHub. Im Grunde genommen ist es ein Cloud-basierter Dienst, der Entwicklern dabei hilft, Code zu speichern und zu verwalten sowie Änderungen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub &#8211; Das Zentrum kollaborativer Softwareentwicklung und der Ort, um Code, Ideen und Innovationen zu teilen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Nachdem ich im gestrigen Beitrag über Git geschrieben habe, widme ich mich heute kurzerhand <a href="https://github.com" target="_blank" rel="noreferrer noopener">GitHub</a>. Im Grunde genommen ist es ein Cloud-basierter Dienst, der Entwicklern dabei hilft, Code zu speichern und zu verwalten sowie Änderungen darin zu verfolgen und zu kontrollieren. Im Prinzip macht es ja an sich nicht viel anders als <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> &#8211; Oder?</p>



<p>Da die Programmierung so stark auf einer exakten Syntax beruht, sind die Namenskonventionen für Programmiersprachen und Ressourcen alles andere als intuitiv. Java und JavaScript sind in etwa so eng miteinander verwandt wie Äpfel und Birnen, und das Python-Logo mag zwar ein Bild von ineinander verschlungenen Schlangen sein, aber eigentlich ist es nach &#8222;Monty Python&#8217;s Flying Circus&#8220;, einer BBC-Comedy-Serie aus den 70er Jahren benannt. Aber dies ist nur die Spitze des Eisbergs :). Für jemanden, der zum ersten Mal von Git und GitHub hört, ist die offensichtliche Verbindung vielleicht nicht ganz so offensichtlich.</p>



<p>Ist es nun dasselbe? Wenn nicht, sind sie in irgendeiner Weise miteinander verbunden? Oder ist die Verbindung, wie bei Java und JavaScript, nur oberflächlich?</p>



<p>Dies sind durchaus gerechtfertigte Fragen. Immerhin war Microsoft im Jahr 2018 bereit, 7,5 Milliarden Dollar für die Übernahme auszugeben, sodass Entwickler aller Qualifikationsstufen aufhorchen sollten. Die Wahrheit ist, dass Beiden viel enger miteinander verbunden sind als Java und JavaScript &#8211; aber mit einigen wichtigen Unterschieden, die sie voneinander unterscheiden. Nachdem ich gestern bereits über Git geschrieben habe, hier die Eigenschaften von GitHub.</p>



<h3 class="wp-block-heading">Was ist GitHub?</h3>



<p>In der Diskussion wurde oft der Vergleich gezogen, dass GitHub für <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> das ist, was Facebook für das tatsächliche Gesicht ihrer Nutzer ist. Folglich ist Facebook eine Art Online-Gesichtsdatenbank und GitHub ist als Hosting-Service für Git-Repositories konzipiert.</p>



<h3 class="wp-block-heading">Und was genau ist ein Git-Repository-Hosting-Dienst? </h3>



<p>Es handelt sich um eine Online-Datenbank, mit der Git-Versionskontrollprojekte außerhalb des lokalen Computers/Servers gemeinsam genutzt werden können. Während Git lokal betrieben bzw. selbst gehosted werden muss, ist GitHub ausschließlich Cloud-basiert und ein kostenpflichtiger Dienst (Die grundlegenden Repository-Hosting-Funktionen sind kostenlos verfügbar, wenn man ein Profil erstellt ;). Was GitHub zu einer beliebten Wahl für <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Projekte macht).</p>



<p>Das liegt daran, dass es nicht nur alle Funktionen und Vorteile von Git bietet, sondern auch die Grundfunktionen von Git erweitert. Es bietet eine äußerst intuitive, GUI (Graphical User Interface &#8211; Grafische Benutzeroberfläche) und stellt Programmierern integrierte Kontroll- und Aufgabenverwaltungswerkzeuge zur Verfügung. Zusätzliche Funktionen können über den Marketplace-Dienst implementiert werden. Und da GitHub cloudbasiert ist, kann jede autorisierte Person von jedem Computer oder Smart-Device, ja, auch mit dem Smartphone, überall auf der Welt auf die Git-Repositories zugreifen (Vorausgesetzt, die Person verfügt über eine Internetverbindung).</p>



<p>Man kann darüber den eigenen Code mit anderen teilen und im Zuge der Kollaboration die Möglichkeit nutzen, Überarbeitungen an den verschiedenen Git-Zweigen vorzunehmen. Auf diese Weise können sich ganze Teams in Echtzeit in diversen Projekten abstimmen. Wenn Änderungen vorgenommen werden, werden neue Zweige erstellt, so dass das Team den Code weiter überarbeiten kann, ohne die Arbeit der anderen zu überschreiben. Diese Zweige sind wie Kopien, und die darin vorgenommenen Änderungen werden nicht in den Hauptverzeichnissen auf den Rechnern der anderen Benutzer wiedergegeben, es sei denn, die Benutzer entscheiden sich dafür, die Änderungen zu pushen (schieben) oder zu pullen (ziehen), um sie zu übernehmen. Es gibt auch eine Desktop-Anwendung, die einige zusätzliche Funktionen für erfahrene Entwickler bietet. </p>



<p>Es gibt auch andere Git-Repository-Hosting-Dienste wie GitLab, BitBucket und SourceForge, die allesamt brauchbare Alternativen darstellen und mit denen ich auch schon in verschiedenen Projekten gearbeitet habe. GitLab bietet sogar eine integrierte Option, mit der die Nutzer ihre Projekte direkt nach GitLab migrieren können.</p>



<h3 class="wp-block-heading">Tabellarische Gegenüberstellung</h3>



<figure class="wp-block-table"><table><tbody><tr><td>Git ist eine Software.</td><td>GitHub ist ein Dienst.</td></tr><tr><td>Git ist ein Befehlszeilenwerkzeug</td><td>GitHub hat eine grafische Benutzeroberfläche</td></tr><tr><td>Git wird lokal auf dem System installiert</td><td>GitHub wird im Internet gehostet</td></tr><tr><td>Git wird von Linux verwaltet</td><td>GitHub wird von Microsoft verwaltet.</td></tr><tr><td>Git konzentriert sich auf Versionskontrolle und Code-Sharing</td><td>GitHub konzentriert sich auf das zentralisierte Hosting von Quellcode</td></tr><tr><td>Git ist ein Versionskontrollsystem zur Verwaltung der Quellcode-Historie</td><td>GitHub ist ein Hosting-Dienst für Git-Repositories</td></tr><tr><td>Git wurde erstmals 2005 veröffentlicht</td><td>GitHub wurde 2008 eingeführt</td></tr><tr><td>Git hat keine Funktion zur Benutzerverwaltung</td><td>GitHub verfügt über eine integrierte Benutzerverwaltungsfunktion</td></tr><tr><td>Git ist <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-lizenziert</td><td>GitHub umfasst eine kostenlose und eine kostenpflichtige Ebene</td></tr><tr><td>Git hat eine minimale externe Werkzeugkonfiguration</td><td>GitHub hat einen aktiven Marktplatz für die Integration von Tools</td></tr><tr><td>Git bietet eine Desktop-Oberfläche namens Git Gui</td><td>GitHub bietet eine Desktop-Oberfläche namens GitHub Desktop</td></tr><tr><td>Git konkurriert mit CVS, Azure DevOps Server, Subversion, Mercurial, etc.</td><td>GitHub konkurriert mit GitLab, Git Bucket, AWS Code Commit, usw.</td></tr></tbody></table><figcaption class="wp-element-caption">Tabellarischer Vergleich Git und GitHub</figcaption></figure>



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



<p>Alles in allem ist Git ein Versionskontrollsystem, mit dem man den Quellcode verwalten und verfolgen kann. GitHub ist ein Cloud-basierter Hosting-Dienst, mit dem man die Git-Repositories verwalten kann. Wenn man ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Projekt hat, welches Git verwendet, dann soll es helfen, dieses einfacher zu verwalten.</p>



<p>Schließlich sind die Namenskonventionen in der Welt der Programmierung nicht immer intuitiv. Deshalb lohnt es sich, die Verbindungen und Unterschiede zwischen den ähnlich benannten Lösungen zu erkennen. Beide bieten Programmierern wertvolle Versionskontrollfunktionen, sodass man laufend Software erstellen kann, ohne die Befürchtung zu haben, dass alles durcheinander kommt, da viele Menschen daran arbeiten. In diesem Fall verderben viele Köche nicht wirklich den Brei. GitHub geht nur ein bisschen weiter als Git. Es bietet ein paar Funktionen mehr sowie Ressourcen wie den Online-Speicherplatz und erleichtert die Zusammenarbeit an Projekten durch eine einfach zu bedienende Benutzeroberfläche.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub &#8211; Das Zentrum kollaborativer Softwareentwicklung und der Ort, um Code, Ideen und Innovationen zu teilen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/19/erklaerung-github/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">563</post-id>	</item>
		<item>
		<title>Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</title>
		<link>https://ceosbay.com/2022/11/18/erklaerung-git/</link>
					<comments>https://ceosbay.com/2022/11/18/erklaerung-git/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 18 Nov 2022 11:30:00 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[Branch]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[equo]]></category>
		<category><![CDATA[Fork]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitKraken]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kollaboration]]></category>
		<category><![CDATA[Kraken]]></category>
		<category><![CDATA[Lizenz]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Merge]]></category>
		<category><![CDATA[Offener]]></category>
		<category><![CDATA[Offiziell]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Pakete]]></category>
		<category><![CDATA[Paketmanager]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Quelle]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Repository Manager]]></category>
		<category><![CDATA[Sabayon]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Source Control Manager]]></category>
		<category><![CDATA[Stupid Content Tracker]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=609</guid>

					<description><![CDATA[<p>Git ist eine freie und Open Source Software für die verteilte Versionskontrolle. Es hilft Entwicklern dabei, Code zu speichern, zu verwalten, Änderungen darin zu verfolgen und zu kontrollieren. Zu den weiteren Zielen gehören Geschwindigkeit, Datenintegrität &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Git ist eine freie und <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Software für die verteilte Versionskontrolle. Es hilft Entwicklern dabei, Code zu speichern, zu verwalten, Änderungen darin zu verfolgen und zu kontrollieren. Zu den weiteren Zielen gehören Geschwindigkeit, Datenintegrität und Unterstützung für verteilte, nicht-lineare Arbeitsabläufe (Dabei können tausende von parallelen Zweigen auf verschiedenen Systemen entstehen &#8211; Dies ist keine Metapher sondern wörtlich gemeint! 😉 ).</p>



<p>Git wurde ursprünglich von Linus Torvalds im Jahr 2005 für die Entwicklung des Linux-Kernels entwickelt, wobei andere Kernel-Entwickler zur anfänglichen Entwicklung wesentliche Beiträge geleistet haben. Seit 2005 ist Junio Hamano der Hauptverantwortliche. Wie bei den meisten anderen verteilten Versionskontrollsystemen und im Gegensatz zu den meisten Client-Server-Systemen ist jedes Git-Verzeichnis auf jedem Computer ein vollwertiges Repository mit einer vollständigen Historie und vollständigen Versionsverfolgungsfunktionen, unabhängig vom Netzwerkzugang oder einem zentralen Server. Git ist, wie Anfangs angesprochen, freie und <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source Software</a>, die unter der <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html" target="_blank" rel="noreferrer noopener">GPL-2.0-Lizenz</a> vertrieben wird.</p>



<h3 class="wp-block-heading">Eine kurze Anekdote über Git und dessen Abbreviatur</h3>



<p>Linus Torvalds witzelte sarkastisch über den Namen git (was im britischen Slang &#8222;unangenehme Person&#8220; bedeutet): &#8222;Ich bin ein egoistischer Mistkerl und benenne alle meine Projekte nach mir selbst. Erst &#8222;Linux&#8220;, jetzt &#8222;Git&#8220;. Die Manpage beschreibt Git als &#8222;the stupid content tracker&#8220; Die Read-me-Datei des Quellcodes führt weiter aus:<br>&#8222;Git&#8220; kann alles Mögliche bedeuten, je nach Laune (Ich werde dies in der englischen Sprache belassen, da es so wahrscheinlich mehr Sinn macht 😉 ).</p>



<ul class="wp-block-list">
<li>Random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of &#8222;get&#8220; may or may not be relevant.</li>



<li>Stupid. Contemptible and despicable. Simple. Take your pick from the dictionary of slang.</li>



<li>&#8222;Global information tracker&#8220;: you&#8217;re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.</li>



<li>&#8222;Goddamn idiotic truckload of sh*t&#8220;: when it breaks.</li>
</ul>



<p>Um Git zu verstehen sind im Prinzip 8 Begriffe relevant. Repository (Kurz: Repo), die Versionskontrolle, Fork bzw. Forking (Gabel bzw. Gabelung), Branch (Verzweigung), Stage (Phase oder Stadium), Modified (modifiziert), Commit (Verbindlichkeit) und Merge (Zusammenführung). Diese Begriffe werde ich nachfolgend beschreiben.</p>



<h3 class="wp-block-heading">Was ist eine Repository?</h3>



<p>Eine Repository, kurz Repo genannt, ist ein Speicherort für Softwarepakete. Oft wird auch ein Inhaltsverzeichnis zusammen mit Metadaten (Metainformationen bzw. -daten sind strukturierte Daten, die Informationen über Merkmale anderer Daten enthalten) gespeichert. Eine Software-Repository wird in der Regel von Source-Control-Managern (SCM) oder Repository-Managern (Ein Repository-Manager ist eine dedizierte Server-Anwendung, die für die Verwaltung von Repositories mit binären Komponenten entwickelt wurde) verwaltet &#8211; Dazu teilweise mehr in der Versionskontrolle und in späteren Beiträgen. Paketmanager ermöglichen die automatische Installation und Aktualisierung von Repositories (Deshalb auch &#8222;Pakete&#8220; genannt).</p>



<p>Viele Organisationen und Softwarehersteller unterhalten zu diesem Zweck Server im Internet, teilweise kostenlos oder gegen eine Gebühr. Repositories können können verschiedene Programmiersprachen, Betriebssysteme, Spiele oder andere Anwendungen sowie Dokumente und Daten beherbergen. Die Betreiber solcher Repositories stellen in der Regel ein Paketverwaltungssystem zur Verfügung. Folglich Werkzeuge, mit denen Softwarepakete aus den Repositories gesucht, installiert und anderweitig bearbeitet werden können. Viele Linux-Distributionen (Der Begriff Distribution stammt aus dem Lateinischen &#8222;distributio&#8220; und hat im Zusammenhang mit Software zwei unterschiedliche Bedeutungen: Softwarepaketierung und Softwareverteilung) verwenden z. B. das Advanced Packaging Tool (APT), das häufig in Debian-basierten Distributionen zu finden ist oder yum in Red Hat-basierten Distributionen. Es gibt auch mehrere unabhängige Paketverwaltungssysteme, wie z. B. pacman, dass in Arch Linux verwendet wird und equo, welches in Sabayon Linux zu finden ist. Ich bin primär mit Debian-basierten Distributionen unterwegs. Werde ich aber in zukünftigen Beiträgen ausführlicher thematisieren.</p>



<h3 class="wp-block-heading">Was ist Versionskontrolle?</h3>



<p>Die Versionskontrolle unterstützt Entwickler bei der Verfolgung und Verwaltung von Änderungen am Quellcode eines Softwareprojekts. Wenn ein Projekt und die Anzahl der Programmierer wachsen, wird die Versionskontrolle unabdingbar. Doch in der Regel kommen sowohl bei kleineren als auch größeren Softwareprojekten mehrere Personen zum Einsatz, die gemeinsam an dem Quellcode arbeiten. Wenn man beispielsweise als Core-Entwickler an einem bestimmten Teil der Codebasis arbeiten möchte, ist es nicht förderlich oder effizient, wenn der Quellcode direkt bearbeitet wird, da zeitgleich noch andere die an dem Projekt beteiligt sind und daran arbeiten. Dies kann am Ende des Tages für ein enormes Durcheinander sorgen 😀</p>



<p>Da man auf dieses Durcheinander gut verzichten kann, arbeitet man als Entwickler mit einer Versionskontrolle &#8222;sicher&#8220; durch branching (Verzweigungen) und merging (Zusammenführungen). &#8222;Sicher&#8220; in Anführungszeichen, da es auch da einige Stolpersteine gibt 😉</p>



<p>Beim branching dupliziert ein Entwickler den Teil des Quellcodes (Das so genannte Repository bzw. die Repo), der für ihn relevant ist und kann die Änderungen genau an diesem Teil des Codes vornehmen, ohne den Rest des Projekts zu beeinträchtigen. Sobald der Entwickler seinen Teil des Codes ordnungsgemäß fertiggestellt hat, kann er diesen Code wieder in den Hauptquellcode mergen (einbinden), um es offiziell zu machen. All diese Änderungen werden protokolliert, kommentiert und können bei Bedarf eingesehen, kontrolliert oder rückgängig gemacht werden.</p>



<h3 class="wp-block-heading">Was ist Fork. bzw. Forking?</h3>



<p>Ein Fork ist eine Kopie einer Repository. Das Forken einer Repository ermöglicht es, frei mit Änderungen zu experimentieren, ohne das Originalprojekt zu beeinträchtigen. Dieser Begriff wird auch anderweitig genutzt, doch darauf werde ich jetzt nicht weiter eingehen 😀</p>



<h3 class="wp-block-heading">Was ist Branch bzw. Branching?</h3>



<p>Ein Branch (Zweig) ist ein hervorstehender Teil eines Baumes. Etwas, dass aus einem Hauptteil herausragt. So, auch in unserem Kontext. Ein Zweig stellt eine unabhängige Entwicklungslinie dar. Zweige dienen als Abstraktion für den Prozess der Bearbeitung (Stage/Commit). Man kann sie sich als eine Möglichkeit vorstellen, ein neues Arbeitsverzeichnis, einen Bereitstellungsbereich und/oder einen Projektverlauf anzufordern.</p>



<h3 class="wp-block-heading">Was ist Modified bzw. Modifying?</h3>



<p>Modified (Geändert) bedeutet, dass die Datei(en) geändert wurden aber noch nicht in die Datenbank bzw. Repository übertragen wurden.</p>



<h3 class="wp-block-heading">Was ist Stage bzw. Staging?</h3>



<p>Staged (Phase/Stadium) bedeutet, dass eine geänderte Datei in ihrer aktuellen Version markiert wurde, um sie in dem nächsten Commit-Snapshot (Schnappschuss) zu übernehmen.</p>



<h3 class="wp-block-heading">Was ist Commit bzw. Committing ?</h3>



<p>Commits (Verbindlichkeiten) sind die zentralen Bausteineinheiten einer Git-Projektzeitleiste. Sie können als Schnappschüsse oder Meilensteine entlang der Zeitachse eines Git-Projekts betrachtet werden. Commits werden mit dem Befehl &#8222;git commit&#8220; erstellt, um den Zustand eines Projekts zu diesem Zeitpunkt festzuhalten. Im Endeffekt wie das Zwischenspeichern mit F5 bei Spielen oder Strg + S bei der regulären Arbeit am Computer. In der Betrachtungsweise einiger interessanter und manchmal nervtötender Zeitgenossen &#8211; Lediglich etwas fundamentaler 😉</p>



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



<p>Mit dem Merging-Befehl fügt Git einen geforkten (aufgegabelten) Verlauf wieder zusammen. Mit dem Befehl &#8222;git merge&#8220; kann man die unabhängigen Entwicklungslinien, die mit dem Befehl &#8222;git branch&#8220; erstellt wurden, in einen einzigen Zweig integrieren.</p>



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



<p>Alles in allem sollte dies für eine kurze Erklärung reichen. In naher Zukunft werde ich auch ein Tutorial über die Nutzung von Git schreiben. Sicherlich gibt es heutzutage auch kommerzielle Cloud-Lösungen wie GitHub oder GitKraken, die diese Schritte auf wenige Mausklicks reduzieren und so eine nahtlosere Zusammenarbeit ohne etwaige Vorkenntnisse ermöglichen, doch dies werde ich auch in zukünftigen Beiträgen thematisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/18/erklaerung-git/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">609</post-id>	</item>
	</channel>
</rss>
