Два в одном - пример использования Testcontainers и MongoDB провайдера для EF Core.
Надо бы посмотреть на досуге во что транслируются в монговский язык обычные выражения Where/Include в этом провайдере.
#dotnet #mongodb
Надо бы посмотреть на досуге во что транслируются в монговский язык обычные выражения Where/Include в этом провайдере.
#dotnet #mongodb
Microsoft News
Trying out MongoDB with EF Core using Testcontainers
An introduction to the MongoDB database provider for EF Core, including use of Testcontainers
Вопрос для собеса:
1. напишите собственную реализацию Task.WhenAll
Тестовые задачи перед собесом:
1. напишите реализацию Task.WhenAll, чтобы одновременно выполняемых задач было не больше N (который передается как параметр)
2. напишите класс-реализацию task pool который позволяет добавлять задачи (имеет метод Add) пока другие выполняются и при создании принимает количество одновременно выполняемых задач, остальные встают в очередь выполнения. #interview
1. напишите собственную реализацию Task.WhenAll
Тестовые задачи перед собесом:
1. напишите реализацию Task.WhenAll, чтобы одновременно выполняемых задач было не больше N (который передается как параметр)
2. напишите класс-реализацию task pool который позволяет добавлять задачи (имеет метод Add) пока другие выполняются и при создании принимает количество одновременно выполняемых задач, остальные встают в очередь выполнения. #interview
👍8🥰1
Implement Producer/Consumer patterns using Channel in C# - неплохая статья, где рассматриваются примеры single producer/single consumer, single producer/multiple consumer, multiple producer/single consumers.
Для тех кто только начинает ковырять Channel<T> (уже пора, .net 8 на дворе!) - самое то.
Ну и статья Stephen Toub про Channel<T> от 2019 года, но не потерявшая актуальность :)) #dotnet #tutorial
Для тех кто только начинает ковырять Channel<T> (уже пора, .net 8 на дворе!) - самое то.
Ну и статья Stephen Toub про Channel<T> от 2019 года, но не потерявшая актуальность :)) #dotnet #tutorial
👍2
Весьма наглядные примеры как работает вся пара десятков LINQ методов. Ну для тех кто вкатывается в LINQ - возможно будет полезно, для тех кто уже в курсе не нужно :) #dotnet
👍2
Две на мой взгляд понятные статьи про использование RabbitMQ в .net:
RabbitMQ .Net Demo, Publisher/Subscriber, Fanout Exchange, Microservices
How to Implement CQRS Pattern with RabbitMQ in ASP.NET Core Microservices Architecture
#dotnet
RabbitMQ .Net Demo, Publisher/Subscriber, Fanout Exchange, Microservices
How to Implement CQRS Pattern with RabbitMQ in ASP.NET Core Microservices Architecture
#dotnet
Medium
RabbitMQ .Net Demo, Publisher/Subscriber, Fanout Exchange, Microservices
Introduction
🔥2
Тут попалась статья Analyzing performance issues in .NET 8 (которая похоже что вбросилась на вентилятор много где), где некий David Mccarter померял перф в .net 8 и сравнил его с .net 6 - и по метрикам стало всё хуже. Вот только надо не забыть, что мерял своей рулеткой, а не BenchmarkDotNet.
Удивительности измерений начались прямо с первого пункта. При том что "новый синтаксис" по сути синтаксический сахар и на выходе ровно то же самое (скриншоты). Как у него вышло 1.14 times slower - я хз.
Дальше статью я просто просмотрел и не проверял. #dotnet
Удивительности измерений начались прямо с первого пункта. При том что "новый синтаксис" по сути синтаксический сахар и на выходе ровно то же самое (скриншоты). Как у него вышло 1.14 times slower - я хз.
Дальше статью я просто просмотрел и не проверял. #dotnet
👍1😁1
ZoneTree is a persistent, high-performance, transactional, and ACID-compliant ordered key-value database for .NET. It is several times faster than Facebook's RocksDB and hundreds of times faster than SQLite. It can operate in memory or on local/cloud storage.
Какое-то очередное интересное хранилище, по перфу выглядит очень прилично #dotnet
Какое-то очередное интересное хранилище, по перфу выглядит очень прилично #dotnet
🔥2
AzureDiagrams - оч симпатичные диаграммы (местами даже анимированные) для рисования структуры разных облачных проектов.
Судя по названию запилена под Azure, но в принципе в облаках наборы примерно одинаковые, так что думаю можно использовать и для Amazon. #tools
Судя по названию запилена под Azure, но в принципе в облаках наборы примерно одинаковые, так что думаю можно использовать и для Amazon. #tools
👍1
FusionCache - альтернатива для LazyCache (на который похоже подзабили) и штатной реализации IMemoryCache. Много разных плагинов (для сериализации, инвалидации и метрик) #dotnet
GitHub
GitHub - ZiggyCreatures/FusionCache: FusionCache is an easy to use, fast and robust hybrid cache with advanced resiliency features.
FusionCache is an easy to use, fast and robust hybrid cache with advanced resiliency features. - ZiggyCreatures/FusionCache
👍3
DAWG (Directed Acyclic Word Graph) is a data structure for storing and searching large word lists and dictionaries. It can be 40x more efficient than the .NET Dictionary class for certain types of data.
#dotnet
#dotnet
👍1
📓 Записки программера pinned «Сложно понимать, что интересно для вас, уважаемые подписчики. Вы как-то сигнальте емоджями или как-то ещё, чтобы искал нужные (интересные) соответствующие темы 😁 Всмысле сигнальте на тех постах которые вам интересны, чтобы я отслеживал темы»
Несколько фреймворков на замену штатной реализации IMemoryCache
🔸FastCache (тупо обертка над ConcurrentDictionary)
🔸LazyCache (похоже подзабили на него, хотя он у меня работает в нескольких проектах)
🔸FusionCache
🔸intelligentcache
🔸CacheTower (пока остановился на нём)
🔸EasyCaching
Вообще мне для нормальной жизни надо несколько вещей от кэша:
* чтобы умело опционально иметь backend для Redis
* чтобы GetOrAdd (GetOrSet) имело лок на cache key - чтобы в конкурентной среде фабрика для создания итема не вызывалась несколько раз (как это в ConcurrentDictionary например)
* (редко) событие на evict итема по expiration
* (редко) sliding expiration
И я ещё не встречал кэша (для дотнета по крайней мере), который позволял бы держать дерево/граф итемов с evict всех зависимых частей.
К примеру, у нас есть user и teams в которые он входит. При добавлении/удалении нового юзера в team - хотелось бы чтобы можно было удалить все тимы по id юзера (с которыми он связан). Есть разумеется и более сложные случаи, когда от одного итема зависит десяток других в кэше, так вот хотелось бы их тоже все evict'нуть. #dotnet
🔸FastCache (тупо обертка над ConcurrentDictionary)
🔸LazyCache (похоже подзабили на него, хотя он у меня работает в нескольких проектах)
🔸FusionCache
🔸intelligentcache
🔸CacheTower (пока остановился на нём)
🔸EasyCaching
Вообще мне для нормальной жизни надо несколько вещей от кэша:
* чтобы умело опционально иметь backend для Redis
* чтобы GetOrAdd (GetOrSet) имело лок на cache key - чтобы в конкурентной среде фабрика для создания итема не вызывалась несколько раз (как это в ConcurrentDictionary например)
* (редко) событие на evict итема по expiration
* (редко) sliding expiration
И я ещё не встречал кэша (для дотнета по крайней мере), который позволял бы держать дерево/граф итемов с evict всех зависимых частей.
К примеру, у нас есть user и teams в которые он входит. При добавлении/удалении нового юзера в team - хотелось бы чтобы можно было удалить все тимы по id юзера (с которыми он связан). Есть разумеется и более сложные случаи, когда от одного итема зависит десяток других в кэше, так вот хотелось бы их тоже все evict'нуть. #dotnet
❤3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный инструмент для совместного рисования tldraw.com (можно даже не регаца, просто ссылку отправляешь другому человеку) #tools
👍3
Я думал, что меньше 3-5 евров в месяц за VDS сложно найти (для пет-проектов например), но оказывается есть и за 0.58-1 доллар (7-12 долларов В ГОД).
Ограничения разумеется присутствуют - сервера стоят за NAT и открыты только несколько портов (но есть domain forwarding на 80-й / 443-й порты).
Ограничения разумеется присутствуют - сервера стоят за NAT и открыты только несколько портов (но есть domain forwarding на 80-й / 443-й порты).
👍6
Redacting sensitive data in logs with Microsoft.Extensions.Compliance.Redaction - редкая, но иногда крайне нужная возможность централизованно отпиливать sensitive данные при логировании #dotnet
🔥3
DistributedLock - тоже иногда нужная штука - сделать lock на именованый ресурс. Хорошо, когда у тебя инстанс один (там можно обойтись штатными примитивами), но если их больше одного - нужен внешний координатор (MySql, Postgres, SqlServer, Oracle, Redis, ZooKeeper, ...).
Радует, что в каждой реализации используется фичи конкретного движка (например в SqlServer используется sp_getapplock - который как раз и является реализацией лока на именованый "application resource") #dotnet
Радует, что в каждой реализации используется фичи конкретного движка (например в SqlServer используется sp_getapplock - который как раз и является реализацией лока на именованый "application resource") #dotnet
🔥4
How does continuous backup and point-in-time recovery work in databases - вкратце и достаточно понятно как базы данных делают бакапы (в онлайне, без блокировки доступа) и ресторят данные. #database #howto
🔥2
Отличная недлинная статья про слоты в VueJS и там (очень кратко) описаны все типовые кейсы со слотами. А вообще это 14-я часть серии статей про #vuejs - советую почитать, они все очень короткие и с обилием примеров. Для начинающих в VueJS самое то. #js
❤1👍1