Asynchronous Programming (edit)
Async/Await - Best Practices in Asynchronous Programming | Microsoft Docs (HAY HAY HAY)
Best practices in .Net asynchronous programming | InfoWorld (HAY HAY HAY)
Devops best practices: How to drive agility and operational excellence | InfoWorld
AppVeyor & Azure DevOps
AppVeyor: Tích hợp liên tục cho các nhà phát triển bận rộn
AppVeyor tự động hóa việc xây dựng, thử nghiệm và triển khai các ứng dụng .NET giúp nhóm của bạn tập trung vào việc cung cấp các ứng dụng tuyệt vời.
Các tính năng chính:
- Không cần thiết lập hoặc bảo trì
- Cấu hình xây dựng thân thiện với nhà phát triển bằng UI hoặc YAML
- Xây dựng nhanh trên phần cứng chuyên dụng với ổ SSD
- Xây dựng nhiều chi nhánh
- Nhân viên và hỗ trợ cộng đồng
- Trả giá khi bạn đi
Các phần mềm tương tự AppVeyor:
GitHub - ariya/karma-appveyor: Karma AppVeyor integration demo
BenchmarkDotNet
Powerful .NET library for benchmarking
GitHub - dotnet/BenchmarkDotNet: Powerful .NET library for benchmarking
Generate PDF Files
- XHTML2PDF: GitHub - xhtml2pdf/xhtml2pdf: A library for converting HTML into PDFs using ReportLab
- A library for converting HTML into PDFs using ReportLab
- DocRaptor: HTML-to-PDF with .NET Sample Code (docraptor.com)
- With DocRaptor, it's fast and painless to convert HTML, CSS, and JavaScript into PDF and XLS documents with .NET.
- Xhtml2pdf
- WeasyPrint
- Unoconv
- Jinja2
How to Generate PDF Files in Python with Xhtml2pdf, WeasyPrint or Unoconv - Gearheart
Creating PDF Reports with Pandas, Jinja and WeasyPrint - Practical Business Python (pbpython.com)
6 Things to Do Before You Outsource Web Development - Gearheart
Azure DevOps
Dịch vụ cho các nhóm chia sẻ mã, theo dõi công việc và gửi phần mềm cho bất kỳ ngôn ngữ nào. Đó là sự bổ sung hoàn hảo cho IDE của bạn.
CSS
-
Typography
-
Blueprint CSS
Avoid mixing asynchronous and synchronous code
You should never have a mix of synchronous and asynchronous code. It is a bad programming practice to block on async code by making calls to Task.Wait or Task.Result. I would recommend using async code end to end – it is the safest way to avoid errors from creeping in.
You can avoid deadlocks by using .ConfigureAwait(continueOnCapturedContext: false) whenever you make a call to await. If you don't use this, the async method would block at the point where await has been called. In this case you are just informing the awaiter not to capture the current context. I would say that it is a good practice to use .ConfigureAwait(false) unless you have a specific reason to not use it.
I would discuss more on asynchronous programming in my future blog posts here. For more information on best practices in asynchronous programming, you can refer to Stephen Cleary's great article at MSDN.
Code Coverage:
Visualize unit test code coverage easily for free in Visual Studio Community Edition (and other editions too)
FineCodeCoverage 1.1.144 - AppVeyor
Best Practices:
How to use SortedDictionary, SortedList, and SortedSet in C# | InfoWorld
How to benchmark C# code using BenchmarkDotNet | InfoWorld
How to work with Quartz.Net in C# | InfoWorld
How to use Moq to ease unit testing in C# | InfoWorld
How to perform lazy initialization in C# | InfoWorld
How to work with reflection in C# | InfoWorld
How to avoid temporal coupling in C# | InfoWorld
7 best practices for remote development teams | InfoWorld
You can explore a demo ASP.NET Core application that illustrates several ways to benchmark the code. You can get the application from the ASP.NET repo on GitHub.
How to do more in C#:
- How to unit test static methods in C#
- How to refactor God objects in C#
- How to use ValueTask in C#
- How to use immutability in C
- How to use const, readonly, and static in C#
- How to use data annotations in C#
- How to work with GUIDs in C# 8
- When to use an abstract class vs. interface in C#
- How to work with AutoMapper in C#
- How to use lambda expressions in C#
- How to work with Action, Func, and Predicate delegates in C#
- How to work with delegates in C#
- How to implement a simple logger in C#
- How to work with attributes in C#
- How to work with log4net in C#
- How to implement the repository design pattern in C#
- How to work with reflection in C#
- How to work with filesystemwatcher in C#
- How to perform lazy initialization in C#
- How to work with MSMQ in C#
- How to work with extension methods in C#
- How to us lambda expressions in C#
- When to use the volatile keyword in C#
- How to use the yield keyword in C#
- How to implement polymorphism in C#
- How to build your own task scheduler in C#
- How to work with RabbitMQ in C#
- How to work with a tuple in C#
- Exploring virtual and abstract methods in C#
- How to use the Dapper ORM in C#
- How to use the flyweight design pattern in C#