Pull to refresh
0
0
Пронин Андрей @kanekt

User

Send message

В ногу со временем: Используем JWT в ASP.NET Core

Reading time6 min
Views42K
В июне 2016 вышел релиз ASP.Net Core 1.0 и теперь, если вас не пугает возраст нового фреймворка, можно аккуратно запустить микросервис в продакшн (все ведь используют микросервисную архитектуру, не так ли?). Для того, чтобы ограничить доступ к вашему микросервису для третьих лиц, необходимо сделать аутентификацию, используя довольно распространенный способ — токены. В статье под катом мы расскажем подробнее о том, как это сделать с помощью JSON Web Token (JWT), а также о плюсах и минусах этого подхода.


Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments7

Наследование реализаций: закопайте стюардессу

Reading time3 min
Views47K

Ключевое противоречие ООП


Как известно, классическое ООП покоится на трех китах:


  1. Инкапсуляция
  2. Наследование
  3. Полиморфизм

Классическая же реализация по умолчанию:


  1. Инкапсуляция — публичные и приватные члены класса
  2. Наследование — реализация функционала за счет расширения одного класса-предка, защищенные члены класса.
  3. Полиморфизм — виртуальные методы класса-предка.

Но еще в 1986 году была обозначена серьезнейшая проблема, кратко формулируемая так:


Наследование ломает инкапсуляцию

Как такое может быть?
Total votes 71: ↑52 and ↓19+33
Comments349

Пишем ХабраКвест на ASP.NET Core и Angular2

Reading time8 min
Views34K
Каждый раз с выходом нового фреймворка, хочется попробовать его в деле и написать на нем какое-то приложение. В прошлый раз отлично зашел формат квеста. По этому предлагаю посмотреть что поменялось за почти полтора года и написать еще один квест— и фреймворки посмотрим, и поиграть можно.
Результат:
сорсы на гитхабе для тех, кому интересно посмотреть на исходники
линк на квест для тех, кому интересно что получилось или потратить свое время на еще один логический квест.

Под катом описан полный процесс от создания проекта до его развертывания.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments63

ASP.NET MVC+VM: разбиение сложных представлений на простые с применением моделей видов на примере календаря мероприятий

Reading time10 min
Views18K
Я решил написать на эту тему, т. к. постоянно использую модели видов (view models) в веб-приложениях на ASP.NET MVC, и часто приходится объяснять суть такого подхода коллегам, а подходящего материала, чтобы ссылаться на него, мы так и не нашли. Эта статья ориентирована прежде всего на новичков.

Представим, что нам необходимо отобразить календарь некоторых мероприятий на текущий месяц. Это достаточно сложная конструкция. Календарь должен содержать заголовок с названием текущего месяца и годом, строку с названиями дней и, собственно, сами дни (6 рядов по 7 дней), каждый из которых имеет дату и, опционально, некоторый набор мероприятий, названия которых необходимо отобразить, предварительно загрузив их из базы данных. Также предположим, что выходные и праздничные дни должны быть отмечены особым образом. Т. е. в итоге должно получиться нечто такое:



Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments41

Разработка веб-сайта на базе ASP.NET Core и Platformus CMS

Reading time8 min
Views28K
В этой статье я хочу познакомить вас с Platformus CMS — молодой системой управления содержимым веб-сайтов (10-я альфа на момент написания статьи), построенной на базе не менее молодых ASP.NET Core и ExtCore framework. Подробно рассматривать архитектуру и другие технические детали мы сейчас не будем, а ограничимся упоминанием нескольких интересных фактов и затем сразу же попробуем CMS’ку в деле — создадим небольшой тестовый проект на ее основе.

Несколько интересных фактов


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

Написана CMS на C#. Благодаря возможностям ASP.NET Core, она одинаково хорошо может работать на Windows, Linux и Mac. Сама исполняемая среда, необходимая для работы любого приложения на .NET Core, может быть как установлена отдельно, так и интегрирована непосредственно в само приложение. В качестве веб-сервера может использоваться IIS либо Kestrel (во втором случае приложение становится веб-сервером для самого себя и может работать самостоятельно или же быть встроено в контейнер вроде IIS или Nginx). В качестве хранилища данных на текущий момент поддерживаются Microsoft SQL Server, SQLite и PostgreSQL. С учетом всего перечисленного, можем получить конфигурацию, которой для работы не требуется вообще ничего стороннего — скопировал, запустил и пользуешься (может быть удобно для тестирования, например).

(В статье несколько десятков скриншотов.)
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments14

Почему ООП не инкапсуляция, наследование и полиморфизм, или как я научился не волноваться и полюбил разметку

Reading time8 min
Views19K

Всем привет!


Дамы и господа, в статье речь пойдет от том, как у меня жутко пригорает от Объектно Ориентированного Программирования и Проектирования. Скорее всего подобных дохера и трошку, и вполне возможно, что я нагло кого-то копирую. Я, честно говоря, не очень много гуглил, но минимально пытался. Добро пожаловать в комменты с пожеланиями, предложениями и срачем.


Читать дальше →
Total votes 58: ↑29 and ↓290
Comments122

Youtube Player — создание собственного плеера на JavaScript

Reading time8 min
Views55K

Вступление


Наверняка многие фронтэнд разработчики да и в целом многие пользователи хоть раз интересовались работой и функционированием Youtube Player. В этой статье я расскажу, как он работает, и как сделать свой плеер для воспроизведения Youtube видео со своим интерфейсом. Так же приведу примеры для понимания, как это работает.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments10

ASP.NET 5 Middleware или куда же пропал мой HTTP модуль?

Reading time5 min
Views32K
Новая версия ASP.NET 5 переписана почти с нуля и включает в себя существенные изменения по сравнению с предыдущими версиями. Одно из самых больших изменений — это конвейер обработки (HTTP Pipeline). В этой статье описано, как эти изменения влияют на проектирование и внедрение компонентов, которые раньше были представлены как Http модули.

Поведение HTTP модулей раньше было схожим с поведением фильтров запросов, вплоть до ASP.NET 5. Это функционал, который можно внедрить в конвейер запросов и описать некоторую задачу для выполнения, например, отреагировать на событие в приложении. Модули используют для аутентификации, глобальной обработки ошибок и логгирования. Также их часто используют для перехвата и изменения серверного ответа, например, удаления пробелов или компрессии. Они реализуют интерфейс IHttpModule, который определен в сборке System.Web, которая, в свою очередь, не является частью нового ASP.NET.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments20

Модальные окна на Angular, Angular 2 и ReactJS

Reading time17 min
Views48K

В этой статье мы рассмотрим, как создавать всплывающие и перекрывающие элементы на React, Angular 1.5 и Angular 2. Реализуем создание и показ модального окна на каждом из фреймворков. Весь код написан на typescript. Исходный код примеров доступен на github.

Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments36

Сражаясь с БЭМ: 10 основных ошибок и как их избежать

Reading time13 min
Views88K

Не важно, узнали ли вы о БЭМ только сейчас, или следите за ним с самого начала, вы, возможно, уже оценили столь полезную методологию. Если вы не знаете, что такое БЭМ, я рекомендую прочитать вам об этом на сайте БЭМ перед тем, как продолжить чтение этой статьи, потому что я буду использовать термины, которые предполагают базовое понимание этой CSS методологии.
image
Эта статья нацелена на людей, которые уже используют БЭМ и желают использовать его более эффективно, а также на тех, кто хочет узнать о нем больше.

Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments22

Немного особой контейнерной магии

Reading time4 min
Views8.2K
В прошлой статье я привел пример фабрики для получения реализаций IQuery, но не объяснил механизм ее работы
_queryFactory.GetQuery<Product>()
    .Where(Product.ActiveRule)
    .OrderBy(x => x.Id)
    .Paged(0, 10) // получаем 10 продуктов для первой страницы

// Мы решили подключить полнотекстовый поиск и добавили ElasticSearch, не вопрос:
_queryFactory.GetQuery<Product, FullTextSpecification>()
    .Where(new FullTextSpecification(«зонтик»))
    .All()

// Или EF тормозит и мы решили переделать на хранимую процедуру и Dapper
_queryFactory.GetQuery<Product, DictionarySpecification, DapperQuery>()
    .Where(new DictionarySpecification (someDirctionary))
    .All()

В данном материале я хочу поделиться техникой регистрации необходимых компонентов сборки по соглашениям. Сейчас у меня под рукой кодовая база с другой реализацией CQRS, поэтому примеры будут отличаться. Это не принципиально: основная идея остается неизменной.

Допустим у вас есть такой интерфейс, где ListParams – спецификация, приходящая с фронтенда
public interface IListOperation<TDto>
{
     ListResult<TDto> List(ListParams listParam);
}

Задача
Избавить прикладных разработчиков от необходимости написания контроллеров, проекций и сервисов.
Решение под катом
Total votes 10: ↑9 and ↓1+8
Comments5

Как стать профессиональным веб-разработчиком: практическое руководство

Reading time12 min
Views652K

Дорога длинна и трудна, но интересна и полезна!

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

По статье разбросано множество ссылок на бесплатные и важные ресурсы. Для простоты я собрал их в PDF и разбил по категориям. Мне не платят за упоминания сайтов, ссылки на которые я привёл – я всего лишь хочу порекомендовать вам лучшие ресурсы, чтобы помочь вам достичь вашей цели.

Что нужно помнить:

1. Статью разрешается пролистывать

Руководство может помочь вам вне зависимости от вашего положения на дороге к профессиональной разработке. Прокрутите его к тому заголовку, который лучше всего описывает ваше сегодняшнее положение, и читайте оттуда. Если вы только начали этот путь, или пока размышляете об этом – последуйте совету Короля из «Алисы в стране чудес»:

Начните с начала, и продолжайте, пока не дойдёте до конца; и там уже остановитесь.
Читать дальше →
Total votes 49: ↑38 and ↓11+27
Comments129

Почему прокрастинаторы прокрастинируют (откладывают дела «на потом») и как побороть прокрастинацию

Reading time14 min
Views294K
image

pro-cras-ti-na-tion |prəˌkrastəˈnāSHən, prō-|
существительное
задержка или откладывание чего-либо: первый совет — избегайте прокрастинации.

Кто бы мог подумать, что после десятилетий борьбы с прокрастинацией словари будут содержать решение проблемы.

Избегать прокрастинации. Так элегантно в своей простоте…

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

Нет, «избегайте прокрастинации» — хороший совет только для не настоящих прокрастинаторов. Для тех, кто говорит «Я захожу на Facebook несколько раз в день на работе. Я такой прокрастинатор!». Это те люди, которые будут говорить настоящему прокрастинатору «Не откладывай дела на потом и у тебя все будет хорошо».

Дело в том, что ни словари ни не настоящие прокрастинаторы не понимают, что для настоящих прокрастинаторов прокрастинация — не дополнительная опция. Это что-то, что они не знают как не делать.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments94

Договор на разработку сайта: так, а не иначе

Reading time29 min
Views152K
Присылает нам заказчик (Газпром) свою версию договора.
Понимаем — нашу они не подпишут,
вносим реквизиты и отправляем обратно.
Пропадают на две недели… возвращают протокол разногласий к договору.


Последняя неделя выдалась жаркой на переговоры с юристами заказчиков. Проекты я не веду, но так уж получилось, что все договора проходят через меня. Соответственно, я участвую в их согласовании.
Читать дальше →
Total votes 135: ↑129 and ↓6+123
Comments78

ASP.NET Core RC2: встроенная поддержка модульности (application parts)

Reading time4 min
Views16K
Будучи исторически погруженным в вопросы разработки модульных приложения на ASP.NET, первое что я сделал, когда вышел ASP.NET Core RC2 – постарался перевести на него свой модульный фреймворк ExtCore. И вот тут оказалось, что в новой версии все изменилось и старые подходы из RC1 больше не работают, зато появились новые интересные возможности, о которых я и хочу рассказать.

Если коротко, то разработка модульных приложений в RC2 очень упрощена. Благодаря новой возможности «части приложения» (application parts), вы легко можете разделить свой большой проект на несколько более мелких и затем свободно компоновать их. Особенно это удобно при работе с областями (areas), которые и так изолируют набор контроллеров, представлений и прочих ресурсов — каждую область теперь можно выделить в отдельный проект. Насколько я понял (в частности, из aspnet/Mvc#4089), реализация ориентирована именно на разделение большого проекта на маленькие и только в части MVC. Остальное все-таки придется писать самому.

Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments66

Введение в .NET Core

Reading time19 min
Views191K


На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments12

PostgreSQL в Azure. Часть 1

Reading time7 min
Views6.8K

Этой статьей мы начинаем цикл заметок об использовании PostgreSQL в Microsoft Azure.


Первая статья будет об установке и настройке кластера PostgreSQL:


  • Знакомство с ресурсами Azure
  • Управление через azure cli
  • Выбор подходящего хранилища
  • Сборка классической связки ведущий-ведомый в одной группе доступности
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments6

Почти полное руководство по flexbox (без самих flexbox)

Reading time3 min
Views63K
image

К сожалению, не у всех есть браузер/устройство, поддерживающие flexbox. Это руководство в виде шпаргалки, в котором предлагаются альтернативы обратной совместимости для свойств flexbox.

Хотя некоторый CSS-код в этом руководстве, возможно, покажется очевидным, я собираюсь бросить вызов flexbox, а также предложить простые решения проблем, которые возникали, пока он не обрёл популярность.

Читать всю статью
Total votes 41: ↑32 and ↓9+23
Comments59

Текстовый туториал по React.js и Redux на русском

Reading time2 min
Views204K

(у учебника по Основам React вышло второе издание, Redux-учебник в процессе обновления)

Закончил работу над парой подробных текстовых туториалов на русском. Постарался уделить как можно больше времени практике. По ходу повествования есть вопросы, задачи и решения.


Курс про Redux попал в официальную документацию.


Оба руководства бесплатны и выложены на gitbook (можно скачать PDF, ePub, mobi).


В текстах нарочно участвуют термины переведенные на русский (например, состояние), английские (state), либо английский термин написанный по-русски — стейт. Считаю это допустимым, и даже более того, удобным для читателя.

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments22

Готовим ASP.NET Core: создаем свой кроссплатформенный модульный фреймворк

Reading time7 min
Views13K
Мы продолжаем нашу колонку по теме ASP.NET Core очередной публикацией от Дмитрия Сикорского ( DmitrySikorsky) — руководителя компании «Юбрейнианс» из Украины. В этот раз Дмитрий рассказывает о своем опыте разработки модульного кроссплатформенного фреймворка на базе ASP.NET Core. Предыдущие статьи из колонки всегда можно прочитать по ссылке #aspnetcolumn — Владимир Юнев
Из-за специфики моей задачи, последнее время достаточно много приходится размышлять о модульной и расширяемой архитектуре веб-приложений на ASP.NET Core (а до этого — на ASP.NET предыдущей версии). В результате появился ExtCore — небольшой кроссплатформенный фреймворк с открытым кодом, позволяющий буквально простым подключением NuGet-пакета превратить ваше веб-приложение в модульное и расширяемое.


Основные возможности


ExtCore умеет обнаруживать и использовать типы (а также, представления и статический контент), определенные как в проектах (в виде исходного кода или NuGet-пакетов), на которые есть явные ссылки в зависимостях, так и в проектах, которые размещены в определенной папке в виде скомпилированных DLL-сборок.

Для удобства, опционально, эти проекты могут быть условно объединены в расширения (т. е. каждое расширение может состоять из одного или многих проектов). Также, каждое расширение может иметь класс (в одном из проектов), реализующий интерфейс IExtension, а ExtCore, в свою очередь, позволяет в любой момент получить доступный набор экземпляров всех классов, реализующих этот интерфейс. Эти классы можно использовать для предоставления метаданных, описывающих расширения, инициализации расширений (например, регистрации маршрутов) и т. д.

Хотя непосредственно сам фреймворк и не содержит какого-либо функционала, связанного с работой с данными, но все, что для этого необходимо (в т. ч. единый контекст хранилища для всех расширений), реализовано в расширении ExtCore.Data, о котором ниже.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments0

Information

Rating
Does not participate
Location
Набережные Челны, Татарстан, Россия
Date of birth
Registered
Activity