Как стать автором
Обновить
63.79

C# *

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

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

Заменяем события C# на Reactive Extensions с помощью кодогенерации

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

Недавно прошла приуроченная к выходу .NET 5 конференция .NETConf 2020. На которой один из докладчиков рассказывал про C# Source Generators. Поискав на youtube нашел еще неплохое видео по этой теме. Советую их посмотреть. В них показывается как во время написания кода разработчиком, генерируется код, а InteliSense тут же подхватывает сгенерированный код, предлагает сгенерированные методы и свойства, а компилятор не ругается на их отсутствие. На мой взгляд, это хорошая возможность для расширения возможностей языка и я попробую это продемонстрировать.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии13

3 года Q#. Что уже сделано и что дальше

Время на прочтение3 мин
Количество просмотров5.4K
2020 год был непохожим на другие. В жизни преобладали вирус COVID-19 и меры, принятые во всем мире для сдерживания его распространения. Я и вся команда Microsoft Quantum надеемся, что вы и ваши близкие благополучно переживают пандемию, и желаем вам дальнейшего здоровья и безопасности в наступающем году.

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

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

Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии0

Рост 100% в год и 400 тыс. RPM. Эволюция разработки 2018—2020: процессы, люди, техника и планы

Время на прочтение8 мин
Количество просмотров2.4K
Mindbox — два миллиона строк кода b2b бизнес-логики под нагрузкой. Наши продукты: CDP, программа лояльности, персонализация сайта, транзакционные и массовые рассылки — критичные по надежности и скорости работы элементы инфраструктуры бизнеса.

Тринадцать лет мы ищем способы масштабировать разработку, чтобы при росте всё работало надежно и, при этом, быстро выпускались новые фичи. Когда-то важным казалось легко переименовывать колонки в БД. Теперь — пришлось менять всю архитектуру на ходу.

Это — третий ежегодный пост про разработку по итогам черной пятницы — недели максимальной нагрузки. Почему наконец думаем, что мы молодцы; что для этого сделали; почему столкнулись с трудностями и что планируем делать дальше.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии8

Авторизация из приложения C# на портале BlaBlaCar.ru

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

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

Читать далее
Всего голосов 14: ↑9 и ↓5+4
Комментарии5

Истории

UiPath release notes: последние апдейты и акцент на работе в облаках

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

Big idea компании UiPath, которую она стремилась воплотить в последнем релизе — обеспечить с помощью линейки своих продуктов полную автоматизацию предприятия. На основе отзывов пользователей был сделан акцент на использовании SaaS-модели при работе с софтом UiPath. Эти изменения теперь можно увидеть в последнем апдейте платформы 20.10.

В последней версии было значительно улучшено программное обеспечение UiPath Studio — используемое для создания алгоритма действий индивидуальных RPA-ботов на основе последовательности действий в процессах компании. Релиз будет интересен всем, кто работает с платформой UiPath и использует продукты компании для автоматизации и роботизации различных бизнес-процессов.
Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии2

Сравниваем производительность C# и C++ в задачах обработки изображений

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

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

Однако, в последние годы эффективность JIT-компилятора заметно возросла, да и в сам фреймворк завезли ряд полезных фишек, например, интринсики.

И вот стало мне интересно: а можно ли в 2020 году, используя .NET 5.0, написать код, который бы не сильно уступал по производительности C++? Оказалось, что можно.

Читать далее
Всего голосов 28: ↑26 и ↓2+24
Комментарии43

Вышел .NET 5. И что?

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

Несколько недель назад вышел .NET 5. На сайте Microsoft можно найти подробный анонс со всеми изменениями, но главный вопрос для меня, как для разработчика — и что с того? Что мне с выхода пятого дотнета, как я могу его использовать, есть ли смысл переходить на новую версию прямо сейчас? На эти вопросы я постараюсь ответить дальше.


image

Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии102

Как статический анализ кода помогает в сфере GameDev

Время на прочтение8 мин
Количество просмотров3.4K
image1.png

Игровая индустрия не стоит на месте и с каждым днём развивается всё быстрее и быстрее. Вместе с ростом индустрии растёт и сложность разработки: кода становится больше и багов в нём тоже становится больше. Поэтому современные игровые проекты нуждаются в особом внимании к качеству кода. Сегодня мы расскажем об одном из способов сделать ваш код лучше – статическом анализе, а также о том, как PVS-Studio на практике помогает в разработке крупных (и не только) игровых проектов.
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии8

Череда проблем длиною в 16 лет

Время на прочтение12 мин
Количество просмотров11K
Не так давно, на заре этого тысячелетия, холодным ноябрьским днем 2004го я сел писать эмулятор сервера для некой онлайн игры. Писалось мне весьма хорошо, на радующем глаз C# и .Net Framework версии 1.1. Особых целей перед собой я не ставил, а опыт имел сравнительно небольшой. По какой-то причине сообщество оценило эту поделку (может, потому что она появилась раньше официального старта основной игры?) и через несколько месяцев я столкнулся с взрывным ростом онлайна, а заодно и серьезными проблемами производительности. Проект прожил 6+ лет, достиг заметных высот (2500 онлайна в пике, порядка 20000 MAU), а затем и почил в бозе. И вот спустя полтора десятилетия я решил сделать собственную ММО игру на тех же “проверенных временем” наработках и столкнулся с аналогичными же проблемами, не смотря на то, что они были уже единожды мною решены.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии27

Генерация типизированных ссылок на элементы управления Avalonia с атрибутом x:Name в XAML с помощью C# Source Generators

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



В апреле 2020-го года разработчиками платформы .NET 5 был анонсирован новый способ генерации исходного кода на языке программирования C# — с помощью реализации интерфейса ISourceGenerator. Данный способ позволяет разработчикам анализировать пользовательский код и создавать новые исходные файлы на этапе компиляции. При этом, API новых генераторов исходного кода схож с API анализаторов Roslyn. Генерировать код можно как с помощью Roslyn Compiler API, так и методом конкатенации обычных строк.


В данном материале рассмотрим процесс реализации ISourceGenerator для генерации типизированных ссылок на элементы управления AvaloniaUI, объявленные в XAML. В процессе разработки научим генератор компилировать XAML с помощью API компилятора XamlX, используемого в AvaloniaUI, и системы типов XamlX, реализованной поверх API семантической модели Roslyn.

Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии5

Исследование качества кода Open XML SDK от Microsoft

Время на прочтение10 мин
Количество просмотров3.1K
image1.png

Моё знакомство с Open XML SDK началось с того, что мне понадобилась библиотека для создания документов Word с некоторой отчётностью. После работы с Word API более 7 лет, захотелось попробовать что-нибудь новое и более удобное. Так я узнал, что у Microsoft есть альтернативное решение. По традиции, используемые в компании программы и библиотеки мы предварительно проверяем с помощью анализатора PVS-Studio.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии1

Метод Application.Run – простой способ подружить Office-ribbon и обычные VBA-макросы (на примере C# и Excel)

Время на прочтение12 мин
Количество просмотров9.9K
В статье рассматривается использование Visual Studio для решения узкой задачи – собственно вызов VBA-макросов, расположенных в надстройках или документах, с помощью кнопок, которые разработчик может разместить в необходимых дополнительных (отдельно созданных) группах элементов вкладки НАДСТРОЙКИ ленты Excel или отдельных вкладках, и, при желании, использовать все современные возможности для работы с этими элементами.

Для читателей, в целом знакомых с тем, как в Visual Studio (конкретно – механизмы Visual Studio Tools for Office (VSTO)) реализована работа с объектами офисных приложений (объектные модели, само собой, ничем не отличаются от доступных средствами VBA), целесообразно сократить время чтения – основную мысль статьи можно выразить одной строкой C#-кода:

Globals.ThisAddIn.Application.Run("Файл_с_макросами.xlsm!МакросОдин");

которая аналогична хорошо известному VBA-вызову Application.Run(“ИмяМакроса”) – в том числе и в варианте вызова как функции:

MyValue = Globals.ThisAddIn.Application.Run("Файл_с_макросами.xlsm!МакросОдин");

Ну и вариантах с передачей одного или нескольких параметров разных типов:

Globals.ThisAddIn.Application.Run("Файл_с_макросами.xlsm!МакросОдин", "Параметр1", 2);

VBA-разработчиков, для которых актуальна данная проблема, – приглашаю продолжить чтение. Пошаговое выполнение демо-примера займет примерно 10-20 минут (без учета затрат времени на загрузку, установку и стартовую настройку Visual Studio Community Edition).
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Выращивание Nested sets в условиях .Net

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


Привет, меня зовут Антон, и я разработчик. Сына я родил, дом построил купил, осталось вырастить дерево. Так как агроном из меня не очень, пришлось дерево кодить. Наш проект состоит из нескольких микросервисов на .Net Core, в PostgreSQL базе хранятся сущности, которые образуют иерархические связи. Расскажу о том, какую структуру лучше выбрать для хранения таких данных, почему именно Nested sets, на какие грабли можно наступить, и как с этим потом жить.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии4

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

Статические веб-приложения Azure с .NET и Blazor

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


Статические веб-приложения Azure — это сервис, который автоматически создает и развертывает веб-приложения полного стека из репозитория GitHub. Статические веб-приложения Azure состоят из статического веб-клиента и серверной части на базе Azure Functions. При создании ресурса «Статические веб-приложения» Azure создает в репозитории исходного кода приложения рабочий процесс GitHub Actions, который отслеживает выбранную вами ветвь. Всякий раз когда вы отправляете фиксации в отслеживаемую ветвь, рабочий процесс GitHub Actions автоматически создает и развертывает ваше приложение и его API-интерфейс. 

На сегодняшний день в статических веб-приложениях Azure реализована первоклассная поддержка Blazor WebAssembly и .NET Functions в ознакомительной версии во всех регионах ее действия. Это было одним из ключевых запросов пользователей с момента объявления о выпуске статических веб-приложений на конференции Build. Вы можете разрабатывать и развертывать клиентские и бессерверные API-интерфейсы, созданные полностью на языке .NET. 

Давайте попробуем! 
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Как мы заставили код, портированный с C#, работать с моделью памяти C++

Время на прочтение19 мин
Количество просмотров7.8K
Привет, Хабр. В прошлой статье я рассказывал о том, как мы создали фреймворк для перевода кода C# на (неуправляемый) C++, чтобы выпускать свои библиотеки, изначально разработанные для платформы .Net, и под C++ тоже. В этой статье я расскажу о том, как нам удалось согласовать модели памяти этих двух языков, добившись работы портированного кода в необычном для него окружении.

Я расскажу о том, какие умные указатели мы используем, и почему нам пришлось разработать для них собственные реализации. Я также расскажу о процессе подготовки кода C# к портированию с точки зрения управления временем жизни объектов, о некоторых проблемах, с которыми мы столкнулись, и о специфических способах диагностики, которыми нам приходится пользоваться при работе.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии25

Базовые концепции Unity для программистов

Время на прочтение7 мин
Количество просмотров17K
Привет, Хабр! При проработке темы Unity мы нашли интересный блог, возможно, заслуживающий вашего более пристального внимания. Предлагаем вам перевод статьи о базовых концепциях Unity, также опубликованный на портале Medium
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии6

Анонс онлайн-митапа по .NET: три доклада о кроссплатформенных десктопных приложениях

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

Вы уже не ждали, а мы сделали. В этот четверг, спустя почти год после предыдущего митапа, мы проводим первую (надеюсь, среди многих ?) онлайн-встречу с тремя бомбическими докладами про кроссплатформенные десктопные приложения. Миша Романов рассмотрит всевозможные фреймворки для кроссплатформенных приложений и расскажет, как и зачем. Никита Цуканов потравит байки про разработку Avalonia — интероп с COM и автогенерированный CQRS прилагаются. А Саша Якунин расскажет о разработке библиотеки для отслеживания изменений в данных, которая позволяет делать real-time UI (как и другие штуки) действительно быстрыми.

Когда: 26 ноября в 17:00 (Мск)
Где: Ютуб-канал Контура

Давай подробности!
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Методы без аргументов — зло в ООП, и вот как его полечить

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

Привет!


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



Обращение к ленивому свойству объекта наглядно

Читать дальше →
Всего голосов 17: ↑13 и ↓4+9
Комментарии15

Конвертируем doc в docx и xml на C#

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

Продолжаю свой цикл статей, посвященный конвертации различных текстовых файлов с помощью решений, реализованных на языке C#.


С момента моей последней публикации «Конвертация xls в xlsx и xml на C#» прошло более полугода, за которые я успел сменить как работодателя, так и пересмотреть свои взгляды на некоторые аспекты коммерческой разработки. Сейчас, работая в международной компании с совершенно иным подходом к разработке ПО (ревью кода, юнит-тестирование, команда автотестеров, строгое соблюдение СМК, заботливый менеджер, очаровательная HR и прочие корпоративные плюшки), я начинаю понимать, почему некоторые из комментаторов интересовались целесообразностью предлагаемых мной велокостылей, когда на рынке есть очень достойные готовые решения, например, от e-iceblue. Но давайте не забывать, что ситуации бывают разные, компании – тем более, и если потребность в решении какой-то задачи с использованием определенного инструментария возникла у одного человека, то со значительной долей вероятности она возникнет и у другого.


Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии2

Jupyter для .NET. «Как в питоне»

Время на прочтение3 мин
Количество просмотров8.8K
Несколько месяцев назад Microsoft рассказали о Jupyter в .NET. Но активности по этому топику очень мало, а ведь тема очень интересная. Но что такое прикольное придумать? Я решил сделать удобный вывод класса Entity из библиотеки символьной алгебры:



Выглядит круче, чем в питоне. Делается просто, доставляет массу удовольствия. Приглашаю под кат!
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии11