• Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

    • Tutorial

    В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


    Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

    Читать дальше →
  • XSLT: Идеологические вопросы / проблемы

      Я знаю иностранный-язык-XSL на уровне «могу читать со словарём». И, скорее всего, больше мне и не надо.
      Но вот, принципы построения систем XML+XSL я бы поизучал. Мне это нужно для реализации одной идеи + для саморазвития.

      Наверное, не зная предметной области, у меня не получится сформулировать «правильные и понятные вопросы», но я всё таки попытаюсь. Итак:
      Читать дальше →
    • Компоненты в Unobtrusive JavaScript

        Это продолжение моей статьи «Клиентская оптимизация и этапы разработки». В ней были даны рекомендации по созданию быстрых сайтов, а в том числе, фактически, я рассказал что должен сделать Web-разработчик, чтобы следовать принципам «Ненавязчивого JavaScript»:
        • разделение структуры (HTML) / оформления (CSS) и поведения (JavaScript);
        • использование JavaScript для повышения удобства использования уже рабочего приложения;
        • применение техники Graceful degradation — если браузер не поддерживает те или иные функции, которые мы добавляем в приложение с помощью JavaScript — приложение всё равно остается рабочим.
        В этой же статье я хотел бы рассказать об алгоритме реализации принципов «ненавязчивости» на JavaScript.
        Читать дальше →
      • Классы в Javascript: вызов методов родительского класса

          JavaScript — очень динамический язык, в нём заложена возможность менять язык под себя и создавать удобные инструменты для дальнейшей работы. «Реализация классического наследования» — как раз один из таких инструментов. В данный момент я не представляю себе, как я программировал бы на JS без «классов».

          Для меня «Классы» — это, скорее, подход к проектированию и реализации поставленной задачи. В нашем новом проекте такой подход используется по полной программе (и, я думаю, что он оправдывает себя на все 100%).
          Читать дальше →
        • Клиентская оптимизация и этапы разработки

            Обычно пользователю нет дела до того, какие подходы мы применяем при разработке, как настроен сервер, какие клиентские и серверные фреймвёрки мы используем. Его может волновать на сколько сайт полезный, удобный и быстрый. Наша же задача заключается в том, чтобы не доставлять пользователю неудобства, радовать его, и тем самым заставлять его покупать наш мега-продукт или смотреть на наши замечательные баннеры. Эта статья о том, как создавать быстрые сайты.
            Читать дальше →
          • MVC в JavaScript

              Я тут для свого сайта давно уже потихоньку делаю движок. Концепция много раз менялась, так что мне наверное сложно будет объяснить как оно работает. При таком подходе у меня обычно получалась CMS, а тут получилось MVC в JavaScript=)
              Читать дальше →