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

https://dotnet.social/@denisio
Download Telegram
reveal.js (github) - небольшой фреймворк, который позволяет быстро сделать презентацию на сайте со целым списком фич - вложенные слайды, поддержка markdown, code syntax highlight, анимация и даже экспорт в PDF #js
BannedApiAnalyzers - если надо предотвратить использование какого-либо API в solution wide масштабах - можно использовать этот анализер и написать в текстовый файл ему перечень классов, методов, свойств и полей которые использовать нельзя (будет ошибка компиляции). #dotnet
Using C# to Create PowerShell Cmdlets - интеграция в powershell путём создания на C# собственных cmdlet'ов с большим количеством примеров. #dotnet #powershell
Coding interview & system design problems - сборник ~50 вопросов (видимо с собесов :)) и хороших разборов этих вопросы с картинками и на русском языке. #interview
👍2
RSSDP (github) - библиотека для работы по протоколу Simple Service Discovery Protocol (SSDP). Многие современные и не очень современные девайсы (телевизоры, ресиверы, приставки, ...) умеют работать по этому протоколу и анонсить в сеть своё присутствие и некоторые фичи о себе (например рассказать о себе, что они поддерживают - звук/видео и т.д.) #dotnet
84 примера-tutorials для nestjs. Отличное дополнение к штатной документации - включая работу с БД, двухфакторную аутентификацию, CQRS, генерацию документации и многие другие полезные штуки #js
YARP - Yet Another Reverse Proxy by Microsoft. Т.к. ProxyKit приказал долго жить (репозиторий readonly и archived) - API шлюзы и балансировщики теперь полагается строить на YARP. Вообще штука интересная - можно своими силами по максимально гибким условиям делать балансировку входящего трафика (с pre-аутентификацией или без, по расписанию, по токенам, по юзерам, по кукам, в ручном режиме или что ещё придумается в проекте) - и делать это настолько быстро, что накладные расходы на прохождение трафика через YARP будет примерно на уровне погрешности. nginx на минималках :) На удивление полно примеров конфигурации и примеров кода. #dotnet
Scalable WebSockets with NestJS and Redis - интересный подход для построения реалтайм взаимодействия клиентов websocket'ами в nestjs через использование Redis pub/sub механизма под капотом. Какой-то SignalR на минималках :))

Нечасто кстати встречаю использование pub/sub в Redis в реальных проектах, оно и понятно почему - есть значительно более удобные механизмы оповещения подписчиков о событиях типа RabbitMQ или с помощью других брокеров. Но вот в статье рассматривается вариант с Redis #js #redis #nestjs
Две статьи из одного блога:

💙Adding validation to strongly typed configuration objects in .NET 6
💙The dangers and gotchas of using scoped services in OptionsBuilder

посвящённые IOptions<T>, валидации настроек из appsettings.json и особенностях использования их в scoped сервисах #dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
wiki.js - слежу за этим open source движком уже года полтора, за это время он очень хорошо вырос и на мой взгляд уже давно готов для продакшн-использования. Попробую написать плюсы/минусы :)

выглядит очень симпатично и современно
имеет ряд шаблонов для страниц (например для документирования API) мультиязычность
два вида редакторов (markdown / WYSIWYG)
понятную структуру страниц (в отличие от XWiki)
изкоробочная возможнсть комментирования страниц
за одну строку поднимается в докере (чтобы потыкать локально)
responsive интерфейс на телефоне выглядит идеально
теги для страниц (выглядят тоже красиво)
нормально работающие аттачи/картинки - в большинстве wiki-движков которые я смотрел - это выглядит как боль.
фронт на vuejs 😁

Из минусов пока только один нашёлся:
кое-где transition-эффекты в CSS для страниц я бы подсократил в два раза. Ну тоесть оно конечно плавно и красиво... для end user. Лично мне привычнее transition'ы побыстрее.

Вообщем если мне надо будет на проектах wiki - это будет wiki.js
#js #vuejs
Please open Telegram to view this post
VIEW IN TELEGRAM
Рано или поздно все разработчики сталкиваются с необходимостью синхронизировать изменения моделей бакенда и фронта. В работе доводилось использовать два таких инструмента:

💙Reinforced.Typings - отличная штука, работает как часы и использовал долго. Но судя по всему проект заброшен больше года назад и с новыми типами record он работает странновато, однако вполне предсказуемо, добавляя в каждую генерируемую модель из record свойство equalityComparer - это не лечица штатными средствами, а лезть внутрь, править и форкать проект - лень.

💙TypeGen - новая и удобная штука. Тоже не без недостатков - например он генерит по принципу "одна модель/один файл" и мне так и не удалось играми с конфигом хотя бы разнести их по namespace'ам - результаты этих игрищ были больше похоже на баг внутри пакета, который уже задокументирован но ещё не починен. Также в доке почему-то обошли вниманием, что чтобы это всё взлетело надо сделать dotnet tool install --global dotnet-typegen - иначе некому будет генерить модели :) В настоящее время использую этот пакет, пока ничего критичного/мешающего не нашёл.

#dotnet #ts
Please open Telegram to view this post
VIEW IN TELEGRAM
Design resources for developers (github) - постоянно пополняемый список разных ресурсов для дизайнеров (фронта наверное) - иконки, стили, CSS-фреймворки, иконки, ... #design
Practical ASP.NET Core - постоянно пополняемая коллекция примеров (на данный момент ~100) на самые разные разделы ASP.NET Core - внезапно есть даже примеры для Orleans, Windows Service, YARP и телеметрия (OpenTelemetry). Для новичков в ASP.NET Core - самое то, посмотреть как реализуются те или иные фичи. #dotnet
👍2
How to make the fastest .NET Serializer with .NET 7 / C# 11, case of MemoryPack - длинная статья с примерами кода, как делался MemoryPack и какой получился результат (на картинке :). Интересное чтиво как они байтоёбили, чтобы получить максимальный перф и минимальный memory footprint. #dotnet
👍2
Как известно, Redis под Windows уже давно официально не выпускается. Но если кто-то соскучился - есть реализация Redis-протокола в виде Memurai. Типа коммерческий, но есть Developer Edition, который будет рестартовать через 10 дней.

Ну и чтобы далеко не ходить - open source RedisInsight как клиент для ковыряния в Redis (с поддержкой pub/sub кстати, таких клиентов Redis очень немного - и написанный на Electron). #redis #electron
https://chocolatey.org/ - пакетный менеджер для Windows. Удобная штука, когда одним choco upgrade all весь установленный софт. Пользуюсь давно, весь софт у меня, который используется в работе, установлен с помощью Chocolatey. Нареканий нет - за очень редкими исключениями, например paint.net который недавно был обновлён до платформы .net 7 (и получил некоторый буст перфа в связи с этим) до сих пор не обновлён в choco репозитории. #tools
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Dive - удобный консольный инструмент для исследования собранных образов Docker. Позволяет найти ошибки при сборке и/или вытащить отдельные файлы из образа и заодно посмотреть размеры по слоям. #docker #tools
Давным давно у Microsoft был пакет Windows Workflow Foundation, для организации workflow в проектах. С тех пор минуло много лет, WWF сдох, но концепция осталась. Два пакета для организации workflow в проектах:

workflow-core - in process engine, из фич: возможность организовать паттерн saga, задавать максимальное количество concurrency для джобов.

elsa-core - out of process engine (в т.ч. имеет dashboard и docker образ), который имеет http api для управления и ряд штатных джобов, которые можно реюзить в своих проектах.

#dotnet
Очень часто в прошлом видел, когда люди брались за оптимизацию кода и оптимизировали совершенно не то, не так и не там где это действительно нужно. И отчасти это случалось из-за непонимания о времени работы разных операций.

Неплохая статья на хабре (не очень новая, но по прежнему актуальная) по соотношению стоимости операций процессора. Всегда держать в голове :) И не забывать, что не всегда надо оптимизировать код, если у тебя дисковый IO закрывает 90% времени работы :) #code #optimize
👍1
Ещё один интересный трюк в #css 😊
codepen