Итоги PHPConf Москва 2009

Posted in Events, Self Development on October 19th, 2009 by Yaroslav Vorozhko – Be the first to comment

Рад вас приветствовать друзья!

Мне выпала отличная возможность посетить PHPConf 2009 и HighLoad++ 2009 в Москве, спасибо компании Ivinco за эту возможность.

Хочу отдельно отметить некоторые доклады.

Александр Орлов провел отличный мастер класс – web-архитектор: 10 мантр менеджера веб проектов.

Johannes Schluter – главный разработчик ветки PHP 5.3 рассказал про новые возможности языка.

Довгаль Антон рассказывал про возможности демона Pinba и про то, как он помогает измерять производительность на таком крупном ресурсе как Badoo.com. Кстати, Антон является разработчиком Pinba и Badoo.com.

Аксенов Андрей – автор Sphinx, рассказывал про новые возможности Sphinx, как всегда его выступление не обошлось без шуток и аплодисментов. Андрей спасибо за хороший доклад. ;-)

Подробнее о каждом из перечисленных докладов я напишу отдельно.

Предлагаю провести следующую PHPConf в какой нибудь теплой стране вроде Египта или Турции – для гостей из других стран и дальних городов России проживание и проезд будет даже дешевле. :)

Спасибо всем докладчикам и организаторам за хорошо подготовленную и интересную конференцию!

Опубликована программа конференции PHPConf 2009

Posted in Events on September 2nd, 2009 by Yaroslav Vorozhko – Be the first to comment

Организаторы PHPConf 2009 опубликовали программу конференции и мастер классов. А также продлили летнюю стоимость регистрации до 10 сентября.

Кто будет участвовать отпишитесь в комментариях, вместе будет интересней. ;-)

Ответы на вопросы в интервью по веб разработке

Posted in Development, Self Development, Tips And Tricks on August 25th, 2009 by Yaroslav Vorozhko – 3 Comments

Антон Шевчук написал хороший список вопросов для интервью по приему на работу веб разработчиков. Я хочу предложить вам краткие комментарии и советы по каждому из вопросов, надеюсь это поможет вам лучше ориентироваться в мире веб разработки и поможет пройти интервью.

- С какими PHP библиотеками, фреймворками знакомы?
Соискатель должен знать о существовании таких фреймворков как Zend Framework, CakePHP, CodeIgniter или Symfony, и желательно иметь опыт работы с одним из них (список можно расширить – это не так принципиально).

За 4 с лишним лет работы PHP разработчиком я познакомился с тремя из перечисленных фреймворков, и активно использую Zend Framework.
Знание различных фреймворков дает вам понимание и идеи как писать код. Этим путем обязан пройти каждый разработчик. Изучайте и участвуйте в развитии Open Source проектов - это даст вам большой опыт, по сравнении с тем, который вы способны сами получить в аналитическом мышлении. Отвечая на этот вопрос будет уместно рассказать о своих способностях к проектированию и архитектурному мышлению.

- С какими API приходилось работать?
Интересуют Google API, AMF PHP, различные payment gateway, Facebook API, Twitter API и т.д.

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

- Есть ли опыт работы с различными CMS?
Опыт работы не как web-мастера, а как программиста…

Думаю компания использует некоторые CMS в своих проектах. Расскажите подробно про ту CMS с которой вы знакомы или пусть даже про свою само-писанную с которой довелось работать.

- Работал с PHP 4? Назови различия с 5-ой версией.
- Что нового в PHP 5.3?
- Типы данных в PHP?
Этот вопрос на добивание, он часто ставит в тупик, если человек отвечает что их восемь, а потом начинает их перечислять, значит он готовился к собеседованию :)

Все ответы есть в PHP мануале, просто RTFM.

- Что такое сериализация?
- Что самое сложное разрабатывали на PHP?
Этот вопрос может расставить все точки над “i”, но не стоит его задавать в самом начале – это пугает…

Второй вопрос очень хорош, и может быть даже решающим. Я бы рассказал здесь про проектирование, архитектуру и применение OOP в своем последнем проекте или в своем самом интересном проекте. Также, добавил бы про высокую оптимизацию приложения и работу с большими массивами данных. А, если вы работали с какими то «экзотическими», но мега-полезными библиотеками, такими как Sphinx Search, Lucene или может с чем то уникальным в вашей компании, то об этом также стоит рассказать.

- Какие шаблоны проектирования знаешь? Расскажи в чем соль каждого?
- Что есть MVC? Какую роль выполняет каждый из составляющих элементов?

Шаблоны проектирования или design patterns являються не чем иным, как распространенными методами решения типичных задач. Кто внимательно читал книгу «Банды четырех» или «Архитектура корпоративных программных приложений» Фаулера, тот ответит на этот вопрос даже с неким удовольствием.

- С какими web-серверами работал? Apache? Nginx? IIS?
- Можешь описать как можно подробнее, что происходит между тем, как пользователь ввёл в адресной строке http://google.com и тем, как браузер показал страницу?
– Системы контроля версий? SVN? CVS? Git? Что есть branch/trunk/tags?
– Багтрекинг системы?

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

Немного мучаю по БД:
- С какими БД работал? Что такое транзакции, хранимые процедуры, тригеры?
- Коль работал с MySQL то сможешь назвать различия между версиями 4.1, 5.0, 5.1?
- Каковы различия между MyISAM и InnoDB?

Все это есть в мануале MySQL, и как минимум теоретически знания по дополнительным возможностям MySQL у разработчика должны быть.
Типов storage engine не так уже и много и знать про характеристики основных двух надо обязательно.
Если вы имеете более 3 лет опыта работы в веб разработке на php, python, perl, то скорее всего вы начинали с mysql 3.23 и по мере эволюции MySQL представляете различия и возможности новых версий. Поэтому этот вопрос не должен вас сбить с ног.

И для полноты знаний web-разработчика естественно не хватает вопросов о HTML, CSS, Javascript:
- Ваша субъективная оценка своих знаний по CSS по пятибальной шкале?
- Приходилось ли верстать сайт?
- Почему CSS это каскадные таблицы стилей?
- Что здесь написано? Напишите HTML код к которому будет применен данный стиль.

PHP:
  1. #my p.sel:first-line, .main li li a:hover + span
  2. {
  3. color:#f00; /* Что это за цвет? */
  4. }

Уметь читать, понимать и писать CSS это разные вещи. Если вы обладаете первыми двумя навыками, этого достаточно, умеет верстать отлично.

- Ваша субъективная оценка своих знаний по Javascript’у?
- Что самое сложное разрабатывали с использованием Javascript’a?
- С какими Javascript фреймворками работали? Какие плагины использовали? Писали ли плагины, виджеты?
Интересуют jQuery/UI, Prototype/Aculo, MooTools/MochaUI, Dojo Toolkit, ExtJs.
- Каким образом можно реализовать наследование в Javascripte?
- Что такое AJAX и как он работает?
- Что такое JSON? С JSONP сталкивались?

Знания по Javascript важнее знаний CSS, но они взаимосвязаны и поэтому зная одно и не зная другого, вы не сможете делать полноценные скрипты. Javascript фреймворки просто облегчают вашу жизнь, попробуйте выучить основы хотя бы одного и вам будет уже намного проще с Javscript.

В заключении хочу сказать, читайте технические книги, подписывайтесь на rss каналы, и самое главное применяйте свои знания на практике. Только так вы сможете обрасти толстой шкурой профессионального веб разработчика, которого не поставишь в тупик даже самой изощренной проблемой.

Список книг обязательных к прочтению, которые помогут вам в веб разработке:

Плохие практики PHP разработки

Posted in Development, PHP on August 21st, 2009 by Yaroslav Vorozhko – 2 Comments

Все мы видели паттерны проектирования и слышали про лучшие практики PHP разработки, но есть и темная сторона, наихудшая сторона "практических" примеров, про которые мы узнаем из рассказов коллег или по слухам. Я говорю про плохие практики PHP разработки, про которые написал Chris Cornutt.

Короткий список таких практик:

Остерегайтесь Неудачников

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

Полюбите читать чужой код, Open Source дает разработчикам обмениваться опытом и идеями, что в свою очередь ведет к существенному улучшению программного обеспечения и повышения квалификации программистов.

Не запланированность

Если вы сразу же начинаете разработку нового проекта или модуля написанием кода, ни на секунду не подумав о его структуре, то вы рискуете сорвать проект и сроки. Вы через месяц работы не сможете разобраться и понять, что было написано в начале. Вы можете потерять доверие к себе как к профессионалу среди коллег, так никто не захочет поддерживать ваш код. Будьте внимательны в создании кода, предлагаю вам использовать такую мантру: "Сначала планирование, потом код".

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

Документация потеря времени

Те кто говорят, что код само-документируемый обманывают сами себя, ведь все мы знаем, что это в большинстве случаев не так. Программирование настолько интересная штука, что мы можем написать тонну кода, без единого комментария. Заставьте себя писать документацию, представьте, что это ваша работа. Создавая код без документации погубит вас, и возможно тех кто будет его поддерживать в будущем. Несколько строчек комментариев о параметрах и возвращаемом значении функций, и phpDocumentator создаст вам отличную документацию, которая поможет решить множество проблем. Вы будете очень удивлены как много раз вам понадобиться обращаться к своей (чужой) документации.

Освободите свой разум

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

Используйте Zend Framework и Cake-PHP они дадут вам замечательные идеи и готовые компоненты с отличной структурой.

Заключение

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

Фокусируясь на лучших практиках, это самый лучший способ делать код лучше и гибче.

Участвую в PHPConf и HighLoad 2009

Posted in Events on August 21st, 2009 by Yaroslav Vorozhko – 8 Comments

В октябре этого года, в Москве, пройдет два замечательных события в мире веб разработки - это конференция PHPConf, лучшая PHP конференция во всем СНГ и HighLoad, не менее знаменитая конференция по высоко нагруженным системам.

Оба события являются очень актуальны в современной веб индустрии в виду высокого развития интернет и сумасшедшего увеличения числа его пользователей.

Планирую посетить оба события и соответственно у меня есть несколько вопросов:

  • Какова стоимость проезда из Киева в Москву?
  • Сколько стоит проживание(жилье) в Москве в сутки?
  • Что стоит посетить в Москве в свободное время?  ( гулять мы тоже будем :) )

Кто еще едет из Украины, отпишитесь пожалуйста в комментариях или через форму контактов. Все таки вместе ехать проще и веселее.

Пример использования Sphinx и Lucene на ZF для разбора почты

Posted in Development, PHP, Sphinx Search, ZendFramework on August 20th, 2009 by Yaroslav Vorozhko – Be the first to comment

Vikram Vaswani написал замечательный пост о том как используя Sphinx, Zend Framework и Lucene, создать поиск по почтовым сообщениям.

В статье рассказывается об основах использования Sphinx и Lucene, а также об основах разбора почтовых сообщений.  В качестве примера Vikram создает консольное приложение для индексации почты и для поиска по ней используя сначала Lucene, а потом и Sphinx.

В общем статья является хорошим примером как используя Sphinx и Lucene быстро сделать поисковик.

Если вы интересуетесь поисковыми движками, то наряду с Sphinx стоит обратить внимание на Solr.

TechDev stages – учимся разработке

Posted in Development on August 17th, 2009 by Yaroslav Vorozhko – Be the first to comment

TechDev stages объясняет основные шаги в разработке продукта решая бизнес задачи. Обязательно к прочтению новичкам и начинающим архитекторам.