
С релизом PVS-Studio 7.34 в анализаторе появились новые диагностические правила: taint для Java, множество Unity-диагностик для C#, углубление в OWASP и многое другое! Расскажем о них в этой статье.
Объектно-ориентированный язык программирования
С релизом PVS-Studio 7.34 в анализаторе появились новые диагностические правила: taint для Java, множество Unity-диагностик для C#, углубление в OWASP и многое другое! Расскажем о них в этой статье.
В современной медицине точное отображение электрокардиограммы (ЭКГ) играет ключевую роль в диагностике и мониторинге сердечно-сосудистых заболеваний. Разработка специализированного графика для визуализации ЭКГ в реальном времени на мобильных устройствах требует не только глубокого понимания медицинских стандартов, но и тщательного выбора технологий для реализации. В статье мы рассмотрим процесс создания такого графика с использованием технологии Canvas, обсудим возникшие проблемы и найденные решения.
Всем привет! Сегодня я бы хотел рассказать вам про свое приложение Profitocracy, которое помогает мне следить за личными расходами, а также автоматически планировать бюджет на месяц.
Данный проект является open source, так что, если вам интересно сразу перейти к коду, то вы можете ознакомиться с его исходниками на GitHub.
Привет, Хабр! AI инструменты широко используются в разработке и других сферах, казалось бы, что ещё можно в них улучшить или добавить? Всё зависит от предметной области, в области Business Intelligence при работе с языком запросов DAX актуальными могут быть работа с мерами и создание новых мер. Рутинной задачей при этом является создание схемы данных и заполнение её данными для каждой меры, или можно использовать уже имеющуюся схему, однако при этом при переходе с одной схемы (где выполняются запросы) на другую приходится переименовывать таблицы и столбцы, сопоставлять типы данных и т. д. В связи с этим актуальным может быть инструмент для создания схемы данных для меры «на лету» и выполнения запроса с мерой, т. е. построение запроса и дашборда (концептуально, без форматирования) по мере «на лету».
В dax.do можно строить DAX запрос только для существующих схем, т. е. приходится тратить время на переименование полей и таблиц в DAX запросе при переносе написанного DAX‑запроса из dax.do.
В этой статье рассматривается решение такой проблемы — генерация схемы, связей, запроса и дашборда «на лету» (концептуально, по аналогии с отображением дашборда на основе DAX в dax.do), но только сугубо средствами AI, без реальных DAX движков. Надеюсь, такие инструменты или идеи могут быть полезны аналитикам и разработчикам для повседневной работы, если Вам интересен AI в DAX — добро пожаловать под кат :)
Сейчас разработка многих компонентов в продукте может быть выполнена двумя путями: путем кода или же языковых моделей. Давайте сравним эти подходы на примере простой задачи — автоматизации проверки оформления задачи на канбан-доске. И посмотрим, где какие плюсы и минусы.
Вопрос на засыпку. Как вы реализуете перемешивание колоды карт?
В статье мы рассмотрим пару реализаций этой несложной задачи, а также узнаем, почему применение наивного алгоритма в карточных играх может быть опасным.
Доброго времени суток всем!
Вот и настал очередной этап рассказать о моем проекте и куда в итоге он меня привел. Предыдущие мио публикации по данной теме можно найти в моем профиле. С момента последней публикации прошло 7 лет, за это время произошло очень много всего, как вокруг моей разработки, так и того, чему она стала инициатором. После выпуска 2-й версии системы в 2017-м году, она достаточно успешно показала себя в нескольких крупных внедрениях. Объем поддержки и разработки системы ощутимо вырос и стал достаточно много требовать моего личного времени. Кроме того – меня пригласил один крупный холдинг создать им некую отраслевую скада—систему, поэтому времени на свое хобби, в рамках которого так и продолжал развиваться мой проект, стало не очень много. Поэтому в 2020-м году я объявил в кругах АСУТП, что буду не против дать проекту возможность встать на коммерческие рельсы. Неспешно пошли предложения, и также не спешно шел процесс их обсуждений и анализа продукта заинтересованными сторонами. В конечном итоге, на меня вышла группа ИТ-компаний, которые очень заинтересовались продуктом и возможностью диверсифицировать с его помощью бизнес еще и на рынок АСУТП. Так в июле 2022-го года родилась компания-вендор, в основу которой вошла интеллектуальная база проекта с исходным кодом 2-й версии моей разработки. Я вошел в состав ее учредителей и сейчас занимаю должность технического директора компании. За полтора года была сформирована отличная команда: разработчиков, инженеров и менеджеров. Первоочередной задачей, которая была поставлена перед нами – было создание новой версии скады, которая бы удовлетворяла текущим тенденциям и ситуациям, которые происходили в это самое время. А события, как вы понимаете, в этот период сыпались как из рога изобилия, и с каждым из них мы всей командой все больше понимали, что именно сейчас мы делаем то, что нужно нашему рынку автоматизации и это то, что нужно уже сейчас. Насколько у нас это получилось – теперь можно будет оценить, ведь буквально в начале февраля этого года мы выпустили официальный первый релиз нашего нового продукта: SCADA+ 3.0! И выпущен он уже компанией-вендором, которая теперь специализируется на его разработке, поддержке и сопровождении.
Пул объектов (Object Pool) — это паттерн, который позволяет повторно использовать объекты вместо создания новых. Это может быть полезно в ситуациях, когда инициализация объектов затратна. Паттерн широко применяется в разработке игр и приложениях, где важно минимизировать использование памяти. В этой статье мы рассмотрим, как этот шаблон реализован в C#, и как он может улучшить производительность.
на КДПВ фотография включенной лампы "полый катод", Hollow cathode lamp, HCL, являющейся источником света для атомно-абсорбционного спектрометра.
Недавно в работе я столкнулся с странной программной ошибкой. Историю диагностики.
Помните сравнение потребления памяти для асинхронного программирования на популярных языках 2023 года?
Мне стало любопытно, как поменялась ситуация за один год на примере самых новых версий языков.
Давайте снова проведём бенчмарки и изучим результаты!
Написание этой статьи навеяно статьёй "Task изнутри: управление потоками в .NET и создание своих планировщиков". Одна из проблем озвученная в данной статье это ограничение числа одновременно выполняемых задач.
В указанной статье для таких целей использовался кастомный планировщик. Полагаю многим пришла в голову мысль о возможности создании решения на основе SemaphoreSlim, а я же решил его воплотить и проверить насколько проще такое решение, чем кастомный планировщик.
Каждый .NET разработчик сталкивается с выбором оптимального алгоритма для решения той или иной задачи, а также с выбором структур данных для его реализации.
Платформа .NET предлагает множество встроенных типов, которые упрощают процесс разработки. В статье описано, какой тип в каком случае следует выбирать и как производительность алгоритма может меняться в зависимости от выбранных структур данных и методов. В статье приведены must-have понятия для написания эффективных алгоритмов.
Краткое содержание:
1. Нотация О большое для оценки сложности алгоритмов
2. Структуры данных и их применение в алгоритмах
3. Некоторые рекомендации для разработки на .NET
Наверное я один из немногих, которые желают опубликовать материал не просто, чтобы было, или чтобы высказать свое «авторитетное» мнение по тем или иным вопросам, а чтобы получить обратную связь. И за эту самую связь в комментариях я был бы весьма признателен!
После перехода Microsoft с .NET Framework на .NET Core программирование на C# стало более увлекательным, хотя некоторые аспекты изменились.
В частности, шаблон проекта Служба Windows (.NET Framework) создаёт класс, наследник от ServiceBase в пространстве имен System.ServiceProcess. Прогеру предлагается реализовать виртуальные методы базового класса OnStart и OnStop, которые задают действия, подлежащие выполнению при запуске (остановке) службы, что собственно и есть суть и назначение Службы Виндовз. Регистрация Службы в этом случае производится с помощью утилиты installUtil.exe, в .Net Core это делается утилитой SC.exe.
Реализовать службу на .NET Core (в моем случае .NET 9) не сложнее, но по другому, шаблон проекта теперь называется Worker Service (Microsoft), а рабочий класс наследуется от BackgroundService.
В этой статье я подробно опишу процесс создания, публикации и регистрации Службы в .Net 9 на примере службы для Telegram-бота (сокращенно — Телебот). Почему бот? Во-первых, писать Телебота на C# — это действительно приятно. Во-вторых, чтобы обеспечить его круглосуточную доступность на сервере под управлением Windows, логично использовать именно Службу Windows, которая будет поддерживать его работу в фоновом режиме и запускаться может сама при перезагрузке сервера.
В заключении рассмотрим как добавить логирование в стандартный виндовый EventLog и немного обсудим функционал самого Телебота.
Недавно во время обновления Entity Framework Core (далее — EFC) с версии 2 до версии 8 мы столкнулись с проблемами при использовании разделенных запросов. Эти проблемы могли оставить часть сотрудников без обедов. Спешу ими поделиться.
Привет, читатель! Вот уже три года я провожу собеседования на позиции Unity-разработчиков. За это время я просмотрел более 500 кандидатов на позиции мидла и сеньора, провёл свыше 100 интервью и нанял более 20 Unity-разработчиков. Этот опыт помог мне выявить множество "зелёных" и "красных" флагов, которые помогают определить подходящих кандидатов.
Эта статья будет полезна всем Unity-разработчикам — от Junior до Senior, а также лидам, которые проводят собеседования.
Если вы фанат такой нелепой программы как Paint net, где отсутствуют бинды на горячие клавиши и прочие удобства современных редакторов, то эта статья для вас! Здесь вы узнаете как бесплатно создавать плагины с помощью CodeLab на языке C# и подготовить их к релизу.
ScreenToGif — полезное приложение, позволяющее сделать из записи экрана или веб-камеры gif-файл, который можно удобно отредактировать во встроенном редакторе. В этой статье мы рассмотрим интересные проблемные места в исходном коде проекта и расскажем, как одна маленькая ошибка может нарушить работу всей программы.
Привет, Хабр! В настоящее время используются не только SQL решения для работы с данными, тем не менее, на долю SQL приходится значительная часть систем. Также нередко бывает, что приложение генерирует SQL в зависимости от действий пользователя, например, при выборе полей или применении фильтров в отчетах, иными словами, есть динамический SQL, а не статический. Также часто для приложения есть тесты, например, соответствующие типичным активностям пользователей, и каждой активности соответствует один или несколько SQL, причем в тестах проверяется именно правильность результатов выполнения SQL.
Далее, для относительно сложных вариантов генерации SQL при изменениях бизнес-логики (или других изменениях) может измениться и сам динамически генерируемый SQL, причем результаты выполнения SQL могут остаться неизменными, однако производительность поменяется. В таких случаях изменения в производительности можно уловить при помощи бенчмарков, однако прогон бенчмарков может занимать значительное время, в связи с этим актуальна задача быстрого анализа изменений в производительности динамически генерируемого SQL. Интересны особенности анализа производительности приложения на основе SQL — добро пожаловать под кат :)