Рубрика «Веб-разработка» - 237

StateController. Событийная модель в разработке интерфейсов. Часть 2
Часть 1

В данной статье мы рассмотрим базовые понятия событийной модели StateController'а.

Зоны распространения событий

В селективной модели приложений работа ведется с теми элементами, которые были предварительно выбраны для работы. В чистой событийной модели событие должно распространяться на все элементы DOM-дерева. Это совершенно не важно на маленьких объемах, но при росте количества нод деградация скорости будет даже не линейной. Представьте себе, что событие click должно пройтись по всем нодам, чтобы определить, на каких именно элементах оно сработает. Есть предположение, что псевдокласс :hover в IE6 именно так и работал, поэтому он так сильно тормозил.

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

StateController. Событийная модель в разработке интерфейсов. Часть 1

Введение

Сейчас все больше и больше появляется JavaScript-фреймворков, которые несколько отличаются от нынче модного jQuery. Одни стараются реализовать MVC, другие предоставляют сильносвязанную архитектуру, третьи направлены на асинхронность, и так далее. Каждый разработчик выбирает то, что ему ближе всего, и что наиболее эффективно решает поставленную задачу. Поэтому я не буду обсуждать достоинства или недостатки фреймворков, а расскажу, к чему пришли мы в наших продуктах, какие концепции разрабатывались и какие проблемы решались.

Начну, пожалуй, с задачи. Мы строили SaaS, информационно-аналитическую систему, которая оперировала существенными объемами данных. Пользователь мог получать довольно большое количество информации за один запрос, но при этом мог некоторые блоки информации уточнять, переходя на еще больший уровень детализации. Построй мы классическую схему многостраничного приложения, мы бы получили грустную скорость выборки данных из базы, большое количество передаваемого трафика, но самое главное — не удовлетворяли бы потребность рынка, который требовал как можно меньшего времени ожидания ответа на запросы. Поэтому мы выбрали модель построения одностраничного приложения, когда данные догружаются по требованию и только те кусочки, которые нужны пользователю в данный момент времени. Убили трех зайцев одновременно.
Читать полностью »

imageВообще-то для этого существует комбинация клавиш Ctrl + Home — в самый вверх, и Ctrl + End — в самый низ, если кто не знает или не помнит. Но ещё бывает лень потянуться к клавиатуре чтобы нащупать соответстующие кнопки, особенно когда сидишь откинувшись в кресле, а в руках чашка с кофе. Что касается обычных, в том числе «непродвинутых» юзеров, так им и дела нет до каких-то сочетаний и комбинаций.

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

Существует такое понятие, как корневой домен, соответственно, в конце каждого домена есть точка. Возможно, вы и не подозреваете, что ваш сайт доступен по доменному имени с точкой в конце (domain.zone.), так как браузеры позволяют обращаться к сайтам, как с точкой в конце домена, так и без неё.
Читать полностью »

Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.

Дайджест интересных новостей и материалов из мира айти за последнюю неделю №48 (9 — 15 марта 2013)
Читать полностью »

AngularJS — прекрасный фреймворк для построения веб-приложений. У него замечательная документация, снабженная примерами. В обучающих «пробных» приложениях (вроде TodoMVC Project) он очень достойно показывает себя среди остальных прочих фреймворков. По нему есть отличные презентации и скринкасты.

Однако если разработчик никогда ранее не сталкивался с фреймворками, подобными Angular, и пользовался в работе в основном библиотеками вроде jQuery, то ему может быть трудно изменить свой образ мышления. Как минимум, так было со мной, и я бы хотел поделиться некоторыми заметками на эту тему. Может быть, кому-то это будет полезно.
Читать полностью »

Порой администраторы вконтакта удивляют своей однобокостью, и невозможностью сотрудничества с пользователем. В прошлый раз я бодался с ними, пытаясь выяснить что именно нарушает перенос фотографий пользователей внутри контакта, давших собственное согласие. Админы не смогли ничего вразумительно ответить + прочитав пост на хабре, начали писать вконтакт гневные мессаги уже с личных аккаунтов (Юпитер ты сердишься?...).

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

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

И чувствуя себя героем информационной революции талантливым программистом написавшим простое казуальное приложение, я отправил админам запрос… и когда я получил ответ, началось самое интересное (back to USSR):

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

Узнайте бандлер получше Бандлер оказался замечательным средством установки и отслеживания джемов, которое так нужно каждому руби проекту настолько, что почти каждый проект использует его. Однако, несмотря на его повсеместность, большинство пользователей не знают о встроенных средствах и помощниках бандлера. В попытке повысить осведомленность (и производительность Руби разработчиков), я собираюсь рассказать вам о них.

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

Интернет для современного человека стал неотъемлемой частью повседневной жизни. Общение, развлечения, отдых, работа, хобби – всё это частично перенеслось на страницы всемирной паутины. Как эффективно организовать работу в сети, чтобы иметь постоянный доступ к важной информации, получать самую актуальную информацию. Использование разных онлайн инструментов и сервисов позволяет экономить самое ценное для современного человека – время.

image

Уже неоднократно участники проекта описывали различные облачные хранилища данных, разнообразные сервисы хранения ссылок (так называемые социальные или визуальные закладки), которые помогают сделать работу в Интернете эффективной. В очередной раз описывать все эти сервисы нет никакой необходимости.
Кто не успел ознакомиться с такими сервисами, может посмотреть по следующим ссылкам:Читать полностью »

Анализ применения SVG в качестве background image
В последнее время все чаще появляются статьи, в которых авторы рекомендуют использовать SVG для backgroud-image. Действительно, применение SVG приносит большую пользу. Во всех прочитанных статьях очень вскользь упоминалось про производительность отрисовки SVG, что это более затратная операция, так как браузеру необходимо каждый раз заново отрисовывать растр.

И вот в один прекрасный день, открыв одно веб-приложение, я заметил, что мой браузер безумно «пожирает» память — одна вкладка «ела» около 600 МиБ. На МacBook с ретиной дела обстояли еще хуже. С этого момента началось расследование, куда же течет память. Кому интересно, добро пожаловать под кат.Читать полностью »


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