Обновить
104.65

.NET *

Хаб со знаниями про .NET

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

Как красиво «завернуть» devops-пайплайн и не сгореть на проде

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

Привет, Хабр! Меня зовут Максим Бочкарев, в IT я с 2005 года и сейчас руковожу devops-направлением в компании ЕВРАЗ. За эти годы я успел повидать множество граблей, на которые мы наступали, пытаясь построить нормальную систему CI/CD. И сегодня хочу рассказать, как мы прошли путь от «кустарного производства» пайплайнов к промышленным масштабам, не потеряв по дороге ни одного девопса и не спалив продакшен.

Читать далее

Педагогика на роботах: может ли помочь RPA в обучении программированию?

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

Привет! Я Кирилл Пронин, разработчик PIX RPA из PIX Robotics. А еще я семь лет преподавал основы программирования детям в частных технопарках в рамках дополнительного профессионального образования, а также студентам колледжей и вузов. Чтобы завлечь детей (и упростить работу себе — но об этом чуть позже) я стал внедрять программных роботов в процесс обучения. И понял, что RPA — отличная платформа для старта в разработке. Любой. Но обо всем по порядку. Здесь я расскажу, как продукт по написанию программных роботов может сделать обучение более эффективным и увлекательным, а также проанализируем, какие педагогические методы могут быть адаптированы для работы с RPA. Кроме того, я расскажу о собственном опыте внедрения этих технологий в образовательный процесс и дам несколько полезных советов, которые, надеюсь, помогут вам в вашей практике!

Читать далее

.NET Digest #6

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

Добро пожаловать на шестой выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! В этот раз набралось множество нового материала, так ещё и вышла предварительная версия .NET 10. Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов. Поехали!

Читать далее

Переезд с TeamCity на GitLab CI + K8s

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

Привет, Хабр! Меня зовут Даниил Мильков, я старший C# разработчик. Сразу хочу предупредить читателей, что про взаимодействие с k8s здесь сказано достаточно мало, разве что в разделе Kubernetes и PVC. На эту тему будет отдельная статья.

Начнём. Однажды наша команда решила перейти с TeamCity на GitLab CI…

Читать далее

Moq: пара фич для упрощения тестов, о которых знают не все

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

Пишете unit-тесты в .NET? Значит, скорее всего, пользуетесь Moq. На первый взгляд, это простой и легковесный фреймворк, про который все всё знают.

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

Читать далее

Copy-paste на большом экране: разбор ошибок и странных мест Radarr

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

Писать одно и то же — невероятно муторное занятие! Поэтому программисты регулярно используют copy-paste, но, помимо экономии времени, также растет и количество ошибок. Чтобы в этом убедиться, мы разберём ошибки и странные места проекта Radarr.

Читать далее

Контекст и парадигмы программирования

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

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

Читать далее

Unity3d CodeDOM. Генерация кода на лету

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

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

Мне пришлось столкнуться с генерацией кода, в процессе поисков я наткнулся на специфический код-генератор под .NET (CodeDOM), который заработал у меня в среде Unity3d

я искал способ сгенерировать код и получить результат сразу, без ожидания рекомпиляции. В процессе поисков я и наткнулся на CodeDOM-генерацию

https://learn.microsoft.com/ru-ru/dotnet/framework/reflection-and-codedom/using-the-codedom

Читать далее

Приложение для структурирования информации. Часть 2

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

Это продолжение статьи про приложение для работы с данными, которые представляются деревьями.

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

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

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

Сайт приложения так же написан на blazor, но на другом типе проекта: blazor webassembly standalone. Приложение же написано на MAUI Blazor Hybrid. Оба этих типа загружают net сборку в браузер. В теории можно легко сделать веб версию, заменив при этом базу и добавить взаимодействие по api с пользователями и авторизацией. Скорее всего после всех запланированных TODO я этим и займусь.

Читать далее

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

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

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

Под катом рассказываем о том, по каким принципам работает наша платформа, какую роль в её устройстве играет Saga MassTransit и как посредством решения происходят интеграции с банками. Плюс раскрываем процесс самой интеграции — на конкретном кейсе.

Читать далее

Порядок инициализации полей, статики и всего остального в C#

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

Всем привет! Многие сталкиваются с трудностями на собеседовании на вопросе по типу "Расскажите о порядке иницализации в C#". Либо банально когда видят квиз, стараются вспомнить, а что там должно инициализироваться? Сегодня многие вспомнят, а кто-то узнает о порядке инициализации. Затронем не только классы, а также структуры, а точнее - ключевое слово default для них.

Сделаем следующие классы и посмотрим, что будет при создании объекта B:

Читать далее

Новые интересные диагностики в PVS-Studio 7.35

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

С релизом PVS-Studio 7.35 в анализаторе появилось много новых диагностических правил. Вас ждёт: много MISRA для C, новые Unity-диагностики для C# и покрытие OWASP Top 10 для Java и многое другое!
Подробности вы сможете узнать в этой заметке.

Читать далее >>>

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

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

Всем привет! Меня зовут Антон, я — ведущий мобильный разработчик в компании DD Planet. В статье я поделюсь опытом нашей команды по организации стабильной фоновой работы в мобильном медтех-приложении, предназначенном для взаимодействия с медицинским оборудованием.

Читать далее

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

Универсальный индекс по документам на эластике

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

Всем привет. Меня зовут Женя Редько, я работаю в ядре Диадока — это сервис электронного документооборота от Контура. В моей подкоманде Документов мы занимаемся основными бизнес-сценариями Диадока. 

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

Читать далее

PropertyBitPack: Упаковка свойств в поля

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

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

Читать далее

Отключение http-метрик в ASP.NET Core

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

Выход ASP.NET Core 9 порадовал возможностью выборочно отключать http-метрики. В статье сценарии использования с примерами и детальный разбор того, как всё устроено под капотом.

Хочу разобраться

От dotnet restore до publish, и что это значит для докера и построения CI/CD-пайплайна

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

Всем привет! Когда я узнаю, что человек передо мной начинает изучать c# - первым делом я его спрашиваю, как ему язык, на чем раньше программировал и прочее. И в какой то момент разговоры доходят до докера\пайплайнов => многие ребята (которые не пробовали это раньше) начинают нехотя избегать эту тему, считая её чересчур скучной, странной и вообще "это уже какой то девопс". Хотя на деле - зная базово, что значат папки в твоем проекте на компе - можно освоить базовые основы красивой работы докера (+ можно пришить пайплайны, основной мотив у них один). Поэтому сегодня я попытаюсь привлечь ваше внимание к базовым командам dotnet`а.

Все изучать и делать будем сразу в докере. Создаем такой докерфайл:

Читать далее

Сгенерировать 100 млн случайных строк менее чем за минуту

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

Зачастую в программисткой практике необходимо нагенерировать множество случайных строк. Либо для тестового примера, либо как источник обезличивания, либо просто, чтобы наполнить разработческую БД. Задача, в принципе, понятная и легкая для любого уровня программиста. Но если это нужно сделать быстро, например, если набор случайных строк нужен здесь и сейчас, то можно использовать предлагаемое решение. Строки получаются разной длины, со 100%-ной хаотичностью (полностью несортированные). Выглядят эти строки вот так (спойлер):

Читать далее

Нюансы кастования в C#

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

Всем привет. Не так давно добавлял поддержку кастования через 'as' к себе в компилятор и задался вопросом — в каких случаях я получу Compile Time ошибку? Если заинтересовал — прошу под кат.

Читать далее

Делегаты в C# подробнее

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

Как они работают под капотом? Что именно происходит при "замыканиях", грамотное обращение со структурами при работе с делегатами.

На что нужно обращать внимание.

Читать далее

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