Пример использования Backbone: админка хранилища JS логов. Часть 3

Содержание

 

В этой, заключительной части статьи мы займемся реализацией представлений для созданных ранее моделей и коллекций.

Читать далее

Пример использования Backbone: админка хранилища JS логов. Часть 2

Содержание

 

В этой части статьи мы закончим реализацию моделей и коллекций, начатую в предыдущей части.

Читать далее

Пример использования Backbone: админка хранилища JS логов. Часть 1

Содержание

 

Эта статья описывает в подробностях процесс создания одностраничного веб-приложения с использованием Backbone.js. Статья рассчитана на тех, кто уже прошел первое знакомство с Backbone, но хотел бы увидеть побольше практических примеров.
Здесь будут рассмотрены такие практические вопросы как:

  • переопределение методов sync и parse в моделях и коллекциях для кастомной синхронизации с сервером через нестандартное API.
  • выделение атрибута-массива из одиночной модели в отдельную коллекцию со своим представлением (View) и установка связи такой коллекции с моделью-источником.
  • реализация выбора (выделения) элемента коллекции и его представления с сохранением своего состояния.

Читать далее

Каркас многопоточного парсера: применение на примере парсинга IMDB Top 250

Замечание: В этой статье под многопоточностью имеется в виду использование возможностей multi-curl, а под парсером/парсингом — общая схема (алгоритм) сбора данных с вебсайта. Парсинг HTML (DOM) здесь не рассматривается.

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

  • сохранение и восстановление текущего состояния парсера.
  • остановка (пауза) парсера по заданному таймауту.
  • остановка (пауза) парсера по внешнему запросу, например, по нажатию кнопки паузы в интерфейсе парсера.
  • получение текущего прогресса выполнения парсера, например, для вывода его в интерфейсе парсера.

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

Кроме того, использование multi-curl накладывает определенные ограничения на структуру кода парсера. Каркас берет на себя все тонкости, связанные с multi-curl. Но платой за это становится жесткая структура, которой должен следовать код парсера (впрочем это обычное свойство каркасов). По сути весь функционал парсера реализуется через колбеки — методы, вызываемые каркасом при определенных событиях.

Читать далее

Кроссбраузерная альтернатива console.log, или Как я перестал волноваться и полюбил клиентскую отладку

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

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

Даже такая, казалось бы, простая вещь, как console.log, не может стать решением проблем. Как известно, этот метод не является частью стандарта DOM, так что даже его наличие в браузере конечного пользователя отнюдь не гарантировано (как всегда, в первую очередь это касается мобильных устройств), не говоря уже об особенностях реализации.

Все это наводит на мысль о необходимости появления универсального средства отладки. Таким средством может стать опенсорсное решение JS LogFlush, о котором пойдет речь в этой статье.

Читать далее

Многопоточный сбор данных с использованием цепочек связанных cURL-запросов. Часть 2

Первую часть статьи читайте здесь.

До сих пор мы еще никак не касались вопросов обработки cookies и использования прокси в условиях многопоточности запросов. Пора исправить эту оплошность и уделить внимание этим вопросам, имеющим большое практическое значение при разработке парсеров.
Читать далее

Многопоточный сбор данных с использованием цепочек связанных cURL-запросов. Часть 1

Библиотека cURL — лучший друг разработчика парсеров, ботов и прочих средств онлайн-автоматизации. Она позволяет сделать многие сложные вещи простым и универсальным способом (достаточно лишь правильно настроить опции cURL). Но все оборачивается по-другому, когда дело доходит до многопоточности, то бишь параллельности выполнения запросов. Эта довольно «скользкая» тема почему-то у многих вызывает большие сложности с пониманием. Во всяком случае именно так было со мной, когда я впервые столкнулся с необходимостью распараллеливания запросов. Мое первое знакомство с multi-curl было весьма непродолжительным, сколь и печальным. Короче говоря, официальный мануал по мультикурлу в PHP я попросту не осилил.

…Но мир не без добрых людей. Оказалось, что существует множество оберток мультикурла, позволяющих пользоваться всеми его преимуществами, не вникая при этом в суть его магии. Одна из самых популярных таких оберток — PHP-класс Rolling Curl. Имея под капотом наиболее эффективную реализацию мультикурла, Rolling Curl предоставляет простой и удобный интерфейс для параллельного выполнения множественных HTTP запросов. С помощью этого класса я смог сразу же и без особых проблем применить многопоточность на практике, чему был несказанно рад. С тех пор я стал большим его поклонником… Собственно на этом можно было бы и закончить эту статью, а то и вовсе и не начинать, если бы… опять не одно «но».
Читать далее

Импорт в Prestashop: подводные камни

Как-то мне довелось писать парсер для магазина на PrestaShop. Хочу теперь поделиться своим мимолетным опытом знакомства с этой платформой. К сожалению, не очень приятным. Нет, я ничего против нее не имею. Вполне себе симпатичное e-commerce решение, удобное для пользователей. Можно сказать, приятное в любом отношении. Кроме отношения к разработчикам.
Читать далее

Вывод и фильтрация больших таблиц данных с помощью плагина DataTables + ColumnFilter. Часть 2

В первой части статьи рассказывалось об использовании плагина DataTables для вывода больших таблиц данных в режиме обработки данных на стороне сервера и применении дополнения Column Filter для индивидуальной фильтрации по столбцам

В этой части речь пойдет о более продвинутом использовании дополнения Column Filter, включающем:

  1. создание фильтров в виде списков с множественным выбором (т.е. с возможностью выбора нескольких значений);
  2. построение цепочек зависимых списков фильтрации.

Читать далее

Вывод и фильтрация больших таблиц данных с помощью плагина DataTables + ColumnFilter. Часть 1

Веб-разработчики довольно часто сталкиваются с задачей отображения на странице данных в табличной форме с возможностью их сортировки, поиска/фильтрации, разбиения на страницы и удобной навигации по ним. Например, для меня это стало актуально при создании админки для одного сайта. Каждый разработчик решает эту задачу по-своему. Многие не сильно с этим заморачиваются и в результате получаются интерфейсы в стиле ранних версий phpMyAdmin, с полным обновлением страницы после любого клика мышью. Но сейчас уже не начало 2000-х, а значит, пора уже и админки переводить на AJAX и jQuery. Мне в этом очень помог замечательный плагин DataTables, который избавил меня от необходимости изобретать велосипед и писать тонны кода. С его помощью я смог в сжатые сроки придать админке современный вид. Теперь я хочу поделиться некоторым опытом, накопленным за время использования этого плагина.
Читать далее