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

https://dotnet.social/@denisio
Download Telegram
Два инструмента для создания mock-API:

💙json-server - максимально простой, имеет много примеров на github и ему достаточно просто накидать json-файлов, которые он будет отдавать по запросу.

💙mockoon - слегка более энтерпрайзный 😊 много штук, в т.ч. для управления роутами, ответами и вобщем требует изучения как и любой хитрый инструмент.

Идеально подходят, когда надо сделать фронт, а бэка ещё нет 😊 #tools #mock
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
https://ravendb.net/ - интересная document db, написанная на C#. Немного довелось поработать с ней. Очень быстрая на дисковый IO и обилием разных фич - включая встроенную веб-dashboard для управления и мониторинга. Community edition (которая допускает коммерческое использование) - максимум 3 узла в кластере и максимум 6 ГБ RAM :( И коммерческий ценник не очень радует. Но, есть timeseries и Graph API, которые внезапно работают :)

А также блог Ayende Rahien, CEO of HIBERNATING RHINOS LTD, which develops RavenDB.
Use .NET from any JavaScript app in .NET 7 - странная идея конечно :)) Но с помощью wasm-tools можно несложно сделать wasm-сборку, которая сможет загрузица в браузер и использоваться в #js. Никак не могу отделаться от мысли, что это всё напоминает почивший Silverlight 😊

#wasm #dotnet
ASP.NET Core API Auth with multiple identity providers - простая статья, как сделать в ASP.NET Core аутентификацию с разными схемами с использованием Policy (надо будет написать статью по этой интересной фиче). #dotnet
Counting the leading zeroes in a binary number - наглядное превосходство инструкций процессора над байтоеблей. Не понимаю, какой ещё результат человек хотел увидеть, интринсик с инструкцией LZCNT из набора SSE4 выполняется за 1 такт на подавляющем большинстве процессоров. #optimize
Frozen collections in .NET 8 - о планирующемся введении FrozenSet<T> (который как следует из названия является иммутабельным generic set'ом), который внезапно быстрее HashSet<T> в 1.5 раза. #dotnet
CSS-TRICKS - хороший коллективный блог с разными интересными и порой очень технически красивыми решениями на #css
Парочка дичайших примеров, возможности на которые даёт C# 😊
да, через методы-расширения. #dotnet
Почему-то мало кто знает про такую полезную штуку как Microsoft.IO.RecyclableMemoryStream - а тем временем он делает много полезных вещей:

💙Eliminate Large Object Heap allocations by using pooled buffers
💙Incur far fewer gen 2 GCs, and spend far less time paused due to GC
💙Avoid memory leaks by having a bounded pool size
💙Avoid memory fragmentation
💙Allow for multiple ways to read and write data that will avoid extraneous allocations

Не очень полезно, но бывает нужно:
💙Provide excellent debuggability and logging
💙Provide metrics for performance tracking

Подробное описание с картинками - на вышеуказанном проекте в github. Если у вас в коде много MemoryStream'ов для разных надобностей - очень рекомендуется посмотреть в эту сторону. #dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
🌲 Канал переходит в предновогодний режим
🎅 Количество постов сокращено до двух в день
Сегодня несколько UI-фреймворков для Vue 3:

💙BalmUI - по стилизации похож на Vuetify и MaterialUI, но внутренности сделаны значительно более человечески и логичнее, чем в Vuetify. Есть всё что полагается нормальному UI-фреймворку (включая валидатор для input'ов) + есть WYSIWYG editor и даже собственный state manager (аналог vuex).

💙Buefy - основанный на Bulma, кастомизируемый, хорошо стилизованный, есть всё что надо, прекрасный фреймворк, который я использовал во множестве проектов, но... Vue 2 only 😳

💙Element Plus (бывший Element для Vue 2) - вот этот фреймворк и выступил заменой Buefy для меня, когда пришла пора портировать или стартовать новые проекты на Vue 3. Из некоторых недостатков - отсутствует fixed-top-bar меню в комплекте (но решается стилями), а также layout el-row/el-col на 24 столбца (а не традиционных 12). Но в отличие от Buefy есть штатный валидатор полей, удобный практически как Vuelidation. В целом отличная штука, рекомендуется :)

💙Oruga - по первому рассмотрению также выглядит интересно и есть всё что надо для любого сайта, кроме валидации полей.

💙Primevue - ещё более интересный фреймворк, который имеет уже два десятка опциональных цветовых тем, которые можно легко подключить и использовать. Из отличительных штук, которые не всегда есть в UI-фреймворках: контекстное меню (которое можно прибиндить к элементу), штук 6 разных меню на любой чих, графики на основе Chartjs, многоуровневые таблицы и виртуальный скроллер и интегрированный Vuelidate. Подозреваю, что это следующий кандидат на использование в новых проектах.

💙Vant - очень маленький по размеру UI-фреймворк, ориентированный на мобильные устройства и имеющий специфичные элементы - pull refresh, swipe cell, sticky elements.

💙View UI Plus - ещё один симпатичный UI-фреймворк от китайских товарищей. Также по первому рассмотрению есть всё что надо для работы, включая date/time-pickerы, uploader'ы и т.д. Сам фреймворк бесплатный, а вот темы к нему стоят денег (как в Primevue). Ну ок, надо же на чём-то зарабатывать :)

#js #ts #vue
Please open Telegram to view this post
VIEW IN TELEGRAM
Deploy ASP.NET Core Web API to Amazon ECS – Dockerized Applications with AWS Fargate - помоему одно из лучших пошаговых руководств как деплоить бакенды в AWS. И что самое главное - актуальное.

В дополнение книга 2022 года Developing on AWS with C#

#aws #dotnet
Собираюсь в ближайшем будущем попробовать в работе Amazon DynamoDb и по случаю нашёл адаптер под него для #dotnet под названием EfficientDynamoDb - декларируется как х20 более эффективный к скорости и memory footprint.

Вообще интересно конечно как на такой простой операции типы работы с KV-хранилищем можно просрать х20 скорости и аллокаций в официальном SDK, хотя бенчмарки к EfficientDynamoDb прилагаются и они говорят как раз об этом. Но посмотрим.

#aws #dotnet
Learning .NET MAUI - годная серия статей (больше десятка частей) от Jesse Liberty (Xamarin MVP)

#dotnet #maui
Monads - ещё одна годная серия статей про десяток монад в применении к #dotnet. В примерах прилично кода на F# как функциональной основы для объяснения монад, но следом почти всегда идёт код на C# который натягивает монаду на него 😊
👍1
Instrumenting .NET with OpenTelemetry - очень хорошая статья как впилить OpenTelemetry для логирования в .net - мне не хватало такой статьи, когда я это делал. Рассмотрены два коллектора событий - Jaeger в первой части статьи и Azure Monitor во второй.

Modern distributed tracing with dotnet - вторая статья из этого же блога по логированию в Elasticsearch и Kibana. И то и другое кстати вполне себе живут в докер-контейнерах и доступно на предмет "потыкать".

#dotnet #azure
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
DFrame - distributed load testing framework - от автора MemoryPack (про который я уже писал некоторое время назад) - выглядит симпатично и имеет REST API для автоматизации. Надо попробовать.
🔥1
Ещё несколько статей по #aws и #dotnet:

💙Deploying An ASP.NET Core API To AWS Fargate Using CDK
💙Simple DotNet Core API with AWS ECS Fargate using Terraform
💙Hosting a .NET 6 Minimal API in AWS Lambda
💙Transform Your ASP.NET Core API into AWS Lambda Functions

Последние две статьи я ещё не проверял (займусь в ближайшее время) - но выглядят как надо.
Please open Telegram to view this post
VIEW IN TELEGRAM
TraceLens - интересный бакенд/фронтенд для сбора метрик OpenTelemetry. Бета-версия, которая в дальнейшем будет доступна по подписке. Выглядит неплохо. #opentelemetry
Building an Event Driven .NET Application - цикл из нескольких статей по event driven applications (в т.ч. в сочетании с MassTransit и Rabbit MQ). В отличие от других статей похожей теме - уделяется внимание тестированию :)

.NET Domain Events Using MediatR - отдельная статья по domain events, кстати MassTransit содержит уже Medator (не всмысле MediatR пакета, а всмысле свой mediator, который по API максимально похож на MediatR), так что если используете MassTransit - нет смысла цеплять MediatR - можно использовать MassTransit'овский. #dotnet #masstransit