• PHP: изменение стуктуры БД в командной разработке



      В мире PHP хорошо известны инструменты миграций структуры БД — Doctrine, Phinx от CakePHP, от Laravel, от Yii — это то первое, что пришло в голову. Наверняка, есть еще с десяток. И большинство из них работают с миграциями — командами для внесения инкрементных изменений в схему базы данных.

      Я не буду описывать зачем это, на хабре много постов на эту тему. Например:


      Далее, развитие моего опыта работы в команде с постоянным изменением структуры БД в разных ветках.
      Читать дальше →
    • Юзабилити-тестирование на коленке

        Я вообще довольно давно интересуюсь темой юзабилити и проектированием интерфейсов, сценариями, персонажами. Но я не занимаюсь этим профессионально. До этого момента я довольствовался только знанием того, как это делается «по-взрослому», и убеждением в том, что «по-хорошему» проекты надо развивать через UI-тестирование (test first ;). Но, как обычно, дальше разговоров и грустных вздохов не заходило.
        А началось все с того, что в очередной раз обсуждая проект, фичи и дальнейшие планы, я взял и ляпнул: «Поехали в институт и проверим на студентах».

        Читать дальше →
      • Почему Git

          Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
          Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

          Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
          Читать дальше →
        • Symfony Code'n'Coffe (Август) Москва

            Продолжая собственную инициативу хочу анонсировать следующее мероприятие, которое пройдет 7 августа в субботу в 12:00.
            Не хотел откладывать до августа, но 30 июля иду на Startup Weekend. Все желающие могут присоединяться.

            Пара слов о том, как прошло первое мероприятие.
            Читать дальше →
          • Symfony Code'n'Coffe (Июль) Москва

              Приветствую.
              Этим анонсом хочу открыть серию регулярных встреч под флагом Symfony.

              Мероприятие будет неформальным. Приносите свои проекты, плагины — проведем ревью, обсудим возникшие вопросы, трудности, идеи. Если у кого нет своих проектов, могу поделиться. У меня их куча :)
              Будет время и желание, покодим свои проекты в творческой атмосфере.
              В будущем, возможно, кто-то захочет сделать доклад или рассказать о чем-нибудь. Посмотрим.

              Когда: 17 июля (суббота) в 12:00

              Место: где соберемся, я пока не знаю, сейчас это зависит от кол-ва желающих присоединиться. Но основные критерии для выбора места — не остаться голодным и без интернета на 3-4 часа.

              Записываемся на странице события.
              Русская рассылка symfony.
            • Doctrine: Опыт работы с миграциями в symfony

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

                Почему миграции это делают наилучшим способом:
                1. Автоматизация. Вы можете хранить инструкции в sql-файликах, накатывать их при необходимости. Но это становится дико неудобно, когда встает вопрос о переключении между разными ревизиями (версиями БД), для командной разработки, когда всем разработчикам надо накатить изменения, для развертывания тестового окружения.
                2. Rollback (как продолжение первого пункта). Мы можем откатить любую миграцию и получить версию БД на любой момент. Чем это удобно, см. ниже.
                3. Идентичность DEV и PROD версий БД. Это очень важно, по крайней мере для меня, быть уверенным в том, что версии DEV, PROD и TEST абсолютно одинаковы. Да, этого можно добиться и другими способами. Но когда именно миграции являются носителями информации о структуре БД, вместе с автоматизацией решать эту задачу становится намного удобнее и проще.

                Не буду описывать базовые вещи, можно посмотреть:
                Далее - опыт, рекомендации, история и грабли при работе с миграциями
              • Отчет по Symfony 2 Online Conference

                  Итак, во вторник мы организовали московский хаб и провели прямую трансляцию конференции. Для организаторов, я так понимаю, это был первый опыт в проведении мероприятий такого рода. И все прошло замечательно. Мы подключились к сессии, докладчик вещал на заднем фоне и перелистывал слайды. Видео не было. Немного трудно было воспринимать информацию на слух, но в целом понятно, ребята старались.
                  Итак, доклады
                • Symfony 2 Online Conference — Московский Conference Hub

                    В начале июня Sensio Labs анонсировали онлайн конференцию The State of Symfony 2 Online Conference

                    Авторы фреймворка расскажут о текущем состоянии Symfony 2, релиз которой намечается на конец этого года.
                    Доклады:
                    • Fabien Potencier: Unit & Functional Tests
                    • François Zaninotto: Symfony 2 Meets Propel 1.5
                    • Bernhard Schussek: The new form framework
                    • Fabien Potencier: Miscellaneous enhancements
                    • Jonathan Wage: What's new in the Doctrine 2 Symfony Integration
                    • Fabien Potencier: The Symfony 2 killer feature — you REALLY don't want to miss this announcement...
                    После конференции будет опубликован второй превью релиз и обновленная документация.
                    Конференция будет проходить 22 июня в 12:00 (MSK) и 23 июня в 19:00 (повторно, для тех кто не усвоил :)
                    Стоимость: 30 евро.

                    Мы (EasyFinance.ru) организуем московский conference hub и приглашаем всех желающих присоединиться. Вход свободный.
                    После конференции, я предлагаю провести собственное мероприятие под флагом Symfony. Обсудим наши проекты, поделимся своим опытом. Может проведем серию кратких докладов и флип-чарт сессий.
                    Ну и просто пообщаемся.

                    Рабочая дата и время пока 22 июня в 12:00.
                    Территориально мы находимся в технопарке «Строгино».
                    Записываемся на странице события.

                    UPD: Хаб в Минске

                    UPD2: отчет по конференции
                  • Test Infected

                      Все, все будут писать тесты


                      Уже 3 года прошло, с тех пор как я увидел свою первую красную полоску. Что меня дернуло начать писать тесты, уже не важно. Я начал собирать информацию, перечитал весь wiki.agiledev.ru и торжественно запустил свой первый тест на SimpleTest. Конечно, эти тесты были ужасны, да и архитектура тоже (в моем сегодняшнем понимании). Тогда я, наверное, словил большинство ошибок, но зато замечательно провел время :)

                      Потом перешел на PHPUnit — просто было интересно, чем он отличается от SimpleTest и что в нем такого «навороченного».
                      А lime — гадость. Чего ребята из Symfony в него так вцепились? Понимаю ветка 1.*, наследие и все такое. Но 2.0 можно было бы и на PHPUnit начинать.
                      Да, мне это было интересно. Я активно писал тесты, даже честно пытался делать это перед тем, как писать код. Что-то не получалось, читал разные статьи на тему, как надо и не надо писать тесты, перечитывал wiki.agiledev.ru. Но внутри явно чего-то не хватало.
                      Читать дальше →
                    • Отправить POST через file_get_contents()

                        Чтобы получить содержимое веб-страницы все с удовольствием используют file_get_contents(), например file_get_contents('http://www.habrahabr.ru/'). Но я уже давно наблюдаю, что, как дело доходит до того, чтобы отправить POST, разработчики используют либо CURL, либо открывают сокеты. Я не считаю, что это плохо или что не надо так делать, просто для решения простых задач можно использовать простые решения.

                        Я и сам так раньше делал, пока на наткнулся на понятие контекстов потоковых операций в PHP. Контекст позволяет передать дополнительные параметры потоковому обработчику. Для http например, можно сконфигурировать POST-запрос или передать дополнительные заголовки.

                        file_get_contents() принимает 3 параметром «контекст», который собственно и конфигурирует сам запрос.
                        Ниже пример такого запроса или RTFM

                        Читать дальше →
                      • Идеальная вакансия для программиста

                          Решил я выйти из леса и найти команду своей мечты. Стряхнул пыль со своего резюме и… ничего нового не обнаружил — сотня однообразных вакансий с абстрактными требованиями: «отличное знание PHP и MySQL».

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

                          Ниже, как надо писать текст вакансии для программиста.
                          Читать дальше →
                        • RIT-2008. Мой взгляд

                            На РИТ я прихожу уже во второй раз, как и в первый — впечатления противоречивые. Как программисту, мне не очень были интересны соответствующие секции. В этом плане, я думаю, надо будет сходить на PHPConf.

                            Если первая конференция показалась более «технологичной», то на этот раз меня больше заинтересовали «Success Story» и «Agile Russia».
                            Из того, что запомнилось