Обновить
88.77

C# *

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

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

Мечтают ли разработчики о декларативных тестах

Время на прочтение21 мин
Охват и читатели3K
image
Завершение работы над прошлой публикацией (читать которую для понимания этой совсем не обязательно) принесло мне не мир, но меч мечту о мире. Мире, в котором можно писать более выразительные строго типизированные тесты и вместо

[TestCase(typeof(Impl), "command")]
public void Test(Type impl, string cmd) =>
    ((I)Activator.CreateInstance(impl)).Do(cmd);

использовать

[TestCase<Impl>("command")]
public void Test<TImpl>(string cmd) where TImpl : I, new() =>
    new TImpl().Do(cmd);

И он оказался ближе, чем я мог подумать. А дальше пошло-поехало…
Читать дальше →

Программа 3DL — справочник 3D печатника (версия: 1.05)

Время на прочтение2 мин
Охват и читатели3.1K

Программа 3DL - справочник 3D печатника (версия: 1.05) - предназначена для ведения справочника, сравнения и использования параметров печати 3D нитей (филаментов) различных производителей и полезна для людей использующих/тестирующих большое количество филаментов.

Поинтересоваться

Способы сохранения промежуточных состояний системы при автоматизированном тестировании

Время на прочтение8 мин
Охват и читатели2.4K

Ваше ПО проходит путь от MVP до Enterprise платформы? Атомарных тест-кейсов (ТК) оказывается слишком много, их поддержка становится дорогой с точки зрения времени и ресурсов? Возможное решение  — объединять несколько близких ТК в один и автоматизировать результат. В свою очередь, автоматизация обобщенного ТК невозможна без сохранения промежуточных состояний.

Под катом рассмотрим способы сохранения промежуточных состояний и проверим каждый из них на соответствие «лучшим практикам» автотестирования.

Читать далее

Unity: Что представляет из себя Coroutine и зачем там IEnumerator

Время на прочтение5 мин
Охват и читатели36K

Название статьи - это вопрос, который мне задали на собеседовании на позицию Middle. В этой статье мы расмотри корутины в Unity, что они из себя представляют, и заодно захватим тему Enumerator\Enumerable в С# и небольшую тайну foreach. Статья должна быть очень полезной для начинающих и интересной для разработчиков с опытом.

Читать далее

Xamarin.Forms: Кастомные пины для xamarin.maps

Время на прочтение11 мин
Охват и читатели1.8K

В этой статья мы рассмотри пример реализации кастомных пинов для карты xamarin. Пины будут обладать тем видом, который вам нужен. Так же мы рассмотрим часть кода xamarin.maps, отвечающий за создание, отрисовку и отображение пинов.

Читать далее

*Нет связи*: эмулятор Сферы, часть 2

Время на прочтение14 мин
Охват и читатели4.1K

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

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

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

Читать далее

Добавляем поддержку Markdown в ASP.NET Core приложение. Часть 1

Время на прочтение11 мин
Охват и читатели6.5K

Последние несколько лет ознаменовали становление Markdown в качестве общепринятого языка разметки HTML-текста. Он становится доступным во все большем количестве мест и фактически уже стал стандартом для документации, которая публикуется и редактируется в интернете. Если вы работаете с Git и GitHub, то вы уже используете Markdown для форматирования README.md и, вероятно, всей остальной документации, которую вы пишете для своих проектов, связанных с разработкой программного обеспечения. Большая часть документации для разработчиков, которую вы сегодня можете найти в интернете, будь то коммерческая документация от таких компаний, как Microsoft, Google и т. д., или типовые решения для документации наподобие ReadTheDocs или KavaDocs, — создается и поддерживается с помощью Markdown.

Читать далее

Unity: Небольшой скрипт = все ориентации экрана

Время на прочтение6 мин
Охват и читатели6.5K

Хватит блокировать вертикальную или горизонтальную ориентацию экрана в своих проектах на Unity! В этой статье мы рассмотрим небольшой скрипт, который я использовал в своем проекте.

Читать далее

Анализ потока данных PVS-Studio распутывает всё больше связанных переменных

Время на прочтение11 мин
Охват и читатели1.7K

Это вторая статья про связанные переменные и их поддержку в PVS-Studio. В этот раз мы расскажем об улучшении созданного механизма, разберём примеры из реальных проектов и увидим, какие проблемы пользователей анализатора это решает.

Читать далее

Как мы на хакатоне написали простой инструмент для интеграционного тестирования

Время на прочтение3 мин
Охват и читатели2K

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

Читать далее

Кривые и что это такое ч.3

Время на прочтение6 мин
Охват и читатели3K

Всем привет!
Как и понятное по заголовку, это продолжение предыдущей статьи с той же темой, но теперь мы будем рассматривать аппроксимационные кривые.

Читать далее

Зачем разработчикам Discord.NET нужен статический анализатор?

Время на прочтение8 мин
Охват и читатели4.5K

Discord.NET – библиотека, написанная на C#, которая используется для взаимодействия с Discord API. Сможет ли PVS-Studio помочь её разработчикам? Узнаете в статье!

Читать далее

Building generator in Unity

Время на прочтение12 мин
Охват и читатели8.8K

Генератор зданий в Юнити

В данной статье описан процесс создания генератора зданий внутри Юнити с объяснением логики и примером подходящих моделей.

Читать далее

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

Ужасный %s, известный своими бесчинствами: эмулятор Сферы, часть 1

Время на прочтение11 мин
Охват и читатели7.5K

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

Прошло лет 20 с выхода “первой русской ММОРПГ” Сферы, большинство ресурсов мертвы, база данных по игре доступна только частями в вебархиве, форумы закрыты, онлайн полтора человека. Самое время разбираться, как она устроена, правда?

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

Читать далее

Как написать игру на Monogame, не привлекая внимания санитаров. Часть 3, уменьшаем энтропию

Время на прочтение9 мин
Охват и читатели2.7K

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

Читать далее

Описание библиотек логирования

Время на прочтение8 мин
Охват и читатели9.7K

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

Реализация собственных библиотек не занимает большого количества времени. Но данные решения будут малофункциональными и могут быть недотестированными. Поэтому разработчики используют готовые решения по управлению и записи логов во время работы программы.

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

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

В данной статье представлен обзор трех наиболее популярных библиотек логирования: Log4Net, SeriLog, NLog.

Читать далее

Краткое описание терминов С#

Время на прочтение17 мин
Охват и читатели31K

Здесь можно найти ответы (в виде описания терминов) на вопросы в этой статье, к вакансии Unity мидл программист. Или попросту узнать что-нибудь новенькое. Статья будет постепенно дополнятся (возможно простейшими примерами).

Изучать

Представляем Entity Framework Core 7 Preview 6: Улучшение производительности

Время на прочтение19 мин
Охват и читатели7.1K

Пакет Entity Framework 7 (EF7) Preview 6 опубликован и доступен для загрузки через nuget.org (в конце поста есть ссылки на индивидуальные компоненты пакета). Этот пост блога раскрывает реализованные в пакете улучшения, направленные на увеличение производительности [запросов]; полный перечень изменений EF7 Preview 6 доступен на этой странице.

Читать далее

Немножко кодгена

Время на прочтение5 мин
Охват и читатели12K

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

Читать далее

Создание и запуск веб-приложения в ASP.NET Core

Время на прочтение30 мин
Охват и читатели19K


Эта статья является продолжением двух предыдущих занудных статей под общим заголовком "О классах Program и Startup — инициализация ASP.NET приложения": "Program и IHostBuilder"[1] и "IWebHostBuilder и Startup"[2] — в которых подробно написано о том, что происходит в процессе инициализации приложения ASP.NET, сделанного по шаблону Generic Host. В тех двух статьях я рассказывал, как производится настройка и выполняется создание объектов конфигурации (она доступна через интерфейс IConfiguration), контейнера сервисов (он же DI-контейнер, его интерфейс — IServiceProvider) и размещения (интерфейс IHost). А в этой статье я собираюсь подробно рассказать, что происходит сразу после того, как приложение запускается на выполнение в объекте размещения.
Написав третью статью на примерно одну и ту же тему, я подумал, что и первые две, и эта должны стать частью одной серии, которую я для себя озаглавил "Под капотом" (см. КДПВ)


Предупреждение: статья занудная

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


TLDR, она же аннотация
  1. Запуск приложения, состоящего из размещенных (фоновых) сервисов в Generic Host (конструктор класса Internal.Host и его метод StartAsync).
  2. Запуск размещенного сервиса веб-приложения (Конструктор класса GenericWebHostedService и его метод StartAsync)
  3. Создание конвейера компонентов-обработчиков запроса(middleware). Класс ApplicationBuilder.
  4. Заключение

Но если вам все ещё интересно (или не интересно, но читать все равно зачем-то надо) — добро пожаловать под кат (и не говорите, что я вас не предупреждал, что легкого чтения не будет).

Читать дальше →

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