ZFConf 2012

21 апреля в Москве прошла конференция ZFConf 2012.

Я был на обеих предыдущих конференциях в Питере, в этот раз решил принять более активное участие и подал заявку на доклад. И был очень рад, что ее приняли. Рассказывал про то, как можно деплоить PHP приложения с помощью Capistrano.

Честно признаюсь, что это было первое мое выступление на подбном мероприятии, и я довольно сильно волновался. До этого я максимум делал презентации перед однокурсниками или рассказывал стихи в школе у доски :) Рассказывать что-то со сцены перед специалистами, которые пришли за новыми знаниями было и волнительно и очень интересно. Надеюсь, для первого раза вышло неплохо. Спасибо всем, кто задавал вопросы, подходил, говорил спасибо или критиковал. Любой фидбек очень полезен.

Несмотря на название конференции, большинство докладов все-таки были скорее где-то рядом с основной темой конференции. Только Enrico Zimuel рассказывал непосредственно про сам фреймворк и что сейчас творится с разработкой второй ветки. По стилю ведения доклада мне больше всего запомнился Виктор Фараздаги. Анекдот в середине доклада я до сих пор помню. А рассказ Антона Великанова про надписи на песке на пляже Коста-Рики на фоне остальных более технических докладов, по-моему, многих заставил хорошо задуматься о том, как работает бизнес.

Приятно было поближе познакомиться и пообщаться с остальными докладчиками, организаторами и непосредственно посетителями конференции. На мой взгляд, этот ZFConf был лучшим. И after party в виде похода в бар тоже удалась. Моральную поддержку в ходе конференции и выступления своим присутствием мне оказывал Игорь. Спасибо всем!

(download)

Ссылки на некоторые отзывы и фотоотчеты:

Слайды моего доклада:

Сайт Evercode Lab на GitHub Pages

Если вы еще не знаете, что такое GitHub Pages, то вам определенно стоит посмотреть.

Github помимо отличного функционала для совместной работы с использованием Git предлагает для разработчиков очень простой способ сделать и хостить прямо у них статические сайты. 

Две недели назад мы перевели наш сайт evercodelab.com с Google App Engine на хостинг прямо на GitHub c помощью GitHub Pages.

Главная причина была в том, что периодически работа сайта на GAE была очень нестабильной. И вместо нашей любимой Green Coding Godzilla-Bird посетителю выдавались непонятные ошибки. И это при том, что наш текущий сайт до ужаса простой. По сути там всего одна страница на двух языках со списком услуг. Перевод на английский был реализован через django-i18n и gettext.

К сожалению, политика Google относительно GAE и качество сервиса в последнее время оставляют желать лучшего.

Переезд занял буквально несколько часов. Теперь наш сайт полностью статичен, генерируется с помощью Jekyll и доступен всем желающем для обзора в открытом репозитории на github: https://github.com/EvercodeLab/evercodelab.github.com. А тем временем мы неспешно готовим новую его версию.

Проекты: ITOP

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

Сегодня о «Российском Портале Оптики и Информационных технологий».

ITOP сделан в сотрудничестве с Avatech design studio. Дизайн и верстку делали они, мы отвечали за серверную часть. Они отвечали за взаимодействие с клиентом, мы за организацию процессов разработки.

Сайт разработан на стеке Symfony2+Doctrine2. Это наш первый проект на этом фреймворке. Опыт прошел настолько приятно, что все текущие новые проекты мы решили делать с его использованием.

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

Becoming Evercoder

Мы всегда находимся в поиске людей, которые могли бы гармонично влиться в нашу команду (fuck yeah!).

Расскажем немного о себе.

  • Мы небольшая фирма, занимающаяся разработкой, проектированием и консультированием для веб.
  • В основном, мы пишем на PHP, но и экспериментируем с Python (Django) и Ruby (RoR).
  • Мы используем Symfony2, Doctrine, Zend Framework, Silex, Yii, Django и еще несколько умных слов в своем каждодневном лексиконе.
  • Большую часть времени мы работаем удаленно, и работу строим так, чтобы человек был максимально не привязан к месту и времени.
  • При этом у нас есть офис, в который иногда можно или нужно приезжать.
  • Мы любим делать работу качественно и эффективно, и любим людей, которые придерживаются тех же взглядов.
  • Поэтому мы с большим интересом относимся ко всему, что позволяет нам выполнять нашу работу лучше.
  • Мы с радостью поможем своим коллегам с их проектами, чем сможем.
  • Мы любим бургеры, играть в кикер и вообще.

На данный момент у нас открыты следующие вакансии.

Junior PHP developer

Эта вакансия для молодого и амбициозного падавана, желающего получить или укрепить свои знания в области web-разработки.

Желаем:

  • Опыт разработки на PHP (если у вас нет опыта, присылайте развернутые рассказы о себе, а мы почитаем)
  • Желание учиться (бла-бла-бла)
  • Понимание основ ООП и проектирования

Предлагаем:

  • Удаленная работа в любое время дня и ночи
  • Возможность развиваться
  • Возможность совмещать с учебой или другими экстремальными видами деятельности

Располагаем:

  • Интересные проекты под чутким руководством
  • Мы на дух не переносим битриксы-шмитриксы, быдлокод не пройдет
  • Возможность учить не только PHP но и Ruby, и Python

PHP developer

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

Желаем:

  • Опыт разработки на PHP от 3-х лет
  • Уверенное знание PHP и сопряженных технологий
  • Фрэймворки (ZF, Symfony, Symfony2, Silex, Yii)
  • Знание Git (если нет, то заставим)
  • Код с соблюдением стандартов и конвенций

Приветствуем:

  • Знание Ruby или Python
  • Умение работать сомостоятельно
  • Желание сказать нам, как мы не правы и научить нас делать правильно

Предлагаем:

  • Удаленная работа в любое время дня и ночи
  • Достойные задачи
  • Возможность реально влиять на ход событий

Опишите нам ваш опыт, приложите ссылку на github профиль, опишите ваши ожидания и условия.

Если вы дочитали до сюда, значит, вам хоть сколько-нибудь интересно. Напишите нам на hello@evercodelab.com, скиньте ссылки на свои достижения или просто расскажите о себе или приложите фотографию своего домашнего любимца (нет).

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

Доклады и финальная регистрация ZFConf 2012

Logo_habr_friends_20120329

На сайте опубликован полный список докладов конференции и открыта финальная регистрация.

В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend Framework Core Team. А также Виктор Фараздаги, Александр Веремьев, Алексей Качаев и многие другие специалисты.

Доклады

Zend Framework 2, a quick start
Enrico Zimuel (Zend Technologies, Zend Framework Core Team)

Code Generation и Scaffolding в Zend Framework 2
Виктор Фараздаги (Simple Square, Senior Developer)

Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL
Александр Веремьев (Zend Framework contributor)

Распределенные сетевые приложения c Zend Framework 2 и ZeroMQ
Алексей Качаев (Сogniance, Senior Software Engineer)

Dependency Management в PHP и Zend Framework 2
Кирилл Чебунин (Creara, Senior PHP Developer)

Кеш без промахов средствами Zend Framework 2
Никита Грибалев (Nival, Lead PHP Developer)

Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF
Антон Великанов (Sand Sign, Founder&CEO)

Capistrano для деплоймента PHP-приложений

Роман Лапин (Evercode Lab, Senior Developer)

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

Следите за последними новостями:

Организатор: компания Wizartech
Партнеры: сообщество Zend Framework и конференция Frameworks Days

В этом году мне тоже предоставилась возможность выступить на этой конференции, спасибо организаторам. Буду рассказывать про то, как мы используем Capistrano для деплоймента PHP-приложений. Приходите!

AWS Elastic Beanstalk

AWS Elastic Beanstalk (EB) - новый сервис от Amazon, который позволяет вам легко и не принужденно деплоить, масштабировать и управлять приложениями в облаке Amazon. Вы просто загружаете ваше приложение, а Elastic Beanstalk автоматически разбирается со всеми сопутствующими составляющими, предоставляя инстанс EC2, балансировщик нагрузки, автоматическое масштабирование, логинг и мониторинг. Тем не менее, вы не утрачиваете контроль над приложением и можете управлять всеми компанентами вручную. При всем при этом ЕБ бесплатно и вы платите только за ресурсы необходимые для работы приложения (ec2, scaling и т.д.). ЕБ поддерживает php 5.3 приложения на Apache, а так же Java приложения на Apache Tomcat каких-то версий.

Запуск сервера

Управление EB доступно через AWS Management Console и EB command line tool. Для наглядности разберем работу через веб-интерфейс. Он дружелюбно встречает нас предложением создать что-нибудь новенькое. 

1

Выбираем среду для нашего приложения и URL, на котором хотим видеть наше будущее творение.

__2012-03-26__3

Еще немного внимания.

3

Пару минут ожидания, пока сервис подключит EC2 инстанс, Elastic Load Balancing и Auto Scaling, и workflow для нашего приложения готов.

Все вышеперечисленные действия можно проделать и из терминала, пользуясь EB command line tool (скачиваем ее, в комплекте получаем AWSDevTools-RepositorySetup скрипт, который пригодится нам немного позже). Для ее использования вам необходимо скачать библиотеку, создать файл с AWSAccessKeyId и AWSAccessKeyId. (Эти ключи можно получить странице Sequrity Credentials)

AWSAccessKeyId=Write your AWS access ID
AWSSecretKey=Write your AWS secret ID

и добавить путь к нему в .bash_profile

export AWS_CREDENTIAL_FILE=~/.ec2/elasticbeanstalk-cli/elasticbeanstalk-cli/credits

Убедиться в наличии работющего ruby и json-гема. А дальше читать документацию и нажимать на кнопки.

Создание приложения

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

Сконфигурируем Git для деплоя нашего приложения. Для этого используется AWSDevTools-RepositorySetup скрипт, который мы скачали вместе с EB command line tool. В корне нашего приложения исполняем этот скрипт ./path/to/script/AWSDevTools-RepositorySetup.sh (после выполнения скрипт предательски молчит, но все должно быть в порядке) и конфигурируем Git:

Так же доступны другие команды, список и описание ниже:

__2012-03-26__3

(Стоит отметить, что если вы не создавали приложения а сразу решили пушить, то амазон создаст приложение за вас, а вот со средой получится затык "No Environment found for EnvironmentName = 'development'.". По этому, либо через веб-интерфейс, либо через консоль придется ее добавить) 

Дальше выполняем git aws.push и в общем то все. Наше приложение в облаке:

5

Ну а дальше начинается полет фантазии: создание разных энвайроментов, ковыряние в логах и просмотр мониторингов. EB подзваляет без труда настроить как софтверную, так и железную составляющую. Одному Богу и инженерам Amazon известно, как работает эта черная магия, но все выглядит очень интересно и привлекательно. А сравнивая прайсы с похожими сервисами, которые занимаются собвсвенно говоря абсолютно тем же, но с прокладкой в виде себя, получаем экономию в 2-3 раза.

Больше информации и клевых штук можно найти на амазонах и в других интернетах

 

Easiest deployment with git and ssh

To be honest, I did not care much about deployment through my first years as a web-developer. It happened so that neither projects were small and it was not a problem to just put them using ftp-client or there were always another guys who was in response for that part of the process. Later, situation changed and I started to look into different tools and technics to put projects online and update them later. When we started Evercode Lab last year this question became even more important as we became responsible for the whole process.

So we started to pay our infrastructure debt and started to use such tools as capistrano and phing to satisfy our needs. And in general, they work quite good for us now. Not perfect, but we are continuously improving the process and it's details.

But last week I found deployment solution that appeared to me as simple as powerfull. Yet, of course, it's not suitable for every situation. It is very straighforward and can be updated in some details for concrete needs.

Look, here it is:

You can see detailed explanations of each part in the original post. Besides, everything here is quite obvious from the first glance.

Sure, you can put whole command in one executable file and add some more additional commands and run it just by typing something like $ ./deploy.sh. You can integrate it in other parts of your process.

This deployment solution is sort of meditative for me. It is really fast, easy and clear to understand it every detail.

Feel free to comment here if you know solutions like this or have some ideas on how to make it even better.

 

О корпоративной почте

На прошлой неделе мы, наконец, добрались до того, чтобы сделать каждому из нас персональный почтовый ящик на домене evercodelab.com. Всего лишь где-то через полгода после начала работы фирмы. Почему так долго и только сейчас? Потому что нам это не было нужно. У нас был один ящик info@evercodelab.com, а все остальные вопросы вполне успешно решались через наши персональные email адреса. Плюс, так как сейчас мы используем службу почту от Google, мы могли использовать любой адрес и задавать alias'ы, и ни одно письмо не потерялось бы.

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

Интересно совпало, что как раз на той неделе я читал небезысвестную книжку "Rework" от 37signals и вот какую цитату встретил в одной из последних глав:

И не заставляйте сотрудников заканчивать письма юридической припиской вроде: «Это e-mail-сообщение предназначено исключительно для использования намеренным получателем (получателями) и может содержать конфиденциальную и не подлежащую разглашению информацию». Это все равно что заканчивать все письма вашей компании словами: «Мы вам не доверяем и готовы доказать это в суде».

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

Единственная рекомендация, которую мы будем давать новым участникам нашей команды относительно подписи в корпоративной почте, видимо, будет — «не пишите там ничего подобного!» :)

Теперь, если у вас появится желание связаться с одним из нас лично, вы сможете сделать это по следующим адресам:

roma@evercodelab.com

petr@evercodelab.com

igor@evercodelab.com

Пишите, будем рады пообщаться.

Have fun

If your sole motivation for working on a project is to get it done, you’re cheating yourself. Part of being a good programmer is building stuff that YOU find cool. There is plenty of dreary software in the world, what the world needs is more AWESOME software. And the only way to make awesome software is to have fun building it!

— by Randall Degges, How I Learned to Program