Содержание
В этой, заключительной части статьи мы займемся реализацией представлений для созданных ранее моделей и коллекций.
В этой, заключительной части статьи мы займемся реализацией представлений для созданных ранее моделей и коллекций.
В этой части статьи мы закончим реализацию моделей и коллекций, начатую в предыдущей части.
Эта статья описывает в подробностях процесс создания одностраничного веб-приложения с использованием Backbone.js. Статья рассчитана на тех, кто уже прошел первое знакомство с Backbone, но хотел бы увидеть побольше практических примеров.
Здесь будут рассмотрены такие практические вопросы как:
sync
и parse
в моделях и коллекциях для кастомной синхронизации с сервером через нестандартное API.View
) и установка связи такой коллекции с моделью-источником.Замечание: В этой статье под многопоточностью имеется в виду использование возможностей multi-curl, а под парсером/парсингом — общая схема (алгоритм) сбора данных с вебсайта. Парсинг HTML (DOM) здесь не рассматривается.
Я довольно долгое время пишу многопоточные парсеры на PHP. За это время у меня сформировался некий каркас, включающий в себя часто используемые вещи в парсерах. К их числу относятся:
Как видно, большинство пунктов имеет отношение к организации интерфейса парсера.
Кроме того, использование multi-curl накладывает определенные ограничения на структуру кода парсера. Каркас берет на себя все тонкости, связанные с multi-curl. Но платой за это становится жесткая структура, которой должен следовать код парсера (впрочем это обычное свойство каркасов). По сути весь функционал парсера реализуется через колбеки — методы, вызываемые каркасом при определенных событиях.
Отладка — неизбежный и один из самых длительных этапов любого вида разработки. Клиентская веб-разработка в этом смысле не исключение. Более того, здесь этот вопрос стоит особенно остро, так что зачастую становится источником головной боли. Если при серверной отладке область действий программиста ограничена инструментом разработки, то на стороне клиента задачу отладки осложняют многочисленные внешние факторы — браузеры, с многообразием и различиями которых приходится считаться любому веб-разработчику.
Одной из основных проблем в данном случае является отсутствие единого интерфейса отладки. Во-первых, далеко не каждый браузер имеет встроенные инструменты отладки. Прежде всего это касается мобильных устройств. Во-вторых, в тех браузерах, где имеются инструменты отладки, интерфейс последних может значительно отличаться друг от друга.
Даже такая, казалось бы, простая вещь, как console.log, не может стать решением проблем. Как известно, этот метод не является частью стандарта DOM, так что даже его наличие в браузере конечного пользователя отнюдь не гарантировано (как всегда, в первую очередь это касается мобильных устройств), не говоря уже об особенностях реализации.
Все это наводит на мысль о необходимости появления универсального средства отладки. Таким средством может стать опенсорсное решение JS LogFlush, о котором пойдет речь в этой статье.
Первую часть статьи читайте здесь.
До сих пор мы еще никак не касались вопросов обработки cookies и использования прокси в условиях многопоточности запросов. Пора исправить эту оплошность и уделить внимание этим вопросам, имеющим большое практическое значение при разработке парсеров.
Читать далее
Библиотека cURL — лучший друг разработчика парсеров, ботов и прочих средств онлайн-автоматизации. Она позволяет сделать многие сложные вещи простым и универсальным способом (достаточно лишь правильно настроить опции cURL). Но все оборачивается по-другому, когда дело доходит до многопоточности, то бишь параллельности выполнения запросов. Эта довольно «скользкая» тема почему-то у многих вызывает большие сложности с пониманием. Во всяком случае именно так было со мной, когда я впервые столкнулся с необходимостью распараллеливания запросов. Мое первое знакомство с multi-curl было весьма непродолжительным, сколь и печальным. Короче говоря, официальный мануал по мультикурлу в PHP я попросту не осилил.
…Но мир не без добрых людей. Оказалось, что существует множество оберток мультикурла, позволяющих пользоваться всеми его преимуществами, не вникая при этом в суть его магии. Одна из самых популярных таких оберток — PHP-класс Rolling Curl. Имея под капотом наиболее эффективную реализацию мультикурла, Rolling Curl предоставляет простой и удобный интерфейс для параллельного выполнения множественных HTTP запросов. С помощью этого класса я смог сразу же и без особых проблем применить многопоточность на практике, чему был несказанно рад. С тех пор я стал большим его поклонником… Собственно на этом можно было бы и закончить эту статью, а то и вовсе и не начинать, если бы… опять не одно «но».
Читать далее
Как-то мне довелось писать парсер для магазина на PrestaShop. Хочу теперь поделиться своим мимолетным опытом знакомства с этой платформой. К сожалению, не очень приятным. Нет, я ничего против нее не имею. Вполне себе симпатичное e-commerce решение, удобное для пользователей. Можно сказать, приятное в любом отношении. Кроме отношения к разработчикам.
Читать далее
В первой части статьи рассказывалось об использовании плагина DataTables для вывода больших таблиц данных в режиме обработки данных на стороне сервера и применении дополнения Column Filter для индивидуальной фильтрации по столбцам
В этой части речь пойдет о более продвинутом использовании дополнения Column Filter, включающем:
Веб-разработчики довольно часто сталкиваются с задачей отображения на странице данных в табличной форме с возможностью их сортировки, поиска/фильтрации, разбиения на страницы и удобной навигации по ним. Например, для меня это стало актуально при создании админки для одного сайта. Каждый разработчик решает эту задачу по-своему. Многие не сильно с этим заморачиваются и в результате получаются интерфейсы в стиле ранних версий phpMyAdmin, с полным обновлением страницы после любого клика мышью. Но сейчас уже не начало 2000-х, а значит, пора уже и админки переводить на AJAX и jQuery. Мне в этом очень помог замечательный плагин DataTables, который избавил меня от необходимости изобретать велосипед и писать тонны кода. С его помощью я смог в сжатые сроки придать админке современный вид. Теперь я хочу поделиться некоторым опытом, накопленным за время использования этого плагина.
Читать далее