В начале сентября я поставил себе задачу: решить задачу парсинга данных из Google Maps-поиска, их редактирования и последующего добавления в базу моего контентного сайта (каталоге предприятий ;) ).

Всё бы ничего, однако в середине месяца я сказал себе: «блин, у тебя столько свободного времени, давай-ка поделаем что-нибудь новое!» Полистал Хабер, нашёл мега-статью «Десять способов ускорить разработку» (мега — не потому, что там какие-то откровения, а потому, что она является своеобразным чеклистом «шо нужно обязательно сделать») и начал следовать ей, внедряя часть пунктов.

Ах, да, задачу я решил не создав очередной скрипт dosomething.php для командной строки, а написав взрослый удобный интерфейс для браузера со всеми современными JavaScript-делами. В итоге время выполнения задачи из 2 дней кодинга + 2 дней тупой ручной рутины по перепахиванию данных возросло до 2,5 недели ковыряния в незнакомых мне до этого штучках. Итак, шо же я заюзал.

IDE

Вы щас упадёте: последние лет 10 я использую EditPlus. Ага, это такой древний редактор, в котором даже регулярные выражения неправильно реализованы. Нет, я помню, что такое IDE, писал-с когда-то сначала на Паскакале, потом — на Delphi. Однако все попытки заюзать IDE, чтобы писать в PHP у меня заканчивались ничем. Они были монструозные, они тормозили, в них, даже по дефолту, была открыта куча окошек-фреймов с браузерами по-всему-чему-угодно, в-общем, я пугался и закрывал это дело.

Последним IDE, которое я в страхе закрыл, был восхваляемый всеми за универсальность Eclipse. Люди советовали NetBeans, но я начитался каких-то дурацких мнений и решил, что NetBeans не такой универсальный, а значит, вкладывать силы в его изучение бесперспективно.

Так вот: ребята, если гуглите инфу по современным технологиям — смело ставьте фильтр «показывать страницы только за последний месяц».

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

Фреймворки

Для JavaScript-части выбрал YUI (Yahoo User Interface). Выбор стоял между JQuery и YUI (первый — т. к. он активно используется многими разработчиками, живёт и развивается, второй — т. к. он идеален для интерфейсов).

JQuery использует открытую плагинную структуру, а это — зло (нет единообразности, + куча клонированных сущностей, поди выбери правильный компонент). У него, конечно, есть несколько своих компонентов, но набор странный, неполный. Той же таблицы с редактором строк, сортировкой и прочими табличными делами — нету. В YUI, как вы уже поняли, всё совершенно наоборот: его разрабатывают опытные программеры из Yahoo, архитектура закрытая, всё единообразно, при этом все важные компоненты есть. Ну и то, что фреймворк появился в результате программирования сервисов такого популярного портала, как Yahoo, даёт надежду, что писан YUI не левой ногой, а сделан так, чтобы всё работало быстро и кроссплатформенно.

Кстати, именно потому, что в JQuery плагинная структура, использование хостинга этого фреймворка у Гугла становится бессмысленным после первого же стороннего плагина. YUI же захощен полностью, и не только у Гугла, но и на сервере Yahoo.

Ах, да, ещё в YUI есть CSS-фреймворк. Оных вообще пока мало, и ни один из них не хощен у Гугла/Яху. В этом проекте я практически не воспользовался CSS-возможностями YUI (ну, разве что дефолтный скин натянул). Но, как я понимаю, сия штука должна быть очень удобной, если ты каждый божий день не занимаешься вёрсткой страниц и не любишь думать, почему DIV приклеивается к одному месту в ФФ и Опере, а в Осле не приклеивается, или мучительно пытаться сверстать блогдизайн в 2 колонки, борясь с разной трактовкой margin-ов и padding-ов в браузерах.

Фреймворков для PHP-части не использовал, т. к. парсер был уже написан за несколько дней до этого, остальная PHP-часть была крохотная — интерфейс между парсером и вебстраницей.

Denwer

Когда-то я активно использовал Denwer. Потом что-то там сломалось, мне было лень разбираться, я стал отлаживать всё прямо на сервере. Как только я поставил NetBeans, я даже пытался насладиться функцией залива только что сохранённых скриптов на сервер. А так как инет у меня довольно нестабильный, то иногда работа вставала на 5-20 минут. В-общем, коль я решил быть оптимальным, то расстарался, и поставил Denwer по-новой. Скорость разработки увеличилась в 10 раз.

Отладка

Коль поставил Denwer, то приделал к php и xdebug (на сервере он у меня отрублен из-за несовместимости с Zend Optimizer) и попытался им отлаживать код. Из-за нелинейности комплекса (асинхронные запросы) дебажились не все вызовы скриптов, так что в этом проекте отлаживать по-взрослому не получилось.

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

В итоге 99% отладки пришлись на долю YUI-шного компонента Logger. Это такое окошко на странице, в которое можно сливать любые сообщения в любом формате, с последующей фильтрацией по типам сообщений. Если раньше я делал что-то подобное при помощи alert(), то с этим компонентом всё гораздо удобнее: выполнение не прерывается каждым сообщением, браузинг сообщений тоже удобный.

Ау, помощники?

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

Поэтому у меня предложение к опытным php+javascript программистам: проинспектировать мой проект, и дать рекомендации по тому, как это можно сдизайнить лучше. Лучше — в плане понимаемости кода, корректности применения технологий, удобства повторного использования кода. Проект на самом деле небольшой, 11 кБайт на PHP и 26 — на javascript-е. Готов заплатить за это, если нужно.

Другие посты на эту тему

Подпишитесь на RSSRSS-канал блога!