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

    • Tutorial

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


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

    Читать дальше →
  • Делаем вебсокеты на PHP с нуля

    Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

    Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

    Так я решил написать необходимый для меня функционал с нуля.

    Получившийся код и ссылка на демонстрационный чат в конце статьи.
    Читать дальше →
  • MySQL и MongoDB — когда и что лучше использовать



      Петр Зайцев показывает разницу между MySQL и MongoDB. Это — расшифровка доклада с Highload++ 2016.

      Если посмотреть такой известный DB-Engines Ranking, то можно увидеть, что в течении многих лет популярность open source баз данных растет, а коммерческих — постепенно снижается.
      Читать дальше →
    • «Hello, (real) world!» на php в 2017 году

        Вы наверняка думаете, что писать на php — это просто. И «hello, world» выглядит примерно так так:

        <?php
        echo 'Hello, world!';
        

        Конечно, чего еще ожидать от языка с низким порогом входа. Ну да, именно так и было раньше. Много лет назад. Но теперь, в 2017 году никто так уже не делает. Давайте рассмотрим, почему, и попробуем построить наше более реалистичное hello-world приложение по шагам, а их, скажу сразу, получилось не мало.

        Читать дальше →
      • Горизонтальное масштабирование. Что, зачем, когда и как?

          Александр Макаров

          Александр Макаров ( SamDark )


          Здравствуйте! Я Александр Макаров, и вы можете меня знать по фреймворку «Yii» — я один из его разработчиков. У меня также есть full-time работа — и это уже не стартап — Stay.com, который занимается путешествиями.

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

          Что такое масштабирование, вообще? Это возможность увеличить производительность проекта за минимальное время путем добавления ресурсов.

          Обычно масштабирование подразумевает не переписывание кода, а либо добавление серверов, либо наращивание ресурсов существующего. По этому типу выделяют вертикальное и горизонтальное масштабирование.
          Читать дальше →
        • Особенности разработки Telegram бота с Google API в Docker

            Коротко о боте: получает список YouTube-каналов пользователя и уведомляет о новых видео с возможностью напомнить о нем позже.

            В статье расскажу об особенностях написания этого бота и взаимодействия с Google API. Я люблю краткость, поэтому в статье будет мало «воды».

            На какие вопросы ответит статья:

            • Где взять внешний адрес сайта для Webhook
            • Где взять HTTPS-сертификат как его использовать, чтобы Telegram ему доверял
            • Как передавать данные и обрабатывать нажатия на Inline-кнопки
            • Как получить вечный OAuth токен для Google API
            • Как передать данные пользователя через OAuth callback url
            • Как получить бесплатный домен 3 уровня

            Стэк:

            1. Back-end: Node.js + Express.js
            2. БД: Mongo.js + mongoose
            3. Пакетный менеджер: Yarn (он действительно быстрый)
            4. Telegram-бот фреймворк: Telegraf
            5. Продакшн: Docker + Docker Compose + Vscale.io
            Читать дальше →
          • Автоматическое развёртывание Django из GitLab

              В этой статье я опишу настройку автоматического развёртывания веб-приложения на стеке Django + uWSGI + PostgreSQL + Nginx из репозитория на сервисе GitLab.com. Изложенное также применимо к кастомной инсталляции GitLab. Предполагается, что читатель располагает опытом в создании веб-приложений на Django, а так же опытом администрирования Linux-систем.

              Читать дальше →
            • WebRTC: Делаем peer to peer игру на javascript

              • Tutorial
              Недавно мне довелось поработать над прототипом видеочата. Это был отличный повод поближе познакомиться с концепциями WebRTC и опробовать их на практике. Как правило, когда говорят про WebRTC, подразумевают организацию аудио- и видеосвязи, но эта технология может применяться и для других интересных вещей. Я решил попробовать сделать peer-to-peer игру и поделиться опытом ее создания. Видео того что получилось и подробности реализации под катом.


              Читать дальше →
            • 51 инструмент для APM и мониторинга серверов

              • Перевод


              После создания веб- или мобильного приложения начинается не менее интересный этап: нужно арендовать или приобрести серверы, развернуть на них бэкенд и наблюдать, как твой продукт пользуется бешеной популярностью у пользователей. А чтобы всё шло гладко, необходимо мониторить работу серверов и приложений, контролируя их производительность и устраняя намёки на проблемы. А чтобы не терять время на поиски подходящих инструментов для мониторинга и управления, предлагаем вам — сисадминам и разработчикам — воспользоваться этой подборкой.
              Читать дальше →
            • Полезные сниппеты для Nginx конфигов



                Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

                Читать дальше →