Category: Entwicklung

Ein merkwürdiger Fall von langsamen USD-Import in Blender

2024-12-22

Ein Entwickler stieß auf unerwartet lange Importzeiten beim Importieren von USD-Szenen in Blender. Das Profiling ergab, dass der Engpass in Blenders interner ID-Sortierfunktion `id_sort_by_name` lag. Diese Funktion, die eine Komplexität von O(N) haben sollte, verschlechterte sich auf O(N²) aufgrund des Benennungsschemas in den USD-Dateien. Durch Änderung der Benennungskonvention und Optimierung des Sortieralgorithmus reduzierte der Entwickler die Importzeiten von 4 Minuten und 40 Sekunden auf 8 Sekunden für kleinere Dateien. Das zugrunde liegende Problem liegt jedoch in Blenders Anforderung nach sortierten IDs, was zu Vorschlägen führt, die verkettete Liste durch einen Trie-Baum oder eine Hash-Tabelle zu ersetzen. Diese Optimierung unterstreicht eine häufige Herausforderung bei der Leistungsoptimierung: die Identifizierung und Behebung unerwarteter Komplexität.

Entwicklung

cqd: Ein farbiges Python-Tool zur Inspektion von Objektattributen

2024-12-22

cqd ist ein leichtgewichtiges Python-Tool, das eine farbige Visualisierung von Objektattributen bietet und so die Inspektion von Objekten während der Entwicklung und Fehlersuche vereinfacht. Es farbcodiert Attribute: Dunder-Methoden (blau), geschützte Attribute (gelb) und öffentliche Attribute/Methoden (grün). Beispielsweise ist es nützlich, um Attribute eines Hugging Face Tokenizers einfach anzuzeigen. Die Installation ist einfach über `pip install cqd`. Die Verwendung beinhaltet das Importieren der `cqd`-Funktion und den Aufruf von `cqd(your_object).

Java JEP 483: Vorausgehendes Laden und Verknüpfen von Klassen verbessert die Startzeit

2024-12-22

JEP 483 verbessert die Startzeit von Java-Anwendungen deutlich, indem Klassen vorab geladen und verknüpft werden, wenn die HotSpot JVM startet. Dies wird erreicht, indem eine einzelne Anwendungsausführung überwacht und die geladenen und verknüpften Formen aller Klassen in einem Cache für die Wiederverwendung in nachfolgenden Ausführungen gespeichert werden. Diese Funktion erfordert keine Codeänderungen und bietet erhebliche Geschwindigkeitsverbesserungen für große Serveranwendungen. Spring PetClinic zeigt beispielsweise eine 42%ige Reduzierung der Startzeit. Derzeit ist es ein zweistufiger Prozess, zukünftige Versionen werden die Cache-Erstellung auf einen Schritt reduzieren und eine flexiblere Konfiguration für Trainingsläufe ermöglichen.

Entwicklung

Metas massive Java-zu-Kotlin-Übersetzung: Millionen von Codezeilen bewältigen

2024-12-22

Meta hat sich über Jahre hinweg mit der Übersetzung seiner riesigen Android-Codebasis von Java nach Kotlin beschäftigt. Dieser Beitrag beschreibt, wie Meta den Kotlinator, ein Automatisierungstool, entwickelt hat, um Herausforderungen wie langsame Build-Geschwindigkeiten und unzureichende Linters zu bewältigen und erfolgreich über die Hälfte seines Codes konvertiert hat. Der Kotlinator besteht aus mehreren Phasen: Vorverarbeitung, kopflose J2K-Konvertierung, Nachverarbeitung und Fehlerbehebung. Meta hat auch mit JetBrains zusammengearbeitet, um J2K zu verbessern, und Teile des Prozesses Open Source bereitgestellt, um die Zusammenarbeit in der Community zu fördern. Der Artikel beleuchtet die Behandlung der Null-Sicherheit und verschiedene Codeprobleme, die während der Konvertierung aufgetreten sind und behoben wurden.

Entwicklung Codemigration

Ein Gespräch über eine Wand veränderte meinen Weg als Programmierer

2024-12-21

1983 plante ein Programmierer, der bei einem großen Rüstungskonzern arbeitete, eine Promotion in Chemie zu machen. Durch ein zufälliges Gespräch über eine Wand mit dem Leiter der benachbarten "Mikrocomputer-Gruppe" (einem Bastler) wurde er zu einem Treffen über den Apple II eingeladen. Dort erhielt er den Auftrag, innerhalb einer Woche einen VT-100-Terminalemulator in 6502-Assembler zu schreiben, damit der Firmenpräsident seine E-Mails zu Hause lesen konnte. Diese Erfahrung veränderte nicht nur seinen beruflichen Werdegang, führte ihn zur Mikrocomputer-Gruppe und machte ihn zum einzigen PC-Programmierer des Unternehmens, sondern brachte ihn auch dazu, seine eigene Firma zu gründen. Jahre später reflektierte er darüber, wie zufällige Begegnungen und zwischenmenschliche Beziehungen sein Leben nachhaltig geprägt hatten.

Entwicklung Karriere Gelegenheit

Software-Design-Philosophie: Komplexität bändigen

2024-12-21

Dieser Beitrag fasst drei Kerngedanken aus dem Buch "Eine Philosophie des Software-Designs" zusammen: Null Toleranz gegenüber Komplexität, das Missverständnis, dass kleinere Komponenten immer gleich besserer Modularität sind, und die Komplexitäten, die mit der Ausnahmebehandlung verbunden sind. Der Autor argumentiert, dass Komplexität nicht durch einzelne Fehler verursacht wird, sondern sich im Laufe der Zeit ansammelt. Beispiele eines Bestellverarbeitungssystems und der Benutzerregistrierung veranschaulichen, wie man redundanten Code vermeidet und das richtige Gleichgewicht zwischen Komponentengröße und Modularität findet. Darüber hinaus werden drei Techniken zur Reduzierung der Komplexität der Ausnahmebehandlung detailliert beschrieben: Fehler eliminieren, Ausnahmen maskieren und Ausnahmen aggregieren, wobei die Dateibearbeitung als Beispiel dient. Das Buch betont letztendlich die Bedeutung der konsequenten Vereinfachung von Komplexität im Software-Design.

Enum von Arrays: Eine neuartige Datenstruktur für effiziente Datenverarbeitung

2024-12-21

Dieser Artikel stellt eine Datenstruktur namens "Enum von Arrays" (EoA) vor, die der bekannten "Struct of Arrays" (SoA) ähnelt, aber Enums im Kern verwendet. EoA gruppiert mehrere Enum-Werte in einem Array und verwendet ein einzelnes Tag, um den Typ des Arrays zu identifizieren. Dies reduziert den Speicherverbrauch und den Overhead der Branch Prediction, was zu einer effizienteren Datenverarbeitung führt, besonders vorteilhaft für SIMD-Optimierungen. Der Artikel verwendet das Datenbanksystem TigerBeetle als Beispiel und zeigt, wie EoA effizientes Batch-Processing ermöglicht, indem es die Control Plane und die Data Plane effektiv trennt, was zu deutlich verbesserter Leistung führt.

Yakari: Interaktives Befehls-Erstellungstool vereinfacht komplexe CLIs

2024-12-21

Yakari ist ein interaktives Befehls-Erstellungstool, das komplexe Kommandozeilen-Schnittstellen vereinfacht. Es führt Benutzer Schritt für Schritt durch die Befehlskonstruktion und eliminiert so die Notwendigkeit, sich komplexe Syntax zu merken. Mit Unterstützung verschiedener Argumenttypen bietet Yakari kontextbezogene Hilfe und Befehlsverlauf, wodurch die Benutzerfreundlichkeit der CLI deutlich verbessert wird. Benutzer können Befehle mit einfachen Kurzbefehlen erstellen und ausführen, wodurch selbst komplexe Befehle zugänglich werden.

Go-Iteratoren: Effizientes Handling von paginierten APIs

2024-12-21

Dieser Artikel zeigt, wie man paginierte APIs effizient mit der in Go 1.23 eingeführten Iterator-Funktion behandelt. Am Beispiel der GitHub-API wird demonstriert, wie man einen benutzerdefinierten Iterator schreibt, um die Paginierungslogik zu abstrahieren und den Code lesbarer und wiederverwendbarer zu machen. Der Artikel konzentriert sich auf die Implementierung und das Testen des Iterators, einschließlich des Mockens von API-Aufrufen und der Verwendung von Pull-Iteratoren, um sicherzustellen, dass der Iterator die erwarteten Ergebnisse liefert. Iteratoren ermöglichen es Entwicklern, die Paginierungslogik von der Geschäftslogik zu trennen, wodurch die Wartbarkeit und Lesbarkeit des Codes verbessert werden.

Das CD-Pipeline-Manifest: Bessere Softwarebereitstellung aufbauen

2024-12-21

Moderne Softwareteams benötigen dringend bessere Tools für die Verwaltung ihrer Continuous-Delivery-Pipelines. Das heutige CD-Pipeline-Ökosystem ist fragmentiert, starr und ineffizient. Dieses Manifest befürwortet code-first, entwicklerfreundliche Pipelines, die für die Komplexität moderner Engineering-Workflows entwickelt wurden. Es betont eine einzige Quelle der Wahrheit, wiederverwendbare und typsichere Komponenten, dynamische und flexible Pipelines, transparentes und visuelles Debugging und Mechanismen zur Behandlung von Änderungen und schnellen Feedback-Schleifen, um letztendlich die Effizienz zu verbessern und die Bereitstellung zu beschleunigen.

Entwicklung

Rivet: Echtzeit-Anwendungen mit Actors ausführen und skalieren

2024-12-21

Rivet ist eine Plattform zum Erstellen und Skalieren von Echtzeit-Anwendungen mit dem Actor-Modell. Sie bietet integrierte RPC-, Zustands- und Ereignisfunktionen, die die Entwicklung moderner Anwendungen vereinfachen. Rivet ermöglicht automatische Skalierung, Edge-Netzwerk-Bereitstellung und umfasst integrierte Überwachung und Datenlokalisierung. Angetrieben von Rust, FoundationDB, V8-Isolaten und der Deno-Laufzeitumgebung, gewährleistet es Leistung und Effizienz. Rivet eignet sich für kollaborative Anwendungen, lokale Anwendungen, KI-Agenten, Spieleserver und vieles mehr.

SingleFile: Speichern Sie komplette Webseiten als einzelne HTML-Dateien

2024-12-21

SingleFile ist eine leistungsstarke Web-Erweiterung und ein CLI-Tool, das vollständige Webseiten als einzelne HTML-Datei speichert. Kompatibel mit Chrome, Firefox, Edge und mehr, bietet es bequemes Speichern von Seiten, Multi-Tab-Verarbeitung, Anmerkungsfunktionen und ermöglicht sogar das Hochladen gespeicherter Seiten auf Google Drive oder GitHub. Passen Sie Tastenkombinationen und Einstellungen an, um sie an Ihre Bedürfnisse anzupassen.

Entwicklung Webseiten speichern

Effizientes Deutschlernen: Ist Anki die Antwort?

2024-12-21

Ein Ingenieur, der seit fast acht Jahren in Deutschland lebt, gibt zu, die Sprache immer noch nicht zu beherrschen. Um dies zu ändern, probiert er Anki aus und nutzt die Spaced Repetition, um täglich 10 neue deutsche Wörter zu lernen – mit dem Ziel, innerhalb eines Jahres die C1-Stufe zu erreichen. Er wählte ein Anki-Deck, das nach Häufigkeit sortiert ist, und fügte selbst Audio-Aussprachen hinzu. Der Autor lädt die Leser ein, ihre Anki-Erfahrungen und Tipps zum Deutschlernen zu teilen.

Entwicklung Deutschlernen

Abschied von C-String-Schwachstellen: Ein sichererer Ansatz zur Zeichenkettenverarbeitung

2024-12-21

Sind Sie C-String-Schwachstellen und -Unsicherheiten leid? Dieser Artikel stellt eine clevere Alternative vor: eine benutzerdefinierte String-Struktur `struct str`, die einen Datenzeiger und die Länge enthält und so die Risiken durch Null-Terminierung vermeidet. Die sechsmonatige Erfahrung des Autors in einer Bare-Metal-Umgebung zeigt, dass dieser Ansatz Fehler wie Pufferüberläufe effektiv verhindert. Obwohl die Verwendung des Makros `STR` etwas ausführlicher ist, überwiegen die Vorteile in Bezug auf Sicherheit und Lesbarkeit bei weitem. Compiler-Optimierungen machen den Leistungsverlust zudem vernachlässigbar und bieten Entwicklern, die Code-Sicherheit priorisieren, einen neuen Ansatz.

Wie ein KI-Code-Review-Bot das Schweigen lernte

2024-12-21

Der KI-Code-Review-Bot von Greptile wurde zunächst dafür kritisiert, zu viele Kommentare zu generieren. Um dies zu beheben, experimentierten sie mit Prompt Engineering und ließen den LLM seine eigenen Kommentare bewerten, aber diese Methoden erwiesen sich als ineffektiv. Ihr Durchbruch kam von der Vektorisierung früherer Kommentare, ihrer Gruppierung in einer Vektor-Datenbank und der Filterung neuer Kommentare, die denen ähnelten, die zuvor abgelehnt wurden. Dieser Ansatz steigerte die Bearbeitungsrate der Entwickler von 19 % auf über 55 % und reduzierte den LLM-Rauschen erheblich.

Entwicklung Code-Review

Aegisub Untertitel-Editor 3.4.0 veröffentlicht!

2024-12-21

Aegisub 3.4.0 ist veröffentlicht! Dieses kostenlose, plattformübergreifende und Open-Source-Tool macht das Erstellen und Bearbeiten von Untertiteln schnell und einfach. Es bietet leistungsstarke Styling-Tools und eine integrierte Echtzeit-Videovorschau. Perfekt für erfahrene Untertitler und Anfänger.

Entwicklung Untertitel-Editor

Implementierung von Raft: Ein tiefer Einblick in den verteilten Konsens

2024-12-21

Dies ist der erste Beitrag einer Serie, die den verteilten Konsensalgorithmus Raft und seine Implementierung in Go beschreibt. Raft löst das Problem der Replikation einer deterministischen Zustandsmaschine über mehrere Server, wodurch die Verfügbarkeit des Dienstes auch bei Serverausfällen gewährleistet wird. Der Beitrag stellt die Kernkomponenten von Raft vor: die Zustandsmaschine, das Log, das Konsensmodul, die Leader-/Follower-Rollen und die Client-Interaktion. Er diskutiert die Fehlertoleranz von Raft, das CAP-Theorem und die Wahl von Go als Implementierungssprache. Künftige Beiträge werden detailliert auf die Implementierung des Algorithmus eingehen.

Entwicklung Verteilter Konsens

Gazzetta: Der beste Weg, Nachrichten und Links auf Mastodon zu lesen

2024-12-21

Gazzetta ist ein Nachrichtenleser, der speziell für Mastodon entwickelt wurde. Im Gegensatz zu anderen Mastodon-Clients, die die Erfahrung im sozialen Netzwerk priorisieren, funktioniert Gazzetta eher wie ein RSS-Reader für die Plattform. Es bietet eine separate Benutzeroberfläche, die es Benutzern ermöglicht, sich ausschließlich auf das Lesen von Nachrichten und Links zu konzentrieren. Zu den Funktionen gehören das Folgen von Servern und Konten, um trendige Links zu sehen, die Volltextsuche, die Integration in den Safari-Viewer, die Verwaltung von Lesezeichen, der Export von Links und umfassende Anpassungsoptionen wie Schriftstile, das Ausblenden von Miniaturansichten und das Filtern von Links nach Domäne, Stichwort oder Sprache.

Entwicklung Nachrichtenleser

S2: Revolutionierung der Stream-Daten-Speicherung in der Cloud

2024-12-21

Bandar Systems präsentiert S2, einen neuartigen Stream-Daten-Speicherdienst, der das Datenverarbeitung in der Cloud-Ära revolutionieren soll. Im Gegensatz zu traditioneller objektbasierter Speicherung konzentriert sich S2 auf Streams und bietet effizientes, skalierbares und kostengünstiges Echtzeit-Daten-Ingest und -Verarbeitung. Es unterstützt High-Throughput, niedrige Latenz bei Lese- und Schreibvorgängen und bietet verschiedene Speicherklassen für unterschiedliche Performance- und Kostenanforderungen. S2 zielt darauf ab, Systeme wie Kafka und Kinesis zu ersetzen und Nutzern eine leistungsstärkere und flexiblere Lösung für die Verwaltung von Stream-Daten zu bieten.

(s2.dev)

Parasitärer SEO-Betreiber umgeht Google-Strafen

2024-12-21

Dieser Artikel beschreibt, wie der parasitäre SEO-Betreiber Finixio/Clickout Media Google-Strafen schnell und effektiv umgangen hat. Nach einem Update des Google-Algorithmus wurden mehrere Websites von Finixio/Clickout Media wegen Verstößen gegen Googles Richtlinien zum Missbrauch des Website-Rufs schwer bestraft, was zu einem drastischen Rückgang des Traffics und der Rankings führte. Durch geschickte Verwendung von Weiterleitungen und Verschleierungstechniken konnten sie ihre Aktivitäten jedoch innerhalb weniger Tage wieder aufnehmen und weiterhin von ihrem Netzwerk parasitärer Websites profitieren. Sie haben ihre Aktivitäten sogar nach der Bestrafung ausgebaut und neue Websites sowie bestehende Websites mit hoher Autorität (wie CoinTelegraph) genutzt, um weiterhin Glücksspiele und Kryptowährungen zu bewerben. Der Artikel beschreibt detailliert ihre Strategien, darunter die Verwendung von Geolocation zur Inhaltsversteuerung und die Platzierung von Inhalten auf verschiedenen Plattformen. Er hebt hervor, dass die Ursache dieses Phänomens in der Schwächung der thematischen Autorität in den Google-Algorithmen liegt, wodurch die Domain-Autorität zum wichtigsten Ranking-Faktor wird.

AP5 Referenzhandbuch: Eine logikbasierte Erweiterung von Common Lisp

2024-12-21

AP5 ist eine Erweiterung von Common Lisp, die es Benutzern ermöglicht, auf einer „spezifischeren“ Ebene zu „programmieren“, wobei der Fokus darauf liegt, was die Maschine tun soll, anstatt wie. Es kombiniert Aspekte von Lisp und der Gist-Spezifikationssprache, indem es kompilierbare Teile von Gist integriert und Annotationsmechanismen zur Leistungsoptimierung bietet. AP5 verwendet ein relationales Modell zur Datenrepräsentation und unterstützt eine Sprache der Prädikatenlogik erster Stufe für Datenzugriff und -manipulation. Programmierer definieren Relationen, Regeln und Constraints und optimieren die Leistung durch Annotationen. Das Handbuch beschreibt detailliert die AP5-Syntax, Datenbankoperationen, Regeln, Typen, Äquivalenz und Implementierungsspezifikationen und liefert zahlreiche Beispiele und Erklärungen.

FindMy.py: Eine umfassende Python-Bibliothek zum Abfragen des Apple FindMy-Netzwerks

2024-12-21

FindMy.py ist eine Python-Bibliothek, die alles bietet, was zum Abfragen des Apple FindMy-Netzwerks benötigt wird. Sie vereinheitlicht das fragmentierte Find My-Ökosystem und bietet eine plattformübergreifende Lösung, die verschiedene Geräte (AirTags, iDevices usw.) und Authentifizierungsmethoden (einschließlich SMS und Trusted Device 2FA) unterstützt. Sie verfügt über asynchrone und synchrone APIs. Das Projekt befindet sich derzeit in der Alpha-Phase, die API kann sich ändern, aber die Kernfunktionalität ist stabil.

Entwicklung

MarkItDown: Kostenloser Online-Markdown-Konverter

2024-12-21

MarkItDown ist ein kostenloses Online-Tool, das verschiedene Dateiformate (wie Word, PDF, HTML usw.) in Standard-Markdown konvertiert. Angetrieben vom Open-Source-Projekt Markitdown von Microsoft, bietet es schnelle und zuverlässige Konvertierungen, ideal für Blogger, Notiznehmer und technische Redakteure. Kein Download oder Installation erforderlich; laden Sie einfach Ihre Datei hoch und erhalten Sie eine saubere, organisierte Markdown-Ausgabe. Es ist eine sichere und effiziente Möglichkeit, Ihre Inhalte zu verwalten.

Entwicklung Online-Tool

Technische Schulden vs. technische Assets: Wie man intelligent investiert

2024-12-21

Dieser Artikel untersucht den Unterschied zwischen technischen Schulden und technischen Assets. Technische Schulden, ähnlich wie finanzielle Schulden, stellen Code-Probleme dar, die behoben werden müssen, wie z. B. Bugs und schlechte Code-Lesbarkeit, was die Entwicklungseffizienz beeinträchtigt. Technische Assets hingegen sind proaktive Investitionen in bekannte Probleme, wie den Aufbau hochwertiger SDKs, wodurch zukünftige Wartungskosten gesenkt und die Entwicklungsfreiräume erhöht werden. Der Artikel rät, die Tilgung technischer Schulden zu priorisieren, bevor in technische Assets investiert wird, wobei bewährte Prozesse und Technologien genutzt werden, um die Ansammlung technischer Schulden zu vermeiden und letztendlich eine höhere Entwicklungseffizienz und Produktqualität zu erreichen.

Regeln zur Vermeidung gängiger Fehler bei erweitertem Inline-Assembler

2024-12-21

Dieser Artikel ist kein Inline-Assembler-Tutorial, sondern eine Zusammenfassung von sechs Regeln zur Vermeidung häufiger Fehler. Der Autor betont, dass Inline-Assembler tückisch ist und nach Möglichkeit vermieden werden sollte, da moderne Compiler intrinsische Funktionen und Built-ins für die meisten Anwendungsfälle bieten. Wenn unvermeidlich, lauten die Regeln: Verwenden Sie den `volatile`-Qualifizierer; verwenden Sie einen `memory`-Clobber, wenn auf den Speicher zugegriffen wird; ändern Sie niemals Eingabebeschränkungen; rufen Sie niemals Funktionen aus Inline-Assembler auf; definieren Sie keine absoluten Assembler-Labels; und verwenden Sie die Funktion für lokale Labels des Assemblers, um Label-Konflikte zu vermeiden. Der Artikel endet mit der Aufforderung an die Leser, diese Regeln durch die Überprüfung von Online-Tutorials und sogar von LLM-generiertem Code zu üben.

Entwicklung Inline-Assembler

NoDB: Zahlungsabwicklung ohne Datenbank

2024-12-21

In "Das Handbuch des Payment Engineers" stellt Alvaro Duran einen revolutionären Ansatz für das Design von Zahlungssystemen vor: die Zahlungsabwicklung ohne Datenbank. Er argumentiert, dass die Verbreitung asynchroner Programmierung von der Annahme der Notwendigkeit von Datenbanken herrührt. Durch Event Sourcing wird jeder Schritt im Zahlungsprozess als Ereignis aufgezeichnet, nicht als persistenter Zustand. Diese Ereignisse werden temporär im Speicher gehalten, und das System rekonstruiert den Zahlungsstatus aus dem Ereignisstrom, wodurch die Notwendigkeit einer persistenten Speicherung entfällt. Dieser hochperformante und hochverfügbare Ansatz, inspiriert vom Hochfrequenzhandel, ermöglicht eine schnelle Wiederherstellung bei Ausfällen durch Hot Backups. Der Artikel beschreibt dieses Konzept anhand eines Beispiels für einen Zahlungsablauf und betrachtet zukünftige Anwendungen in Zahlungssystemen.

@celine/bibhtml v3.0.3: Ein auf Web Components basierendes Referenzierungssystem

2024-12-21

Das auf Web Components basierende Referenzierungssystem für HTML-Dokumente, @celine/bibhtml, hat Version 3.0.3 veröffentlicht. Es zielt darauf ab, eine ähnliche Benutzererfahrung wie bei der Referenzierung in LaTeX/BibTeX zu bieten, wobei Citation.js im Hintergrund verwendet wird und bei fehlerhaften Zitaten und Referenzen oder deaktiviertem JavaScript eine elegante Degradierung erfolgt. Es unterstützt vier Referenzformate: BibTeX, unstrukturierten Text, DOI und Wikidata, und bietet drei benutzerdefinierte Elemente: ``, `` und ``, wodurch die Verwaltung von Referenzen in HTML vereinfacht wird.

Entwicklung Referenzverwaltung

Bahnbrechende Entwicklung: Sichere Kompilierung von C nach Rust

2024-12-21

Forscher haben eine neue Methode entwickelt, um C-Code sicher in Rust zu kompilieren. Diese Technik nutzt statische Analyse und typengesteuerte Übersetzung, um die Abhängigkeit von Rusts `unsafe`-Blöcken zu vermeiden und so die Speichersicherheit zu gewährleisten. Die Methode wurde erfolgreich auf Code der kryptografischen Bibliothek HACL* und der EverParse-Bibliotheken angewendet und hat zu einer 80.000-zeiligen, verifizierten, modernen kryptografischen Bibliothek in reinem Rust geführt – eine Premiere.

Entwicklung C-Kompilierung

Programmierer erstellt Pseudo-3D-Spiel in Bash

2024-12-20

Ein Programmierer namens izabera hat ein beeindruckendes Pseudo-3D-Spiel mit der Bash-Skriptsprache entwickelt. Dieses Projekt, eine Hommage an das klassische Spiel Wolfenstein 3D, ist Open Source auf GitHub. Der Code ist prägnant, aber das Ergebnis ist erstaunlich und zeigt die Leistungsfähigkeit von Bash und den Einfallsreichtum des Programmierers. Das Repository enthält den Quellcode des Spiels und Demonstrationsvideos. Interessierte Entwickler können es sich auf GitHub ansehen.

Entwicklung Spielentwicklung

Monorepo-Build-Tools: Skalierung Ihrer Codebasis

2024-12-20

Traditionelle Build-Tools haben Schwierigkeiten mit großen Codebasen (100-10.000 aktive Entwickler). Monorepo-Build-Tools wie Bazel und Mill bieten Lösungen, indem sie mehrere Sprachen, benutzerdefinierte Build-Aufgaben, automatische Caching und Parallelisierung, Remote-Caching und -Ausführung unterstützen, wodurch die Build-Geschwindigkeit und -Effizienz drastisch verbessert wird. Sie bieten auch dependenzabhängige Testauswahl und Build-Task-Sandboxing, wodurch die Testzeit und der Nichtdeterminismus reduziert werden. Während diese Funktionen für kleine Projekte unnötig erscheinen mögen, sind sie für große Projekte entscheidend für die Zusammenarbeit im großen Maßstab und die kontinuierliche Integration, um zu verhindern, dass die Build-Zeiten zum Engpass werden.

← Previous 1 3 4 5 6 7 8