Skip to content

Instantly share code, notes, and snippets.

View aemloviji's full-sized avatar
🏠
Working from home

Elvin Asadov aemloviji

🏠
Working from home
View GitHub Profile
/*
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID),
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками.
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования.
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной.
*
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter`
*/
/*
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID),
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками.
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования.
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной.
*
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter`
*/
/*
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID),
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками.
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования.
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной.
*
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter`
*/
@aemloviji
aemloviji / concurency_parallelism_async_await.md
Last active December 23, 2022 15:18
Concurrency vs. Parallel vs. Async in .NET

Concurrency vs. Parallel vs. Async in .NET

Non Concurrent process

Bob started a restaurant and he does all the thing: Being a chef, being a waiter and cashier.

This kind of system is non concurrency

Concurrent process

More and more customers come. Bob decided to hire 1 Chef, 1 Waiter and 1 Cashier.

@aemloviji
aemloviji / Program.lowered.cs
Created December 7, 2022 16:56
Lowered version of record type
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using Microsoft.CodeAnalysis;
@aemloviji
aemloviji / Program.cs
Created December 7, 2022 16:26
C# lowering record type
// create an instance of Device
var device1 = new Device("DELL", "f8078ddc-2d59-4902-9acd-8cd88649186d");
// copy device1 with some modification using with expression
// to achive nondestructive mutation
var device2 = device1 with { Identifier = "aea8be94-788a-4b01-a569-9f496904a49c" };
// Device record type definition
public record Device(string Manufacturer, string Identifier);
@aemloviji
aemloviji / AlternativeWayToLoop.cs
Last active October 18, 2022 09:17
It is an alternative way to loop in csharp
using static System.Console;
WriteLine("bu csharp-di?");
foreach (var i in 1..10)
{
WriteLine($"{i} beli!!!");
}
internal static class RangeExtensions
@aemloviji
aemloviji / DynamicObjects In C#.md
Last active June 5, 2022 13:50
Creating and Using Dynamic Objects in C#
@aemloviji
aemloviji / rename-git-committer-name.sh
Created December 25, 2021 16:23
how to change committer name in git when commits were pushed with different name unintentionally
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="aaa@company.com"
CORRECT_NAME="bbb_name"
CORRECT_EMAIL="bbb@company.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
@aemloviji
aemloviji / JS_map_reduce_filter.md
Last active October 26, 2020 10:14
How to simplify your codebase with map(), reduce(), and filter() in JavaScript

How to simplify your codebase with map(), reduce(), and filter() in JavaScript

1. Remove duplicates from an array of numbers/strings

Well, this is the only one not about map/reduce/filter, but it’s so compact that it was hard not to put it in the list. Plus we’ll use it in a few examples too.

const values = [3, 1, 3, 5, 2, 4, 4, 4];
const uniqueValues = [...new Set(values)];

// uniqueValues is [3, 1, 5, 2, 4]