В начале сентября я поставил себе задачу: решить задачу парсинга данных из 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-е. Готов заплатить за это, если нужно.
А чего ты ленишься ООП подучить? Без него я уже просто не представляю как можно работать.
Можешь кинуть мне свое творение на почту, ну или его куски, если боишься за копирайт, помогу чем смогу. Только уточни, пожалуйста, еще чуть более подробно что эта штука должна делать, а то не очень понял.
Кстати, ничего постыдного в EditPlus нет. Я вообще ничего кроме Notepad++ не использую, потому что ничего лучше в природе еще не придумали для веб-программиста, ИМХО.
Отличная статья!
Давно ничего настолько полезного не было.
Кстати, ООП ради ООП — это зло. Так что не парься.
Ну а у яваскрипта похоже судьба плодить огромное количество безымянных функций. Таким макаром написаны почти все фреймворки.
Насчёт отладки яваскрипта — почему не используешь Firebug?
Если про него не знаешь, то попробуй обязательно; это экстеншн к фаерфоксу который в веб разработке помогает практически во всём. Среди самых удобных фич браузинг DOM-модели, окошко в которое также как ты и описал, можно выводить сообщения, профайлер сети и скриптов, и консоль, в которую можно писать любой яваскрипт код и запускать его сразу прямо в контексте страницы.
Бездомный Бродяга: да ты понимашь, мозг отказывается работать на абстрактных ненужных примерах в книгах. Я уже читал много раз :) Толку не вышло — руки выписывают линейные скрипты, ну, с ф-циями иногда.
>ничего постыдного в EditPlus нет
При том, что я чуть что — лезу в мануал, не помню большинства PHP-фций, EditPlus — это глупо. IDE само по себе мануал — помогает быстро вспомнить всё это и кучу всего ещё. Форматирует код (у меня паранойя на предмет форматирования, а в EditPlus как-то тухло постоянно отступы вбивать, и чуть что — всё сдвигать). Помогает отлаживать, откатывать и т. п. В-общем, Editplus и Notepdad++ супротив нормального IDE — это как телега супротив самолёта.
По проекту — скину попозжа. Секретов особых там нету.
Павел: ООП не ради ООП. Я же написал, ради чего. Нормально написанный класс (т. е. достаточного уровня абстракции) выдирается и вставляется в абсолютно любой проект. Далее — нарастить мощь, не меняя его тоже можно. Далее — отдать кому-то, и он будет юзать класс, не парясь, шо внутри. Собственно, для всего этого ООП и придуман.
gman: дык оперщик. Не, я знаю давно про него. Но с ФФ у меня то срастается любовь, то нет (вплоть до того, что установленный с 0 браузер полностью грузит проц и висит).
Кстати, именно сегодня (до твоего коммента) поХабрил статьи про отладку javascript, затем установил Firebug. Пока искал его — увидал, что к нему есть куча аддонов. Вплоть до инструментов отладки PHP. Тоже некоторые поставил.
Уже, кстати, отладил им скриптлет, о котором, кстати, скоро напишу пост.
Упс, сглазил: почти отладил :P
Я тоже давно с «Оперой», но сколько ни пробовал, Dragonfly вообще никак не вкуривается. То ли он на самом деле какой-то хреновый, то ли лыжи не едут, то ли что ещё, ХЗ. Однако, с FireBug с самого начала его использования никаких проблем не было. Правда, сейчас вообще редко пользуюсь такими инструментами, как-то сразу обычно чётко всё работает, либо интуиция спасает. Опыт всё же много значит.
А вообще, расстроил ты меня маленько. Я думал, у тебя какой-то клёвый интересный проект, а оказалось, всего лишь каталог предприятий. Скука.
Тормоз, это бизнес, а не хаханьки. Интересных и клёвых проектов — до жопы. Только ничего общего с жизнью они не имеют.
Ничего себе, как всё серьёзно :)
Это проблема из разряда стартапомании. Все хотят заниматься клёвой веселухой. И я не исключение. Но сколько проектов зарабатывают деньги? Большинство создателей получает прибыль только с продажи всего проекта, или его доли. Далее идёт смешное пуканье на тему «как бы нам начать окупать это хозяйство?»
Вот недавно ж была статья в Таймс про Evernote. Прибыль (не доход!) щас около 80-90к. Это при штате в 30 человек. Это программа, которая дико популярна в США. Собираются в плюс выйти к 2011 году.
И это не просто мои домыслы — я знаю людей, у которых с их проектов есть чистая прибыль с 3-6 месяца. И которые не будут бегать с обосратыми попами во время очередного краха доткомов.
Поэтому я себя останавливаю в деланьи кульной веселухи. Когда будет очередной избыток времени и стабильности в делах — буду заниматься, как хобби.
> samlowry: мозг отказывается работать на абстрактных ненужных примерах в книгах.
это, сцуко удобно, как ни крути, и чем раньше перейдешь на ООП — тем, думаю, лучше, да и в чужих кодах ты как разбираешься без этих знаний?
> Notepdad++ супротив нормального IDE — это как телега супротив самолёта.
Я тоже не все функции php помню, для этого есть php.net =) Но это не мешает мне кодить в простом текстовом редакторе…
> Интересных и клёвых проектов — до жопы. Только ничего общего с жизнью они не имеют.
Поясни, пожалуйста, это как?
Бродяга: ты как-то проигнорировал, что кроме автоподсказок в IDE есть ещё десятки, если не сотни, фич, связанных с разработкой. Ты вообще юзал какие-то IDE? Сколько времени и какие, если юзал?
>Поясни, пожалуйста, это как?
Я пояснил выше, шо ж ты не читаешь всё :)
anonymous: а что за txt? Я, если подумать, я вообще правлю либо какие-то конфиги, либо исходники, либо html и иже с ними. На самом деле я до сих пор какие-то быстрые правки делаю в Edit+, но руки тянутся юзать фичи нетбинса даже там.
>увствую, что задержался гдето в начале 2000х
Ну вот я, собсна, эту мысль выразил в посте. Факт в том, что удобные и полезные инструменты уже есть, в отличии от 2-3 лет назад. Нетбинз стал универсальным, появились отладчики, типа Firebug, появились фреймворки для всех языков, которые _грех_ не использовать (если не хочешь делать манки ворк).
я тоже фанат едитплюс. использую лет 6-7. причем для всего, но не так давно решил поискать что-то посовременнее.. так ничего и не нашел — для текстового редактора.. не буду же я .txt в netbeans править. вот для php/c++ я обязательно попробую нетбинс.
наверное, тут больше сила привычки… консервативность эту надо искоренять, а то чувствую, что задержался гдето в начале 2000х в плане технологий в разработке и тулсах.
Сколько не пробовал IDE для php, ничего путнего не попадалось.
До сих пор юзаю Edit Plus который год.
Так как до этого писал на с++ (Visual Studio и СBuilder’е), поставил плагин VS.PHP. Все равно фигня.
Попробую сейчас NetBeans.
И что самое интерестное, что собственно нормальный IDE под PHP нету в принципе. Т.е. если ты например как нибудь решишься разрабатывать на яве, вот тогда можно реально оценить мощь IDE — а оцениваеться она в рефакторенге, метриках, облегчении юнит тестирования и прочее, прочее.
Хотя понято но что на больших проектах все в основном проявляеться.
А IDE для PHP (я правда Zend Studio и Eclipse видель только) отстают года на три минимум в развитии.
Чаще всего использую Notepad++. Т.к. есть подсказки по функциям если надо, авто дополнение слов, подсветка парных тегов, скобок, Quicktext, скорость — летает и пр. Также у Notepad++ лучше всех реализовано отображение отступов, что очень облегчает восприятие кода. Этого нет в Zend 5.5 который я изредка тоже использую и в NetBeans.
Возможно я не знаю и не использую возможности отладчиков, но пока в этом особой нужды небыло, да и для Notepad++ есть плагин, которые позволяют взаимодействовать с xdebag если что.
Еще очень не хватает знаний по SVN, а мой проект уже не маленький. Не знаю как это все дело настроить. Если смогу настроить, то скорей всего перейду на NetBeans.
Andipas: ну вот стопудово, если ты не юзаешь дебаггеры — то пишешь echo и print_r. А дебаггеры для того и нужны, чтобы постоянно не лепить горбатого.
Ну а шо, в Notepad++ подо все языки всё есть? Ты какие-то фичи назвал довольно таки потрясные.
А насчёт отступов ты неправ — в НетБинз есть и автоформатирование всего кода, и просто отступы по переносу строки.
— в Notepad++ подо все языки всё есть?
В Notepad++ есть подсветка многих языков, причем для PHP есть около 5 вариантов этой подсветки + можно настроить самому. Можно задать для типа файла определенную подсветку, я например сделал для .tpl подсветку как для html.
— А насчёт отступов ты неправ
Наверное ты не совсем понял о чем я. Подсвечивается тонкой вертикальной линией ( точечной, хз как ее назвать) отступы в коде. И когда, например курсор стоит у фигурной скобки } эта линия подсвечивается красным, до того места где начинается функция.
Вообщем это надо видеть и поработать с этим, потом уже чуствуешь себя очень неудобно если такой подсветки отступов нет.
Да в Zend-e мне очень нравилось форматирование по CTRL+SHIFT+F, но сейчас я и сам могу написать красиво код, используя выделение + TAB, SHIFT+TAB если нужно править чужой код, или свой. Хотя если нужно быстро отформатировать корявый формат кода, использую http://www.beautifyphp.com/
Кстати у меня точно такие же траблы с ООП, все хочу его изучить и внедрить, но пока, что все получается линейно )) Мануала, интересного и доходчивого тоже не нашел. Все какая то скукота по ООП. Думаю, что нужно, начать использовать какой нибудь фреймворк, и там уж без ООП не получится.
Да не, я не про подсветку. А про все языковые фичи — встроенный хелп по ф-циям, автоввод и т. п. Есть ли они для разных языков в Notepd++?
http://www.beautifyphp.com/ — не, это именно то, почему стоит юзать IDE. Для того, чтобы не юзать вообще что-либо ещё (мануалы, сервисы и т. п.).
Кстати, вот как раз на днях человек более-менее удобный подход начал давать к разработке: http://habrahabr.ru/blogs/macosxdev/72510/ . Как раз нескучно.
Да для дебага юзаю echo и print_r но на работе для кастома у клиентов, ничего лучше и не придумаешь наверное.
Я вот не могу понять зачем использовать технологии промышленного производства для создания опытных образцов?
На первом этапе реализации задумки стоит задача чтобы все работало. То есть хороши буквально любые способы реализации.
Пусть ООП подход реализуют те кто уже сделал десяток подобных проектов, но не человек, который даже не совсем представляет, чем это все может закончится.
Может быть я это все говорю, поскольку сам кодирую линейные программы.
Сергей, все мои опытные образцы разрастались в монстров о 10 главах. Т. к. там было всё линейно-функционально, как грицца — код-спагетти, то любое изменение давалось с большим трудом.
Далее — я делал другие проекты. Т. к. задачи, в общем-то, были схожие, то часто встречались места, которые по-идее, можно было бы взять из старых. Но — это ведь код-лапша. Вставить что-то без зубной боли (переписывания) было очень тяжело.
В-общем, не было у меня ощущения, что я работаю на будующее. Было — что я делаю что-то бренное и через месяц-другой это надо будет повторять.
Когда ты юзаешь ООП — ты делаешь детали, из которых можно _собирать_ что-то. Когда ты его не юзаешь — ты лепишь девайс на проволочках, клею и скотче.
Думаю, ты юзал какие-то сторонние библиотеки? А они ведь все написаны с использованием ООП. Не задумывался, почему?
ООП это не панацея, и бум культа ООП слишком переоценили методологию :)
JQuery на самом деле очень хорош, перешел недавно на него с Prototype, все эти ООП обертки в JS в любом случае оборачиваются так же и для JQuery…
MpaK: ну давай с аргументами всё-таки — почему ООП не работает?
ООП не то, что не работает, оно работает, просто не надо превращать всё и вся в объекты. Для библиотеки считающей время по календарям — класс, для мелочного вывода форм — класс… Это безумное клонирование сущностей всего и вся. Это наверное ПХП так испортил людей :) Когда нет понятия модуль или библиотека, нет нэйспейса хорошо, конечно начинают как безумные все оборачивать кучу переменных и парочку функций в классы, плодить их и использовать как статику…
Вполне можно писать не плохие (и небольшой командой продукты) и без ооп :) Что вполне делалось и делается, просто без фанатизма.
Я тоже пишу без ООП и вообще не понимаю людей, которые меня заёбывают фразами «учи ООП! без него ведь жить невозможно» :)
Бред! У меня точно такие же приложения, сложные парсеры, грабберы, спамилки и все это работает без ООП. Кстати, на ООП тоже пишут полную хуйню, посмотрите, например коды бирж ссылок, поебень в коде еще та :)
Работает? Работает! Быстро? Быстро! Так на кой черт мне ООП тогда?
P.S. и ООП в PHP заметно жрет проц, это моё личное имхо! лишние надстройки только.
Кэт, дело в методологии использования. Я точно знаю, для чего мне нужен ООП (кстати — для того же, для чего он задумывался). Люди же, про которых ты говоришь, начинают через жопу: с бездумного использования ООПа.
Toxic_Cat, ну такой подход имеет право на жизнь, но только если ты не ленивый, а каждый программист должен стремиться к ленности :) Мне лично проще один раз например написать класс парсера Твиттера, а дальше наследовать его для задачи парсинга например личных сообщений, сообщений обращений к тебе или просто ленты друзей. Получается универсально, меньше кода и доходчивее код к которому будет просто вернуться через год.
sam, не пугайся большого количества окошек, просто поставь aptana studio (кстати, раз ты пайтона начал осваивать — там есть энвиромент для него небольшой), позакрывай ненужные окошки нафиг и наслаждайся хорошим ide, там тебе и код-ассисты для html/css/javascript/php есть, и svn, и sftp/ftp синхронизация с удаленным хостом, и форматирование кода (сам тоже параною на тему форматирования), кароче must-have. Сам я с большим стажем эдитплюса. Кстати до сих пор его использую для открытия пхп файлов 2м кликом в эксплорере: зачем грузить например аптану для того чтобы посмотреть что там в скрипте.
Статья твоя всеже сподвигла таки поставить netbeans. Я уже собирался его поставить одно время, даже инсталлятор скачал, но в конце решил не заморачиваться и не забивать мозг, в итоге передумал.
Ничего против ноутпадов не имею, но согласитесь, код-ассист рулит! ;-)
Да вообще пофиг, Аптана, Бобы или что-то ещё. Суть в том, что да, оне помогают программировать. Но я вот чё-то сошёл с дистанции, поставив Textmate, он забористей Edit+ будет. И именно Аптану поставил на Мак, но она выглядит, как олдскул звездолёт (куча пимп) + какие-то там мелочи в настройке меня расстроили, и я её просто закрыл. Пока что.