Обновить
88.77

C# *

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

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

Опыт использования AutoFixture для генерации gRPC сообщений

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

Думаю, большинство читателей согласится, что автоматизированное тестирование - полезный, а во многих областях даже необходимый, этап создания программ. А так как программисты - народ ленивый, то и инструментов, облегчающих этот этап существует немало. Одним из таких инструментов является AutoFixture - средство для генерации тестовых экземпляров. Этот инструмент уже не раз упомянался на Хабре, например тут. Далее я расскажу о том, с какой проблемой столкнулся в попытке применить AutoFixture в своей работе и как решил эту проблему.

Читать далее

Unity3d: Как сделать дверь с полного нуля

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

Начинающий разработчик часто задается вопросом: а как сделана та или иная вещь в игре? Даже на первый взгляд простые вещи такие как дверь вызывают затруднения, поэтому сегодня разберем то, как можно создать автоматизированную дверь в Unity с полного нуля.

Читать далее

Поваренная книга миграции данных между БД или как перенести данные из одной БД в другую с минимальной болью V1.1

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

Одно я могу сказать точно: миграция данных между двумя БД - это одна из, если не самая сложная часть при смене СУБД или схемы базы данных. И что-то мне подсказывает, что Вы не фанат громоздких, чрезвычайно трудно отлаживаемых, SQL конструкций.

Читать далее

Генерация псевдослучайных чисел в программировании. И как у меня псевдо-получилось их сгенерировать

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

Немного о генерации случайных чисел в рамках программирования. Для новичков.

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

Читать далее

Соберёмся? Вторая проверка проекта MSBuild

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

MSBuild – популярная сборочная платформа с открытым исходным кодом от Microsoft, которую используют разработчики по всему миру. В далёком 2016 году мы уже проверяли проект при помощи PVS-Studio и нашли несколько подозрительных мест. Давайте посмотрим, что удалось обнаружить в коде MSBuild при повторной проверке.

Читать далее

Создание графического бота для EVE Online

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели23K

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

Выводить в консоль «Привет, мир!» я уже умел.
Теоретическое представление, что нужно делать, так же имелось.
Оставалось дело за малым - реализовать задумку.

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

Включить варп-двигатель!

Как фидбек помог улучшить наш C++ квиз

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

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


0985_fix_the_quiz_ru/image1.png

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

Первые шаги в Unity с OpenXR

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

Привет! Сегодня мы создадим VR-проект на Unity, работающий по стандарту OpenXR. 

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

Читать далее

Гадание на кишках или визуализация спринтов

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

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

Читать далее

Materialized Path – создаём своё первое дерево

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

Всем привет! Меня зовут Хусрав, я бэкенд разработчик в компании Bimeister.

В этой статье я бы хотел бы поговорить о способе поиска родительских и дочерних элементов структуры посредством PostgreSQL Materialized Path.

Статья является вводной и рассчитана на людей, незнакомых с темой.

Читать далее

Триквел по Orchard Core. Повторная проверка при помощи PVS-Studio

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

В этой статье мы исследуем проект Orchard Core c помощью статического анализатора PVS-Studio и узнаём, так ли привлекателен код платформы, как сайты, созданные на её основе. Итак, пусть поток статического анализа несёт нас вперёд!

Читать далее

Мечтают ли разработчики о декларативных тестах — 2. Особое мнение

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

По непроверенным данным, половина несчастных случаев происходит после слов "смотри, как я умею", другая же половина — после "ерунда, смотри, как надо".

Тут один приятель, увидев фокус с тестами без тестов с использованием обобщенных аттрибутов из preview версии C# и особенностей экосистемы NUnit, отметил, что все сделано транс-ректально, а сам бы он применил Fody, и вышло бы гораздо лучше. Демонстрировать, к сожалению, ничего не стал. А мне вспомнился комментарий к описанию другого преодоления концептуального ограничения языка. Тогда руки не дошли попробовать, а сейчас вот решил глянуть, что это за птица, и проверить, поможет ли она написать более элегантное решение.

Читать далее

Две главные ошибки при использовании MediatR

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

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

Читать далее

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

Приглашаем на C# Meetup: обсудим дилемму кота Матроскина

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

UPD: Добавили запись

Меня зовут Дима Орлов, я руковожу группой разработки «Путь закупки» и пишу на C# больше 10 лет. Приглашаем на митап, посвященный C# — одному из основных языков, используемых в Ozon. У нас сотни микросервисов на C#, обеспечивающих работу сайта, склада, систем логистики и платформы собственных продаж. Работают над этим более 500 С#-разработчиков, готовых погружаться в business-critical проекты.

Поговорим о наших проектах подробнее:

— О наборе микросервисов «Потребность». Каждый день по набору товаров (±300к) он считает, сколько, на какой склад и у кого закупить товары. По технической части сконцентрируемся на Kafka, компонентном подходе, сериализации правил.

— О том, как мы с помощью SourceGenerator избавились от конфликтов версий пакетов при распространении клиентов для веб-сервисов и начали экономить время и силы на написании однотипного кода.

Подробнее под катом

Discriminated Unions в C#

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

Всем привет. Среди многих интересных концепций, имеющихся в F#, меня привлекли Discriminated Unions. Я задался вопросом, как их реализовать в C#, ведь в нем отсутствует поддержка (синтаксическая) типов объединений, и я решил найти способ их имитации.

Discriminated Unions - тип данных, представляющий собой размеченные объединения, каждый из которых может состоять из собственных типов данных (также именованных).

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

Для создания своих Discriminated Unions будем использовать эту мысль

Читать далее

Как я «дебажил» простенькую игру, но обнаружил кое-что еще

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

Речь идет о обычной "Змейке", написанной на C# и запускаемая в консоли. Во время игры рядом с "едой" после того как нажмешь кнопку управления змейкой, появлялся символ "а", которого в исходном коде просто не могло быть, поэтому мне и захотелось разобраться почему так происходит и как это можно починить:

Читать далее

Мне бы только инструменты… Или как мы реализовали сервис обработки логов печати

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

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

Сначала это выглядело как разовая задача: есть excel-файл со списком «табельный номер — имя пользователя», необходимо собрать логи и предоставить суммарную статистику по печати за месяц с разбивкой по городам. Однако, когда приступили к реализации, поняли, что все не так-то просто, как казалось и начали думать над отдельным сервером и сайтом. Взяли .NET 6, Blazor, немного PowerShell, WMI и sqlite. Что же получилось из этого «винегрета»? Читайте ниже.

Читать далее

Доступ к API Binance, KuCoin и Huobi на C#

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


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

Рассмотрим одну из таких ситуаций, когда получать данные на клиента напрямую с биржи не удобно, в нашем случае это получение списка торговых пар биржи отсортированных по таким показателям как например, ликвидность и волатильность. Вот в примере ниже, мы из клиентского кода на JavaScript обращаемся за списком продуктов биржи к своему Rest full API Web Service по ссылке

https://cryptoalert.mizerov.com/api/Products/” + ex

где ex – код биржи.

Читать далее

SophiApp, или Как мы делали опенсорс программу для настройки Windows 10 & 11

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

Я от лица команды хочу показать вам SophiApp — графический наследник Sophia Script for Windows: бесплатная, портативная и полностью опенсорная программа для тонкой настройки Windows 10 и Windows 11.

В этой статье я расскажу, как оброненная мной фраза в комментарии 3 года назад под моей статьей из цикла про тонкую настройку Windows развернула мою жизнь на 180°, а чуть позже — и еще одного человека.

Все это время у меня была идея сделать графическую версию моего модуля на PowerShell, чтобы показать пользователям, каким должен быть современный твикер для Windows, какие функции может в себе нести, а главное — посыл программы: настроить (а не оптимизировать) ОС официальным образом, задокументированным Microsoft, ничего не сломав и не обещая мнимое увеличение производительности, чем грешат аналогичные программы, целенаправленно вводя пользователей в заблуждение.

Читать далее

Как химику-1С-нику найти работу в Европе с релокацией. Пьеса в четырех действиях

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

Как 1С-нику найти работу в Европе с релокацией? Примерно таким вопросом я безуспешно пытал гугл примерно полтора года назад, когда мы с женой вдруг поняли, что переедем жить в Европу (не просто хотим переехать, а точно переедем). Ну, то есть, первой это поняла жена, а я уже следом за ней. Уверенность довольно удивительная, с учётом того, что стартовые позиции были весьма посредственными. Итак, действующие лица пьесы: я, жена, ребенок и кошка. Представление начинается.

Читать далее

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