Рубрика «веб-приложения» - 3

На Cousera открыта запись на курсы по веб-разработке на Ruby on Rails «Web Application Architectures» - 1 Периодически я заходил на курсеру посмотреть доступны ли там какие-нибудь прикладные курсы. Было банально интересно, промелькнёт ли какой-нибудь лучик света за суровой теорией. Смотрел по языкам программирования, по управлению проектами, по аналитике. А сегодня увидел курс, информацией о котором и захотелось поделиться.

Его название в заголовке, а перевод описания ниже, а пока пару слов, почему я считаю, что он полезен всем:

  • Новичкам можно изучить новую для них технологию или подтянуть ещё не укрепившиеся знания.
  • Гуру-рельсовикам можно заработать Verified Certificate и тем самым подтвердить свои знания для общественности. Например, его можно прикрепить в LinkedIn или указывать в откликах на фрилансе

Читать полностью »

Создание универсальных веб-приложений при помощи Web App Template - 1
Всем привет!

Сегодня мы с вами будем знакомиться с инструментом для создания веб-приложений для Windows и Windows Phone – Web Application Template.

В этой статье мы с вами разберемся, что такое веб-приложения и зачем они нужны, а также посмотрим, как Web Application Template может помочь вам при создании веб-приложений.
Читать полностью »

На днях меня пропустили на хабр с моей статьёй про небольшую библиотеку PrettyForms для клиент-серверной валидации форм. Большое спасибо за внимание и за пропуск в сообщество. Честно, мне было очень приятно наконец попасть сюда)

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

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

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

Скринкаст работы приложения

Динамичное веб-приложение на основе Laravel, PrettyForms и Backbone.js - 1

Так каким образом можно всё это сделать? Присаживайтесь поудобнее, мы уже начинаем наш рассказ)
Читать полностью »

mitmproxy

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

Инструменты, традиционно используемые для прослушивания трафика (tshark, о котором мы уже писали, а также ngrep и tcpdump) для этой цели подходят плохо: функциональность для работы с протоколом HTTP у них ограничена.

Для анализа HTTP-трафика существует более специализированное, простое и эффективное решение. Знакомьтесь: mitmproxy. На русском языке подробных публикаций о нем почти нет. В этой статье мы поделимся своим опытом работы с mitmproxy и надеемся, что и вам он окажется полезным.
Читать полностью »

1. Вместо предисловия

“Король умер. Да здравствует король!” — все мы слышали эту французскую фразу, которая как бы разделяет эпохи правления монархов. Все! — кажется нам, — со старым покончено, теперь все будет по-новому, по-другому. Но так ли это?

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

Итак, нативные или как их еще называют, десктопные приложения — это особые программы, которые были разработаны под конкретную ОС (операционную систему) и имеют такое свойство, как “совместимость”. Признаюсь сразу: да, я разработчик подобных приложений. Впрочем, специфика моей деятельности (разработка CMS для интернет-магазинов) требует также отличных знаний и веб-технологий.

Как по мне, то значительную часть рабочего времени программиста можно разделить на две оставляющие: поиск решения и поиск инструмента. Думаю, многие заметили и знают, что чем лучше инструмент пригоден для выполнения какой-то задачи, тем менее он универсален для решения широкого спектра задач. То есть, нет идеального языка, технологии и т.п., и поэтому мне, как и многим из Вас, приходится периодически отвлекаться от насущных проектов; изучать, какие появились новые инструменты на рынке; принимать стратегическое решение о том, что я буду изучать завтра. К примеру, ведь может уже давным-давно никто не пользуется отверткой для закручивания шурупов, а использует шуроповерт, или вовсе перешел на новую технологию “дюбель-гвоздь”.
Читать полностью »

Веб-приложения могут превзойти нативные программы по функциям и удобству использования. Но для этого нужно, чтобы у разработчиков был выбор языков программирования. Такую точку зрения высказал Гилад Браха (Gilad Bracha) из компании Google, один из авторов языка программирования Dart, в выступлении 11 июня на конференции для разработчиков QCon в Нью-Йорке.

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

Автор Dart назвал несколько малоизвестных экспериментальных языков веб-программирования.
Читать полностью »

На днях была поднята интересная тема — о шаблонах веб-приложений. Давайте еще немного поговорим об этом.

Уважаемые коллеги, разрешите задать вам исключительно профессиональный вопрос…
Читать полностью »

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

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

Предметом исследования стали 67 ресурсов крупнейших российских организаций государственной и промышленной отраслей, сферы телекоммуникаций и IT (банковским системам посвящена отдельная работа).Читать полностью »

В последнее время стало модным использовать термины «Web-приложение», «front-end-архитектура», «Web 2.0», «HTML5-приложения». Но, к сожалению, в большинстве случаев контекст использования этих терминов не всегда верен, поскольку не учитывает всю специфику реализации и использования архитектуры Web-приложения. Сегодня речь будет идти именно об архитектуре.

Толчком к написанию данной статьи послужила публикация в блоге http://blog.pamelafox.org/2013/05/frontend-architectures-server-side-html.html. Стоит заметить, что она достаточно сжата и не учитывает возможности конверсии HTML5/Mobile. Здесь же мы попытались рассмотреть архитектуру более подробно, с учетом последних трендов в Web и некоторых ключевых моментов для заказчика приложения (таких, как безопасность).

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

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

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

К сожалению, объективно оценить совершенно разные архитектуры невозможно. Мы воспользуемся следующими критериями для оценки:

Пользователь:
Отзывчивость/юзабилити: обновление данных на странице и переключение между страницами (время отзыва). Богатство и удобство интерфейса, его интуитивность.
Linkability: возможность сохранять закладки и ссылки на различные разделы сайта.
Оффлайн: возможность работы приложения без сети.

Разработчик:
Скорость разработки: скорость добавления нового функционала, рефакторинг, распараллеливание процесса разработки между разработчиками и верстальщиками, и т. д.
Производительность: максимально быстрый отклик от сервера с минимальными затратами вычислительных мощностей.
Масштабируемость: возможность увеличения вычислительных мощностей либо дискового пространства в связи с ростом количества информации либо количества пользователей. В случае использования распределенной масштабируемой системы должна обеспечиваться согласованность данных, доступность и устойчивость к разделению (CAP-теорема). Надо заметить, что количество фич/скринов приложения с ростом пожеланий заказчика (на клиентской стороне) не относится к данному определению — это уже скорее зависит не от типа Web-архитектуры, а от используемого фреймворка и исполнения.
Тестируемость: возможность и легкость тестирования (модульное авто-тестирование).

Заказчик:
Функциональная расширяемость: возможность наращивания функционала с минимальными временными и денежными затратами.
SEO: пользователи должны иметь возможность найти приложение, используя любую поисковую систему.
Поддержка: расходы на поддержание инфраструктуры приложения — затраты на железо, сетевую инфраструктуру, персонал, необходимый для обслуживания приложения.
Безопасность: Заказчик приложения должен быть уверен в сохранности бизнес-данных и недоступности данных о других пользователях. В качестве главного критерия безопасности мы будем рассматривать только возможность изменения функциональности поведения приложения на клиенте, а также связанные с этим риски. Стандартные угрозы (к примеру, анализируемые в https://www.owasp.org/index.php/Main_Page) одинаковы для всех сравниваемых архитектур. Безопасность же на участке передачи данных «сервер-клиент» мы не берем во внимание в связи с тем, что все рассматриваемые архитектуры одинаково подвержены взлому — канал передачи данных может быть одним и тем же.
Конверсия: сайт — мобильное или десктопное приложение: возможность опубликовать приложение в мобильных маркетах, или обернуть его в десктопное приложение с минимальными дополнительными затратами.

Возможно, некоторые критерии или наши оценки могут показаться Вам некорректными; но цель данной статьи — не показать, «что такое хорошо, а что такое плохо», а сделать более детальный обзор и показать возможность выбора.

Попробуем выделить основные типы Web-приложений в зависимости от ролей, выполняемых сервером и браузером (клиентом).

Тип 1: Server-side HTML

image

Самая распространенная на данный момент архитектура. Заключается в том, что сервер генерирует HTML-контент и отправляет его клиенту как полноценную HTML-страницу.
Иногда эту архитектуру называют «Web 1.0», по причине того, что она появилась первой, и в данный момент является доминирующей в Web.

Отзывчивость/юзабилити: 1/5. Наименее оптимальная из рассматриваемых архитектур. Связано это с тем, что между сервером и клиентом необходима пересылка огромного объема данных, ответственных не только за сами бизнес-данные, но и за их оформление. Пользователь вынужден ждать перезагрузки страницы в ответ на тривиальные действия, например обновление только небольшой части страницы. UI-шаблоны на клиенте зависят непосредственно от фреймворков, применяемых на сервере. В связи с ограниченностью мобильного интернета и большими объемами пересылаемых данных, данная архитектура практически не работоспособна в мобильном сегменте. Нет способа доставки мгновенных обновлений данных или изменений в реальном времени. Если рассматривать возможность изменений в реальном времени путем генерации на стороне сервера и обновления клиента (через AJAX, WebSockets) в виде готовых кусков контентa, плюс оформление с заменой части страницы, то мы уже выйдем за границы рассматриваемой архитектуры.
Linkability: 5/5. Из рассматриваемых архитектур linkability легче всего реализуема в этой. Связано это с тем, что на сервере по умолчанию в соответствие одному URL ставится конкретный HTML-контент.
SEO: 5/5. Реализуется достаточно просто, аналогично предыдущему пункту — контент страницы известен заранее.
Скорость разработки: 5/5. Самая старая архитектура, поэтому возможно выбрать любой серверный язык и фреймворк под конкретные нужды.
Масштабируемость: 4/5. Если рассматривать генерацию HTML, то при возрастающей нагрузке в конце концов возникает момент, когда необходима реализация балансировки для распределения нагрузки. Гораздо сложнее ситуация с масштабированием БД, но эта задача одинакова и характерна для всех трёх рассматриваемых архитектур.
Производительность: 3/5. Тесно связана с отзывчивостью и масштабированием в плане траффика, скорости и т.п. Производительность низкая, так как требуется пересылка самого большого объема данных, которые содержат в себе HTML, оформление, а также сами бизнес-данные. Таким образом, необходимо генерировать данные для всей страницы (а не только для измененных бизнес-данных), а также всю сопутствующую информацию (например, оформление).
Тестируемость: 4/5. Положительный аспект данной архитектуры состоит в том, что для тестирования фронт-энда в общем случае не нужны специальные инструменты, поддерживающие интерпретацию JavaScript (поскольку контент страниц является статическим).
Безопасность: 4/5. «Нельзя сломать то, чего нет» — вся логика поведения приложения находится на сервере. При этом данные пересылаются в открытом виде, поэтому по необходимости рекомендуется защищенный канал (что по сути касается любой архитектуры, связанной с сервером). Вся функциональность защиты ложится на серверную сторону.
Конверсия: сайт — мобильное или десктопное приложение: 0/5. В большинстве случаев это просто невозможно. Исключение (или, скорее, экзотику) составляют редкие случаи: к примеру, если у Вас сервер реализован на node.js, и при этом нет больших баз данных; или если Вы пользуетесь сторонними веб-сервисами для получения данных (но это уже более продвинутый вариант архитектуры). Таким образом Вы обернете ваше приложение с помощью node-webkit или аналогов.
Оффлайн: 2/5. Реализуется с помощью манифеста на сервере, введенного в спецификации HTML5. Если браузер поддерживает данную спецификацию, все страницы приложения будут кэшироваться, и в случае отключения от сети пользователю будет показана кэшированная страница.

Читать полностью »

image

Веб-сервисы постеменно начинают использовать новый сервис Dropbox Chooser, упрощающий интеграцию с Dropbox, и дополняющий уже существующий Dropbox API. В рамках нового сервиса разработчикам предлагается небольшой JavaScript-компонент, который можно встраивать в приложения, и который автоматически публикует или прикрепляет документы.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js