Forwarded from Machinelearning
🎯 Суть проекта
Это эксперимент по обучению с подкреплением (Reinforcement Learning, RL), где агент учится играть в крестики-нолики (Tic-Tac-Toe) без использования сложных алгоритмов на чистом С.
Основная цель — продемонстрировать, как классические методы RL справляются с простыми играми.
🔥 Чем интересен?
Минимализм и простота
▪ Весь код написан на чистом C (~400 строк).
▪ Нет зависимостей — только стандартная библиотека.
▪ Идеален для изучения основ RL «с нуля».
Классический подход к RL
▪ Используется метод Temporal Difference (TD) Learnin
▪ Агент обучается через игру (self-play) и обновляет стратегию на основе наград.
Образовательная ценность
▪ Понятная визуализация процесса обучения (таблицы Q-значений).
▪ Пример того, как простая задача помогает понять фундамент RL.
Эффективность
▪ После обучения агент играет почти оптимально, избегая поражений.
▪ Код легко модифицировать для экспериментов (например, изменить размер доски).
📊 Как это работает?
Q-таблица хранит «ценность» каждого действия в конкретном состоянии.
Агент выбирает ход на основе текущих Q-значений (с добавлением случайности для исследования).
P.S. Если вы думаете, что RL — это только про AlphaGo и Dota 2, этот проект покажет, что даже в простых задачах есть глубина! 🧠
▪ Github
@ai_machinelearning_big_data
#rl #ml #ai #tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1👌1
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