Эта небольшая заметка является промежуточным итогом на тему поиска уже известных уязвимостей в open source C# проектах. Я хотел посмотреть на примеры кода, который бы являлся уязвим и был причиной появления очередной CVE, но оказалось, что не всё так просто…
Читать полностью »
Рубрика «C#» - 70
Что не так с уязвимостями в C# проектах?
2017-10-31 в 6:35, admin, рубрики: .net, C#, CVE, open source, pvs-studio, security, static code analysis, vulnerabilities, Блог компании PVS-Studio, информационная безопасность, статический анализ кода, уязвимостиШаблон проектирования «состояние» двадцать лет спустя
2017-10-30 в 5:27, admin, рубрики: .net, C#, patter matching, solid, state, паттерны, Программирование, Проектирование и рефакторинг, Разработка веб-сайтов, состояниеСостояние — поведенческий шаблон проектирования. Используется в тех случаях, когда во время выполнения программы объект должен менять своё поведение в зависимости от своего состояния. Классическая реализация предполагает создание базового абстрактного класса или интерфейса, содержащего все методы и по одному классу на каждое возможно состояние. Шаблон представляет собой частный случай рекомендации «заменяйте условные операторы полиморфизмом».
Казалось бы, все по книжке, но есть нюанс. Как правильно реализовать методы не релевантные для данного состояния? Например, как удалить товар из пустой корзины или оплатить пустую корзину? Обычно каждый state-класс реализует только релевантные методы, а в остальных случаях выбрасывает InvalidOperationException
.
Нарушение принципа подстановки Лисков на лицо. Yaron Minsky предложил альтернативный подход: сделайте недопустимые состояния непредставимыми (make illegal states unrepresentable). Это дает возможность перенести проверку ошибок со времени исполнения на время компиляции. Однако control flow в этом случае будет организован на основе сопоставления с образцом, а не с помощью полиморфизма. К счастью, частичная поддержка pattern matching появилась в C#7.
Читать полностью »
Нечёткое сравнение строк: пойми меня, если сможешь
2017-10-30 в 5:13, admin, рубрики: .net, C#, Алгоритмы, нечеткое сравнение, Программирование, сравнение строк, Управление медиа
Привет!
На естественном языке сказать об одном и том же факте можно бесконечным числом способов. Можно переставлять слова местами, заменять их на синонимы, склонять по падежам (если говорим о языке с падежами) и тд.
Необходимость определять схожесть двух фраз возникла при решении одной небольшой практической задачи. Я не использовал машинное обучение, не вил нейронные сети, но использовал простые метрики и собранную статистику для калибровки коэффициентов.
Результатом работы, описанием процесса, кодом на git'е готов поделиться с вами.
Итак, кратко задачу можно озвучить так: «С определенной периодичностью из различных источников приходят актуальные новости. Необходимо фильтровать их таким образом, чтобы на выходе не было двух новостей об одном и том же факте.»
Предупреждение: в статье присутствуют заголовки реальных новостей. Я отношусь к ним исключительно как к рабочему материалу, не представляю какую-либо точку зрения на политическую или экономическую ситуацию в какой бы то ни было стране.
Телеметрия и программное обеспечение
2017-10-26 в 7:11, admin, рубрики: C, C#, c++, Telemetry, отладка, Промышленное программирование
Около 6 лет назад я участвовал в проекте по изготовлению железа и софта для одной крупной Североамериканской медицинской компании. Стоя возле тестовой стойки, в которой под нагрузкой было несколько устройств, я задал себе вопрос: «Если что-то пойдет не так, как нам ускорить поиск и исправление ошибки?»
С момента возникновения этого вопроса и до сегодняшнего дня было сделано очень много, и я хотел бы поделиться с вами тем как сбор и анализ телеметрии в софте и железе помог значительно снизить время обнаружения и исправления ошибок в целом спектре проектов, в которых я участвовал.
Читать полностью »
Время устранять ошибки в Open-Source проектах, конкурс
2017-10-25 в 7:38, admin, рубрики: C, C#, c++, open source, pinguem.ru, pvs-studio, баги, Блог компании PVS-Studio, конкурс, конкурсы, ошибки в программе, си/си++, статический анализ кодаСайт Pinguem.ru и команда PVS-Studio организуют конкурс, посвященный повышению качества открытого программного обеспечения. Для победы в конкурсе необходимо исправить как можно больше ошибок в одном или нескольких открытых проектах. Ошибки должны быть обнаружены с помощью статического анализатора кода PVS-Studio. Главный приз: консоль PlayStation 4 Pro.
Правила конкурса на сайте Pinguem.ru. Участвовать в конкурсе.
Читать полностью »
Программирование для 3CX на C#: используем 3CX Call Control API в среде разработки Call Flow Designer
2017-10-23 в 14:24, admin, рубрики: 3cx api, C#, visual studio code, Блог компании 3CX Ltd., голосовое приложение, разработка, Серверное администрирование, Сетевые технологии, системное администрированиеВведение
Писать программы для системы 3CX на C# может быть несколько непривычным занятием для начинающего IT-специалиста или человека, не сталкивающимся ранее с написанием кода. Однако этот навык окажется весьма полезным и востребованным, если перед вами будет стоять задача создания действительно сложных, функциональных или заказных голосовых приложений.
Существует ряд мощных сред быстрой разработки, но все они требуют профессиональной предварительной настройки и занимают изрядное место на диске. Поэтому я стремился ограничиться каким-то компактным решением, но с поддержкой функции IntelliSense. Microsoft IntelliSense хорошо выделяет ошибки в коде и автоматически дополняет выражения. Конечно, если вы уже являетесь гуру C#, эта статья может быть вам не столь интересна. Профессионалу хватит и блокнота!Читать полностью »
Добавление рекордов с OAuth 2: Laravel Passport + Unity. Часть 2
2017-10-22 в 17:38, admin, рубрики: C#, laravel, oauth2, ratwall, unity, unity3d, разработка игр
Продолжение статьи про добавление рекордов из игры на сайт от конкретного пользователя. В первой части мы сделали страничку рекордов на Laravel и подготовили API для их добавления — как анонимным, так и авторизированным пользователем. В этой части будем дорабатывать готовую игру на Unity про Крысу на Стене, заходить за свой аккаунт и отправлять рекорды на сайт на Laravel с использованием токена авторизации.
Читать полностью »
Используем Apache Ignite в быту
2017-10-20 в 6:45, admin, рубрики: .net, Apache, big data, BigData, C#, gridgain, Ignite, java, MapReduce, nosql, sql, Блог компании GridGainВ продолжение темы «доступным языком про Ignite / GridGain», начатой в предыдущем посте (Для чего нужен Apache Ignite), давайте рассмотрим примеры использования продукта «для простых смертных».
Терабайты данных, кластеры на сотни машин, big data, high load, machine learning, микросервисы и прочие страшные слова — всё это доступно Ignite. Но это не значит, что он не годится для менее масштабных целей.
Сегодня мы рассмотрим, как Ignite может легко хранить любые ваши объекты, обмениваться ими по сети и обеспечивать взаимодействие .NET и Java.
Архитектуры ReactNative, Xamarin, PhoneGap и Qt. Часть 2
2017-10-18 в 7:09, admin, рубрики: C#, microsoft, phonegap, qt, ReactNative, xamarin, xamarincolumn, Блог компании Microsoft, кроссплатформенная разработка, разработка мобильных приложений, Разработка под android, разработка под iOSПродолжаем анализ архитектуры мобильных кроссплатформенных инструментов. Сегодня на повестке дня фреймворки Xamarin и Qt. Напомним, что в первой части мы рассмотрели общие архитектурные паттерны кроссплатформенных фреймворков, а также архитектуры PhoneGap и ReactNative.
Расставим точки над .NET Core и .NET Standard
2017-10-17 в 8:56, admin, рубрики: .net, .net core, .net standard, C#, microsoft, Visual Studio, Блог компании Microsoft, Программирование.NET Core и .NET Standard — самые новые на сегодняшний день технологии .NET, поэтому совершенно неудивительно, что не только они, но и их отличия от платформы .NET Framework вызывают много вопросов. В этой статье я расскажу, что эти технологии из себя представляют и в каких случаях будет более логично выбрать каждую их.