Closed Source (auch Proprietary Software genannt) bezeichnet Software, deren Quellcode nicht öffentlich zugänglich ist und nur vom Eigentümer bzw. Entwickler eingesehen, geändert und weitergegeben werden kann. Im Gegensatz zu Open Source-Software, bei der der Quellcode offengelegt wird, bleibt der Quellcode bei Closed Source streng vertraulich.
Geschützter Quellcode: Der Quellcode der Software ist nicht für die Öffentlichkeit einsehbar. Nur der Entwickler oder das Unternehmen, das die Software besitzt, hat Zugriff darauf. Dadurch wird verhindert, dass Dritte die Funktionsweise der Software nachvollziehen oder Änderungen daran vornehmen können.
Lizenzrechtliche Beschränkungen: Closed Source Software wird häufig unter restriktiven Lizenzen vertrieben, die die Nutzung, Modifikation und Weitergabe streng regulieren. Dies bedeutet, dass Nutzer die Software nur innerhalb der durch die Lizenz erlaubten Rahmenbedingungen verwenden dürfen.
Zugangsbeschränkung: Nur autorisierte Entwickler oder Teams innerhalb des Unternehmens, das die Software besitzt, haben die Berechtigung, den Code zu modifizieren oder neue Funktionen hinzuzufügen.
Kommerzielle Nutzung: Closed Source Software wird oft als kommerzielles Produkt angeboten. Nutzer müssen in der Regel eine Lizenz erwerben oder Abonnements abschließen, um die Software zu nutzen. Typische Beispiele sind Anwendungen wie Microsoft Office oder Adobe Photoshop.
Geringere Transparenz: Nutzer haben keine Möglichkeit, den Quellcode auf Sicherheitslücken oder versteckte Funktionen (z. B. Backdoors) zu überprüfen. Dies kann ein Risiko darstellen, wenn Vertrauen in die Software-Sicherheit ein kritischer Faktor ist.
Einige bekannte Closed Source Programme und Plattformen sind:
Closed Source Software ist proprietäre Software, deren Quellcode nicht öffentlich zugänglich ist. Sie wird in der Regel von Unternehmen entwickelt und kommerziell angeboten. Nutzer können die Software verwenden, aber weder den Quellcode einsehen noch modifizieren. Dies bietet Vorteile in Bezug auf den Schutz des geistigen Eigentums und die Qualitätssicherung, geht jedoch zulasten der Flexibilität und Transparenz.
Quellcode (auch Quelltext oder Code genannt) ist die für Menschen lesbare Anweisungssammlung, die von Programmierern geschrieben wird, um die Funktionsweise eines Programms zu definieren. Er besteht aus einer Abfolge von Befehlen und Anweisungen, die in einer bestimmten Programmiersprache geschrieben sind, wie z. B. Java, Python, C++, JavaScript und vielen anderen.
Menschlich lesbar: Quellcode wird von Entwicklern geschrieben und ist so gestaltet, dass er für Menschen lesbar und verständlich ist. Oft wird er mit Kommentaren und gut strukturierten Anweisungen versehen, um seine Logik nachvollziehbar zu machen.
Programmiersprachen: Quellcode wird in verschiedenen Programmiersprachen geschrieben, die unterschiedliche Syntax und Regeln haben. Jede Programmiersprache hat spezifische Zwecke und Anwendungsbereiche.
Maschinenunabhängig: Quellcode ist in seiner Rohform nicht direkt ausführbar. Er muss in eine maschinenlesbare Form (Maschinencode) übersetzt werden, damit der Computer ihn verstehen und ausführen kann. Diese Übersetzung erfolgt durch einen Compiler oder Interpreter.
Bearbeitung und Wartung: Entwickler können Quellcode bearbeiten, erweitern und verbessern, um neue Funktionen hinzuzufügen oder Fehler zu beheben. Der Quellcode bildet die Grundlage für alle weiteren Entwicklungs- und Wartungsarbeiten eines Softwareprojekts.
Ein einfaches Beispiel in Python, das zeigt, wie Quellcode aussieht:
# Ein einfacher Python-Quellcode, der "Hello, World!" ausgibt
print("Hello, World!")
Dieser Code besteht aus einer einzigen Anweisung (print), die den Text "Hello, World!" auf dem Bildschirm ausgibt. Obwohl es nur eine Zeile ist, muss der Interpreter (in diesem Fall der Python-Interpreter) den Quellcode lesen, verstehen und in Maschinencode umwandeln, damit der Computer die Anweisung ausführen kann.
Quellcode ist das Herzstück jeder Softwareentwicklung. Er definiert die Logik, das Verhalten und die Funktionalität einer Software. Einige wichtige Aspekte des Quellcodes:
Quellcode ist der grundlegende, menschenlesbare Text, aus dem Softwareprogramme bestehen. Er wird von Entwicklern geschrieben, um die Funktionalität eines Programms zu definieren und muss von einem Compiler oder Interpreter in Maschinencode umgewandelt werden, bevor ein Computer ihn ausführen kann.
Hype Driven Development (HDD) ist ein ironischer Begriff in der Softwareentwicklung, der sich auf die Tendenz bezieht, Technologien oder Praktiken zu verwenden, weil sie gerade im Trend sind, anstatt sie aufgrund ihrer tatsächlichen Eignung für das Projekt auszuwählen. Entwickler oder Unternehmen, die HDD betreiben, neigen dazu, neue Frameworks, Tools oder Programmiersprachen zu adoptieren, weil sie gerade viel Aufmerksamkeit erhalten, ohne ausreichend zu analysieren, ob diese Lösungen wirklich die beste Wahl für ihre spezifischen Anforderungen sind.
Typische Merkmale von HDD:
Insgesamt führt Hype Driven Development häufig zu überkomplexen Architekturen, technischen Schulden und einem hohen Aufwand für die Einarbeitung in ständig wechselnde Technologien.
Ein Batch bezeichnet in der Informatik und Datenverarbeitung eine Gruppe oder einen Stapel von Aufgaben, Daten oder Prozessen, die gemeinsam und in einem Durchlauf verarbeitet werden. Es handelt sich um eine gesammelte Menge von Einheiten (z. B. Dateien, Aufträgen oder Transaktionen), die als ein Paket bearbeitet werden, anstatt jede Einheit einzeln und sofort zu verarbeiten.
Hier sind einige typische Merkmale eines Batches:
Sammlung von Aufgaben: Mehrere Aufgaben oder Daten werden gesammelt und dann gemeinsam verarbeitet.
Einheitliche Verarbeitung: Alle Aufgaben im Batch durchlaufen denselben Prozess oder werden auf die gleiche Weise verarbeitet.
Automatische Ausführung: Ein Batch wird oft zu einem bestimmten Zeitpunkt oder bei Erreichen bestimmter Kriterien automatisch gestartet, ohne menschliches Eingreifen.
Beispiele:
Ein Batch dient der Effizienzsteigerung, indem Aufgaben gebündelt und gemeinsam bearbeitet werden, oft zu Zeiten, in denen das System weniger ausgelastet ist, wie nachts.
Batch Processing ist eine Methode in der Datenverarbeitung, bei der eine Gruppe von Aufgaben oder Daten als "Batch" (Stapel) gesammelt und anschließend gemeinsam verarbeitet wird, anstatt sie einzeln in Echtzeit zu bearbeiten. Diese Methode wird häufig verwendet, um große Mengen von Daten effizient zu verarbeiten, ohne dass menschliches Eingreifen notwendig ist, während der Prozess läuft.
Hier sind einige Merkmale von Batch Processing:
Zeitgesteuert: Die Aufgaben werden zu bestimmten Zeiten oder nach dem Erreichen bestimmter Datenmengen ausgeführt.
Automatisiert: Die Verarbeitung erfolgt in der Regel automatisiert und erfordert kein sofortiges Eingreifen.
Effizient: Da viele Aufgaben gleichzeitig bearbeitet werden, kann Batch Processing Ressourcen und Zeit sparen.
Beispiele:
Es eignet sich besonders für repetitive Aufgaben, die nicht sofort bearbeitet werden müssen, sondern in regelmäßigen Abständen erledigt werden können.
Contract Driven Development (CDD) ist eine Softwareentwicklungsmethode, bei der der Schwerpunkt auf der Definition und Verwendung von Contracts (Verträgen) zwischen verschiedenen Komponenten oder Services liegt. Diese Verträge spezifizieren klar, wie verschiedene Softwareteile miteinander interagieren sollen. CDD wird häufig in Microservices-Architekturen oder bei der Entwicklung von APIs verwendet, um sicherzustellen, dass die Kommunikation zwischen unabhängigen Modulen korrekt und konsistent ist.
Contracts als Quelle der Wahrheit:
Trennung von Implementierung und Vertrag:
Vertragsgetriebene Tests:
Consumer-Driven Contract verwendet werden, um sicherzustellen, dass die vom Verbraucher erwarteten Daten und Formate vom Anbieter geliefert werden.Contract Driven Development eignet sich besonders für Projekte mit vielen unabhängigen Komponenten, bei denen klare und stabile Schnittstellen entscheidend sind. Es hilft, Missverständnisse zu vermeiden und stellt durch automatisierte Tests sicher, dass die Kommunikation zwischen Services robust bleibt. Die zusätzliche Komplexität bei der Verwaltung von Verträgen muss jedoch bedacht werden.
Gearman ist ein Open-Source-Job-Queue-Manager und ein verteiltes Task-Handling-System. Es dient dazu, Aufgaben (Jobs) zu verteilen und in parallelen Prozessen auszuführen. Gearman ermöglicht es, große oder komplexe Aufgaben in kleinere Teilaufgaben zu zerlegen, die dann auf verschiedenen Servern oder Prozessen parallel bearbeitet werden können.
Gearman basiert auf einem einfachen Client-Server-Worker-Modell:
Client: Ein Client sendet eine Aufgabe an den Gearman-Server, zum Beispiel das Hochladen und Verarbeiten einer großen Datei oder die Ausführung eines Skripts.
Server: Der Gearman-Server empfängt die Aufgabe und teilt sie in einzelne Jobs auf. Er verteilt diese Jobs dann an verfügbare Worker.
Worker: Ein Worker ist ein Prozess oder Server, der auf den Gearman-Server hört und Aufgaben übernimmt, die er ausführen kann. Sobald er eine Aufgabe abgeschlossen hat, sendet er das Ergebnis an den Server zurück, der es wiederum an den Client weiterleitet.
Verteiltes Rechnen: Gearman ermöglicht es, Aufgaben auf mehrere Server zu verteilen, was die Rechenzeit verkürzen kann. Das ist besonders nützlich bei großen, datenintensiven Aufgaben wie Bildverarbeitung, Datenanalyse oder Web-Scraping.
Asynchrone Verarbeitung: Gearman unterstützt die Ausführung von Jobs im Hintergrund. Das bedeutet, dass ein Client nicht warten muss, bis ein Job abgeschlossen ist. Die Ergebnisse können zu einem späteren Zeitpunkt abgerufen werden.
Lastverteilung: Durch die Verwendung von mehreren Workern kann Gearman die Last von Aufgaben auf mehrere Maschinen verteilen, was eine bessere Skalierbarkeit und Ausfallsicherheit bietet.
Plattform- und Sprachunabhängig: Gearman unterstützt verschiedene Programmiersprachen wie C, Perl, Python, PHP und mehr, sodass Entwickler in ihrer bevorzugten Sprache arbeiten können.
Batch Processing: Wenn eine große Menge von Daten verarbeitet werden muss, kann Gearman die Aufgabe auf mehrere Worker aufteilen und parallel verarbeiten.
Microservices: Gearman kann verwendet werden, um verschiedene Dienste miteinander zu koordinieren und Aufgaben über mehrere Server hinweg zu verteilen.
Hintergrundaufgaben: Webseiten können z. B. Aufgaben wie das Generieren von Berichten oder das Versenden von E-Mails in den Hintergrund verschieben, während sie weiterhin Benutzeranfragen bedienen.
Insgesamt ist Gearman ein nützliches Werkzeug, wenn es darum geht, die Last von Aufgaben zu verteilen und die Verarbeitung von Jobs effizienter zu gestalten.
RSS steht für Really Simple Syndication oder Rich Site Summary. Es ist ein Web-Feed-Format, das verwendet wird, um regelmäßig aktualisierte Inhalte von Websites in standardisierter Form zu liefern, ohne die Website selbst besuchen zu müssen. RSS-Feeds enthalten in der Regel Titel, Zusammenfassungen und Links zu den vollständigen Artikeln oder Inhalten.
Feeds abonnieren: Nutzer können RSS-Feeds von Websites abonnieren, die solche Feeds anbieten. Diese Feeds liefern Informationen über neue Inhalte auf der Website.
RSS-Reader verwenden: Um RSS-Feeds zu lesen, verwendet man einen sogenannten RSS-Reader oder Feed-Reader (Apps oder Programme). Diese Reader sammeln und zeigen alle abonnierten Inhalte an einem Ort an. Beliebte RSS-Reader sind z. B. Feedly oder Inoreader.
Automatische Aktualisierung: Der RSS-Reader überprüft regelmäßig die abonnierten Feeds auf neue Inhalte und zeigt diese dem Nutzer an. So kann man alle Neuigkeiten von verschiedenen Seiten zentral abrufen, ohne jede Seite einzeln zu besuchen.
RSS ist eine praktische Methode, um den Überblick über viele verschiedene Websites zu behalten.
CaptainHook ist ein Git-Hook-Manager für PHP, der es Entwicklern ermöglicht, automatisierte Aufgaben im Zusammenhang mit Git-Repositories durchzuführen. Es erleichtert das Einrichten und Verwalten von Git-Hooks, also Skripten, die zu bestimmten Zeitpunkten im Git-Workflow automatisch ausgeführt werden (z. B. vor dem Committen oder Pushen von Code). Dies ist besonders nützlich, um Codestandards durchzusetzen, Tests laufen zu lassen, Commit-Nachrichten zu überprüfen oder fehlerhaften Code zu verhindern.
CaptainHook lässt sich einfach über Composer in Projekte integrieren und bietet Flexibilität, um benutzerdefinierte Hooks und Plugins zu erstellen. Es unterstützt verschiedene PHP-Versionen, wobei die neueste Version PHP 8.0 erfordert.
Eine Entity ist ein zentrales Konzept im Bereich der Softwareentwicklung, insbesondere im Domain-Driven Design (DDD). Es beschreibt ein Objekt oder einen Datensatz, der eine eindeutige Identität besitzt und im Laufe der Zeit seinen Zustand ändern kann. Die Identität einer Entity bleibt dabei immer bestehen, unabhängig davon, wie sich die Eigenschaften der Entity verändern.
Eindeutige Identität: Jede Entity hat eine eindeutige Kennung (z.B. eine ID), die sie von anderen Entities unterscheidet. Diese Identität ist das primäre Unterscheidungsmerkmal und bleibt über den gesamten Lebenszyklus der Entity gleich.
Veränderlicher Zustand: Im Gegensatz zu einem Value Object kann sich der Zustand einer Entity ändern. Zum Beispiel können sich die Eigenschaften eines Kunden (Name, Adresse) ändern, aber der Kunde bleibt durch seine Identität immer derselbe.
Geschäftslogik: Entities enthalten oft Geschäftslogik, die mit ihrem Verhalten und Zustand in der Domäne zusammenhängt.
Stellen wir uns eine Kunden-Entity in einem E-Commerce-System vor. Diese Entity könnte folgende Eigenschaften haben:
Wenn sich die Adresse oder der Name des Kunden ändert, bleibt die Entity durch ihre ID immer derselbe Kunde. Das ist der wesentliche Unterschied zu einem Value Object, das keine dauerhafte Identität hat.
Entities werden oft in Datenbanken durch Tabellen abgebildet, wobei die eindeutige Identität in Form eines Primärschlüssels gespeichert wird. In einem Objektmodell einer Programmiersprache wird die Entity durch eine Klasse oder ein Objekt dargestellt, das die Logik und den Zustand dieser Entität verwaltet.