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
More and more customers come. Bob decided to hire 1 Chef, 1 Waiter and 1 Cashier.
/* | |
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером | |
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID), | |
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками. | |
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования. | |
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной. | |
* | |
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter` | |
*/ |
/* | |
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером | |
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID), | |
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками. | |
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования. | |
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной. | |
* | |
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter` | |
*/ |
/* | |
* Наше приложение общается с удаленным сервисом: шлет запросы и получает ответы. С удаленным сервером | |
* установлено единственное соединение, по которому мы шлем запросы и получаем ответы. Каждый запрос содержит Id (GUID), | |
* ответ на запрос содержит его же. Ответы на запросы могут приходить в произвольном порядке и с произвольными задержками. | |
* Нам необходимо реализовать интерфейс, который абстрагирует факт такого мультиплексирования. | |
* Реализация `IRequestProcessor.SendAsync` обязана быть потокобезопасной. | |
* | |
* У нас есть готовая реализация интерфейсов `ILowLevelNetworkAdapter` и `IHighLevelNetworkAdapter` | |
*/ |
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; |
// 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); |
using static System.Console; | |
WriteLine("bu csharp-di?"); | |
foreach (var i in 1..10) | |
{ | |
WriteLine($"{i} beli!!!"); | |
} | |
internal static class RangeExtensions |
List of customers and suppliers
Supplier: Lucerne Publishing (https://www.lucernepublishing.com/)
#!/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 |
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]