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
This media is not supported in your browser
VIEW IN TELEGRAM
Brainboard - выглядит красиво. Можно нарисовать облачную архитектуру (или импортировать из существующих) и оно тебе генерит terraform файлы для разных сервисов (GCP, AWS, Azure). #tools
👍4
Случайно наткнулся на .net-биндинги (github) к Pinecone, откуда я узнал о существовании Pinecone - базы данных для хранения векторов, что выглядит интересно, но пока в моем окружении невостребовано.
Надо будет хотя бы потыкать для ознакомления, что это за штука. Прайсинг не чтобы не радует, он обычный (плюс/минус) для managed баз данных в облаке (тот же managed Postgres местами стоит дороже). #database #dotnet
Надо будет хотя бы потыкать для ознакомления, что это за штука. Прайсинг не чтобы не радует, он обычный (плюс/минус) для managed баз данных в облаке (тот же managed Postgres местами стоит дороже). #database #dotnet
The Human Side of Airbnb’s Microservice Architecture
40-минутное видео от Airbnb - про архитектуру и миграцию с одной архитектуры на другую.
tldr:
* 2008-2017 - монолит
* 2017-2020 - микросервисы
* 2020 по настоящее время - микро и макросервисы
Резюмируя - компания жила 9 лет на монолите. К микросервисами они мигрировали уже набрав клиентскую базу, нагрузку и фичи. Микросервисянка, которой заболевают многие компании (а часто и стартапы) - часто не нужна и не оправдана на мой взгляд. Модульный монолит позволяет совместить удобство разработки с возможностью легко перейти к отдельным (микро)сервисам при необходимости. #architecture
40-минутное видео от Airbnb - про архитектуру и миграцию с одной архитектуры на другую.
tldr:
* 2008-2017 - монолит
* 2017-2020 - микросервисы
* 2020 по настоящее время - микро и макросервисы
Резюмируя - компания жила 9 лет на монолите. К микросервисами они мигрировали уже набрав клиентскую базу, нагрузку и фичи. Микросервисянка, которой заболевают многие компании (а часто и стартапы) - часто не нужна и не оправдана на мой взгляд. Модульный монолит позволяет совместить удобство разработки с возможностью легко перейти к отдельным (микро)сервисам при необходимости. #architecture
👍3😁1
Интересная конструкция - nuget-пакет с embedded Postgres. По факту конечно набор бинарников внутри пакета, с локальным запуском и слушанием порта на localhost. Думаю очень даже зайдёт для тестов. #dotnet
👍5🔥1
OpenTelemetry-dotnet наконец-то релизнули (1.7.0 версия) после многочисленных -beta и -rc. #dotnet
🔥5
Локально развертываемая LLM Ollama для извлечения текста из документов (включая PDF). На примере выглядит отлично, как оно будет на практике - надо проверять. #llm
👍1
В продолжение поста - Monolith vs Microservices - вот ещё одна статья про микросервисы 😁 И да, там много вопросов поднято, про которые забывают, когда заболевают микросервисянкой
Да и вообще интересный блог, в котором регулярно затрагивается тема монолит/микросервисы #architecture
Да и вообще интересный блог, в котором регулярно затрагивается тема монолит/микросервисы #architecture
🤓1
dolt - интересный гибрид (git over MySQL). Позволяет снапшотить реляционные данные и схему как будто она в git (если надо например версионировать данные).
Чятики также сообщают, что есть альтернативный вариант для Postgres - neon. #tools
Чятики также сообщают, что есть альтернативный вариант для Postgres - neon. #tools