🎮 Погружаемся в SQL, с помощью увлекательной аркадной игры
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
• Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
• Квесты, задачи, подсказки — всё как в настоящем приключении.
• Работает прямо в браузере и даже на телефоне.
Любые запросы к базам — щёлкаем как семечки 👉 https://dbquacks.com/.
👍3❤2🗿1
🔥 Хотите разобраться в ASP.NET Core на практике?
Репозиторий — это более 400+ римеров для всех версий ASP.NET Core (от 2.1 до 10 Preview).
Что внутри:
- Minimal API, Blazor, SignalR, gRPC
- Аутентификация, кэширование, health-checks
- Middleware, Razor Pages, HTMX и многое другое
Каждый пример запускается командой
⭐ Репо собрало уже 10k+ звёзд и считается одним из лучших ресурсов для изучения ASP.NET Core.
📌 Github
Репозиторий — это более 400+ римеров для всех версий ASP.NET Core (от 2.1 до 10 Preview).
Что внутри:
- Minimal API, Blazor, SignalR, gRPC
- Аутентификация, кэширование, health-checks
- Middleware, Razor Pages, HTMX и многое другое
Каждый пример запускается командой
dotnet watch run
и демонстрирует отдельную фичу. ⭐ Репо собрало уже 10k+ звёзд и считается одним из лучших ресурсов для изучения ASP.NET Core.
📌 Github
❤5🔥2👍1🥰1🥱1👀1
Forwarded from DevOps
Какой язык программирования имеет самый запутанный код? 🤔
Команда TIOBE проанализировала более 8 000 коммерческих проектов и 1,5 млрд строк кода, чтобы выяснить, где цикломатическая сложность (количество возможных путей выполнения функции) выше всего.
📊 Вот результаты:
1️⃣ MATLAB (6.03 пути/функция) — часто используется учёными и инженерами-доменщиками, а не разработчиками, поэтому код выходит менее структурированным.
2️⃣ C (5.74) — ручная обработка ошибок → множество
3️⃣ JavaScript (3.50) — быстрая разработка, постоянно меняющиеся требования и разный уровень фронтенд-разработчиков.
4️⃣ Go (3.39) — идиоматический паттерн обработки ошибок с множеством явных проверок.
5️⃣ Python (2.71) и TypeScript (2.51) — средняя сложность, отражающая гибкий синтаксис и широкий спектр применения.
6️⃣ C++ (2.45), Java (2.24), C# (2.08) — сравнительно ниже благодаря зрелым фичам и структурированным практикам.
7️⃣ Rust (1.32) — самая низкая сложность, подчёркивающая потенциал безопасных и простых решений.
📝 Итог: на сложность влияет не только сам язык, но и опыт разработчиков, культура кодинга и подходы к обработке ошибок.
📌 Подробности
#программирование #разработка #код #softwareengineering
Команда TIOBE проанализировала более 8 000 коммерческих проектов и 1,5 млрд строк кода, чтобы выяснить, где цикломатическая сложность (количество возможных путей выполнения функции) выше всего.
📊 Вот результаты:
1️⃣ MATLAB (6.03 пути/функция) — часто используется учёными и инженерами-доменщиками, а не разработчиками, поэтому код выходит менее структурированным.
2️⃣ C (5.74) — ручная обработка ошибок → множество
if/else
и условий. 3️⃣ JavaScript (3.50) — быстрая разработка, постоянно меняющиеся требования и разный уровень фронтенд-разработчиков.
4️⃣ Go (3.39) — идиоматический паттерн обработки ошибок с множеством явных проверок.
5️⃣ Python (2.71) и TypeScript (2.51) — средняя сложность, отражающая гибкий синтаксис и широкий спектр применения.
6️⃣ C++ (2.45), Java (2.24), C# (2.08) — сравнительно ниже благодаря зрелым фичам и структурированным практикам.
7️⃣ Rust (1.32) — самая низкая сложность, подчёркивающая потенциал безопасных и простых решений.
📝 Итог: на сложность влияет не только сам язык, но и опыт разработчиков, культура кодинга и подходы к обработке ошибок.
📌 Подробности
#программирование #разработка #код #softwareengineering
❤7
уникальных идентификаторов
Многие разработчики используют UUID (или Guid в C#) как уникальные ключи в базе данных.
📌 Проблема старых UUID:
- 🔀 они «случайные» — удобно для распределённых систем, но…
- 🧱 занимают 16 байт → таблицы и индексы раздуваются
- 📉 вызывают фрагментацию индексов, ведь данные неупорядоченные
⚡ Решение — UUID V7
- содержит компонент времени, поэтому значения сортируются
- 👉 работает быстрее с индексами
- 🔧 в .NET 9 можно создать через Guid.CreateVersion7()
- 🐘 поддержка появится в Postgres 18
Вопрос: а вы бы стали использовать UUID V7 в своих проектах?
#dotnet #postgres #uuid #database
Многие разработчики используют UUID (или Guid в C#) как уникальные ключи в базе данных.
📌 Проблема старых UUID:
- 🔀 они «случайные» — удобно для распределённых систем, но…
- 🧱 занимают 16 байт → таблицы и индексы раздуваются
- 📉 вызывают фрагментацию индексов, ведь данные неупорядоченные
⚡ Решение — UUID V7
- содержит компонент времени, поэтому значения сортируются
- 👉 работает быстрее с индексами
- 🔧 в .NET 9 можно создать через Guid.CreateVersion7()
- 🐘 поддержка появится в Postgres 18
Вопрос: а вы бы стали использовать UUID V7 в своих проектах?
#dotnet #postgres #uuid #database
👍12❤3🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
🧠 Инструмент визуализации памяти для C++
MV — это инструмент для реального времени, который помогает понять управление памятью в C++. Он визуализирует стек и кучу, что делает его идеальным для изучения таких концепций, как указатели, утечки памяти и управление кучей.
🚀 Основные моменты:
- Визуализация работы указателей и ссылок
- Понимание различий между стеком и кучей
- Выявление и анализ утечек памяти
- Поддержка базовых концепций C++
📌 GitHub: https://github.com/humblepenguinn/mv
#cpp
MV — это инструмент для реального времени, который помогает понять управление памятью в C++. Он визуализирует стек и кучу, что делает его идеальным для изучения таких концепций, как указатели, утечки памяти и управление кучей.
🚀 Основные моменты:
- Визуализация работы указателей и ссылок
- Понимание различий между стеком и кучей
- Выявление и анализ утечек памяти
- Поддержка базовых концепций C++
📌 GitHub: https://github.com/humblepenguinn/mv
#cpp
❤3👍1
Подход к реализации постоянных параметров шаблонов через библиотеку
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
#cpp #programming
Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (non-type template parameters). Но с момента появления C++98 у нас всегда было три вида параметров шаблонов:
- типовые параметры (type template parameters)
- нетиповые параметры (non-type template parameters)
- шаблонные параметры-шаблоны (template template parameters)
Когда категорий всего две, можно называть их «X» и «не-X» (например, статические и нестатические методы). Но когда категорий три — это уже неудобно. А в C++26 таких категорий уже пять (добавились параметры переменных шаблонов и параметры концептов), и выходит, что почти все, кроме типовых, попадают под «нетиповые» — что нелогично. Поэтому старый термин заменили на гораздо более удачный: constant template parameter (постоянный параметр шаблона).
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
std::meta::info
способен представлять что угодно.На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
#cpp #programming
❤3🔥1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🏎️ Сравнение производительности C++20
ComPPare — это инструмент для бенчмаркинга и валидации производительности различных реализаций функций на C++20. Он позволяет сравнивать время выполнения и проверять результаты для разных платформ, таких как CPU, OpenMP и CUDA, что упрощает портирование функций.
🚀 Основные моменты:
- Заголовочный файл, легко интегрируется в проекты.
- Поддержка любых функций, работающих на хосте.
- Подробная информация о времени выполнения и накладных расходах.
- Встроенная проверка ошибок для распространенных типов данных.
📌 GitHub: https://github.com/funglf/ComPPare
#cpp
ComPPare — это инструмент для бенчмаркинга и валидации производительности различных реализаций функций на C++20. Он позволяет сравнивать время выполнения и проверять результаты для разных платформ, таких как CPU, OpenMP и CUDA, что упрощает портирование функций.
🚀 Основные моменты:
- Заголовочный файл, легко интегрируется в проекты.
- Поддержка любых функций, работающих на хосте.
- Подробная информация о времени выполнения и накладных расходах.
- Встроенная проверка ошибок для распространенных типов данных.
📌 GitHub: https://github.com/funglf/ComPPare
#cpp
GitHub
GitHub - funglf/ComPPare: Compare performance & correctness of reference vs. optimized functions (CPU, GPU, parallel). Written…
Compare performance & correctness of reference vs. optimized functions (CPU, GPU, parallel). Written in C++20. - funglf/ComPPare
🔥3👍1
Forwarded from C++ Academy
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
⚡ 📬 Как построить лёгкую in-memory шину сообщений на .NET Channels - отличный разбор.
В статье показано, как без внешних брокеров организовать событийную архитектуру внутри приложения, используя
🔗 Читать здесь: milanjovanovic.tech/blog/lightweight-in-memory-message-bus-using-dotnet-channels
#dotnet #csharp #architecture #messaging #inmemory```
В статье показано, как без внешних брокеров организовать событийную архитектуру внутри приложения, используя
System.Threading.Channels
. Быстро, минималистично и эффективно. 🔗 Читать здесь: milanjovanovic.tech/blog/lightweight-in-memory-message-bus-using-dotnet-channels
#dotnet #csharp #architecture #messaging #inmemory```
❤1