Category: Entwicklung

Optimaler Debian-Packaging-Workflow für 2025

2025-05-26
Optimaler Debian-Packaging-Workflow für 2025

Dieser Beitrag beschreibt den optimalen Workflow zum Erstellen neuer Debian-Pakete im Jahr 2025 unter Beibehaltung des Upstream-Git-Verlaufs. Ziel ist es, den Austausch von Verbesserungen zwischen Upstream und Debian zu vereinfachen und die Software-Provenienz und die Sicherheit der Lieferkette zu verbessern, indem jede Änderung mithilfe von Standard-Git-Tools einfach geprüft werden kann. Wichtige Elemente sind: Verwendung eines Git-Forks/Klons des Upstream-Repositorys; konsistente Verwendung der Befehle `git-buildpackage` mit Paket-Optionen in `gbp.conf`; DEP-14-Tagging und -Branching; pristine-tar und Upstream-Signaturen; Verwendung von `Files-Excluded` in `debian/copyright`; Patch-Queues zum Rebasen und Cherry-Picking; Nutzung von Salsa (Debians GitLab) für CI/CD und Peer-Review. Der Prozess wird durch das Packen des `entr`-Kommandozeilen-Tools veranschaulicht, wobei jeder Schritt von der Repository-Erstellung bis zur Einreichung einer Merge-Request auf Salsa durchlaufen wird.

Entwicklung

Ein prägnanter Scheme-Interpreter in BQN: Ein minimalistischer Ansatz

2025-05-26

Dieser Artikel beschreibt einen Versuch, einen Scheme-Interpreter mit der Programmiersprache BQN zu implementieren. Durch die Nutzung der prägnanten Syntax und der leistungsstarken Array-Operationen von BQN erreicht der Autor einen funktionalen Scheme-Teilmengen-Interpreter, einschließlich grundlegender Arithmetik, Listenmanipulation und Metaprogrammierungsfunktionen. Obwohl er nicht vollständig R5RS-konform ist und es an robuster Fehlerbehandlung mangelt, sind die Kürze und die Funktionalität der Implementierung beeindruckend. Dies zeigt die Anwendung von BQN und unterstreicht die Eleganz der funktionalen Programmierung.

Entwicklung

PgDog: Ein Hochleistungs-Transaktionspool und Logical Replication Manager für PostgreSQL

2025-05-26
PgDog: Ein Hochleistungs-Transaktionspool und Logical Replication Manager für PostgreSQL

PgDog, in Rust geschrieben, ist ein schneller, sicherer und skalierbarer Transaktionspooler und Logical Replication Manager für PostgreSQL, der Hunderte von Datenbanken und Hunderttausende von Verbindungen verwalten kann. Es bietet Datenbank-Sharding, Load Balancing mit Health Checks und Failover, Transaktions- und Session-Pooling für effizientes Client-Verbindungsmanagement. Die Überwachung wird durch OpenMetrics erleichtert, und es beinhaltet einen CSV-Parser und Unterstützung für Logical Replication für eine optimierte Datenaufnahme und Datenbank-Sharding.

Entwicklung Datenbank-Sharding

Nix: Reproduzierbarkeit in der Softwareentwicklung lösen

2025-05-26
Nix: Reproduzierbarkeit in der Softwareentwicklung lösen

Das moderne Ökosystem von Entwicklertools ist riesig und komplex, was zu frustrierenden Inkonsistenzen führt, wie Code auf verschiedenen Systemen kompiliert und ausgeführt wird. Nix behebt dies durch die Verwendung eines unveränderlichen `/nix/store` und einer inhaltsadressierbaren Speicherung, wodurch reproduzierbare Builds garantiert werden. Obwohl es eine steile Lernkurve gibt, die Vertrautheit mit funktionaler Programmierung erfordert, überwiegen die Vorteile – Beseitigung von Abhängigkeitskonflikten, Vereinfachung der Umgebungsverwaltung, Gewährleistung reproduzierbarer Builds und Verbesserung der Sicherheit – die anfängliche Investition. Nix-Flakes rationalisieren das Projektmanagement, und Caching beschleunigt Builds erheblich. Obwohl Nix nicht perfekt ist und Herausforderungen wie eine steile Lernkurve und Debugging-Schwierigkeiten aufweist, machen seine Vorteile bei komplexen Projekten, plattformübergreifender Entwicklung und sicherheitskritischen Kontexten es zu einer lohnenden Investition.

Entwicklung

Emilua: Eine Revolution in der Container-Runtime

2025-05-26

Emilua ist eine innovative Container-Runtime, die in C geschrieben und mit Lua gescriptet ist und verschiedene Kernel-Technologien wie Linux-Namespaces und FreeBSD-Jails unterstützt. Im Gegensatz zu herkömmlichen CLI-basierten Runtimes nutzt Emilua die Programmierleistung von Lua für unübertroffene Flexibilität und Sicherheit und umgeht die Risiken der Verwendung von BASH-Skripten, wie z. B. Synchronisierungsprobleme und Sicherheitslücken. Sicherheit steht im Vordergrund; Emilua verhindert den Aufruf von Binärdateien aus Container-Images und löscht temporäre Puffer sicher. Darüber hinaus erstreckt sich Emilua auf Capsicum-Sandboxes und zeigt seine Anpassungsfähigkeit. Emilua bietet eine sicherere und flexiblere Lösung, insbesondere für komplexe Szenarien, die benutzerdefinierte Container-Einrichtungsphasen erfordern.

Entwicklung

Rust 1.88 stuft i686-pc-windows-gnu auf Tier 2 herab

2025-05-26
Rust 1.88 stuft i686-pc-windows-gnu auf Tier 2 herab

Rust 1.88.0 wird das Ziel i686-pc-windows-gnu (32-Bit GNU-basiertes Windows-Build-Ziel) von Tier 1 auf Tier 2 herabstufen. Dies bedeutet eine geringere Testfrequenz und eine höhere Wahrscheinlichkeit, dass sich in Zukunft mehr Fehler ansammeln. Der Hauptgrund ist der Mangel an Maintainern und anhaltende, schwer zu debuggenden Probleme. Obwohl Builds der Standardbibliothek und des Compilers weiterhin verteilt werden, sollten Benutzer die potenziell erhöhten Risiken beachten. Das Rust-Team ruft Entwickler mit einschlägiger Erfahrung auf, sich als Maintainer zu beteiligen.

Entwicklung

Unendliche Schleifen in Bash-Skripten mit timeout vermeiden

2025-05-26
Unendliche Schleifen in Bash-Skripten mit timeout vermeiden

Ein Bash-Skript verwendete eine `until`-Schleife, um zu überprüfen, ob ein Webserver aktiv war. Wenn der Server jedoch beim Start fehlschlug, geriet es in eine Endlosschleife. Der Artikel beschreibt zwei Methoden, um dieses Problem mit dem Befehl `timeout` zu vermeiden: Einmal, indem die `until`-Schleife mit `bash -c` umschlossen wird, und zum anderen, indem die `until`-Schleife in ein separates Skript ausgelagert und dann mit `timeout` ausgeführt wird. Beide Methoden verhindern effektiv, dass das Skript aufgrund von Server-Startfehlern in eine Endlosschleife gerät und gewährleisten so die Robustheit des Skripts.

Entwicklung Skript

Partikel-Lebenssimulation im Browser: Eine WebGPU-Power-Demonstration

2025-05-26
Partikel-Lebenssimulation im Browser: Eine WebGPU-Power-Demonstration

Dieser Artikel beschreibt eine browserbasierte Partikel-Lebenssimulation, die von WebGPU angetrieben wird. Die Simulation verwendet ein nicht-physikalisches Modell mit asymmetrischen Kräften zwischen den Partikeln, wodurch lebensechtes Verhalten erzeugt wird. Der Autor erklärt das Modell, die WebGPU-Implementierung, die Optimierung des räumlichen Hashings für die Leistung und die Rendering-Techniken, einschließlich eines parallelen Präfixsummenalgorithmus für effizientes Binning. Das Ergebnis ist eine visuell beeindruckende Simulation, die verschiedene und interessante Lebensformen erzeugen kann, mit Optionen für benutzerdefinierte Regeln und das Teilen.

Entwicklung Partikelsimulation

Haskells IO-Monad und die Wertrestriktion: Ein überraschender Zusammenhang

2025-05-26

Dieser Artikel untersucht, wie Haskells IO-Monad Typensicherheitsprobleme durch polymorphe Referenzen geschickt umgeht. Trotz Haskells Ruf für Reinheit beinhaltet das Design des IO-Monaden implizit einen Mechanismus, der der „Wertrestriktion“ in anderen ML-Sprachen ähnelt. Der Artikel analysiert die Risiken polymorpher Referenzen, vergleicht Haskells Ansatz mit anderen Sprachen und untersucht die interne Implementierung des IO-Monaden, wobei die Ähnlichkeit zum State-Monaden und die Gefahren der direkten Manipulation des IO-Konstruktors aufgezeigt werden. Schließlich wird gezeigt, wie die Typklasse MonadGen verwendet werden kann, um die Einschränkungen des IO zu umgehen, wobei gleichzeitig die damit verbundenen Risiken betont werden.

GitHub Issues: Das beste Notizbuch der Welt?

2025-05-26
GitHub Issues: Das beste Notizbuch der Welt?

GitHub Issues ist wohl eine der besten Notiz-Apps der Welt! Kostenlos, unbegrenzt und unterstützt sowohl öffentliche als auch private Notizen. Robuste Markdown-Unterstützung mit Syntaxhervorhebung für fast jede Programmiersprache, und Drag-and-Drop für Bilder und Videos. Die leistungsstarke Verknüpfungsfunktion erlaubt das Verlinken anderer GitHub Issues mit automatischer Synchronisierung von Titeln und Links. Die Suche ist exzellent, sowohl innerhalb eines Repositorys, über alle eigenen Repositorys oder sogar über ganz GitHub hinweg. Eine umfassende API und GitHub Actions ermöglichen Automatisierung. Der einzige Nachteil? Fehlende synchronisierte Offline-Unterstützung.

Entwicklung

Venta AI: sucht Full-Stack-Entwickler (YC-gefördert)

2025-05-26
Venta AI: sucht Full-Stack-Entwickler (YC-gefördert)

Venta AI, ein von YC gefördertes Unternehmen, das KI-Mitarbeiter für Vertriebsteams entwickelt, sucht einen Vollzeit-Full-Stack-Entwickler in Amsterdam. Der ideale Kandidat verfügt über umfangreiche Erfahrung in der Full-Stack-Entwicklung, Kenntnisse in TypeScript, React, Remix (bevorzugt), Python und FastAPI, Erfahrung im Design von Multi-Tenant-SaaS-Produkten und Erfahrung mit KI-Code-IDEs (Cursor, Windsurf, Claude usw.). Erfahrung im Betrieb skalierbarer Software ist entscheidend. Fließende Englischkenntnisse sind erforderlich, Deutschkenntnisse sind von Vorteil. Venta AI, finanziert von Y Combinator und dem Google AI Fund, macht KI für europäische Unternehmen zugänglich, konform und transparent.

Entwicklung

FreeBSD: Nicht tot, sondern leise im Hintergrund des Internets

2025-05-26

Kürzlich wurde die Frage aufgeworfen, ob FreeBSD am Sterben ist. Eine Analyse von Google Trends zeigt einen stetigen Aufwärtstrend bei FreeBSD-Suchanfragen, im Gegensatz zu einer flachen Linie für Linux. Der Autor argumentiert, dass dieses Missverständnis auf die Verfügbarkeitsheuristik zurückzuführen ist: Die Leute konzentrieren sich auf das stärker diskutierte Linux und übersehen dabei die stille Leistung von FreeBSD hinter unzähligen Internetdiensten. Die permissive BSD-Lizenz von FreeBSD macht es zwar zu einer großartigen Grundlage für kommerzielle Produkte, schreckt Unternehmen aber auch davor ab, etwas zurückzugeben. Der Autor fordert FreeBSD-Nutzer auf, ihre Erfahrungen und Herausforderungen zu teilen, damit die FreeBSD Foundation die Lücke zwischen Industrie und Software-/Hardware-Anbietern schließen und das Wachstum von FreeBSD fördern kann.

Entwicklung BSD-Lizenz

jjui: Eine Terminal-Benutzeroberfläche für das Versionskontrollsystem Jujutsu

2025-05-26
jjui: Eine Terminal-Benutzeroberfläche für das Versionskontrollsystem Jujutsu

jjui ist eine Terminal-Benutzeroberfläche für das Versionskontrollsystem Jujutsu. Es bietet eine Reihe von Funktionen, darunter: Ändern von Revsets mit automatischer Vervollständigung; Rebasing von Revisionen oder Branches; Zusammenfassen von Revisionen; Anzeigen und Vergleichen von Datei-Diffs; Verschieben von Lesezeichen; Anzeigen des Op-Logs; und Vorschau von Details zu Revisionen, Dateien und Operationen. jjui unterstützt verschiedene Installationsmethoden, darunter Homebrew, AUR, Nix und Go. Die minimal unterstützte jj-Version ist v0.21+.

Entwicklung

Wöchentliche Gedanken eines Dateningenieurs: Der Aufstieg von Gemini und neue Chancen im Datenbereich

2025-05-26
Wöchentliche Gedanken eines Dateningenieurs: Der Aufstieg von Gemini und neue Chancen im Datenbereich

Ein erfahrener Dateningenieur teilt seine Gedanken und Beobachtungen der letzten Wochen, die neue Trends im Datenbereich, Empfehlungen für hervorragende Tools und eine Vision für zukünftige Innovationen umfassen. Er erwähnt die Bedeutung der Verbindung von Datenproduzenten und -konsumenten und lobt die rasante Entwicklung großer Sprachmodelle wie Googles Gemini. Außerdem hebt er bedeutende Innovationsmöglichkeiten in der Finanzsoftware hervor, wie z. B. Datenaggregation und KI-basierte Prognosen.

Entwicklung

Automatisierung von Releases mit Claude Code

2025-05-26
Automatisierung von Releases mit Claude Code

Molin nutzt Anthropics Claude Code, um seinen Software-Release-Prozess zu automatisieren, der 1-3 Mal pro Woche stattfindet. Claude Code erstellt PRs, prüft Unterschiede, deployt das Backend und veröffentlicht JS-Bundles. Anweisungen in einer `.claude/release.md`-Datei leiten Claude Code an, nach bestehenden Release-PRs zu suchen, neue zu erstellen, den Merge-Status und CI-Checks zu überprüfen, den PR zu mergen und schließlich in die Produktion zu deployen. Dies verbessert die Effizienz erheblich und reduziert manuelle Arbeit.

Entwicklung Software-Releases

iOS iMessage Bug: Audio-Nachrichten fehlschlagen bei Erwähnung von "Dave and Buster's"

2025-05-26

Ein seltsamer iOS-Bug sorgt für Probleme: Das Senden von Audio-Nachrichten über iMessage, die den Ausdruck "Dave and Buster's" (eine US-amerikanische Sportbar) enthalten, verhindert, dass der Empfänger sie erhält.

Untersuchungen ergaben, dass das Problem von der Transkriptions-Engine von iOS herrührt. Sie transkribiert "Dave and Buster's" in HTML-Code mit einem nicht maskierten kaufmännischen Und-Zeichen (&), wodurch MessagesBlastDoorService (ein Sicherheitsmechanismus, der entwickelt wurde, um Hackerangriffe zu vereiteln) die Nachrichtenübermittlung aufgrund eines Analysefehlers unterbricht.

Obwohl es wie eine Sicherheitslücke aussieht, zeigt es tatsächlich die Effektivität von BlastDoor bei der Verhinderung potenzieller böswilliger Code-Injektionen und unterstreicht Apples vorsichtigen Ansatz in Bezug auf Sicherheit.

Entwicklung

Guile GC Heap-Sizing-Heuristiken: Eine Live-Lock-Geschichte

2025-05-26

Das Guile-Projekt integriert einen konservativen Garbage Collector auf Basis von Nofl. Derzeit wird eine wachsende Heap-Strategie verwendet, wobei die Heap-Größe mit einem Multiplikator angepasst wird, um Fragmentierung zu berücksichtigen. Starke Fragmentierung kann jedoch zu Allokationsfehlern und Deadlocks führen, selbst wenn der Heap doppelt so groß ist wie erwartet. Der Beitrag untersucht Lösungen: Erhöhung des Multiplikators, Änderung der Heap-Organisation und Reservierung leerer Blöcke für den Nofl-Collector. Ziel ist eine effiziente Behandlung der Fragmentierung und Vermeidung von Deadlocks.

Entwicklung

Die emotionale Logik bei Technologieentscheidungen

2025-05-26
Die emotionale Logik bei Technologieentscheidungen

Auf Hacker News findet man viele Blogbeiträge, die die Wahl obskurer Technologien mit scheinbar rationalen Argumenten rechtfertigen. Oftmals sind dies jedoch nur Deckmanöver für tiefere emotionale Beweggründe. Menschen wählen Technologien aufgrund von Gefühlen: Komfort, Vertrautheit oder eine nostalgische Verbindung zu einer bestimmten Ära. Die Verwendung obskurer Technologien wird zu einer Art symbolischer Magie, die Technologie mit persönlicher Identität verbindet. Der Autor argumentiert, dass es in Ordnung ist, diese emotionalen Antriebe anzuerkennen und zu akzeptieren, warnt aber vor Selbsttäuschung. Eine rationale Kosten-Nutzen-Analyse ist entscheidend, um Zeitverschwendung bei sinnlosen Projekten zu vermeiden.

Entwicklung Entwicklerkultur

JWT wird 10: Ein Jahrzehnt sicherer Token-Standards und Zukunftsaussichten

2025-05-25

Vor zehn Jahren wurde das JSON Web Token (JWT) zum RFC 7519, was den Abschluss einer 4,5-jährigen Reise zur Entwicklung eines einfachen, JSON-basierten Sicherheits-Token-Formats und der zugrundeliegenden kryptografischen Standards markierte. JWT und die zugehörigen Spezifikationen wurden weit verbreitet eingesetzt, sogar über die Erwartungen der ursprünglichen Entwickler hinaus. Die Arbeit zur Aktualisierung der Spezifikationen, um neue Bedrohungen und Schwachstellen zu adressieren, wird fortgesetzt, um die Sicherheit von JWT für das nächste Jahrzehnt zu gewährleisten.

Entwicklung

Bau eines Finanzhandels-Bots mit Claude und SnapTrade

2025-05-25

Dino Angelov beschreibt den Bau eines Finanzhandels-Bots mithilfe von Anthropics Claude und dem MCP-Protokoll, integriert mit der SnapTrade-API. Obwohl er zunächst versuchte, Claude zum Schreiben des MCP-Servers zu verwenden, stellte er fest, dass Gemini effektiver war. Letztendlich nutzte er das go-mcp-Framework für schnellere Entwicklung und schuf Funktionen zum Verbinden von Brokerage-Konten, Anzeigen von Portfolios und Ausführen von Trades. Der Autor warnt Benutzer vor der unvorhersehbaren Natur von LLMs und dem Potenzial für versehentliche Trades.

Entwicklung

Mojo ermöglicht jetzt das Aufrufen von Mojo-Code aus Python!

2025-05-25
Mojo ermöglicht jetzt das Aufrufen von Mojo-Code aus Python!

Das Modular-Team freut sich, ein neues Feature in den neuesten Nightly-Builds von Mojo anzukündigen: die Möglichkeit, Mojo-Code aus Python aufzurufen! Dies wird durch die Erweiterung des Abschnitts zur Python-Interoperabilität im Mojo-Handbuch und das Hinzufügen von Beispielen ermöglicht, die den Datenaustausch zwischen Python und Mojo zeigen, einschließlich GPU-beschleunigtem Mojo-Code, der aus Python aufgerufen wird. Dieses Durchbruch zielt darauf ab, Mojo in bestehende Python-Codebasen zu integrieren, die Leistung zu steigern und neue Anwendungen durch die Auslagerung von Performance-Engpässen an schnelles Mojo, insbesondere bei Verwendung von Beschleunigern, zu ermöglichen.

Entwicklung

Blacksmiths kugelsichere CI/CD-Sicherheitsarchitektur

2025-05-25
Blacksmiths kugelsichere CI/CD-Sicherheitsarchitektur

Blacksmith ist stolz auf seine robuste CI/CD-Sicherheitsarchitektur, die in diesem Beitrag detailliert beschrieben wird. Der Prozess beginnt mit der GitHub-Integration und führt über die Steuerungsebene, die Datenebene und die Caching-Mechanismen, wobei der umfassende Schutz von Benutzercode, Geheimnissen und zwischengespeicherten Artefakten veranschaulicht wird. Sicherheitsmaßnahmen umfassen die GitHub SSO-Authentifizierung, das Prinzip der geringsten Rechte, TLS-Verschlüsselung und Firecracker-Micro-VMs, die in jeder Phase Sicherheit gewährleisten. Die SOC 2 Type 2-Compliance und regelmäßige Penetrationstests stärken das Vertrauen und gehen Sicherheitsbedenken an.

Entwicklung Micro-VMs

Koog: Ein Kotlin-Framework zum Erstellen von KI-Agenten

2025-05-25
Koog: Ein Kotlin-Framework zum Erstellen von KI-Agenten

Koog ist ein auf Kotlin basierendes Framework zum Erstellen und Ausführen von KI-Agenten, die vollständig in idiomatischem Kotlin geschrieben sind. Es ermöglicht die Erstellung von Agenten, die mit Tools interagieren, komplexe Workflows verarbeiten und mit Benutzern kommunizieren. Zu den Hauptfunktionen gehören eine reine Kotlin-Implementierung, MCP-Integration, Embedding-Funktionen, die Erstellung benutzerdefinierter Tools, sofort einsatzbereite Komponenten, intelligente Geschichtskomprimierung, eine leistungsstarke Streaming-API, persistenter Agentenspeicher, umfassende Ablaufverfolgung und flexible Graph-Workflows. Es unterstützt verschiedene LLM-Anbieter wie Google, OpenAI, Anthropic, OpenRouter und Ollama. Koog unterstützt JVM- und JS-Ziele und bietet detaillierte Anweisungen zur Abhängigkeitsverwaltung.

Entwicklung

Vorsicht vor den Komplexitätshändlern: Einfachheit siegt

2025-05-25
Vorsicht vor den Komplexitätshändlern: Einfachheit siegt

Dieser Artikel untersucht die Gefahren der „zufälligen Komplexität“ in der Softwareentwicklung. Der Autor argumentiert, dass einige Ingenieure, getrieben von Ego oder Selbsterhaltung, absichtlich unnötige Komplexität einführen, um Projekte zu kontrollieren und mehr Ressourcen zu erhalten. Diese „Komplexitätshändler“ behindern die Geschwindigkeit des Teams, erhöhen die Wartungskosten und schaden letztendlich dem Geschäftswert. Der Autor rät zu Vorsicht vor diesem Verhalten und plädiert für einfache, zuverlässige Lösungen und fordert Ingenieure auf, alte Komplexität zu bereinigen, bevor neue Komplexität eingeführt wird, um sicherzustellen, dass Systeme einfach zu warten und zu übertragen sind. Einfache, wartungsfreundliche Systeme sind der Schlüssel zur Schaffung echten Werts.

Entwicklung

Blitz: Ein blitzschnelles, kostenloses CLI-Framework für Zig

2025-05-25
Blitz: Ein blitzschnelles, kostenloses CLI-Framework für Zig

Blitz ist ein blitzschnelles, kostenloses CLI-Framework für die Programmiersprache Zig. Erstellen Sie einfach modulare, ergonomische und performante CLIs. Alle notwendigen Funktionen sind enthalten. Inspiriert von Cobra (Go) und clap (Rust), bietet Blitz modulare Befehle und Unterbefehle, schnelles Flag-Parsing, typsichere Unterstützung für verschiedene Datentypen und automatische Hilfe-/Versions-/Veraltungsbehandlung. Beginnen Sie schnell mit einer einfachen Installation und einer intuitiven API.

Entwicklung

plwm: Ein minimaler X11-Fenstermanager in Prolog

2025-05-25
plwm: Ein minimaler X11-Fenstermanager in Prolog

plwm ist ein hochgradig anpassbarer, dynamischer X11-Kachel-Fenstermanager, der in Prolog geschrieben wurde. Er ist leichtgewichtig und schnell, mit geringem Ressourcenverbrauch (10-15 MB Arbeitsspeicher) und bietet mehrere Layouts, schwebende Fenster, Unterstützung für mehrere Monitore, Integration externer Bars und mehr. plwm ist einfach anzupassen und zu erweitern, verwendet deklarativen Prolog-Code für die Konfiguration und bietet zahlreiche Tastenkombinationen und Befehlszeilenoptionen für ein flexibles Fenstermanagement.

Entwicklung

Implementierung komplexer Zahlen und FFT mit nur Datentypen (keine Gleitkommazahlen)

2025-05-25
Implementierung komplexer Zahlen und FFT mit nur Datentypen (keine Gleitkommazahlen)

Dieser Artikel präsentiert eine Methode zur Implementierung komplexer Zahlen und der schnellen Fourier-Transformation (FFT) unter Verwendung nur algebraischer Datentypen, ohne auf Gleitkommazahlen angewiesen zu sein. Der Autor beginnt damit, die Vorteile der Verwendung algebraischer Datentypen für die numerische Darstellung zu erläutern und hebt Ineffizienzen in traditionellen FFT-Implementierungen hervor. Anschließend wird eine prägnante und elegante Implementierung von ganzen Zahlen und komplexen Zahlen unter Verwendung nur algebraischer Datentypen gezeigt. Schließlich wird eine rein funktionale Implementierung der komplexen FFT, ebenfalls ohne Gleitkommazahlen, abgeleitet. Dies wird durch die Verwendung einer balancierten ternären Darstellung für ganze Zahlen und die Erweiterung gaußscher Zahlen zur Darstellung komplexer Zahlen erreicht, wodurch die fusionhindernden Effekte der Gleitkommaarithmetik geschickt umgangen werden und so die Effizienz des Algorithmus verbessert wird.

Eine spannende Reise: Ein selbstmodifizierendes C-Programm erstellen

2025-05-25

Dieser Artikel beschreibt die Erstellung eines C-Programms, das seinen eigenen Code zur Laufzeit verändern kann. Der Autor erklärt zunächst, wie Programmcode im Speicher abgelegt wird und wie man mit der Funktion `mprotect()` die Berechtigungen des Codesegments so ändert, dass es beschreibbar ist. Anschließend ändert der Autor durch Modifikation des unmittelbaren Werts einer `addl`-Instruktion das Ergebnis des Programms. Schließlich geht der Autor noch weiter und kopiert mit `memcpy()` einen Shellcode in das Codesegment des Programms, wodurch erfolgreich ein Shell-Befehl zur Laufzeit ausgeführt wird. Der gesamte Prozess ist technisch anspruchsvoll und erfordert ein fundiertes Verständnis der x86_64-Assembler-Sprache.

Open Source Society University: Ein kostenloser Weg zu einer Informatikausbildung

2025-05-25
Open Source Society University: Ein kostenloser Weg zu einer Informatikausbildung

Die Open Source Society University (OSSU) bietet eine vollständige, kostenlose Informatikausbildung mit Online-Materialien von Top-Universitäten wie Harvard, Princeton und MIT. Der Lehrplan ist in Einführungs-, Kern- und Fortgeschrittenenkurse unterteilt und dauert ungefähr zwei Jahre bei 20 Stunden pro Woche. Während die meisten Materialien kostenlos sind, können einige Kurse für benotete Aufgaben Gebühren erheben. Studenten können ihr Lerntempo selbst bestimmen und über GitHub und ähnliche Plattformen mit einer globalen Community zusammenarbeiten, die in einem Abschlussprojekt gipfelt.

Entwicklung

Pretix entwickelt eigenen Linux-Treiber für Ticketdruck

2025-05-25

Pretix Version 1.8 führte das Versandmanagement ein, aber der empfohlene Drucker uITL+2003CF bietet nur einen Windows-Treiber. Um Linux-Benutzer zu unterstützen, entwickelte das Pretix-Team einen benutzerdefinierten CUPS-Filter, `rastertofgl`, geschrieben in Python. Dieser Filter konvertiert CUPS-Rasterdaten in FGL-Code und ermöglicht so den Ticketdruck unter Linux mit einer entsprechenden PPD-Datei. Obwohl noch einige Probleme bestehen, bietet dieser Treiber eine praktische Lösung für Pretix-Benutzer unter Linux.

1 2 76 77 78 80 82 83 84 214 215