Pull to refresh
2
0
Send message

ASP.NET MVC – работаем с MySQL через ADO.NET

Reading time34 min
Reach and readers19K
Legacy технологии
Предупреждение: и ASP.NET MVC устарел и ADO.NET тоже. Рекомендуется использовать ASP.NET Core с современным ORM. Но если вам интересно, то читайте.

Уже, наверное, раза три подбираюсь к ASP.NET MVC. После десяти лет с ASP.NET WebForms немного сложно переходить именно к технологии MVC, поскольку отличий столько, что скорее проще перечислить, что у этих технологий общего – это разве что библиотеки .NET Framework. Я не буду писать тут – лучше или хуже MVC чем WebForms, просто они обе хороши, и на обеих технологиях можно построить хорошее приложение. Свои мысли по поводу необходимости TDD я тоже пока оставлю при себе, хотя их есть у меня.

А сейчас я буду говорить о стандартнейшей задаче – обычной работе с данными: просмотре в табличном виде списка записей, добавлении, изменении и удалении данных (операции CRUD). Однако практически во всех книгах и во многих решениях в интернете для ASP.NET MVC почему-то рассматривается вариант исключительно через ORM (Object Relation Mapping): или Entity Framework (EF) или LINQ для SQL. Технологии отличные, спору нет, наконец-то программист может и не разбираться – а как вообще эта самая реляционная СУБД (которой он, скорее всего, пользуется) вообще работает, и даже SQL, по идее, знать уже необязательно: прокладка в виде EF и коннектора для СУБД разберутся между собой. «Вот оно счастье – нет его краше». Но тем программистам, которые не боятся прямой работы с базой данных через механизм ADO.NET, зачастую непонятно – а с чего вообще начинать в ASP.NET MVC и надо ли.
Читать дальше →

ConfigureAwait: часто задаваемые вопросы

Reading time20 min
Reach and readers170K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →

9 лучших опенсорс находок за ноябрь 2019

Reading time2 min
Reach and readers20K

Доброй зимы, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за ноябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, инструменты для QA, работа с данными, инструменты разработчика и администратора.


Прошлый выпуск.

Читать дальше →

Как мы сдружили EF 6 с MSSQL и PostgresSQL

Reading time10 min
Reach and readers18K
image

Жил-был проект на EF 6 с СУБД MSSQL. И появилась необходимость добавить возможность его работы с СУБД PostgreSQL. Проблем здесь мы не ожидали, ведь есть большое количество статей на эту тему, и на форумах можно найти обсуждение похожих задач. Однако, на деле не все оказалось так просто, и в этой статье мы расскажем об этом опыте, о проблемах, с которыми мы столкнулись в ходе интеграции нового провайдера, и про выбранное нами решение.
Читать дальше →

Puppetry 3: автоматизированное тестирование без единой строки кода

Reading time2 min
Reach and readers8.7K
Я думаю, нет смысла убеждать кого-либо в значимости автоматизированного тестирования. Тем не менее, функциональные тесты зачастую крайне сложны в написания и еще более в поддержке. Существует немало решений, призванных упростить разработку тестов. Я хочу рассказать об одном из них — Puppetry. Это настольное приложение (Windows/Linux/Mac), которое по сути является конструктором тестов, не требуя при этом написания какого-либо кода. QA-инженер может просто записать пользовательский сценарий во встроенном браузере, расширить сгенерированные тесты браузерными командами и тестовыми утверждениями, настроить структуру и запустить тесты на выполнение. Puppetry транслирует тестовую спецификацию из удобного для чтения человеком формата (Gherkin) в проект Jest/Puppeteer. Далее он запускает проект и показывает отчет. По сути такой проект может быть включен в цепь непрерывной интеграции «как есть»

Набор тестов

Тестовый отчет

Читать дальше →

Сценарии использования и производительность Blazor Server в .NET Core 3.0

Reading time7 min
Reach and readers17K
С момента релиза Blazor Server с .NET Core 3.0 в прошлом месяце многие люди поделились с нами своим восторгом от возможности создания клиентского веб-интерфейса используя только с .NET и C#. В то же время мы также слышали много вопросов о том, что такое Blazor Server, как он связан с Blazor WebAssembly и для каких сценариев Blazor Server лучше всего подходит. Стоит ли выбирать Blazor Server для своего веб-интерфейса на стороне клиента или ждать Blazor WebAssembly? Этот пост призван ответить на эти вопросы и дать представление о том, как Blazor Server работает в масштабе, и каким мы видим развитие Blazor будущем.

Читать дальше →

TDD: как правильно писать спецификации (describes)

Reading time3 min
Reach and readers4.7K
Написание спецификаций — утверждения или тестовые гипотезы — обычно обходят стороной в курсах TDD, поскольку тут мало программирования.

Однако они очень важны.

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

Каким образом мы могли бы сделать наши утверждения лучше?
Читать дальше →

«Ждёт тебя дорога дальняя…» или решение задачи прогнозирования на C# с помощью Ml.NET (DataScience)

Reading time10 min
Reach and readers7.3K
В последнее время мне все чаще на глаза попадается информация о фреймворке для машинного обучения Ml.NET. Количество упоминаний о нем переросло в качество, и я решил хотя бы одним глазком глянуть, что же это за зверь такой.

Ранее мы с вами уже пробовали решить простейшую задачу предсказания с помощью линейной регрессии в экосистеме .NET. Для этого мы использовали Accord.NET Framework. Для этих целей из открытых данных по обращениям граждан в органы исполнительной власти и лично в адрес мэра г. Москвы, был подготовлен небольшой набор данных.

Спустя пару лет на обновлённом наборе данных мы попробуем решить простейшую задачу. Используя модель регрессии в Ml.NET Framework предскажем сколько запросов в месяц получает положительное решение. Попутно мы сравним Ml.NET с Accord. NET и библиотеками на Python.

Хотите овладеть силой и могуществом предсказателя? Тогда милости прошу под кат.



P.S. Пусть вас не смущает изображение С.С. Собянина, в статье не будет ни слова о политике.
Читать дальше →

DeepPavlov для разработчиков: #1 инструменты NLP и создания чат-ботов

Reading time5 min
Reach and readers41K
Всем привет! Мы открываем цикл статей, посвященных решению практических задач, связанных с обработкой естественного языка (Natural Language Processing или просто NLP) и созданием диалоговых агентов (чат-ботов) с помощью open-source библиотеки DeepPavlov, которую разрабатывает наша команда лаборатории Нейронных систем и глубокого обучения МФТИ. Главная цель цикла — познакомить широкий круг разработчиков с DeepPavlov и показать, как можно решать прикладные задачи NLP, не обладая при этом глубокими познаниями в Machine Learning и PhD in Mathematics.

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

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

Все статьи цикла:
1. DeepPavlov для разработчиков: #1 инструменты NLP и создания чат-ботов
2. DeepPavlov для разработчиков: #2 настройка и деплоймент


Читать дальше →

Проходим челлендж RegexPlay на 100%

Reading time7 min
Reach and readers5.5K

Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач причём уровень задач сильно варьируется — от супер-лёгкого до сложного.


Конечно, решений может быть больше одного и тест-кейсы в задаче покрывают не все варианты. Тем не менее если набрали 100% — то поздравляю! Тест пройден.


Спойлер: в некоторых задачах (особенно лёгких) подсказка практически и есть решение.

Читать дальше →

Async/await в C#: концепция, внутреннее устройство, полезные приемы

Reading time24 min
Reach and readers278K
Доброго времени суток. В этот раз поговорим на тему, в которой начинал разбираться каждый уважающий себя адепт языка C# — асинхронное программирование с использованием Task или, в простонародье, async/await. Microsoft проделали хорошую работу — ведь для того, чтобы использовать асинхронность в большинстве случаев нужно лишь знание синтаксиса и никаких других подробностей. Но если лезть вглубь, тема довольно объемная и сложная. Ее излагали многие, каждый в своем стиле. Есть очень много классных статей по этой теме, но все равно существует масса заблуждений вокруг нее. Постараемся исправить положение и разжевать материал настолько, насколько это возможно, не жертвуя ни глубиной, ни пониманием.


Читать дальше →

Bash-скрипты: начало

Reading time11 min
Reach and readers2.2M

DeepFake своими руками [часть 1]

Reading time4 min
Reach and readers40K
Не смотря на все прелести интернета, у него есть много минусов, и один из самых ужасных – это введения людей в заблуждение. Кликбейт, монтаж фотографий, ложные новости – все эти инструменты активно используются для обмана обычных пользователей в мировой сети, но в последние годы набирает обороты новый потенциально опасный инструмент, известный как DeepFake.

Меня данная технология заинтересовала недавно. Впервые о ней я узнал из доклада одного из спикеров на “AI Conference 2018”. Там демонстрировалось видео, в котором по аудиозаписи алгоритм сгенерировал видео с обращением Барака Обамы. Ссылка на подборку видео созданных с помощью этой технологии. Результаты меня сильно вдохновили, и мною было принято решение лучше разобраться с данной технологией, чтобы в будущем противодействовать ей. Для этого я решил написать DeepFake на языке C#. В итоге получил такой результат.

image

Приятного чтения!

Интерактивная лаборатория термодинамики как эффективное средство имитационного обучения

Reading time9 min
Reach and readers5.6K

Введение


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

Объект изучения и постановка задачи


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

Что внутри чат-бота?

Reading time8 min
Reach and readers13K
Меня зовут Иван Бондаренко. Я занимаюсь алгоритмами машинного обучения для анализа текстов и устной речи примерно с 2005 года. Сейчас работаю в Московском Физтехе ведущим научным разработчиком лаборатории бизнес-решений на основе Центра компетенций НТИ по Искусственному интеллекту МФТИ и в компании Data Monsters, которая занимается вопросами практической разработки диалоговых систем для решения тех или иных задач в индустрии. Также немного преподаю у нас в университете. Мой рассказ будет посвящен тому, что такое чат-бот, как алгоритмы машинного обучения и другие подходы применяются для автоматизации общения человека и компьютера и где это может быть реализовано.

Полную версию моего выступления на «Ночи научных историй» можно посмотреть в видеозаписи, а краткие тезисы я приведу в тексте ниже.


Читать дальше →

Поддержка очередей в Hangfire

Reading time8 min
Reach and readers23K

Hangfire — это библиотека для .net (core), позволяющая асинхронно выполнять некоторый код по принципу "fire and forget". Примером такого кода может быть отправка E-Mail, обработка видео, синхронизация с другой системой и т.д. Помимо "fire and forget" есть поддержка отложенных задач, а также задач по расписанию в формате Cron.


В настоящее время существует масса подобных библиотек. Несколько преимуществ, говорящих в пользу Hangfire:


  • Простая конфигурация, удобный API
  • Надежность. Hangfire гарантирует, что созданная задача будет выполнена хотя бы один раз
  • Возможность параллельного выполнения задач и отличная производительность
  • Расширяемость (вот ей-то мы и воспользуемся ниже)
  • Достаточно полная и понятная документация
  • Dashboard, на котором можно видеть всю статистику о задачах

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

Читать дальше →

Создаем простой API-шлюз в ASP.NET Core

Reading time5 min
Reach and readers34K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Creating a simple API Gateway in ASP.NET Core".


Время чтения: ~10 минут


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


Диаграма архитектуры микросервиса


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


Существует много фреймворков которые могут быть использованы для создания API-шлюза, например, Ocelot в .NET core или Netflix Zuul в Java. Тем не менее, в этой статье я опишу процесс создания простого API-шлюза с нуля в .NET Core.

Читать дальше →

Нестареющая классика, или обзор новых векторов атак через Microsoft Office

Reading time4 min
Reach and readers16K

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

Векторные представления товаров, или еще одно применение модели Word2Vec

Reading time6 min
Reach and readers15K
image

Каждый день полтора миллиона людей ищут на Ozon самые разные товары, и к каждому из них сервис должен подбирать похожие (если пылесос все-таки нужен помощней) или сопутствующие (если к поющему динозавру нужны батарейки). Когда видов товаров тоже много, решить задачу помогает модель Word2Vec. Разбираемся, как она работает и как создавать векторные представления для произвольных объектов.

Читать дальше →

По вашему запросу найдено: реализация нечеткого поиска

Reading time8 min
Reach and readers13K
Все мы совершаем ошибки: в данном случае речь идет о поисковых запросах. Количество сайтов для продажи товаров и услуг растет наряду с потребностями пользователей, однако не всегда они могут найти то, что ищут – только потому, что неправильно вводят название необходимого товара. Решение данной проблемы достигается путем реализации нечеткого поиска, то есть использования алгоритма поиска наиболее близких значений с учетом возможных ошибок или опечаток пользователя. Область применения такого поиска достаточно широка – нам же удалось поработать над поиском для крупного интернет-магазина в фудритейл-сегменте.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity