Blog
Blog
Eine Artikelliste mit technischen Notizen und Erkenntnissen aus der Entwicklung.
Blog-Tags- Grundlegende Richtlinie bei der Implementierung eines API-Servers mit Golang
Beim Schreiben eines API-Servers in Go habe ich meine eigenen grundlegenden Richtlinien organisiert, einschließlich Single Binary + Cobra, Operationsfokus, HTTP/CLI-Trennung, sichere Fehlerbehandlung und ordnungsgemäßes Herunterfahren.
- Ein Designleitfaden zum Bau einer iOS-Self-Control-App mit der Screen-Time-API
Von der Sackgasse mit NEDNSProxyProvider über ein FamilyControls- + ManagedSettings-Design bis zu zwei Shield Extensions, dem Unlock-Handoff per App Group und den Grenzen eines Personal Teams. Dieser Artikel fasst das Gesamtbild einer iOS-Blockier-App mit der Screen-Time-API zusammen.
- K-POP-Songs, die IT-Engineers hören sollten
5 empfehlenswerte K-POP-Tracks mit IT-Begriffen und Cyber-Konzepten. Darunter aespas Metaverse, NCT DREAMs Glitch und STAYCs „GPT" – Musik, bei der man Technologie durch Visuals und Sound spürt.
- TypeScript Monorepo Organisieren der optimalen Lösung, Ausgabe 2026
Wir haben die Rollen von pnpm workspace, Turborepo, TypeScript Project References, Biome und WXT organisiert und die allgemeine einfache Lösung und die praktische Lösung mit einer 4-Paket-Struktur zusammengefasst.
- Unlock-Handoff von der Shield Extension zur Haupt-App über App Group implementieren
Die Haupt-App kann nicht direkt aus ShieldActionDelegate gestartet werden. Dieser Artikel beschreibt ein Handoff-Muster, bei dem die Extension eine Unlock-Anfrage im geteilten App-Group-Speicher ablegt und die App sie später ausliest.
- Entwerfen Sie selbstlimitierende Blöcke für iOS mit FamilyControls + ManagedSettings
Wie die drei Elemente AuthorizationCenter, FamilyActivityPicker und ManagedSettings kombiniert werden. Wir haben die Gründe, warum ein tokenbasiertes Design anstelle der Freitext-Domain-Eingabe verwendet werden sollte, und den Rahmen seiner Implementierung zusammengestellt.
- Wählen Sie NEDNSProxyProvider nicht aus, wenn Sie einen Site-Block unter iOS erstellen
Wir haben eine Untersuchung der technischen und politischen Probleme bei der Verwendung von NEDNSProxyProvider in im App Store vertriebenen iOS-Apps zur Selbstkontrolle aufgezeichnet, die zu der Entscheidung führten, auf die Screen Time API zu migrieren.
- Mit Personal Team kann Family Controls nicht auf echten Geräten getestet werden
Ein kostenloses Personal-Team-Konto kann die Family Controls Development Entitlement nicht erhalten. Das erklärt, warum die Apple Developer Program Mitgliedschaft Voraussetzung für Tests auf echten Geräten wird und was sonst betroffen ist.
- Eine iOS-Shield-Oberfläche braucht zwei Extensions, nicht eine
Der von ManagedSettings angezeigte Shield-Bildschirm besteht aus zwei separaten Targets: einer Action Extension und einer Configuration Extension. Hier sind die richtigen NSExtensionPointIdentifier und Principal Classes.
- Best Practices für SolidJS als Skill auf skills.sh veröffentlicht
Aufzeichnung darüber, wie ich mit der Skill-Funktion von Claude Code Best Practices für SolidJS auf skills.sh veröffentlicht habe. Darüber, dass die Genauigkeit der description die Trigger-Genauigkeit bestimmt, und über den Prozess, Unterschiede mit with/without-Tests zu überprüfen.
- M4 Mac mini Setup
Bei einer merkwürdigen Amazon-Aktion war der M4 Mac mini deutlich günstiger, und mit gesammelten Punkten wurde er noch billiger. Hier halte ich meine Setup-Arbeit fest, auch mit Blick auf eine spätere NixOS-basierte Verwaltung.
- Alles, woran ich beim Veröffentlichen von @hsblabs/web-stream-extras auf npm gescheitert bin
Eine chronologische Aufzeichnung der Fehler beim Wechsel von manueller Veröffentlichung zu GitHub Actions + npm Trusted Publisher. Provenance-422, Tag-Reihenfolge und Pre-Publish-Validierung.
- @hsblabs/web-stream-extras veröffentlicht
Eine kleine TypeScript-Utility-Bibliothek für ReadableStream<Uint8Array> in Browsern und Node.js — mit Byte-Konvertierungshelfern, Transform Streams und Stream-Verschlüsselung via Web Crypto API.
- Byte-Streams im Browser mit Web Crypto verschlüsseln
Web Crypto bietet starke kryptografische Primitive, aber kein Stream-Interface. So verschlüsseln Sie ein ReadableStream<Uint8Array> mit dem encryption-Subpath von @hsblabs/web-stream-extras — inklusive Dateiverschlüsselung, streambezogenem Schlüsselmanagement und Pipeline-Komposition.
- Ich hatte es satt, denselben Web-Streams-Boilerplate immer wieder zu schreiben
Warum ich wiederkehrende ReadableStream<Uint8Array>-Utilities in @hsblabs/web-stream-extras gebündelt habe. Die drei Muster, die ständig wiederkamen, die ByteTransformStream-Basisklasse und Stream-Verschlüsselung mit Web Crypto.
- AWS Cross-Region VPC Peering Fehlschlag
Hängen geblieben beim Einrichten des VPC Peerings zwischen Osaka und Tokio. --peer-region vergessen, failed-Status, konnte nicht löschen.
- Meine Notizen zu `Cache-Control: max-age=3, must-revalidate`
Eine Einordnung des Verhaltens hinter einer sogenannten Micro-Caching-Konfiguration mit Cache-Control. Dieser Artikel erklärt, was `max-age=3` zusammen mit `must-revalidate` praktisch bewirkt, wie sich das zeitlich verhält und wo es sinnvoll ist.
- Implementierung eines nur für Entwicklung vorgesehenen Live-Editors in Astro-Projekten
So implementieren Sie einen browserbasierten Editor, der nur im Entwicklungsmodus in Astro funktioniert. Verwenden Sie Vite-Middleware und React, um das Content-Management während der Entwicklung komfortabel zu gestalten, ohne die Produktions-Builds zu beeinflussen.
- Mobile App-Konfiguration aus Sicht eines Web-Engineers: Ansatz zum Abrufen von Metadaten beim Start
Organisation der Herausforderungen bei der Domänenverwaltung und Versionskontrolle mobiler Apps aus der Perspektive von Web-Frontend- und Infrastrukturerfahrung. Vorschlag eines Ansatzes zum Abrufen von Metadaten beim Start mittels CloudFront und S3, mit Vergleichen zu bestehenden Lösungen wie Firebase Remote Config.
- Ursache und Lösungsweg für ein /blog-404 unter Astro + bun dev
So lässt sich ein /blog-404 unter Astro + bun dev in der Reihenfolge Link-Prüfung, Routen-Generierung und Auslieferungspfad sauber eingrenzen. Enthält den Fix für die Verzeichnis-Kollision.
- mise-Versionierung auf Codex Cloud reparieren, wenn sie nicht greift
mise install bun gelingt, doch bun liefert command not found. Ursache und Lösung mit setup.sh, mise use -g und mise activate.
- lefthook-Einführungsablauf: Biome in pre-commit und pre-push automatisch ausführen
Konkreter Einführungsablauf für lefthook, um Biome-Formatierung und Linting bei Commit und Push automatisch auszuführen. Deckt ADR, Konfiguration, Installation und Verifikation in einem Ablauf ab.
- Abhängigkeiten in Build-Artefakten analysieren
In mit Go gebauten Binärdateien sind Informationen zu verwendeten Abhängigkeiten und Build-Einstellungen eingebettet.
- Ich habe personality-analyzer gebaut, ein Personality-Analysis-Skill für Claude
Ein Entwicklungsprotokoll zu einem Skill, der aus Gesprächen mit Claude HEXACO- und MBTI-Scores im YAML-Format ausgibt. Ein Versuch, Persönlichkeitsmerkmale aus KI-Chats zu quantifizieren.
- Verschlüsselte Verzeichnis-Backups mit age und tar automatisieren
Ein Shell-Skript, das age und tar kombiniert, um für jedes Unterverzeichnis verschlüsselte Archive zu erzeugen. Auch bei japanischen Verzeichnisnamen bleiben die Dateinamen CLI-freundlich.
- UUID v7-Implementierungsleitfaden: Erstellen mit JavaScript, Go und Shell
Die Bitstruktur von UUID v7, Biteinstellungen von Version/Variante, Mindestimplementierung in JavaScript, Go und Shell, Prüfelemente während der Implementierung und RFC-Referenzen sind auf einer Seite organisiert. Ein praktischer Leitfaden, der die zu überprüfenden Punkte in der Generierungslogik für Entwickler zusammenfasst, die IDs sicher einführen möchten, die sich einfach in Zeitreihen sortieren lassen. Es kann zur Bestätigung vor der Implementierung verwendet werden.
- Den Unterschied zwischen Glossary und Dictionary ordnen
Ein Vergleich von Glossary und Dictionary nach Umfang, Zweck, enthaltenen Begriffen und Autorenschaft.
- Lizenzkommentare mit esbuild/Vite aus gebündeltem JS entfernen
So verringern Sie die Bundle-Größe leicht, indem Sie Lizenzkommentare aus den Ausgabedateien von esbuild oder Vite entfernen.
- React Compiler in WXT aktivieren
Konfigurationsschritte zum Aktivieren von React Compiler im WXT-Framework. Beinhaltet Installation und Einbindung von babel-plugin-react-compiler.
- So konfigurieren Sie das Routing von Unterverzeichnissen mit Cloudflare Workers
Konfigurationsschritte für die Bereitstellung eines Astro-Projekts in einem Unterverzeichnis mit Cloudflare Workers. Organisiert, wie wrangler.json und astro.config angepasst werden.
- Verhalten von sh -c und Regeln zum Lesen von zsh-Konfigurationsdateien
Organisiert das Verhalten des Befehls sh -c, die Vererbungsregeln von Umgebungsvariablen, die Gültigkeit von Shebang und wie zsh-Konfigurationsdateien (.zshrc, .zshenv usw.) gelesen werden, wenn Skripte ausgeführt werden.
- Implementierung von CRC32-Hashing in TypeScript
Schritte zum Implementieren des CRC32-Hashing-Algorithmus in TypeScript. Organisiert Beschleunigungstechniken mithilfe von Nachschlagetabellen und tatsächlichen Anwendungsbeispielen.
- Biome-Warnungen für ungenutzte Variablen in Astro/Vue/Svelte-Dateien deaktivieren
So deaktiviert man Biome-Warnungen für ungenutzte Importe und Variablen in Astro-, Vue- und Svelte-Dateien per overrides-Konfiguration.
- Go-Setup-Notizen: Web-Framework und Dev Tools
Notizen zu Web-Framework und Entwicklungstools, die ich beim Einrichten einer Go-Umgebung geprüft habe. Eine kurze Zusammenfassung von Echo und Air.
- Bilder mit libavif in AVIF umwandeln
libavif mit Homebrew installieren und JPEG/PNG in AVIF konvertieren. Geeignet für Einzeldateien und Batch-Verarbeitung.
- Führen Sie mit macOS Launchd ein regelmäßiges Ausführungsskript aus
So erstellen Sie ein Skript, das wie Cron unter macOS Launchd jede Minute ausgeführt wird. Setup-Anweisungen, die Probleme mit Umgebungsvariablen vermeiden und die Protokollverwaltung umfassen.
- Shell-Abkürzungserweiterung mit zabrze: Eine einfachere Alternative zu zsh-abbr
Einführung und Nutzung des Shell-Abkürzungstools zabrze. Eine einfachere Alternative zu zsh-abbr für effizientere Befehlseingabe mit weniger Konfiguration.
- Zeilenweises Aufteilen von Text mit TransformStream: LineSplitTransform
Eine TransformStream-Implementierung, die binäre Stream-Daten in Zeilen aufteilt. Nützlich für die schrittweise Verarbeitung von Log- und Textdateien.
- Bildverarbeitung mit OffscreenCanvas und Web Worker umsetzen
Wie man mit Web Worker und OffscreenCanvas Bildverarbeitung umsetzt, ohne den Main Thread zu blockieren. Der Artikel fasst ein konkretes Beispiel für eine WebP-Konvertierung zusammen.
- Eine TypeScript-Utility-Funktion zum Konvertieren von Werten in ReadableStream
Eine Utility-Funktion, die Strings, Objekte und andere Werte in ReadableStream umwandelt. Streams mit beliebigen Typen, ohne erst über Blob zu gehen.
- Implementierung der CIDR-Bereichs-IP-Adressbestimmung mit TypeScript
Für Umgebungen, in denen externe Module wie CloudFront Function nicht verwendet werden können, haben wir unsere eigene IP-Adressermittlung innerhalb des CIDR-Bereichs implementiert. Organisierte die Implementierung der Klassensyntax mithilfe bitweiser Operationen.
- So führen Sie einen mit Bun+Hono erstellten API-Server auf AWS Lambda aus
Schritte zum Ausführen des Hono-API-Servers auf AWS Lambda mit Bun-Laufzeit. Erläutert die Konfiguration zum Kompilieren als Single File Executable und zum Ausführen mit Lambda Web Adaptor.
- generate-project-summary.py mit Bun + TypeScript neu umgesetzt
Eine Neuimplementierung eines Python-Skripts zur Projektzusammenfassung in Bun + TypeScript. Warum ich dafür ein portables Binary für LLM-Kontext gebaut habe.
- TypeScript-Implementierung zum Sortieren von Mediendateien nach Auflösung
Eine kompakte TypeScript-Implementierung, um Videos oder Bilder nach Auflösung (Breite × Höhe) zu sortieren. Praktisch für Twitter-Medienvarianten.
- Ein Deployment-Skript für eine SPA mit CloudFront + S3
Ein praxistaugliches Deployment-Skript für eine SPA, die aus S3 hinter CloudFront ausgeliefert wird. Dieser Artikel fasst Cache-Control-Einstellungen, eine Blue-Green-ähnliche Deployment-Struktur und den Rollback-Ablauf zusammen.
- So löscht man eine nicht leere Datenbank in AWS Athena
Was zu tun ist, wenn das Löschen einer nicht leeren Datenbank in AWS Athena fehlschlägt. Eine kurze Notiz zur Verwendung von DROP DATABASE CASCADE.
- Lotto-6- und Lotto-7-Zahlen in TypeScript erzeugen
Eine TypeScript-Implementierung, die mit dem Mersenne Twister Lotto-6- und Lotto-7-Zahlen erzeugt. Ein praktisches Beispiel für einen Pseudozufallszahlengenerator.
- Mit TypeScript eine Anfrage an ein IAM-geschütztes API Gateway senden
So senden Sie aus einer lokalen TypeScript-Umgebung mit SigV4 aus dem AWS SDK für JavaScript Anfragen an ein API Gateway mit IAM-Authentifizierung.
- Markdown mit markdown-confluence CLI nach Confluence synchronisieren
Wie man `@markdown-confluence/cli` einführt und betreibt, um Markdown-Dokumente aus einem Git-Repository nach Confluence zu synchronisieren. Der Artikel fasst einen Workflow zum Teilen von ADRs und anderen Dokumenten über Confluence zusammen.
- Vue Composable zur Verwaltung des globalen Status ohne Pinia
Eine einfache Implementierungsmethode, um eine globale Zustandsverwaltung mithilfe von Vues reaktiven und toRefs ohne Verwendung von Pinia zu erreichen.
- Berücksichtigen Sie Strategiemuster, wenn V-IF-Zweige in Vue zunehmen
Wenn es drei oder mehr Muster bedingter Verzweigungen mit v-if gibt, sollten Sie die Implementierung eines Strategiemusters zum dynamischen Wechseln von Komponenten in Betracht ziehen. Verbesserte Lesbarkeit und Wartbarkeit.
- TypeScript-Implementierung zum Generieren von Bildern aus HTMLVideoElement
Eine TypeScript-Implementierung, die Canvas und VideoElement verwendet, um den aktuellen Frame eines Videos als Bild zu extrahieren. Organisierte die Methode zur Generierung von Blobs basierend auf Versprechen.
- Cron-Jobs mit PM2 erstellen: als Alternative zu launchd
Wie man unter macOS mit PM2 statt launchd Cron-artige Jobs erstellt. Eine kurze Zusammenfassung von Konfigurationsdatei und einem periodischen Beispiel mit Bun.
- Meine erste Vite-Plugin-Implementierung: Build-Metadaten automatisch erzeugen
Wie man mit der Vite Plugin API eigene Logik in den Build-Lebenszyklus einhängt. Ein Beispiel mit einem Plugin, das zeitbasierte semantische Versionsmetadaten erzeugt.
- Ändern Sie das Vault-Kopierziel mit dem Starlight-Obsidian-Plugin in Root
So ändern Sie das Standardverhalten des Starlight-Obsidian-Plugins und kopieren Obsidian Vault direkt unter src/content/docs. Organisierte Implementierung zur Lösung von Unterschieden in der Hierarchiestruktur der Seitenleiste.
- TypeScript-Implementierung der Steganographie mithilfe von Variantenselektoren
Eine TypeScript-Implementierung einer Steganographie-Methode, die den Variantenselektor von Unicode nutzt, um versteckte, unsichtbare Zeichenfolgen in Text einzubetten.
- TypeScript-Implementierung zum Extrahieren von Größeninformationen aus Twitter-Video-URLs
Eine TypeScript-Implementierung, die Auflösungsinformationen aus Twitter-(X)-Video-URLs per regulärem Ausdruck extrahiert. Eine kurze Zusammenfassung von URL-Muster und Größenextraktion.
- Hinweise zu fehlgeschlagenen Versuchen, WOFF-Dateien von Google Fonts im Browser abzurufen
Eine Aufzeichnung von Versuchen und Irrtümern, ttf/otf/woff-Dateien von Google Fonts auf der Clientseite abzurufen und sie mit @vercel/satori zu verwenden. Einschränkungen des User-Agent-Headers und Probleme mit der Nichtkompatibilität von Woff2 wurden behoben.
- Konfiguration für Yarn v4 (PnP-Modus) in Bitbucket Pipelines
Wie man ein Projekt mit Yarn v4 im PnP-Modus in Bitbucket Pipelines baut. Eine kurze Zusammenfassung von Cache-Einstellungen und der Aktivierung von corepack.
- Warum die Pagefind-Suche auf Cloudflare Pages ausfiel: Rocket Loader war die Ursache
Ursache und Lösung für eine Astro + Pagefind-Suche, die lokal funktionierte, nach dem Deployment auf Cloudflare Pages aber ausfiel.
- Was ich nach dem Kauf der Bildverwaltungs-App Eagle empfunden habe
Gründe für den Kauf von Eagle, einer einmaligen Bildverwaltungs-App, und Rezensionen. Einführung in die Mac/Win-Kompatibilität, Bibliotheksverwaltung und Benutzerfreundlichkeit von Browsererweiterungen.
- Mit Svelte eine leistungsfähige Google-Apps-Script-Web-App bauen
Wie man die Veröffentlichungsfunktion von Google Apps Script mit Svelte kombiniert, um eine funktionsreiche SPA zu bauen, die eine Tabellenkalkulation als Datenbank nutzt.
hsb.horse