📓 Записки программера
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