Urgent.News

What's breaking now, across thousands of outlets.

Tech

Keeping obfuscated names stable across releases with Nebula''s seed map

Ship an obfuscated .NET build and you get a mapping: MyApp.Billing.Invoice.Recalculate became n.a.b , and you tuck away the map so you can decode the crash reports that will arrive. Ship 1.4.1 a week later with a one-line fix, and that same method is now q.c.f . Nothing about it changed, but its obfuscated name did — because the default obfuscation run renames the whole assembly from scratch, and…

When distributing an obfuscated .NET build, a mapping file is created to decode crash reports that may be generated. However, each build results in a new mapping file with different obfuscated names, even for unchanged methods. This makes it difficult to correlate crash reports across different releases, as the names are constantly changing.

Nebula.NET's seed map addresses this issue by preserving the names across releases. By feeding the previous release's map back into the obfuscation process, unchanged members retain their original names, making it easier to decode crash reports and compare versions. This incremental renaming reduces the size of binary diffs, making it simpler to understand the actual changes between releases.

Seeding the obfuscation process also improves crash symbolication, allowing for more accurate grouping and analysis of crash reports. The seed map functions as a ledger, tracking symbol changes over time, and can be integrated into a Continuous Integration (CI) pipeline to automate the obfuscation process and map management.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Designing a license gate: where to check, what to cache, and when to fail closed

Adding Keyright to a .NET app looks like one line: client.Validate() returns a LicenseInfo , you check IsValid , done. That line is the easy part, and it is not where licensing goes wrong.

  • One object performs SDK validation to prevent scattered Validate() calls.
  • LicenseSnapshot record is immutable to prevent unauthorized licensing state modifications.
  • When validation fails, the gate defaults to free edition to avoid ambiguous paid status.

Six eQMS platforms for a mixed medtech-and-industrial shop — and which one I'd pick

The setup: a QMS that grew past its first product We're a 200-person shop in Minneapolis. Started out as a Class II medical device company about a decade ago.

  • Greenlight Guru excels for medical devices but lacks industrial support
  • MasterControl offers broad industry coverage for mixed portfolios
  • ETQ Reliance chosen for its integration with existing MES and ERP systems

Node.js Email Verification Needs Atomic Tokens

Email verification looks like a small feature: create a token, send a message, and accept the token when the user clicks it. In a real Node.js service, the difficult part is not generating the token.

  • Email verification in Node.js requires atomic database operations to prevent duplicate activations.
  • Store cryptographic token digest, not raw value, in database to protect against exposure.
  • Use conditional UPDATE with row lock in consumption process to ensure token acceptance once.

SoundSafari: ten seconds of recording, one minute of listening

Built for the DEV Week 1 “Touch Grass” challenge . What I Built SoundSafari is a small outdoor listening exercise. You record ten seconds of your surroundings, get a tentative sound category, and use…

  • SoundSafari app encourages users to record 10 seconds of ambient sound
  • Users listen for 1 minute to outdoors after recording and write reflection
  • App uses Audio Spectrogram Transformer for local audio classification

More from Saturday 10 October →