• Сети Петри с Symfony а-ля WorkFlow компонент

    • Tutorial
    Давайте представим некоторый проект на GitHub, куда мы хотим оформить Pull Request. Здесь нас будет интересовать только тот огромный жизненный цикл нашего пулл реквеста, который он фактически может пройти с момента рождения до самого момента его принятия и мержа в основной код проекта.

    image

    Итак, если порассуждаем, то пулл реквест может иметь следующие варицации над состояниями, которые я специально усложнил, если не знать о WorkFlow и смотреть на подобное тз:

    1. Открыт
    2. Находится в проверке в Travis CI, причем может попасть туда после того как были сделаны какие-то исправления или любые изменения, связанные с нашим Pull Request, ведь проверить-то надо все, не так ли?
    3. Ждет Review только после того как была сделана проверка в Travis CI
    3.1. Требует обновлений кода после того как была сделана проверка в Travis CI
    4. Требует изменения после Review
    5. Принят после Review
    6. Смержен после Review
    7. Отклонен после Review
    8. Закрыт после того, как был отклонен после Review
    9. Открыт заново после того как был закрыт, после того как был отклонен, после того как было проведено Review
    10. Изменения после того как был помечен «Требует изменений», после того как было проведено Review, при этом после этого он снова должен попасть в Travis CI (пункт 2), а от Review снова может с ним случиться только те состояния, которые мы описали выше
    Читать дальше →
  • Idiom Land — приложение для изучения английских идиом

      В предыдущей статье на Мегамозге мы рассказали о том, как набрать первую 1000 фолловеров в Instagram, и о том, как мы придумали карточки, помогающие в изучении английских идиом (они же фразеологизмы, они же устойчивые выражения).

      Так как обучающих карточек уже накопилось много (больше 800), мы решили собрать их в одном приложении — версия для iOS, версия для Android.



      Приглашаем всех желающих попробовать наше приложение и написать свое мнение. С каждым обновлением мы планируем добавлять в приложение по 100 новых карточек. Пока что мы учим английскому на английском, но русская локализация тоже планируется.
      Читать дальше →
    • Использование ES6 в AngularJs 1.x со сборкой Browserify+Babel

      В статье рассмотрим как написать на ES6 составляющие части AngularJs приложения, затем собрать с помощью Browserify и Babel на основе небольшого приложения, которое вы можете скачать с github и поиграться.
      Читать дальше →
    • Дышать в Пекине — всё равно, что курить 40 сигарет в день

        Смог, окутавший Пекин зимой 2012-2013 годов, подстегнул правительство к поиску решения проблемы. Власти разместили тысячу станций, которые ежечасно отправляют замеры шести видов загрязнений воздуха. Уровень микрочастиц PM2,5, оседающих в лёгких и вызывающих респираторные заболевания, в Пекине в три раза превышает норматив Всемирной организации здравоохранения. Ричард Мюллер из Berkeley Earth отметил, что дышать в этом городе — всё равно, что выкуривать за день сорок сигарет.

        image
        Площадь Тяньаньмэнь, Пекин
        Читать дальше →
      • Обзор каркасов приложений на Symfony2

        При разработке веб-приложений почти всегда мы хотим начинать с какой-то готовой базы и прикручивать необходимый функционал с удобством для разработчика. Особенно для начинающего разработчика полезно смотреть готовые проекты. Фреймворки, в частности Symfony2, предоставляют очень много инструментов, чтобы сделать разработку приложений приятной. Но среди множества бандлов (модулей Symfony2 приложений) бывает тяжело понять, какой набор стоит выбрать.

        У каждой компании, имеющей некоторый опыт разработки на Symfony2, скорее всего имеется свой минимальный каркас для старта, но в статье мы посмотрим на варианты, находящиеся в открытом доступе.

        Статья подойдет читателям, только начинающим знакомство с Symfony2. А людей, активно использующих этот фреймворк, попрошу поделиться замечаниями.
        Читать дальше →
        • +12
        • 14.7k
        • 7
      • По-настоящему адаптивные письма. Часть… снова первая



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

          К чему мы приходим:
          — Использование внешних стилей и последующий прогон кода через инлайнер. Из-за усложнения кода это стало целесообразным
          — Улучшение семантики через именование классов и сокращение участков кода
          — Частичная поддержка the Bat! Хотя Николь на него забила.
          — Полная поддержка всех мобильных почтовых клиентов
          — Использование ранее опасных конструкций. Благодаря усердному тестированию проблемы решены.
          Читать дальше →
        • Upgrade до Middle PHP-разработчика за 3 месяца

            В очередной раз на меня свалилась задача найти хорошего PHP-программиста.
            По результатам прозвона потенциальных кандидатов, 90% тех, кто мнит себя Middle, на самом деле Junior и годы опыта не спасают, потому что клепают однотипный код в пределах заданий, посланных свыше.
            Прописал минимальный план желающим сделать рывок и перейти на следующий уровень без отрыва от производства.


            Читать дальше →
          • AngularJS 1.3 и ES6 — как использовать их вместе уже сейчас

            • Translation

            ES6, AtScript


            Следующая версия Angular будет использовать AtScript — надмножество ES6 (следующей версии JavaScript). Если вы уже пишете на ES5 (актуальная версия JavaScript), вы уже пишете на AtScript, просто без всех его дополнительных возможностей — аннотаций, типов и интроспекций. Их использование и в дальнейшем будет необязательным, но с ними гораздо интереснее.

            Мы пока не можем использовать AtScript в своих проектах (а Angular 2 вообще будет готов гораздо позже AtScript), но мы уже можем использовать ES6 с AngularJS со всеми интересными возможностями, которые ES6 планирует нам предоставить. Воспользуемся же ими сейчас.
            Читать дальше →
          • О Symfony 3.0

            • Translation
            За последний год я очень много говорил о Symfony 3.0 на разных конференциях. Я думал о наилучшей стратегии для этой версии уже давно, и теперь настало время поделиться моими мыслями со всеми.

            Мажорные версии


            Некоторые разработчики и большинство менеджеров проектов боятся обновлений мажорных версий используемых ими проектов с открытым исходным кодом. Наверное, это из-за того, что мажорные версии ассоциируются с потерей обратной совместимости. Возникает много вопросов: принесут ли изменения пользу моему проекту? Достаточно ли ясны планы разработчиков, чтобы был смысл обновляться? Будет ли обновление легким? Что, если я не могу или не хочу обновляться? И так далее.

            Страх перед мажорными версиями растет своими корнями из нашего прошлого: вспомните Perl 6 или PHP 6. В мире Symfony вторая версия тоже была революционной по сравнению с symfony 1. Я понимаю, почему люди нервничают, когда слышат о третьей версии, и именно в этом посте я расскажу, почему вам не нужно паниковать.
            Читать дальше →
          • Бесплатные электронные книги от Microsoft

              Eric Ligman, Директор по партнерским программам компании Microsoft, опубликовал в блоге ссылки на большую бесплатную коллекцию книг Microsoft по самым разным направлениям: SharePoint, Visual Studio, Windows Phone, Windows 8, Office 365, Office 2010, SQL Server 2012, Azure, Cloud, Lync, Dynamics CRM и т.д.
              Читать дальше →
            • waSlideMenu.js. Многоуровневое прокручивающееся меню

                jQuery-плагин, который превращает вложенное (древовидное) меню в систему прокручивающихся меню.

                Репозиторий: github.com/webasyst/waslidemenu
                Попробовать: jsfiddle.net/7LnSY/
                Пример: demo-ru.webasyst.com
                Подробнее о плагине
              • jQuery 2.0

                  Релизнулась версия 2.0 самой популярной JavaScript-библиотеки.

                  В релизе выкинули поддержку Internet Explorer 6, 7 и 8. За счёт этого выиграли в размере на 12% и прибавили в скорости. Можно выиграть в размере ещё больше, если сделать свой билд, убив ненужные из 12-и встроенных по умолчанию модулей.

                  Тем, кому нужны старые IE остаются на ветке 1.x, которая их поддерживает и которую не забросили (скоро выйдет 1.10) и планируют поддерживать ещё несколько лет. API 2.0 хоть и совместим с не-deprecated 1.9, но изменений всё-таки много.

                  Подробный список изменений есть в официальном анонсе.
                • Bootstrap-wysiwyg: крошечный текстовый редактор




                    Текстовый редактор bootstrap-wysiwyg — это всего 1.5 Кб в минифицированном и сжатом виде и чуть больше 6 Кб исходного кода, базовые функции редактирования на основе execCommand, drag-and-drop для вставки изображений, поддержка стандартных горячих клавиш и ничего лишнего. Редактор работает в современных браузерах (Chrome 26, Firefox 19, Safari 6) и на мобильных платформах (IOS 6 iPad/iPhone, Android 4.1.1 Chrome). Зависимости — jQuery, jQuery HotKeys и Bootstrap.
                    Читать дальше →
                  • Zealz GK802 — мини-компьютер с возможностью установки Ubuntu

                      image
                      Мини-компьютерами и медиаплеерами с операционной системой Android уже мало кого удивишь. Но есть ещё среди них устройство, которое может выделиться среди серой массы — это мини-компьютер Zealz GK802, в котором по умолчанию установлен Android версии 4.0.4.
                      Что же в нём интересного?
                      А интересно в нём то, что он построен на 4-х ядерном чипе Freescale i.MX6Quad и под него есть полноценная сборка Ubuntu!
                      Читать дальше →
                    • Архитектура форм в Symfony2

                      • Translation
                      Картинка для привлечения внимания

                      В Symfony 2 появился совершенно новый компонент для работы с формами, который, насколько я знаю, легко заменит большинство подобных библиотек для PHP и по функционалу, и по возможности в расширении оного (конечно, если не брать в расчет небольшие недостатки при работе с JavaScript). Разработка этого компонента заняла более двух лет, хотя думать над ним я начал еще где-то в 2009-ом году или даже раньше. С каждой новой версией этот компонент становится все более и более стабильным, а полностью стабильная версия ожидается с выходом Symfony 2.2.

                      Данный пост приурочен к выходу Zend Framework 2 Form RFC, так как мне кажется, что его разработчики, по сути, сделали много того, что уже было сделано нами. Конечно же всем ясно, что Zend Framework 2 должен обладать прослойкой для работы с формами, который полностью учитывает особенности компонентов, поставляемых с фреймворком. Целью данного поста является попытка показать, что Symfony2 Forms прекрасно подходит под эти требования. Функционал, присущий Symfony2, может быть легко убран: код для обработки форм и все уровни абстракций полностью независимы. Привязать же поддержку особенностей компонентов Zend-а так же не составит труда.

                      Создание обобщенной библиотеки для работы с формами, которая покрывает все возможные сценарии использования, возникающие при разработке, было непростым испытанием, долгим и сложным делом, которое, к тому же, еще не завершено. Сотрудничество и дальнейшее совместное развитие должно помочь добиться более гибкого и простого управления формами из PHP.
                      Читать дальше →
                    • Каким бы я хотел видеть свой первый проект на Symfony

                      Вот уже полтора года я использую Symfony 2 для разработки web-приложений. За это время я трижды начинал новый проект, еще в трех проектах работал с унаследованным кодом, а также провел ревью около 15 тестовых заданий на знание фреймворка.

                      Наверное, было бы здорово иметь возможность вернуться на полтора года назад и дать себе несколько советов перед стартом своего первого проекта. Увы, это невозможно. Но может быть, мои советы могут пригодятся другим начинающим разработчикам на Symfony?

                      Читать дальше →
                    • Простой ответ на сложный вопрос ч.2: Рабочий процесс



                        Как самые догадливые из вас уже поняли — это продолжение предыдущей моей статьи на тему прокрастинации в работе. И тем, кто только что присоединился к нам, я бы рекомендовал сначала ознакомиться с первой частью, ибо в противном случае, мои размышления будут выглядеть для вас просто ничем не аргументированными. Кстати, теперь название статьи не соответствует действительности на 100 процентов, ибо простой ответ был только в первой части, а в этой такого чуда не произойдет. И в общем-то статья получилась такой длинной, что мне только остается надеяться на ваше терпение.

                        Это интересно!


                        Позволю себе коротко резюмировать содержание первой статьи и выделить следующий вывод:
                        Интерес — король мотивации. Все остальное, включая денежную мотивацию — пешки. Кто-то скажет, что деньги иногда сильно мотивировали его что-то делать — на что я отвечу, что и пешки иногда делают сильные ходы. Но когда у вас есть более-менее стабильный денежный поток — игра меняется и вам требуется нечто более мощное для борьбы с прокрастинацией. И это именно его величество Интерес.
                        Читать дальше →
                      • Пишем на php… статично

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

                        Я как и многие php программисты думал что статическая типизация это «усложнение». Она ограничивает гибкость и вообще: как люди с ней работают? И искренне не понимал, почему многие опытные программисты отдают предпочтение языкам со статической типизацией и строгой проверкой типов.

                        Дебаты о типизации

                        Я относился к правой половине людей, которые мало что знают о типах, но при этом искренне верят, что это не удобно. И так было до тех пор пока я не познакомился с одним из строго типизированных языков (c#) вплотную. С тех пор мое отношение к php да и вообще к программированию в целом изменилось.

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

                        Читать дальше →
                      • Продуктивное использование PHPStorm

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

                          Не претендуя на библию или «настольную статью программиста» я хочу поделиться полезными находками в моей любимой IDE, не скатываясь в тупую копипасту мануалов и скучных списков хоткеев, только то, что я сам использую постоянно и над чем удивляются коллеги: «о! а так можно?»
                          Что ж там такое?