Please open Telegram to view this post
VIEW IN TELEGRAM
🤡3🤔2
⚡️ «Stop Conflating CQRS and MediatR» от Milan Jovanovic Tech развеивает миф о том, что CQRS и MediatR — одно и то же.
Вот основные моменты:
▪ CQRS – архитектурный паттерн: Разделяет операции чтения и записи, позволяя оптимизировать модели для разных задач.
▪ MediatR – инструмент посредника: Обеспечивает централизованное взаимодействие компонентов, но не заменяет принципы CQRS.
▪ Часто вместе, но не всегда: Совмещение MediatR с CQRS может добавить лишнюю сложность там, где достаточно простого решения.
▪ Главное: Выбирайте инструменты, исходя из потребностей проекта, а не следуйте модным шаблонам.
Подробнее: Stop Conflating CQRS and MediatR
@cpluscsharp
Вот основные моменты:
▪ CQRS – архитектурный паттерн: Разделяет операции чтения и записи, позволяя оптимизировать модели для разных задач.
▪ MediatR – инструмент посредника: Обеспечивает централизованное взаимодействие компонентов, но не заменяет принципы CQRS.
▪ Часто вместе, но не всегда: Совмещение MediatR с CQRS может добавить лишнюю сложность там, где достаточно простого решения.
▪ Главное: Выбирайте инструменты, исходя из потребностей проекта, а не следуйте модным шаблонам.
Подробнее: Stop Conflating CQRS and MediatR
@cpluscsharp
👍5❤3
🔥 Awesome на GitHub
Это курируемые подборки ресурсов (книг, статей, инструментов, библиотек и многое другое) по конкретным темам, созданные сообществом разработчиков и энтузиастов.
Собрали подборку лучших из них. Сохраняйте, чтобы не потерять
• C: awesome-c
• C++: awesome-cpp
• C#: awesome-dotnet
• Хакинг: https://github.com/Hack-with-Github/Awesome-Hacking
• Информационная безопасность: awesome-security
• Базы данных: awesome-database-learning
• JavaScript: awesome-javascript
• React: awesome-react
• Vue: awesome-vue
• Angular: awesome-angular
• Node.js: awesome-nodes
• Typescript: awesome-typescript
• Java: awesome-java
• Go: awesome-go
• Ruby: awesome-ruby
• PHP: awesome-php
• Kotlin: awesome-kotlin
• Rust: awesome-rust
• Swift: awesome-swift
• iOS-разработка: awesome-ios
• Android-разработка: awesome-android
• Unreal Engine: awesome-unreal
• Unity: awesome-unity3d
• Python: awesome-python
• Django: awesome-django
• Data Science: awesome-datascience
• TensorFlow: awesome-tensorflow
• Linux: Awesome-Linux-Software
• DevOps: awesome-devops
• SysAdmins: awesome-sysadmin
• Nginx: awesome-nginx
• Kubernetes: awesome-kubernetes
• Docker: awesome-docker
• Автоматизация сетевой инфраструктуры: awesome-network-automation
• QA: awesome-testing
@cpluscsharp
Это курируемые подборки ресурсов (книг, статей, инструментов, библиотек и многое другое) по конкретным темам, созданные сообществом разработчиков и энтузиастов.
Собрали подборку лучших из них. Сохраняйте, чтобы не потерять
• C: awesome-c
• C++: awesome-cpp
• C#: awesome-dotnet
• Хакинг: https://github.com/Hack-with-Github/Awesome-Hacking
• Информационная безопасность: awesome-security
• Базы данных: awesome-database-learning
• JavaScript: awesome-javascript
• React: awesome-react
• Vue: awesome-vue
• Angular: awesome-angular
• Node.js: awesome-nodes
• Typescript: awesome-typescript
• Java: awesome-java
• Go: awesome-go
• Ruby: awesome-ruby
• PHP: awesome-php
• Kotlin: awesome-kotlin
• Rust: awesome-rust
• Swift: awesome-swift
• iOS-разработка: awesome-ios
• Android-разработка: awesome-android
• Unreal Engine: awesome-unreal
• Unity: awesome-unity3d
• Python: awesome-python
• Django: awesome-django
• Data Science: awesome-datascience
• TensorFlow: awesome-tensorflow
• Linux: Awesome-Linux-Software
• DevOps: awesome-devops
• SysAdmins: awesome-sysadmin
• Nginx: awesome-nginx
• Kubernetes: awesome-kubernetes
• Docker: awesome-docker
• Автоматизация сетевой инфраструктуры: awesome-network-automation
• QA: awesome-testing
@cpluscsharp
❤5👍3🔥3
⚡️ Статья Джоша Карателли "The forgotten art of Struct Packing in C/C++" посвящена оптимизации структуры данных в языках программирования C и C++ путём правильного упорядочивания членов структур для минимизации их размера.
Josh Caratelli - Game Programmer
Основные моменты статьи:
Проблема выравнивания и паддинга: Компьютеры читают и записывают данные из памяти блоками определённого размера (например, 16 байт). Чтобы обеспечить корректный доступ к данным, компиляторы автоматически добавляют дополнительные байты (паддинг) для выравнивания данных. Это может привести к тому, что структуры занимают больше памяти, чем необходимо.
Josh Caratelli - Game Programmer
Оптимизация порядка членов структуры: Располагая члены структуры от наибольшего к наименьшему по размеру, можно уменьшить или устранить паддинг. Поскольку структура выравнивается по размеру её самого большого члена, такое упорядочивание помогает минимизировать общий размер структуры.
Josh Caratelli - Game Programmer
Практический пример: Два примера структур с одинаковыми членами, но разным порядком их расположения, демонстрируют, что правильное упорядочивание может уменьшить размер структуры на 8 байт.
Josh Caratelli - Game Programmer
Инструменты для анализа паддинга: Для просмотра добавленного компилятором паддинга можно использовать опцию командной строки /d1reportSingleClassLayoutXXX в Visual Studio, где XXX — имя вашей структуры.
Josh Caratelli - Game Programmer
Предостережения: Хотя упаковка структур может сэкономить память, иногда небольшое увеличение размера структуры оправдано, если это улучшает производительность во время выполнения программы. Например, часто используемые члены структуры можно разместить в начале для ускорения доступа к ним.
Josh Caratelli - Game Programmer
Джош подчёркивает, что, хотя такие микрооптимизации полезны, приоритет следует отдавать разработке эффективных алгоритмов. Он также отмечает, что данная тема часто упускается из виду в курсах компьютерных наук, и призывает разработчиков учитывать её в своей практике.
🔗 Читать
@cpluscsharp
Josh Caratelli - Game Programmer
Основные моменты статьи:
Проблема выравнивания и паддинга: Компьютеры читают и записывают данные из памяти блоками определённого размера (например, 16 байт). Чтобы обеспечить корректный доступ к данным, компиляторы автоматически добавляют дополнительные байты (паддинг) для выравнивания данных. Это может привести к тому, что структуры занимают больше памяти, чем необходимо.
Josh Caratelli - Game Programmer
Оптимизация порядка членов структуры: Располагая члены структуры от наибольшего к наименьшему по размеру, можно уменьшить или устранить паддинг. Поскольку структура выравнивается по размеру её самого большого члена, такое упорядочивание помогает минимизировать общий размер структуры.
Josh Caratelli - Game Programmer
Практический пример: Два примера структур с одинаковыми членами, но разным порядком их расположения, демонстрируют, что правильное упорядочивание может уменьшить размер структуры на 8 байт.
Josh Caratelli - Game Programmer
Инструменты для анализа паддинга: Для просмотра добавленного компилятором паддинга можно использовать опцию командной строки /d1reportSingleClassLayoutXXX в Visual Studio, где XXX — имя вашей структуры.
Josh Caratelli - Game Programmer
Предостережения: Хотя упаковка структур может сэкономить память, иногда небольшое увеличение размера структуры оправдано, если это улучшает производительность во время выполнения программы. Например, часто используемые члены структуры можно разместить в начале для ускорения доступа к ним.
Josh Caratelli - Game Programmer
Джош подчёркивает, что, хотя такие микрооптимизации полезны, приоритет следует отдавать разработке эффективных алгоритмов. Он также отмечает, что данная тема часто упускается из виду в курсах компьютерных наук, и призывает разработчиков учитывать её в своей практике.
🔗 Читать
@cpluscsharp
👍4🔥4
🚀 .NET 10 Preview 3 уже доступен!
Новая версия приносит мощное обновление для C# — Extension Members:
💡 Теперь можно добавлять в static class расширения не только методов, но и:
▪ 🔹 Статические методы
▪ 🔹 Инстанс-свойства
▪ 🔹 Статические свойства
📦 Это значит, что вы можете "расширять" поведение типов не только логикой, но и дополнительными данными и даже стейтфул-логикой (через свойства).
И всё это — без изменения исходного класса.
🔗 Подробнее:
https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/csharp.md#extension-members
#dotnet #csharp #dotnet10 #devtools #preview
@csharp_ci
Новая версия приносит мощное обновление для C# — Extension Members:
💡 Теперь можно добавлять в static class расширения не только методов, но и:
▪ 🔹 Статические методы
▪ 🔹 Инстанс-свойства
▪ 🔹 Статические свойства
📦 Это значит, что вы можете "расширять" поведение типов не только логикой, но и дополнительными данными и даже стейтфул-логикой (через свойства).
И всё это — без изменения исходного класса.
🔗 Подробнее:
https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/csharp.md#extension-members
#dotnet #csharp #dotnet10 #devtools #preview
@csharp_ci
❤6👍3
📖 asmbook — мягкое введение в программирование на ассемблере для ARM. Для разработчиков, пишущих на C/C++, но желающих разобраться в низкоуровневых особенностях процессоров, проект предлагает практическое руководство по ассемблеру ARMv8.
В руководстве есть множество практических примеров: от работы с базовыми командами до анимации частиц в терминале. Проект подойдёт как для самостоятельного изучения, так и для академических курсов по компьютерной архитектуре.
🔗 GitHub
@cpluspluc
В руководстве есть множество практических примеров: от работы с базовыми командами до анимации частиц в терминале. Проект подойдёт как для самостоятельного изучения, так и для академических курсов по компьютерной архитектуре.
🔗 GitHub
@cpluspluc
❤3👍1🔥1
@cpluscsharp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🧠 Beej's Guide to Network Programming — легендарный гайд по сокетам на C
Если ты хочешь понять, как работают сети на низком уровне — забудь всё и читай Beej's Guide.
📘 Это бесплатное руководство от Beej (Брайан Холл), которое:
• Объясняет сокеты, TCP, UDP, IPv4/IPv6
• Работает под Linux и Windows
• Написано на чистом C
• Покрывает всё: от
• С нуля до уверенного уровня
🔥 Почему это круто:
- Простой и разговорный стиль
- Куча кода и реальных примеров
- Бесплатно и с открытой лицензией (CC)
- Один из самых уважаемых туториалов среди C-программистов
📎 Читай тут
Подходит всем, кто хочет научиться писать сетевые приложения руками, а не кнопками.
#CProgramming #SocketProgramming #NetworkProgramming #BeejGuide #LinuxNetworking #TCP #UDP #Coding
Если ты хочешь понять, как работают сети на низком уровне — забудь всё и читай Beej's Guide.
📘 Это бесплатное руководство от Beej (Брайан Холл), которое:
• Объясняет сокеты, TCP, UDP, IPv4/IPv6
• Работает под Linux и Windows
• Написано на чистом C
• Покрывает всё: от
socket()
до select()
и recvfrom()
• С нуля до уверенного уровня
🔥 Почему это круто:
- Простой и разговорный стиль
- Куча кода и реальных примеров
- Бесплатно и с открытой лицензией (CC)
- Один из самых уважаемых туториалов среди C-программистов
📎 Читай тут
Подходит всем, кто хочет научиться писать сетевые приложения руками, а не кнопками.
#CProgramming #SocketProgramming #NetworkProgramming #BeejGuide #LinuxNetworking #TCP #UDP #Coding
❤2🔥2
🔥 From C# to Rust: 42-дневный челлендж от Chris Woody Woodruff
Chris Woodruff, экспериментающий .NET-разработчик, объявил старт своего 42-дневного пути погружения в Rust — язык системного программирования, совмещающий производительность, безопасность и отсутствие null:contentReference[oaicite:0]{index=0}.
🎯 Цели проекта
- Жить и дышать Rust — по одному уроку в день.
- Противостоять строгому borrow checker.
- Осознанно учиться и делиться выводами от лица C#-разработчика.
🛠 Что ожидается изучить
- Владение памятью, шаблоны, трейты, времена жизни (`lifetimes`).
- Яркие сравнения Rust и C#: синтаксис, ownership vs GC, ошибки компилятора:contentReference[oaicite:2]{index=2}.
- Краткие ежедневные отражения из .NET-мира.
📅 Примерный план на 42 дня
1. День 1–7: Почему Rust? Установка, cargo new vs dotnet new, "Hello, World!", переменные, функции:contentReference[oaicite:4]{index=4}.
2. День 8–14: Неделя владения — темы: ownership, borrowing, borrow checker:contentReference[oaicite:5]{index=5}.
3. День 15–42: Структуры, перечисления (`enum`), match, Option<T>, Result<T, E>, модули, ошибки, трейты, дженерики, лямбды и многое другое.
💬 Голос из сообщества
> «What happens when a C# dev swaps null for Option, garbage collection for ownership… You get 42 days of brain‑bending, compiler‑fighting…»
✨ Подытожим
- Проект идёт с апреля 2025 года, уже опубликованы десятки дневных эссе.
- Каждая запись по мотивам реального опыта: «why won’t this compile?!», сравнения с привычным C#.
- В финале — обзор полученного опыта, личные инсайты и примеры рабочего CLI‑приложения на Rust:contentReference[oaicite:8]{index=8}.
🚀 Готовы бросить вызов себе и глубже понять Rust?
Следите за дневником Woody и за входом в мир безопасных без‑GC систем прямо с .NET-опытов!
🔗 Подробнее: From C# to Rust: A 42-Day Developer Challenge
https://woodruff.dev/from-c-to-rust-a-42-day-developer-challenge/
Chris Woodruff, экспериментающий .NET-разработчик, объявил старт своего 42-дневного пути погружения в Rust — язык системного программирования, совмещающий производительность, безопасность и отсутствие null:contentReference[oaicite:0]{index=0}.
🎯 Цели проекта
- Жить и дышать Rust — по одному уроку в день.
- Противостоять строгому borrow checker.
- Осознанно учиться и делиться выводами от лица C#-разработчика.
🛠 Что ожидается изучить
- Владение памятью, шаблоны, трейты, времена жизни (`lifetimes`).
- Яркие сравнения Rust и C#: синтаксис, ownership vs GC, ошибки компилятора:contentReference[oaicite:2]{index=2}.
- Краткие ежедневные отражения из .NET-мира.
📅 Примерный план на 42 дня
1. День 1–7: Почему Rust? Установка, cargo new vs dotnet new, "Hello, World!", переменные, функции:contentReference[oaicite:4]{index=4}.
2. День 8–14: Неделя владения — темы: ownership, borrowing, borrow checker:contentReference[oaicite:5]{index=5}.
3. День 15–42: Структуры, перечисления (`enum`), match, Option<T>, Result<T, E>, модули, ошибки, трейты, дженерики, лямбды и многое другое.
💬 Голос из сообщества
> «What happens when a C# dev swaps null for Option, garbage collection for ownership… You get 42 days of brain‑bending, compiler‑fighting…»
✨ Подытожим
- Проект идёт с апреля 2025 года, уже опубликованы десятки дневных эссе.
- Каждая запись по мотивам реального опыта: «why won’t this compile?!», сравнения с привычным C#.
- В финале — обзор полученного опыта, личные инсайты и примеры рабочего CLI‑приложения на Rust:contentReference[oaicite:8]{index=8}.
🚀 Готовы бросить вызов себе и глубже понять Rust?
Следите за дневником Woody и за входом в мир безопасных без‑GC систем прямо с .NET-опытов!
🔗 Подробнее: From C# to Rust: A 42-Day Developer Challenge
https://woodruff.dev/from-c-to-rust-a-42-day-developer-challenge/
❤7👍2
📘 Combining .NET Aspire with Temporal – часть 1
💡 В блоге Rebecca Powell на aspireify.NET описан старт серии статей о том, как интегрировать .NET Aspire с системой оркестрации Temporal :contentReference[oaicite:0]{index=0}.
🔍 Что в выпуске:
- An introduction to combining .NET Aspire apps with Temporal workflows
- Демонстрация того, как добавление Temporal упрощает надёжную обработку задач с состоянием и повторениями
- Подробный пример начала покрытия процессов с помощью Temporal SDK для .NET
📈 Почему это важно:
- Temporal помогает строить устойчивые распределённые системы с автоматическим управлением retries, временными метками и дедлайнами
- Интеграция с .NET Aspire — отличная основа для создания масштабируемых и отказоустойчивых приложений
➡️ Это только часть 1 — в следующих публикациях ожидаются глубже пример кода, best practices и кейсы. Отличный старт для разработчиков на .NET, интересующихся workflow-автоматизацией.
👉 Читать полностью
#dotnet #Aspire #Temporal #workflow #softwareengineering #rebeccapowell
💡 В блоге Rebecca Powell на aspireify.NET описан старт серии статей о том, как интегрировать .NET Aspire с системой оркестрации Temporal :contentReference[oaicite:0]{index=0}.
🔍 Что в выпуске:
- An introduction to combining .NET Aspire apps with Temporal workflows
- Демонстрация того, как добавление Temporal упрощает надёжную обработку задач с состоянием и повторениями
- Подробный пример начала покрытия процессов с помощью Temporal SDK для .NET
📈 Почему это важно:
- Temporal помогает строить устойчивые распределённые системы с автоматическим управлением retries, временными метками и дедлайнами
- Интеграция с .NET Aspire — отличная основа для создания масштабируемых и отказоустойчивых приложений
➡️ Это только часть 1 — в следующих публикациях ожидаются глубже пример кода, best practices и кейсы. Отличный старт для разработчиков на .NET, интересующихся workflow-автоматизацией.
👉 Читать полностью
#dotnet #Aspire #Temporal #workflow #softwareengineering #rebeccapowell
❤2👍1
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
📚 ArXiv Research Agent — отличный помощник для научных исследований.
Агент самостоятельно:
• Найдёт релевантные статьи с arXiv, bioRxiv, medRxiv и Semantic Scholar
• Проведёт полноценный обзор и поиск нужных материалов
• Покажет, что упущено, и предложит, что добавить
• Даст инсайты и цитаты из миллионов научных работ
• Генерирует готовые конспекты
И др.
Вскоре обещают добавить поддержку MCP.
🔜 Попробовать: https://www.alphaxiv.org/assistant
@ai_machinelearning_big_data
#agent #ArXiv #ai #ml
Агент самостоятельно:
• Найдёт релевантные статьи с arXiv, bioRxiv, medRxiv и Semantic Scholar
• Проведёт полноценный обзор и поиск нужных материалов
• Покажет, что упущено, и предложит, что добавить
• Даст инсайты и цитаты из миллионов научных работ
• Генерирует готовые конспекты
И др.
Вскоре обещают добавить поддержку MCP.
@ai_machinelearning_big_data
#agent #ArXiv #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
🚀 Заблуждение: Dapper не быстрее EF Core на 50%
При запуске реальных бенчмарков в .NET 8 получены следующие результаты:
• Dapper: 2.07 мс
• EF Core: 2.43 мс
Разница составила 0.36 мс, или 14%, а не заявленные 50%.
Хотя Dapper расходует чуть меньше памяти, в 80% проектов это несущественно.
Вывод
Для большинства задач такая разница в производительности не влияет на выбор технологии, поэтому EF Core часто становится основным инструментом работы с данными.
12 причин предпочесть EF Core вместо Dapper:
1. Автоматическое отслеживание изменений сущностей
2. LINQ с проверкой запросов на этапе компиляции
3. Code-first миграции для управления схемой БД
4. Обратное создание моделей из существующих баз данных
5. Навигационные свойства вместо ручных JOIN
6. Eager, lazy и explicit загрузка данных
7. Глобальные фильтры запросов (soft delete, multitenancy)
8. Value conversions для пользовательских типов
9. Встроенные retry-политики для устойчивости подключений
10. Interceptors для аудита и логирования
11. Одна кодовая база для разных СУБД (SQL Server, PostgreSQL, MySQL, Oracle, SQLite и др.)
12. Централизованное управление миграциями для нескольких баз данных
В микробенчмарках EF Core может уступать, но в реальных проектах его возможности экономят разработчикам часы и дни работы.
Что предпочитают разработчики: EF Core или Dapper?
♻️ Репост, чтобы поделиться результатами сравнения производительности!
При запуске реальных бенчмарков в .NET 8 получены следующие результаты:
• Dapper: 2.07 мс
• EF Core: 2.43 мс
Разница составила 0.36 мс, или 14%, а не заявленные 50%.
Хотя Dapper расходует чуть меньше памяти, в 80% проектов это несущественно.
Вывод
Для большинства задач такая разница в производительности не влияет на выбор технологии, поэтому EF Core часто становится основным инструментом работы с данными.
12 причин предпочесть EF Core вместо Dapper:
1. Автоматическое отслеживание изменений сущностей
2. LINQ с проверкой запросов на этапе компиляции
3. Code-first миграции для управления схемой БД
4. Обратное создание моделей из существующих баз данных
5. Навигационные свойства вместо ручных JOIN
6. Eager, lazy и explicit загрузка данных
7. Глобальные фильтры запросов (soft delete, multitenancy)
8. Value conversions для пользовательских типов
9. Встроенные retry-политики для устойчивости подключений
10. Interceptors для аудита и логирования
11. Одна кодовая база для разных СУБД (SQL Server, PostgreSQL, MySQL, Oracle, SQLite и др.)
12. Централизованное управление миграциями для нескольких баз данных
В микробенчмарках EF Core может уступать, но в реальных проектах его возможности экономят разработчикам часы и дни работы.
Что предпочитают разработчики: EF Core или Dapper?
♻️ Репост, чтобы поделиться результатами сравнения производительности!
❤5👍4👎1