Niedawno musiałem zmierzyć się z budowaniem maili. Starym sposobem projektu było robienie tego w każdym miejscu, które wysyłało maila, tzn każdy projekt był właścicielem szablonu, a sam szablon był zdeployowany z kodem i wypełniany przez kod źródłowy string.Replace albo string.Format. Brzmi trochę creepy, prawda? To co z tym zrobić, żeby było uniwersalnie i bez jawnych …
Category: Programming
AWS DynamoDB – 3 ways to query and read results in .NET
In my very first post, I showed how to use DynamoDB in .NET to receive single result (post). Looking into the evolution of API and layers of abstraction, we have much more options to query AWS DynamoDB. Therefore we have 3 ways to query and read results which I will demonstrate in this post. The …
SOAP, REST, gRPC and GraphQL – various ways of API design
API stands for Application Programming Interface which defines the way how it is possible to communicate with the system. In this article, I put focus on web technologies and their implementation in .NET. Across many years, new design of APIs appeared in reply to new challenges, especially performance and implementation’s efficiency. Very first modern approach …
Apache Kafka secure setup
At one of my projects, I was trying to set Kerberos authentication (SASL_SSL). It seems that it’s the hardest possible approach to set up. Moreover I was working on localhost in an enterprise network which did not simplify work. So after few weeks of fighting I ended up with knowledge that: Documentation is quite precise …
Unit tests: code coverage – line coverage vs branch coverage
Quite often we can meet with a statement that code coverage should be x% where usually x = 80. But what is exact meaning? Is it line coverage or branch coverage or something else? Typicaly developers are using line coverage as most of software supports it however much more meaningful is branch coverage. Let’s take …
HTTP Verbs in API design
HTTP Verbs are basic methods in web world. They are evolving between HTTP protocol versions but also new RFCs are published. Also they were extensions like WebDAV (with 7 methods). A full registry is maintained by IANA (here) however most of people will reply with 9 basic verbs (interesting discussion about this on stackoverflow). Why …
gRPC in .NET Core
As WCF is going to end of life with .NET 5.0 (more here), gRPC is going to replace it (as recommended alternative). So what’s that? It is bi-directional, HTTP/2 based protocol. It can be used to communicate server-server o client-server including scenarios like load-balancing, health checks, microservices communication. gRPC stands for Google RPC (Remote Procedure …
Rider – my first good impression
A couple days ago I installed Rider IDE from JetBrains (on Windows machine). Installation process is easy and quick. First impression after start – what’s that?!? Completly different UI that I get used to from Visual Studio. When I started creating new project, I had a problem with choosing right option as UI is not …
.NET MAUI – Xamarin.Forms successor
Today Microsoft announced .NET MAUI – a successor of Xamarin.Forms. Besides well known MVVM, .NET MAUI will use MVU (Model-Vue-Update) pattern. At first glance, the code will be much more readable (shorter) and closer to functional programming. Next milestone is single project for all types platforms. Right now, you need to have separate for iOS, …
Few basic things to plan in your IT project
I just completed reading 2 great books: The DevOps Handbook: How to create world-class agility, reliability, & security in technology organizations and The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win. These awsome books caused that I started thinking about my past projects in terms of what we did wrong and …