The Hidden Trap of Headless Browsers: Why Can't Your Automation Tool Catch Early Page Errors?

17 min read
Introduction You’re debugging a frontend engineering issue — the page is behaving abnormally. You ask an AI to open the page with a browser tool and check the console for errors. The AI opens the page, scans around, and tells you: The console is clean, no errors whatsoever. You’re skeptical. You open Chrome DevTools yourself — three bright red errors are staring you in the face, the page has already crashed into a white screen. The AI visited the exact same page using a Headless browser, so why did it catch nothing?
Headless Chrome Puppeteer Playwright Selenium Agent-Browser Frontend Automation Error Capture
Continue reading →

Variable Step Size and Frequency-Domain Adaptive Algorithms

7 min read
The Convergence Trade-off of Fixed Step Size Standard LMS and NLMS algorithms use a fixed step size parameter $\mu$. The choice of step size directly impacts algorithm performance, but a fundamental contradiction exists: Large step size: Fast convergence and quick adaptation to environmental changes, but large steady-state error and low filtering precision Small step size: Small steady-state error and high filtering precision, but slow convergence and sluggish response to abrupt changes This contradiction is particularly pronounced in applications such as echo cancellation and active noise control — the system needs fast convergence during startup, yet wishes to maintain low error in steady state. A fixed step size cannot satisfy both phases simultaneously.
Adaptive Filtering Variable Step Size Frequency-Domain Algorithm FDAF DSP
Continue reading →

Traits and Generics: Rust's Type Abstraction System

13 min read
In the previous articles, we explored Rust’s ownership system, error handling, and module management. Now we dive into the two core components of Rust’s type system—traits and generics. These form the foundation of Rust’s abstraction mechanisms: traits provide compile-time behavioral constraints, while generics bring type-safe parametric programming. Rust’s trait system has similarities to Go’s interfaces, but the essence is different. Go’s interfaces use implicit implementation with duck typing, while Rust’s traits are explicitly declared contracts. More importantly, Rust’s traits combined with generics enable complete type checking and monomorphization at compile time, achieving zero-cost abstraction.
Rust Trait Generics Type System Go Learning Notes
Continue reading →

security-collector-exporter: Monitoring Linux Security Auditing

6 min read
Why This Was Built Anyone managing servers has probably had this experience: compliance audit comes, SSH into machines one by one to check—SSH config correct, SELinux enabled, firewall running, any expired accounts, password policies compliant. A few machines are fine; dozens or hundreds becomes purely manual grunt work. And the more painful part: none of this has continuous monitoring. You check compliance today, someone changes a config tomorrow, and you’d never know.
Prometheus Linux Security Monitoring Go Exporter
Continue reading →

YOLO Model Training: Complete Custom Dataset Workflow

12 min read
Complete Custom Dataset Training Process Ultralytics Unified Training Code python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 from ultralytics import YOLO # Load model # model = YOLO("yolov8n.yaml") # Train from scratch # model = YOLO("yolo11n.pt") # Based on pre-trained weights model = YOLO("yolo26n.pt") # 2026 recommended, edge deployment first choice # Start training results = model.train( # Basic configuration data="data.yaml", # Dataset configuration epochs=100, # Training epochs imgsz=640, # Input size batch=16, # Batch size workers=8, # Data loading threads # Optimizer configuration optimizer="auto", # YOLO26 automatically uses MuSGD lr0=0.01, # Initial learning rate lrf=0.01, # Final learning rate factor momentum=0.937, # SGD momentum weight_decay=0.0005, # Weight decay # Data augmentation mosaic=1.0, mixup=0.1, copy_paste=0.1, # Other configuration device=0, # GPU device, "cpu" for CPU project="runs/train", # Save path name="yolo26_exp1", # Experiment name exist_ok=False, # Whether to overwrite pretrained=True, # Use pre-trained verbose=True, # Detailed logs seed=42, # Random seed ) # Validate model metrics = model.val() print(f"mAP50: {metrics.box.map50:.3f}") print(f"mAP50-95: {metrics.box.map:.3f}") Training Parameter Differences Across Versions Parameter YOLOv8 YOLO11 YOLO26 Default Optimizer SGD SGD MuSGD DFL Loss ✅ ✅ ❌ Removed NMS Post-processing ✅ ✅ ❌ Native no NMS Small Object Optimization Average Better Best (STAL) CPU Inference Speed Baseline +25% +43% Loss Function Breakdown YOLO’s loss function consists of three components, each targeting a different learning objective:
YOLO Model Training Deep Learning Hyperparameter Tuning
Continue reading →

One Month with the Zhi Theme: Mermaid v11 Upgrade Experience

7 min read
One Month In It’s been nearly a month since the previous article Switched My Blog Theme: From Hugo NexT to Self-Written Zhi. During this month, the theme has been running stably without major issues. Replacing the NexT theme was the right decision — although there was some initial adjustment, the experience is now significantly better. After a month of use, the theme’s stability has exceeded expectations. My initial concerns — whether pure Hugo Pipes without build tools could support complex requirements — were proven unfounded. Daily maintenance has become very simple; modifying a feature no longer requires digging through deeply nested SCSS files — one CSS file gets the job done.
Hugo Mermaid Zhi AI Programming
Continue reading →

VictoriaMetrics Stream Aggregation: Three-Year Review and Current Status (2026)

6 min read
Introduction It’s been exactly three years since the previous article Applying VictoriaMetrics Stream Aggregation for Metrics was published in March 2023. In these three years, the VictoriaMetrics ecosystem has undergone tremendous changes—let’s revisit the issues raised in that blog post, see what the official project has resolved, and where our stream-metrics-route project stands today. I. Problems We Encountered Three Years Ago Let’s quickly recap the core issue list from the 2023 blog post:
VictoriaMetrics Prometheus Metric Aggregation Vmagent Stream-Metrics-Route
Continue reading →

MiBeeNvr v0.2.0 Update: Docker Deployment, HLS Streaming, Recording Merging, and a Complete Installation Guide

11 min read
The previous article introduced MiBeeNvr’s basic features and design philosophy. It’s only been a week since v0.1.0, and v0.2.0 follows right behind. This update is substantial — 15 new features, some I needed myself, others from community feedback. This article covers three things: what’s new in v0.2.0, how to deploy from scratch, and some practical tips for real-world use. v0.2.0 New Features Overview This update has a lot of content. Here’s a breakdown by category:
NVR Go RTSP Camera Smart Home HLS
Continue reading →

FXLMS and Active Noise Control System Architecture

9 min read
Active Noise Control (ANC) works by generating an acoustic wave with equal amplitude and opposite phase to the incoming noise, canceling it through destructive interference at the target zone. Translating this into hardware requires two decisions: which sensors to use for noise sensing, and what control strategy to apply for anti-noise generation. These two factors define the three canonical ANC architectures: feedforward, feedback, and hybrid. Feedforward ANC A feedforward ANC system places a reference microphone upstream of the noise source to capture the disturbance early, feeds it to the DSP, and drives the speaker to produce the anti-noise. An error microphone near the ear monitors the residual noise and feeds it back to the adaptive algorithm for coefficient update.
ANC FXLMS Feedforward Feedback Secondary Path
Continue reading →

YOLO Dataset Preparation: Annotation Tools and Format Conversion

15 min read
Data Annotation Tools Usage LabelImg Installation and Usage bash 1 2 3 4 5 # Installation pip install labelImg # Launch labelImg Annotation Process: Open Dir → Select image folder Change Save Dir → Select annotation save folder Select YOLO format Create RectBox → Draw bounding box → Enter class name Save LabelMe Installation and Usage bash 1 2 pip install labelme labelme CVAT Self-Hosted Annotation Platform CVAT (Computer Vision Annotation Tool) is an open-source annotation platform by Intel, supporting Docker self-hosted deployment for team collaboration and large-scale annotation projects.
YOLO Dataset Data Annotation Data Augmentation
Continue reading →