📓 Записки программера
1.02K subscribers
304 photos
1 video
6 files
599 links
Канал с регулярными постами о разных интересных материалах (статьи, видео, фреймворки и полезные инструменты).

https://dotnet.social/@denisio
加入频道
В серию статей Stephen Cleary про Cancellation добавилась новая статья - Registration #dotnet
👍7💩1
Я как-то пропустил момент, что в #dotnet ещё в 7-ую версию завезли класс TarFile для работы с tar-файлами. Не сказать, чтобы это было сильно надо - потому что есть .zip формат, но вдруг. На практике мне программно ещё не приходилось ковырять их, в паре мест где надо сидить данные в базу например (zip коды в US например) - там лежали zip файлы, из которых это всё доставалось.
🔥2👍1
Полугодовой давности мануал Async guidance по async в стиле "делайте хорошо, плохо не делайте спасибо". Есть несколько моментов, которые не очень очевидны и вполне достойны упоминания на собесах :))) #dotnet
👍11
Оч простая вещи, но в целом тоже иногда нужна бывает - это шифрование данных в ASP.NET. Штатно есть Data Protection API, который по дефолту ложит ключи в %LOCALAPPDATA%\ASP.NET\DataProtection-Keys, в линуксовом контейнере это /root/.aspnet - который можно (нужно) вытащить как volume в docker-compose, чтобы фарш из шифрованных данных можно было провернуть назад после апдейта контейнера :) к щастью там просто XML файлы, которые несложно сохранить. Ну или хранить не в XML, а в каком-то другом сторадже персистить (база данных, redis, ...) #dotnet
👍3
Очень простой и строготипизированный PredicateBuilder - когда надо собрать выражение в EF вида
select  ...
from table1
where (x=1 and y=2) or (x=3 and y=5) or (x=3 and y=5 and coef>1)

(или других условий) и вот этих условий в OR неизвестное (динамическое) количество, зависящее от внешних условий.

С традиционным AND обычно никаких проблем:
var q = db.Items.AsQueryable();
q = q.Where(...);
q = q.Where(...);
...
var items = await q.ToArrayAsync();

А вот с OR такого не прокатит, так что PredicateBuilder спасает в этом случае. #dotnet
👍5🔥1
Как использовать Result<T> и немного LINQ для railway oriented programming или "у вас result'янка". С одной стороны выглядит красиво и реализует short-circuit, когда фейл одного из степов сразу возвращает Result.Error и всё прекращается. Но под капотом некоторое количество не оч кросивого кода. Наверное имеет смысл для ознакомления, но использовать я такое не буду. #dotnet
👍31
инструмент для мониторинга исходящих http запросов

dotnet tool install -g dotnet-http


А также 9 интересных статей на тему внутренних штук дотнета (для собирания метрик в т.ч.) с примерами кода #dotnet
🔥7👀1
В .net 9 завезли поддержку OAuth 2.0 Pushed Authorization Requests и вот статья с примерами реализации (да, на примере Duende IdentityServer) #dotnet
🔥6🤯1
Чятики принесли интересную штуку - какой-то новый профайлер для дотнета. Опенсурс, но по фичам надо сравнивать с dotProfiler и dotMemory конечно. #dotnet
👍2
Всё никак не могу добраться, чтобы попробовать Aspire на каком-то живом проекте, но регулярно попадаюца статьи про то, как там всё удобно :)) в т.ч. для гетерогенных микросервисов #dotnet
🤔6
Похоже что будет серия интересных статей про написание собственного GC. Пока что опубликована первая часть, но я буду следить :) Этот же автор кстати писал интересную другую серию статей про профайлинг. #dotnet
👍5👀2🔥1🤯1
Недавно в чятике видел вопрос/проблему - несоответствие scope для сервисов в DI, которые стреляют в рантайме в момент ресолва-активации сервиса (=в случайный момент времени, который может случится очень несразу).

Ну так вот на эту тему есть решение, которое провалидирует scope сервисов и сломает запуск, если там что-то не так #dotnet

upd в камментах написали, что это лучше делать для DEBUG окружении - конечно да, для релиза/прода это не имеет особого смысла и увеличивает время старта.
🔥17👍3