Обновить
129.69

C# *

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

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

Клятва на крови: контрактные тесты с Pact в .NET. Часть первая

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

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

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

Есть ли способ зафиксировать контракт, обеспечить его неизменяемость и сделать результаты тестирования наглядными для всех участников взаимодействия? Да, библиотека Pact позволяет писать кроссплатформенные контрактные тесты, в результатах которых заинтересованы сразу несколько систем.

Читать далее

Разработка сервиса для публикации препринтов. Архитектурный подход

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

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

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

С исходниками проекта также можно ознакомиться на GitHub.

Читать далее

Фреймворк DBGridChart и OLAP-приложение Экспресс_обработка.exe для ведения баз данных и анализа данных

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

В статье рассматриваются назначение, основные особенности и возможности Фреймворка “DBGridChart”  и OLAP – приложения “Экспресс_обработка.exe” (разработчик – Плещев В.В., http://vipuskniki.usue.ru/Docum.html - DLL, исходные тексты, описание и демонстрационные примеры).

Фреймворк ориентирован на автоматизацию разработки программ на C# по формированию входных табличных и ленточных документов для ведения баз данных c СУБД SQL Server, PostgeSQL, MySQL, Access  в режиме непостоянного соединения ADO .NET и немедленного (без промежуточного накопления изменений) добавления, удаления или изменения записей с соблюдением целостности базы данных, а также для формирования заранее нерегламентированных аналитических таблиц и диаграмм для анализа данных, по унифицированной технологии (с использованием управляющих элементов  dataGridView и Chart в C#) с много функциональным, унифицированным, адаптивным и комфортным для пользователей готовым интерфейсом.

OLAP-приложение  “Экспресс_обработка.exe” позволяет: вынести описания запросов  Select из исходных текстов программ в отдельный текстовый файл, что исключает необходимость в разработке оригинальных программ для ведения баз данных с различными СУБД и формирования аналитических таблиц и диаграмм. Для формирования запросов разработан специальный визуальный конструктор.

Информация о таблицах, запросах Select и их полях берется автоматически конструктором из базы данных. Не выходя из приложения, пользователь может оперативно визуальным конструктором запросов формировать, сохранять и использовать запросы  для анализа данных и ведения базы данных. Само приложение реализовано средствами Фреймворка “DBGridChart”. 

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

Читать далее

KatWalk C2: ч2, подслушаем, подсмотрим и разнюхаем или как общаться с незнакомым железом на незнакомом языке

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

В прошлой статье я рассказал что это за платформа, и показал как можно получить данные с неё и как встроить код в стороннее приложение.

Однако, получение данных требует постоянно висящего приложения (на C#), и надо понять что же конкретно оно делает.

Давайте разберёмся как общаться с железом и избавимся от балласта!.. Переписав на Kotlin. Почему Kotlin? Потому что я на нем никогда еще не писал.

Погружаемся

Обзор библиотеки FluentValidation. Часть 2. Коллекции

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

Способы описания правил валидаций для элементов коллекций.

Метод RuleForEach

Комбинация методов RuleForEach + ChildRules

Комбинация методов RuleFor + ForEach

Пройти валидацию

Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await

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

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

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

Читать далее

Как я участвовал в геймджеме | Pixel New Year Jam

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

Если тебе удобнее смотреть видео, то вот.

А это то же видео, только в текстовом формате, что кому-то может быть удобнее.

Читать далее

Включаем Nullable reference types в Unity за несколько минут

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

? Что такое Nullable reference types?

Nullable reference types явным образом указывает, должна ли переменная содержать значение или может отсутсвовать.

Читать далее

Недооцененный паттерн «Спецификация» в связке с паттерном «Репозиторий»

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

Использование спецификации открыло для меня новый мир в создании приложений.

Репозитории предоставляют удобное решение для доступа к данным.

Однако за многолетний опыт разработки, побывав в нескольких компаниях, сменив кучу проектов я НЕ ВСТРЕЧАЛ паттерн "Спецификация" совместно с паттерном "Репозиторий".

Читать далее

EF Core. Как 1 строчка может добавить x4 к быстродействию запросов к БД?

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

Многие, кто использует EF Core в работе в качестве ORM (Object-Relational Mapping) встречаются с множеством прелестей этого инструмента.

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

Читать далее

Дизайним абилки как в X-COM

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

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

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

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

Узнать как

Особенности национальной автоматизации

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

Так сложилось, что я на данный момент работаю автоматизатором тестирования, до недавнего момента моим основным стеком в работе был C# + Selenium 3, однако не так давно было принято решение о переходе на Playwright и в данной статье я решил рассказать о своем опыте перехода с Selenium на Playwright и о том с каким трудностями и подводными камнями я столкнулся во время данного перехода.

Читать полностью

Преимущества функционального программирования на примерах C#

Время на прочтение7 мин
Количество просмотров8.3K
Функциональное программирование (ФП) — это парадигма, в которой упор делается на использование функций для решения задач, а не на состояние и изменяемые данные. В последние годы ФП завоевало популярность среди разработчиков благодаря многочисленным преимуществам, которые позволяют использовать его для разработки сложных систем. В этой статье мы расскажем о преимуществах функционального программирования и о том, почему вам стоит рассмотреть возможность его использования в вашем следующем проекте.
Читать дальше →

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

JsonProperty.EFCore: Упрощаем работу с JSON-полями в Entity Framework Core

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

Иногда перед разработчиками встает задача использования JSON-полей в Entity Framework Core. Традиционный подход с использованием Fluent API требует написания дополнительного кода, что может усложнить проект. Пакет JsonProperty.EFCore решает эту проблему. Эта статья расскажет о пользе JsonProperty.EFCore и о том, как он упрощает работу с JSON-полями, что делает его удобным инструментом для разработчиков.

Читать далее

Сказ о том, как мы игру в команде делали

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

Сказ о том, как мы игру в команде делали

Меня зовут Юрий, недавно мне исполнилось 17 лет, и я программист. В основном делаю Windows Forms приложения (C#). С марта 2022 года я активно начал заниматься программированием, сначала на PascalABC.NET, а затем перешёл на C# в августе того же года...

Читать далее

TDD и unit тесты: не сотвори себе монолит

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

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

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

Посмотреть код

Опыт интеграции .NET Core+ приложений с HashiCorp Vault

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

Привет, Хабр! В этой статье я хотел бы поделиться опытом нашей команды в части интеграции .NET Core и выше приложений с корпоративным хранилищем секретов HashiCorp Vault.

Наши приложения, как и большинство приложений в компании, используют в процессе работы различные секреты (пароли, токены и т.д.). Их, с точки зрения информационной безопасности, нельзя хранить в коде или на компьютере, на котором запущено приложение. Поэтому в компании используется специальное ПО – хранилище секретов HashiCorp Vault.

В чем суть проблемы, с которой мы столкнулись: решение, используемое ранее для получения секретов из HashiCorp Vault в приложение, было не очень удобным и очевидным

Читать далее

Бенчмаркая Capacity 18 коллекций: как быстрей?

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

Уважаемые читатели, в этой статье я хочу рассказать о тесте 18 коллекций с и без capacity и поставить точку в данном вопросе. Тесты сделаны на .net 7 с использованием BenchmarkDotNet и представлен полный код для повторения. Базовые значения 1000 и 10_000.

В данной статье не буду сильно углубляться в коллекции, но немного напишу, что да как.

Основная цель понять, насколько важно задавать начальную емкость, даже примерно и насколько все страдает, если так не делать. Сразу отмечу, что на подавляющем большинстве увиденного мною кода практически всегда не задается capacity.

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

Да, не всегда важно, согласен, но секунда дела и улучшить памяти и скорость, чем плохо?

Кратко о коллекциях, где емкость не задается:

Читать далее

Enterprise проекты: что нужно знать разработчику?

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

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

Читать далее

Avalonia и котики и дизайн для разработчика

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

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

Итак, у нас стоит задача: создать десктопный чат с GTP3, которым будет удобно пользоваться человеку, далекому от пк.

Читать далее

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