Author: Andreas Plahn
Clean Architecture in ASP.NET Core
The Clean Architecture pattern has gained significant popularity for the design and development of software applications. It emphasizes key principles to better maintain, scale, and test solutions thanks to well-defined layers and clear separation of concerns. Clean Architecture promotes abstracting external dependencies like databases, UI, or services to let the developer focus on the core domain code.
Intro to Microsoft Copilot Studio
C# tricks – Debugging Complex Classes with the [DebuggerDisplay] Attribute
vslive.com/Blogs/News-and-Tips/2024/10/Debugging-Complex-Classes-with-the-DebuggerDisplay-Attribute.aspx
Configure Prettier and ESLint with Angular
Everyone wants to write code in a fast bug-free way without thinking about its style most of the time. That’s why in this post I will talk about configuring ESLint and Prettier in an Angular project.
Source: Configure Prettier and ESLint with Angular | by Enea Jahollari | ITNEXT
Microsoft SQL Server – show total size allocated in MB per table
To get an overview of total disk space allocated per table in MB, use this SQL script:
WITH TableSizes AS ( SELECT sch.name AS SchemaName, t.name AS TableName, SUM(p.rows) AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB FROM sys.tables t INNER JOIN sys.indexes i ON t.object_id = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id INNER JOIN sys.schemas sch ON t.schema_id = sch.schema_id WHERE t.type = 'U' -- Only include user tables GROUP BY sch.name, t.name ) SELECT SchemaName, TableName, RowCounts, --TotalSpaceKB, --UsedSpaceKB, --UnusedSpaceKB, CAST(TotalSpaceKB / 1024.0 AS DECIMAL(10, 0)) AS TotalSpaceMB --CAST(UsedSpaceKB / 1024.0 AS DECIMAL(10, 2)) AS UsedSpaceMB, --CAST(UnusedSpaceKB / 1024.0 AS DECIMAL(10, 2)) AS UnusedSpaceMB FROM TableSizes ORDER BY TotalSpaceKB DESC;
How to debug Angular component test Dependency Injection chain
When running ng test (Angular component testing) and you get this type of error:
[Service1 -> Service2 -> Service3]: NullInjectorError: No provider for Service3!
And you dont really understand which component, service or directive that is starting this DI chain. Here is a way to debug and hopefully find the source of the problem:
In Edge/Chrome: when in karma runner page, open devtools (f12), on source tab, select both “Pause on uncaught/caught exceptions”
Reload the test, step into a few times, you should be able to get the call stack as in picture above. Here we can deduce that DI chain starts with a component html template, which uses a translate directive in markup, which calls DictionaryService which calls UserAppDataQueryService which calls AuthenticationService.
Tip: run all spec files below a certain folder like this:
ng test --include "src/app/myarea/**/*.spec.ts" --browsers=Edge
Tip2: run a single spec file:
ng test --include "src/app/myarea/**/mytest.component.spec.ts" --browsers=Edge
How to run Angular component tests (karma) for a certain folder or specific spec file
This runs all spec files that are descendants of the “my-area” folder and in the “Edge” browser.
ng test --include "src/app/my-area/**/*.spec.ts" --browsers=Edge
run a single spec file:
ng test --include "src/app/myarea/**/mytest.component.spec.ts" --browsers=Edge
Angular v19 will make components as standalone default
Angular v19 will make standalone: true the default for components, directives, and pipes.In v14 we introduced a developer preview “standalone” feature, which made it possible for the first time to build an application that didn’t rely on NgModules. Since then, standalone has been stabilized, and has become the recommended way to write Angular code by the Angular team. The CLI generates components with standalone: true by default, and the Angular docs teach standalone first to all new Angular developers. A
Basic form validation with Angular – provide visual feedback with form changes CSS classes
Validating user input in HTML forms can be a tedious task. In this new series, we’ll look at how Angular can help us implement painless form validation. First, it’s essential to know that Angular relies primarily on native browser validation features that use modern HTML properties. For instance, if a form field has to be filled out, you can mark it as required using the required HTML attribute
Source: Basic form validation with Angular | Angular Newsletter