How to integrate Identity Server into your web application

Let’s imagine you have a web application built as a monolith and you want to introduce microservices. Or you may have several clients connected to your backend solution: mobile app, SPA, devices, etc. One of the first tasks that you have to solve is integrating authentication and authorization. In my opinion, one of the simplest ways is integrating SSO (Single-Sign-On system) into your application. There is an open-source ready-to-use product IdentityServer4 which implements OpenID Connect and OAuth2.0 frameworks. The solution is built using .NET core 3.1 and is easy to modify according to your business rules. Also, it is an out-of-box solution ready to deploy. Therefore, you don’t have to develop and set up a custom authentication system. ...

December 26, 2021 · 3 min · Maxim Gorbatyuk

Do not forget about Async postfix

There is a recommendation: to write a postfix “…Async” at the end of async methods in .NET. I always follow this rule, and also I recommend everyone to do this as well as I do. In this article, I want to share my thoughts on why this is an important rule when you deal with asynchronous programming. You can call the async method without await and it will not throw any error In my opinion, it is a problem that .NET allows us to call an asynchronous method without the await keyword and without awaiting a result as well. and no compile error will be thrown. Also, a runtime error will not be thrown as well. Therefore, you should mark async methods with “…Async” postfix to help yourself and your teammates not miss possible errors in the production. ...

December 12, 2021 · 2 min · Maxim Gorbatyuk

На что стоит обратить внимание во время технических интервью

За время своей карьеры я провел много техничесикх собеседований. Почти в каждой компании я выступал в роли технического интервьюера. Довелось и быть тем, кто аппрувит кандидата на дальнейший этап найма. Мне нравится этот процесс, он позволяет держать теоретические знания в тонусе. Когда я сам выступаю в роли кандидата, я обращаю внимание на процесс интервью. В результате наблюдений я составил для себя несколько аспектов, которые позволяют сделать мне вывод о кандидате. ...

November 2, 2021 · 3 min · Maxim Gorbatyuk

Главная задача тимлида на проекте

Что значит быть тимлидом Таким вопросом задаются многие разработчики: и те, кто хочет стать тимлидом, и те, кто уже. После полутора лет работы в качестве тимлида у меня сформировалось некое понимание своей роли в проекте и компании. На мой взгляд, главная и едва ли не единственная задача тимлида на проекте – сделать максимально возможное, чтобы поставить продукт вовремя. Звучит легко, однако за этой формулировкой стоит такой огромный спектр задач, что можно легко запутаться. Попробую раскрыть тему, что обычно я делаю для того, чтобы поставить продукт вовремя. Что можно включить в перечень задач, достигая которые выполняется главная? ...

August 18, 2021 · 3 min · Maxim Gorbatyuk

A little life hack when you work with Azure Service Bus and ASP.NET Core

If you work with Azure infrastructure and have to integrate message queues. It sounds quite simple: just create Azure Resource, write some code and then be happy! But what would you say if the resources are limited? What will you do if there are several teammates in your team, and all of you have to debug queues at the same time? Well, I know a minor life hack for my teams. I create an InMemory Message queue engine for local development and use Azure Service Bus (or any other external MQ engine) only for remote environments. This solution allows me to not think about paid resources or concurrency access to the single development queue. ...

March 7, 2021 · 7 min · Maxim Gorbatyuk

How to accept and return snake case formatted JSON in ASP Web API

The standard way to accept and return data in ASP.NET world is camel case. But at the current project, I was asked to change my ASP Web API application data processing format. I had to move all the JSON data format from camelCase to snake_case. The reason for it was fact that we had to start developing React application as a SPA of our system. I thought that nothing will be a trouble, but I had met some issues. Now, I want to share with you my solution of how to make your ASP Web API and JSON in the Snake Case be the best friends. ...

February 20, 2021 · 4 min · Maxim Gorbatyuk

Знания сами по себе как аргумент в споре

На днях посмотрел видео, где автор видео критикует книгу о “Мужском движении”. Книга, как и само мужское движение, так себе. Видео немного лучше, но тоже среднее, на мой взгляд. Но мой пост не об этом. Больше всего в видео меня зацепил этот момент, где автор берет факт из книги и разносит его в пух и прах, как он сам думает. Факт из книги: “… в некоторых регионах России количество разводов достигает более ста процентов от количества заключенных браков”. ...

September 15, 2020 · 3 min · Maxim Gorbatyuk

Идеальный Бизнес-Аналитик глазами разработчика

Недавно я послушал подкаст “Идеальный бизнес-аналитик глазами разработчика” своего очень хорошего друга. Не со всеми тезисами я был согласен, однако подкаст побудил меня начать обсуждение с участниками подкаста. А потом еще и сам побывал в этом подкасте в качестве гостя. Чтобы понять, кто такой “идеальный аналитик”, важно определиться с набором требований. Что я жду от аналитика как разработчик? А как тимлид? А как менеджер проекта? Сколько людей, столько и мнений, и я тоже хочу порассуждать о том, каков он - этот неуловимый идеальный аналитик. ...

September 7, 2020 · 5 min · Maxim Gorbatyuk

Мысли о мультфильме "Кунг-фу Панда" и о становлении себя

Недавно пересмотрел мультфильм “Кунг-фу Панда”, а точнее два из трех. Последний раз смотрел почти десять лет назад, поэтому многое уже забылось. Сейчас, когда я вступил в осознанный возраст в 26 лет ¯\_(ツ)_/¯, философия мультфильма видится совершенно другой. Мультфильм о том, как обрести себя, как отпустить прошлое и как начать жить сегодняшним днем. В первом мультфильме По, главный персонаж, воспользовался случаем и изменил свою жизнь. Случай - его посчитали избранным Воином Дракона. По и до этого чувствовал, что не принадлежит тому месту, где он был и чем занимался. А занимался он семейным бизнесом и помогал отцу в лапшичной. А снились ему сны о битвах, где По - непосредственный участник и предводителей других воинов кунг-фу. Мечтатель, одним словом. И мечтателю мешал страх “предать” мечты отца, который видел По продолжателем семейного дела. ...

August 1, 2020 · 4 min · Maxim Gorbatyuk

Не берись делать то, чего не понимаешь

Написать эту статью меня натолкнул один случай. В моей команде двое junior-девелоперов: парень и девушка, и девушке я делал код-ревью. Задача была простая: ранее она написал экстеншн-метод (extension method из .NET) для валидации свойств объекта, и я предложил перенести этот экстеншн в сам класс объекта в качестве публичного метода. Девушка перенесла метод, и в качестве аргументов передавала те же свойства, которые нужно было провалидировать. Это было странное решение, ведь свойства объекта доступны в самом методе, нет нужды передавать их извне. Я написал ей в Slack, зачем она так написала. Разработчица мне ответила, что теперь поняла суть задачи и пообещала переделать в ближайшее время. ...

April 24, 2020 · 4 min · Maxim Gorbatyuk