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

https://dotnet.social/@denisio
Download Telegram
Опция strict в csproj файле, которая чуть более закручивает гайки для компилятора на предмет сравнений, is/as и некоторых операций (в пользу улучшения кода) #dotnet
Интересный вектор атаки - через powershell файлы, которые выполняюца при установке nuget пакета. #dotnet
Неплохой intro для знающих C# и желающих потыкать Rust (на гитхабе)

#dotnet #C# #rust
👍4
Человек форкнул dotnet runtime, чтобы вырезать инструкции CMOV и SSE - чтобы запустить .net программу под DOS на 486м компе #dotnet #simd #sse
🔥2
Две короткие статьи по работе с #docker

Initialize RabbitMq Docker Container with preconfigured Queues - может быть полезно при разработке/тестировании #rabbitmq

Nginx and Load Balancing - использование scale для поднятия нескольких инстансов контейнера - например, для тестирования балансировки нагрузки
Двоякое впечатление произвела статья. С одной стороны - тема мне близка, т.к. я посвятил 12 лет моей карьеры подобной теме - Let’s say that you’re building Car Fleet Management System. И вроде бы с одной стороны в статье всё логически связано и корректно с точки зрения workflow. С другой стороны - нарочитая простота решения не должна вводить в заблуждение тех, кто собирается делать подобные системы - там под капотом триллион всяких подводных камней, начиная с того что в реляционные СУБД координаты машин не кладут.

Но в целом - для того, чтобы посмотреть что умеет Postgres и TimescaleDB - это неплохая демонстрация, простая и наглядная с точки зрения реализации. Ну и немного #dotnet там тоже есть :)) #postgres
Реализация NonBlocking Dictionary - по API аналог ConcurrentDictionary, но по перфу доступа почти в два раза лучше. #dotnet
Хороший пример того, как надо обустраивать get started для разных инструментов (в частности баз данных и хранилищ).

Например, когда я полез ковырять Tarantool - я был озадачен отсутствием каких-то example datasets, на которых его можно потыкать хотя бы на чтение и посмотреть как оно лежит в хранилище.

Clickhouse в этом отношении мне понравился и зашёл значительно быстрее (и заехал в один из проектов для аналитики) - у них есть большие датасеты и отдельная страничка, где они собраны, а также вагон примеров запросов к этим датасетам (и которые к слову одной командой загружаюца в БД Clickhouse) и которые раскрывают разные интересные фичи движка и позволяют сравнить например объем хранения этих данных в сыром виде и в Clickhouse.

Графовую СУБД memgraph надо посмотреть, выглядит неплохо.
🔥1
Интересная штука для C#, которая практически прозрачно для разработчика позволяет часть функций переложить в CUDA. #dotnet
Silk.net is your one-stop-shop for high-speed .NET multimedia, graphics, and compute; providing bindings to popular low-level APIs such as OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX. Use Silk.NET to spruce up applications with cross-platform 3D graphics, audio, compute and haptics! Silk.NET works on any .NET Standard 2.0 compliant platform, including .NET 6.0, Xamarin, .NET Framework 4.6.1+, and .NET Core 2.0+.

Интересно... Примеров, правда, не очень много. #dotnet
Случайно выяснили разницу разных способах подсчета слов в задаче "посчитать количество слов в строке" (тестилось на 1 МБ текстовом файле).

Исходник теста #dotnet
👍1
Странно, что в таком малом количестве проектов я вижу использование прекрасного пакета Polly, который позволяет:

🔸задать политику обработки исключений и повторов выполнения метода/таски - с программируемой задержкой между ними (идеально для доступа к удалённому/ненадежному ресурсу)
🔸реализует CircuitBreaker
🔸позволяет fallbaчить результат - если один метод зафакапился - вызывается другой (для возврата значения по умолчанию например)

а также комбинировать политики через Wrap это всё. Ну и примеров там вагон. Вобщем рекомендуется к использованию - полезно и удобно.

В дополнение 4 небольших статьи как писать расширения политик Polly:
🔸 Introducing custom Polly policies and the Polly.Contrib
🔸 Authoring a non-reactive custom policy
🔸 Authoring a reactive custom policy
🔸 Custom policies for all execution types: sync and async, generic and non-generic

#dotnet
🔥3
Смешной справочник по типовый кейсам использования #git
🔥2😁2
Серия из 4 статей "Writing a .NET profiler in C#":

🔸 Part I
🔸 Part II
🔸 Part III
🔸 Part IV

Интересно не столько с точки зрения написания профайлера, сколько много интересного с точки зрения кишок - вызовы методов, JIT, инлайнинг и т.д.

#dotnet
Интересный workshop для Dapr. Достаточно подробно описан кейс, нарисованы схемы и есть 7 заданий по очереди для практики разработки микросервисной архитектуры.

Микросервисов всего 3 (четыре, если считать внешний условный Camera simulation который дергает два endpoint'а - их можно подергать и curl'ом), так что несложно.

Особенно интересно то, что нет особой привязки к Dapr - тоесть это всё можно легко реализовать просто как сервисы и запилить их в докер/кубер или реализовать через через akka/orleans (два из трёх сервисов прекрасно лягут на модель акторов). Ну и соответственно необязательно использовать C#, можно на любом языке сделать - как все микросервисы так и какие-то отдельные.

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

Билд и деплой на на симулятор или живой девайс (wifi гигабитный, ноут жырный, телефон - топ по скорости) идёт секунд 30. Просто билд hello world с одной формой под два таргета (windows/android) идёт секунд 20. Билд только под винду - секунд 10.

Приличные компоненты, которые нужны для любого нормального приложения - контролы, гриды, карты - почти все prerelease/beta и работают через жопу.

Mapsui для карт - полный пиздец, такое ощущение что люди вообще не видели никогда других компонентов, которые годами есть на рынке. На топовом андроед телефоне с 120 Гц экраном пан, зум и вращение работают рывками как на вафельнице за $50. Забавно, что карта вращается строго по часовой стрелке, против часовой нельзя если она до этого не повернута. Проекции для координат тоже неясны, но явно не широта/долгота. Ну и документации примерно нихера, даже комментариев для intellisense. Как это использовать - совершенно неясно.

Надо посмотреть как в Avalonia.
🔥3
Ещё один странный бенчмарк на количество памяти на таски (10К - 100К - 1M) #perf
👍1