Как стать автором
Поиск
Написать публикацию
Обновить
81.56

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Простыми словами для начинающих Unity-разработчиков учим принципы KISS, DRY, YAGNI и BDUF через аналогии из жизни

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.7K

Большинство статей о принципах разработки написаны сложным языком и отпугивают новичков. В этом материале KISS, DRY, YAGNI и BDUF объясняются через бытовые аналогии с примерами на Unity C#. Плюс рассказываем, когда эти принципы стоит нарушать.

Читать далее

Новости

Кастомизируем xUnit: feature-toggles или API тесты не для всех (конечных точек)

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров898

У вас в проекте появились feature‑toggles, а API тесты никто не отменял?

В статье рассматривается практический пример кастомизации тестового фреймворка xUnit для написания API тестов с учётом feature‑toggles в условиях их конфликтующих состояний.

Материал может представлять интерес для инженеров, связанных с разработкой и тестированием серверной части программного обеспечения.

Читать далее

Автоматическая регистрация в контейнере по атрибутам — теперь с IServiceCollection и тестами

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.1K

Я сделал простейшую утилиту для регистрации в контейнере по атрибутам на интерфейсе\реализации. Добавил тесты а так же поддержку IServiceCollection.

Читать далее

Как просто сделать линейку с помощью своей камеры?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.1K

Нет, эта статья не является гайдом, как разобрать свою вебку или хороший фотоаппарат ради создания измерительного прибора. Сегодня мы поговорим про компьютерное зрение! И о том, как всего за пару десятков строк кода можно получить измерения объектов прямо с изображения. Просто, понятно и работает.

А что дальше?

Симуляция экосистемы с элементами ИИ

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров910

Собственная экосистема на твоем компьютере? Без проблем! А если добавить туда животных с примитивным ИИ, которые учатся, выживают и принимают решения сами?

А что же дальше?

Я у мамы программист, а не маркетолог: как я пытался продвинуть своего бота

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5K

Вы когда-нибудь пытались собрать друзей на вечер настолок, но в итоге кто-то забыл, кто-то перепутал время, а кто-то вообще не пришёл? Я - да. И, как программист, я сделал то, что умею лучше всего - написал бота, который решает эту проблему. А потом понял, что писать код было проще, чем заставить людей им пользоваться.

На хабре за последний месяц я написал несколько статей и постов о своём пет проекте. Если коротко, то это бот, которым может вам поддерживать расписание ваших игровых сессий с друзьями. Можно создавать группы, записывать на определённое время и потом бот будет кидать в оповещения о том, что скоро игра. Можно использовать как для компьютерных, так и для настольных игр.

И вот сегодня число пользователей дошло до 300, а количество групп выросло до 100 (на самом деле 98) и я хотел бы подвести некоторый итог по проекту. Плюс я пару дней назад выпустил обновление, в котором закончил все фичи, которые задумывал и бот переходит в режим поддержки. Если что я его не отключаю, будет работать, но об этом в конце.

Читать далее

Игры для обучения программированию и разработки собственных модификаций

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.1K

За последние годы я все чаще замечаю, как игры становятся не просто развлечением, а инструментом обучения и старта в разработке. Некоторые из них дают возможность глубоко погрузиться в алгоритмы, работу кода, а также в процесс создания собственных игровых модификаций. В этой статье я постарался собрать игры, которые действительно стоит рассмотреть тем, кто хочет развивать навыки программирования или пробовать себя в геймдеве через практику.

Также прошу обратить внимание, что это обзорная статья, в которой я собрал игры и проекты, полезные для обучения программированию и практики разработки. Здесь указаны названия, ключевые особенности и то, какие языки программирования или навыки они позволяют отрабатывать.

Если вас заинтересует какая-то игра более детально - например, с техническим разбором, установкой, интеграцией скриптов или примерами кода - напишите об этом в комментариях. При наличии интереса и возможности подготовлю отдельный материал по каждой из таких игр.

Рассмотреть я предлагаю вопрос с двух сторон:
В первой части поговорим об играх которые подойдут для обучения программированию и вводу в ИТ сферу за счет своей сюжетной линии/процесса прохождения игры.

Во второй части поговорим об играх, которые на мой взгляд больше всего развиты и походят для создания собственных модификаций внутри уже готовой платформы. (Т.Е. Разработки плагинов и собственных доработок)

Читать далее

Throw — это новый goto

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров32K

Помните ли вы о существовании goto?

Все его ненавидят, не исключая того, что найдётся пара случаев, когда он действительно упростит жизнь. Например, выход и множества вложенных циклов,. Оставим за скобками то, почему вообще это произошло.

Но почему-то я не встречал никакого негатива насчёт throw. А ведь это точно такая же фигня, если даже не хуже.

Читать далее

Stonks или not stonks. Проверка исходного кода трейдерского движка Lean

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров1.7K

В наше время многие интересуются биржами, акциями, облигациями, а некоторые даже имеют свои портфели (речь не про школьников). Существует множество технологий и инструментов для автоматизации торговли. А теперь представьте, к каким убыткам могут привести ошибки в исходном коде такого программного обеспечения. Поэтому давайте посмотрим на потенциальные ошибки в популярном торговом движке Lean.

Читать далее

Три ошибки в C#, которые лучше не допускать

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров9.5K

Привет, Хабр!

Сегодня мы рассмотрим три самые коварные ошибки, которые регулярно просачиваются даже в продовые C#-проекты. Разберёмся, как они рождаются, почему остаются незамеченными и что нужно сделать, чтобы больше никогда не ловить эти проблемы.

Читать далее

Как я добавлял таймзоны в своего бота (и выжил)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров770

Я ненавижу работать с часовыми поясами. Такое себе откровение, мне кажется это бесит любого человека, который имел работу с пользователями в нескольких часовых поясах.

Мне кажется в аду есть специальный котёл, где грешникам нужно высчитывать время по разным часовым поясам на границы перехода дней.

Читать далее

C#, Кодогенерация и DDD Часть 3.2 — Добавляем шины, обработчики сообщений и реализацию обработчиков сообщений

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров2.5K

В прошлой статье мы сгенерировали Enpoint-ы WebApi по описанию на основе классов, свойств и атрибутов.

(первая часть, вторая часть, третья часть, четвертая часть)

В этой статье мы добавим генерацию абстракций EventHandler-ов, работающих с шиной, саму шину, реализацию EventHandler-ов для MassTransit, узнаем во сколько раз больше мы генерируем, чем пишем (на этот раз без ошибки).

Читать далее

На защите GameDev'a: статический анализ и Unity

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.2K

Геймдев на пике развития, но создаётся ощущение, что игры не становятся лучше. Проблемы с производительностью, баги, вылеты — лишь вершина айсберга. Самый эффективный способ борьбы — выявлять проблемы ещё до их появления, прямо в коде на этапе разработки, не дожидаясь тестирования. В статье поговорим о том, как именно статический анализ может помочь с этим.

Читать далее

Ближайшие события

Expression: всё что нужно для старта

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров2K

Если поискать по Хабру статьи, связанные с Expression, то можно найти несколько десятков страниц статей. Однако, я решил написать еще одну. Цель с которой я решил это сделать‑ разобрать деревья выражений для разработчиков которые еще не имели с ними дела. Для тех кому это кажется магией. И самое главное, показать для чего они могут пригодиться.

Что же далее...

Валидация Delegate-регистраций в DI-контейнере

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров921

Использование DI-контейнеров часто приводит к появлению неприятных ошибок в рантайме. В таких случаях хочется, чтобы контейнер умел находить проблемы и уведомлять о них в момент сборки. 

С проверкой регистраций, добавленных через рефлексию, все довольно просто, и некоторые контейнеры даже предоставляют такой функционал из коробки. Но вот что делать с регистрациями-делегатами сходу неясно и даже может показаться, что от ошибок резолва сервисов внутри делегатов никуда не деться.

В статье на примере Autofac посмотрим, как устроены регистрации-делегаты, и научимся находить в них ошибки до того, как контейнер начнет использоваться приложением. По ходу дела вспомним, как работают замыкания в C# и как размещаются в памяти анонимные делегаты, а также рассмотрим способ анализа MSIL-инструкций в процессе выполнения программы.

Читать далее

Окно в терминальной стадии

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.3K

Что нужно для взаимодействия с операционной системой исключительно через клавиатуру? Это вопрос, на который каждый разработчик даст свой ответ, и как на него ответили Microsoft, выпустив Windows Terminal?

Читать далее

DAX-style подход в C# для SUMMARIZECOLUMNS из Power BI

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.3K

Привет, Хабр! Одной из важных функций в аналитическом языке DAX является SUMMARIZECOLUMNS, т.к. она готовит данные для дашбордов за счет декартова произведения полей группировки, если поля группировки из разных таблиц. Понятно, что на любом языке программирования можно реализовать логику, в чем-то аналогичную SUMMARIZECOLUMNS из DAX. Интересующимся DAX-style логикой для C# из NuGet пакета DaxSharp для функцииSUMMARIZECOLUMNS — добро пожаловать под кат :)

Читать далее

C#, Логи которые пишут себя сами, 1

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.1K

Всем привет.

Пару лет назад мне пришлось заняться интеграцией СБП с АБС банка, писать надо было на C#. Первое о чём я подумал, конечно, это было логирование. Писать логи руками это конечно не мой выбор. Конечно хотелось чтобы при вызове метода в логи записывались его входные аргументы и выходные результаты и конечно эксепшены.

В C#, на тот момент (конец 2023 года), для этого надо было делать обёртку над классом, пример обёртки я приведу ниже.

Читать далее

Алгоритм проталкивания предпотока: как найти максимальный поток в сети (для начинающих)

Время на прочтение8 мин
Количество просмотров2.1K

Привет, будущие инженеры и программисты! Сегодня мы разберём ещё один крутой алгоритм для поиска максимального потока — алгоритм проталкивания предпотока (Push‑Relabel). Если алгоритм Форда‑Фалкерсона — это как если бы вы искали дорогу в городе с фонариком, а алгоритм Диница — как если бы вы строили уровни и шли по ним этажами, то проталкивание предпотока — это как если бы вы взяли гидравлический домкрат и начали «выдавливать» воду из источника!

Представьте, что у вас есть система водопроводных труб, и вы хотите прокачать максимальное количество воды из водонапорной башни в городской район. Но вместо того чтобы искать пути и аккуратно направлять воду, вы решили действовать по‑другому: накачать воду под давлением в башню и позволить ей «выдавливаться» через трубы, постепенно находя оптимальные пути. Это и есть идея алгоритма проталкивания предпотока!

Читать далее

Книга: «.NET 8: приложения и сервисы. Практика создания проектов с использованием Blazor, .NET MAUI, gRPC, GraphQL.»

Время на прочтение9 мин
Количество просмотров3.8K

Привет, Харборожители! У нас есть для вас новое издание книги «.NET 8: приложения и сервисы» вы сможете поднять свои навыки владения C# и .NET на новый уровень.

В книге описаны практические приемы использования различных технологий, включая Web API, gRPC, GraphQL и SignalR, что выделяет ее среди других источников. Она познакомит вас с новой унифицированной моделью Blazor Full Stack и расскажет, как использовать .NET MAUI для разработки мобильных и десктопных приложений.

В новом издании представлены последние достижения, включая бесшовную реализацию веб-сервисов со встроенной поддержкой Ahead-of-Time (AOT) ADO. NET SqlClient. Помимо других популярных библиотек, в книге рассматриваются Humanizer и Noda Time. Совершенно новая глава расскажет об архитектуре, кэшировании, организации очередей и приемах построения надежных фоновых сервисов.

Читать далее
1
23 ...

Вклад авторов