Что выведен на экран это код?
Anonymous Quiz
40%
-128, 128
30%
-128, 127
11%
Возникнет ошибка компиляции
10%
Возникнет runtime ошибка
10%
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 Клад для геймдева — Kenney Assets
Бесплатная библиотека 2D и 3D-ассетов: спрайты, текстуры, звуки, шрифты и даже модели для VR/AR. Всё под лицензией CC0 — можно использовать где угодно, включая коммерческие проекты.
📌 Плюсы:
- Регулярные обновления и новые пакеты
- Идеально для прототипов, обучения и инди-игр
- Никаких ограничений по использованию
🔥 Забирай здесь: https://kenney.nl/assets
Бесплатная библиотека 2D и 3D-ассетов: спрайты, текстуры, звуки, шрифты и даже модели для VR/AR. Всё под лицензией CC0 — можно использовать где угодно, включая коммерческие проекты.
📌 Плюсы:
- Регулярные обновления и новые пакеты
- Идеально для прототипов, обучения и инди-игр
- Никаких ограничений по использованию
🔥 Забирай здесь: https://kenney.nl/assets
🚀 SQL Ultimate Course — бесплатный полный курс по SQL на GitHub
Если хочешь освоить SQL с нуля и дойти до продвинутого уровня — бери готовый репозиторий:
📂 Что внутри:
- datasets/ — реальные данные из ERP и CRM
- scripts/ — готовые SQL-скрипты для практики
- docs/ — документация и материалы курса
✅ MIT-лицензия — можно использовать и менять свободно
🌍 Подходит для всех СУБД (PostgreSQL, MySQL и др.)
🎥 К курсу прилагаются видео и гайды от автора
Автор: Data With Baraa — практик и ютубер, собравший в одном месте полный SQL-путь от простого
🔗 Репозиторий здесь: https://github.com/DataWithBaraa/sql-ultimate-course
Сохраняй, проходи и прокачивай SQL 💡
Если хочешь освоить SQL с нуля и дойти до продвинутого уровня — бери готовый репозиторий:
📂 Что внутри:
- datasets/ — реальные данные из ERP и CRM
- scripts/ — готовые SQL-скрипты для практики
- docs/ — документация и материалы курса
✅ MIT-лицензия — можно использовать и менять свободно
🌍 Подходит для всех СУБД (PostgreSQL, MySQL и др.)
🎥 К курсу прилагаются видео и гайды от автора
Автор: Data With Baraa — практик и ютубер, собравший в одном месте полный SQL-путь от простого
SELECT
до оптимизации запросов и реальных кейсов. 🔗 Репозиторий здесь: https://github.com/DataWithBaraa/sql-ultimate-course
Сохраняй, проходи и прокачивай SQL 💡
🚀 Микросервисная платформа для страхования
Yosef — это открытая микросервисная платформа для финансовой страховой отрасли, разработанная на .NET, Python, TypeScript и Golang. Она обеспечивает масштабируемость, гибкость и высокую наблюдаемость для современных страховых приложений.
🚀 Основные моменты:
- Микросервисная архитектура для легкости масштабирования
- Централизованное управление идентификацией и доступом
- Полный цикл страхования от оценки до создания полиса
- Высокая наблюдаемость с использованием Grafana и Prometheus
- Интеграция с современными инструментами безопасности
📌 GitHub: https://github.com/elyosemite/Yosef
#csharp
Yosef — это открытая микросервисная платформа для финансовой страховой отрасли, разработанная на .NET, Python, TypeScript и Golang. Она обеспечивает масштабируемость, гибкость и высокую наблюдаемость для современных страховых приложений.
🚀 Основные моменты:
- Микросервисная архитектура для легкости масштабирования
- Централизованное управление идентификацией и доступом
- Полный цикл страхования от оценки до создания полиса
- Высокая наблюдаемость с использованием Grafana и Prometheus
- Интеграция с современными инструментами безопасности
📌 GitHub: https://github.com/elyosemite/Yosef
#csharp
❗️C# вопрос с собеседования: Middle–Senior level
Вопрос: почему возникает предупреждение о возможном null, если
Код:
Компилятор выдет: «Dereference of a possibly null reference» для переменной
Почему так происходит?
• Метод
• Даже если мы отфильтровали это через
• В результате в строке
Как исправить?
1. Добавить
2. Либо использовать оператор
3. Более читаемый вариант — переписать логику так, чтобы работа с
Вопрос для проверки понимания nullable reference types и поведения компилятора при анализе путей выполнения кода.
Вопрос: почему возникает предупреждение о возможном null, если
ProductStock
здесь явно не равен null?Код:
private static IEnumerable<Error> VerifyProductQuantities(
List<ProductStock> products,
Dictionary<string, Domain.Entities.ProductStock> stocks)
{
foreach (var product in products)
{
if (!stocks.TryGetValue(product.ProductName, out var stock))
{
yield return StockErrors.ProductNotFound(product.ProductName);
}
if (stock.AvailableQuantity < product.Quantity)
{
yield return StockErrors.InsufficientStocks(
product.ProductName, product.Quantity, stock.AvailableQuantity);
}
}
}
Компилятор выдет: «Dereference of a possibly null reference» для переменной
stock
.Почему так происходит?
• Метод
TryGetValue
возвращает false
, и тогда stock
остаётся равным null
. • Даже если мы отфильтровали это через
if (!TryGetValue(...))
, компилятор не гарантирует, что в блоке после условия stock
точно не null
. • В результате в строке
if (stock.AvailableQuantity < product.Quantity)
возникает предупреждение. Как исправить?
1. Добавить
continue
после yield return
внутри блока if (!TryGetValue(...))
. Тогда компилятор поймёт, что кода после этой ветки для null
не будет. 2. Либо использовать оператор
!
: if (stock!.AvailableQuantity < product.Quantity)
— но это безопасно только если мы уверены, что значение точно не null. 3. Более читаемый вариант — переписать логику так, чтобы работа с
stock
была строго в ветке, где оно гарантированно задано. Вопрос для проверки понимания nullable reference types и поведения компилятора при анализе путей выполнения кода.
Можно ли использовать string.GetHashCode() в алгоритмах генерации хеша пароля?
#ПятничныйКвиз
#ПятничныйКвиз
Anonymous Quiz
14%
Да, это надёжно как автомат Калашникова
36%
Да, это можно употреблять в пищу, если немного "посолить"
36%
Нет, GetHashCode() возвращает случайное значение
14%
🐧 Часто новички в Linux путаются в терминах: Terminal, Shell, Prompt, Command line.
Разберёмся по порядку 👇
- Terminal — это программа, которая запускает shell. Примеры: Terminator, Konsole.
- Shell — сам интерпретатор команд (bash, zsh, fish и др.).
- Prompt — строка перед тем, как вы начинаете вводить команду (обычно с именем пользователя, директории и т.д.).
- Command line — общее понятие: интерфейс, где можно вводить команды (есть в любой ОС).
🔑 Обычно вы открываете Terminal, видите Prompt, пишете команду — её обрабатывает Shell. Всё просто 😉
Разберёмся по порядку 👇
- Terminal — это программа, которая запускает shell. Примеры: Terminator, Konsole.
- Shell — сам интерпретатор команд (bash, zsh, fish и др.).
- Prompt — строка перед тем, как вы начинаете вводить команду (обычно с именем пользователя, директории и т.д.).
- Command line — общее понятие: интерфейс, где можно вводить команды (есть в любой ОС).
🔑 Обычно вы открываете Terminal, видите Prompt, пишете команду — её обрабатывает Shell. Всё просто 😉
Быстрый поиск подстроки: Кнут–Моррис–Пратт на практике!
Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за линейное время и как «переиспользует» уже найденные совпадения. Покажем, где наивный подход теряет секунды (и деньги), а КМП — нет.
После вебинара вы:
— понимаете префикс-функцию и логику «сдвигов»;
— умеете сравнить наивный поиск и КМП на реальных данных;
— знаете, как внедрить быстрый поиск в проде.
⏰ Урок пройдёт 24 сентября в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных». Всем участникам — персональные условия обучения.
👉 Для участия зарегистрируйтесь:
https://otus.pw/R52E/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за линейное время и как «переиспользует» уже найденные совпадения. Покажем, где наивный подход теряет секунды (и деньги), а КМП — нет.
После вебинара вы:
— понимаете префикс-функцию и логику «сдвигов»;
— умеете сравнить наивный поиск и КМП на реальных данных;
— знаете, как внедрить быстрый поиск в проде.
⏰ Урок пройдёт 24 сентября в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных». Всем участникам — персональные условия обучения.
👉 Для участия зарегистрируйтесь:
https://otus.pw/R52E/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
🚫 EF Core + «репозитории» = лишний слой
Часто советуют заворачивать EF Core в Repository Pattern.
Но на практике это делает код только сложнее:
-
- Репозитории со временем превращаются в «монстров» с десятками методов
- Каждый новый фильтр = новая копипаста
В итоге — абстракция над абстракцией и трудности с поддержкой.
---
✅ Что вместо этого? Specification Pattern
Specification = маленький класс, описывающий правило или фильтр.
Вы комбинируете их и получаете сложные запросы без раздутых репозиториев.
Плюсы:
- 🧩 Простая композиция правил
- 🔍 Ясный и читаемый код
- ♻️ Повторное использование условий
- 🧪 Лёгкое тестирование
📌 Пример
💡 Итог:
EF Core = уже Repository + UoW
Репозитории поверх EF Core → лишняя абстракция
Specification Pattern → гибкость и читаемость без «метод-монстров»
Часто советуют заворачивать EF Core в Repository Pattern.
Но на практике это делает код только сложнее:
-
DbContext
уже реализует Repository и Unit of Work - Репозитории со временем превращаются в «монстров» с десятками методов
- Каждый новый фильтр = новая копипаста
В итоге — абстракция над абстракцией и трудности с поддержкой.
---
✅ Что вместо этого? Specification Pattern
Specification = маленький класс, описывающий правило или фильтр.
Вы комбинируете их и получаете сложные запросы без раздутых репозиториев.
Плюсы:
- 🧩 Простая композиция правил
- 🔍 Ясный и читаемый код
- ♻️ Повторное использование условий
- 🧪 Лёгкое тестирование
📌 Пример
// Бизнес-правило: активные клиенты с заказами за последние 30 дней
public sealed class ActiveCustomersSpec : Specification<Customer>
{
public ActiveCustomersSpec(DateTime since)
{
Criteria = c => c.IsActive && c.Orders.Any(o => o.CreatedAt >= since);
AddInclude(c => c.Orders);
}
}
// Применение
var spec = new ActiveCustomersSpec(DateTime.UtcNow.AddDays(-30));
var customers = await db.Set<Customer>().Apply(spec).ToListAsync();
💡 Итог:
EF Core = уже Repository + UoW
Репозитории поверх EF Core → лишняя абстракция
Specification Pattern → гибкость и читаемость без «метод-монстров»
Forwarded from StepOne | Степан Минин
Serilog.Sinks.XUnit3 👩💻
Пришло время рассказывать про свои библиотеки!
Каждый на работе сталкивался с непонятным багом. Смотришь в код и видишь фигу)
А чтобы разобраться в проблеме надо сидеть часами в медленном отладчике и поднимать ворох окружения, чтобы отследить одно единственное значение...
Логгирование призвано помочь разрабу справиться со страданиями, но вот незадача! При запуске интеграционного теста с воспроизведением бага логи никуда не выводятся.
Поэтому я написал Serilog.Sinks.XUnit3!
Чтобы не выходя из IDE разработчик понимал, что происходит!
Призываю вас делится этой библиотекой и внедрять в свои тесты!
👩💻 GitHub: https://github.com/Stepami/serilog-sinks-xunit-v3
👩💻 NuGet: https://www.nuget.org/packages/Serilog.Sinks.XUnit3
Пришло время рассказывать про свои библиотеки!
Если вы пишете тесты на xUnit.v3 и логгируете через Serilog, то моё решение для вас!
Каждый на работе сталкивался с непонятным багом. Смотришь в код и видишь фигу)
А чтобы разобраться в проблеме надо сидеть часами в медленном отладчике и поднимать ворох окружения, чтобы отследить одно единственное значение...
Логгирование призвано помочь разрабу справиться со страданиями, но вот незадача! При запуске интеграционного теста с воспроизведением бага логи никуда не выводятся.
Поэтому я написал Serilog.Sinks.XUnit3!
Чтобы не выходя из IDE разработчик понимал, что происходит!
Призываю вас делится этой библиотекой и внедрять в свои тесты!
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 TodoList gRPC: Упрощённый бэкенд для собеседований
Этот репозиторий представляет собой облегчённый форк проекта, созданного для проверки навыков кандидатов на собеседованиях. Он предоставляет чистый и компактный бэкенд на основе gRPC и ASP.NET, который используется для создания простого фронтенда, взаимодействующего с API.
🚀 Основные моменты:
- Легковесный бэкенд на C# и ASP.NET Core.
- Использует gRPC для взаимодействия с фронтендом.
- Поддерживает различные клиентские фреймворки.
- Идеален для технических собеседований и оценки навыков.
📌 GitHub: https://github.com/Steffen70/todolist-grpc
@csharp_ci
Этот репозиторий представляет собой облегчённый форк проекта, созданного для проверки навыков кандидатов на собеседованиях. Он предоставляет чистый и компактный бэкенд на основе gRPC и ASP.NET, который используется для создания простого фронтенда, взаимодействующего с API.
🚀 Основные моменты:
- Легковесный бэкенд на C# и ASP.NET Core.
- Использует gRPC для взаимодействия с фронтендом.
- Поддерживает различные клиентские фреймворки.
- Идеален для технических собеседований и оценки навыков.
📌 GitHub: https://github.com/Steffen70/todolist-grpc
@csharp_ci
Оживи робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Tech Champ 2025.
True Tech Champ 2025 — это третий всероссийский чемпионат по программированию от МТС с онлайн-этапами отбора и грандиозным шоу-финалом в Москве.
Тебя ждут два трека — выбирай:
I. Алгоритмический [призовой фонд 2 750 000 рублей].
Если классический олимпиадный формат — твоя стихия, этот трек для тебя. Блесни математическими навыками, покажи скилы в работе со структурами данных и написании алгоритмов — и окажись выше соперников в турнирной таблице.
II. Программирование роботов [призовой фонд 7 500 000 рублей].
Запрограммируй робота на скоростное прохождение лабиринта в симуляторе и пройди в финал. На финале участники встретятся офлайн и сразятся на четырех уровнях с полосой препятствий, вспышками света, лазерами и другими препятствиями.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Подробности на сайте. Регистрация открыта до 20 октября.
True Tech Champ 2025 — это третий всероссийский чемпионат по программированию от МТС с онлайн-этапами отбора и грандиозным шоу-финалом в Москве.
Тебя ждут два трека — выбирай:
I. Алгоритмический [призовой фонд 2 750 000 рублей].
Если классический олимпиадный формат — твоя стихия, этот трек для тебя. Блесни математическими навыками, покажи скилы в работе со структурами данных и написании алгоритмов — и окажись выше соперников в турнирной таблице.
II. Программирование роботов [призовой фонд 7 500 000 рублей].
Запрограммируй робота на скоростное прохождение лабиринта в симуляторе и пройди в финал. На финале участники встретятся офлайн и сразятся на четырех уровнях с полосой препятствий, вспышками света, лазерами и другими препятствиями.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Подробности на сайте. Регистрация открыта до 20 октября.
🚀 Git Pro совет
Хотите быстро узнать, какие файлы менялись чаще всего в репозитории?
Используйте встроенные возможности
💡 Отличный способ найти "проблемные" файлы:
именно они чаще всего требуют правок и могут быть источником багов.
Хотите быстро узнать, какие файлы менялись чаще всего в репозитории?
Используйте встроенные возможности
git log
:
# Топ-10 самых часто меняемых файлов
git log --pretty=format: --name-only | \
sort | uniq -c | sort -nr | head -10
💡 Отличный способ найти "проблемные" файлы:
именно они чаще всего требуют правок и могут быть источником багов.
Что выведет на экран этот код?
Anonymous Quiz
15%
False, False
14%
False, True
30%
True, True
35%
True, False
6%