Search
Write a publication
Pull to refresh
30
0
Пётр Грибанов @ghost404

Symfony professional developer

Send message

Типы моделей

Reading time6 min
Views9.5K
Правильно заданный вопрос быстро приводит к правильному ответу. Недавно меня спросили: «Почему стандарты бизнес-анализа сконцентрированы на выявлении требований, но ничего не говорят о превращении этих требований в решение?» В самом начале своей карьеры аналитика я искал ответ на вопрос: как анализировать предметную область и как превращать результат анализа в структуру модели: откуда брать классы, атрибуты и методы? Тогда я нашел один более-менее вразумительный метод, описанный в книге Крега Лармана Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку. Аналитику предлагалось прохождение по тексту с маркерами разных цветов: Красный выделяет существительные и является основанием для создания классов, зеленый — прилагательные, причастия и проч. — основа для создания атрибутов этих классов. И глаголы выделяются синим — основа для создания методов.

Однако, в реальности этот метод не работал. Один и тот же факт я мог смоделировать при помощи класса, значения атрибута или метода в зависимости от своего желания. Об этом написано подробно у Крисса Партриджа в книге Business Objects: Re-Engineering for Re-Use.
Читать дальше →

Покоряем Поднебесную: как вывести приложение на рынок Китая

Reading time4 min
Views10K
Израильская компания по мобильной аттрибуции AppsFlyer опубликовала 60-страничный гид по вхождению на китайский рынок мобильных приложений в 2017 году. Вот самое интересное из него:

  • Главное отличие китайского рынка мобильных приложений в том, что в 2010 году Google покинул страну, а вместе с ним исчез и Google Play. В результате в Китае свыше 300 магазинов приложений для Android, для каждого из которых необходимо переупаковывать APK. Магазины делятся на две группы: созданные операторами (пр. Tencent, Baidu, 360) и созданные производителями смартфонов (пр. Huawei, Xiaomi).
  • Зачем же заморачиваться с выходом на рынок Поднебесной? Интернетом в Китае пользуется 751 млн человек, это почти всё население Европы. С мобильных устройств в сеть выходит 724 млн пользователей, а это 96,3% всех интернет-пользователей в стране.
  • Как следствие, каждый третий владелец смартфона пользуется им как кошельком, т.е. оплачивает с помощью телефона покупки в магазинах, такси, билеты в кино и прочее. В среднем на одного клиента WeChat приходится по 55 мобильных транзакций в месяц.
  • Затраты на мобильную рекламу между первым кварталом 2016 и первым кварталом 2017 выросли на 90% (!) — это абсолютный мировой рекорд. К 2020 году прогнозируется, что к 2020 году объём затрат на mobile ads составит 70 с половиной миллиардов долларов.

Как же правильно запустить своё приложение или игру на китайском рынке?
Читать дальше →

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

Reading time16 min
Views34K

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


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

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

Руководство по локализации приложений для китайского рынка. Часть 1

Reading time8 min
Views8.5K

Локализация приложения — обязательный пункт в списке задач каждого разработчика на 2017 год. Почему? Потому что все чаще оказывается, что это — эффективный способ получить долю на рынке и увеличить продажи во всем мире. Неважно, с какой локализации вы начинали: сделайте ее правильно для китайского рынка — и вы сорвете банк.

Китай с 2013 года — мировой лидер по количеству владельцев смартфонов, а сегодня это уже крупнейший в мире рынок приложений. Здесь речь идет о доходах в размерах более 25 млрд. долларов по состоянию на 2016 год и 42 млрд. долларов — к 2020 году (согласно прогнозам).

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

Звучит заманчиво, правда? Но не обольщайтесь: от создания приложения до выхода его в китайских магазинах приложений нужно пройти долгий путь. Локализация приложений для Китая — это совсем не просто: вам придется приспособить приложение для совершенно другого потребителя, у которого мало или вообще нет ничего общего с теми, кто использует ваше приложение сейчас.

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

Переведено в Alconost
Читать дальше →

Load Average в Linux: разгадка тайны

Reading time18 min
Views242K


Средние значения нагрузки (Load averages) — это критически важная для индустрии метрика. Многие компании тратят миллионы долларов, автоматически масштабируя облачные инстансы на основании этой и ряда других метрик. Но на Linux она окутана некой тайной. Отслеживание средней нагрузки на Linux — это задача, работающая в непрерываемом состоянии сна (uninterruptible sleep state). Почему? Я никогда не встречал объяснений. В этой статье я хочу разгадать эту тайну, и создать референс по средним значениям нагрузки для всех, кто пытается их интерпретировать.

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

PHP-Дайджест № 113 – свежие новости, материалы и инструменты (16 – 30 июля 2017)

Reading time3 min
Views19K


Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 Beta 1, свежие RFC из PHP Internals, материалы по асинхронному PHP, видео с конференций и митапов, и многое другое.
Приятного чтения!

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

Запуск PHP приложения на Docker контейнерах (PHP-FPM, Nginx, PostgreSQL)

Reading time4 min
Views88K
За последний год программное обеспечение для автоматизации развертывания в среде виртуализации на уровне операционной системы набирает большие обороты. Эта статья послужит новичкам в этой сфере примером, как нужно упаковывать свое приложение в Docker контейнеры.

В классическом виде, PHP приложение представляет из себя следующие составляющие:

  1. Веб-сервер
  2. СУБД
  3. PHP приложение

В нашем примере мы будем использовать Nginx, PostgreSQL и PHP-FPM.
Читать дальше →

Поднимаем сложный проект на Django с использованием Docker

Reading time10 min
Views76K
Добрый день, коллеги.

Сегодня я расскажу о не совсем простой концепции быстрого (до часа после нескольких тренировок) развёртывания проекта для работы команды, состоящей как минимум из отдельных фронтенд и бэкенд разработчиков.

Исходные данные у нас такие: начинается разработка проекта, в которой планируется «тонкий бэкенд». Т.е. бэк у нас состоит из закешированных страниц (рендерятся любым шаблонизатором), объёмных моделей с сопутствующей логикой (ORM) и REST API, выполняющего роль контроллера. Фактически, View в такой системе редуцировано и вынесено в JS, благо есть разные реакты, ангуляры и прочие вещи, которые позволяют фронтендщикам считать себя «белыми людьми».
Читать дальше →

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.8M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

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

Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 1: Введение

Reading time7 min
Views89K
Ansible – популярный инструмент для автоматизации настройки и развертывания ИТ-инфраструктуры.

Основные задачи, которые решает Ansible:
  • Управление конфигурациями. Максимально быстрая и правильная настройка серверов до описанной конфигурации.
  • Провижнинг. Управление процессом развертывания новых облачных серверов (например через API, с помощью Docker или LXC).
  • Развертывание. Инсталляция и обновление ваших приложений без простоя наилучшим образом.
  • Оркестрация. Координация компонентов вашей инфраструктуры для выполнения развертываний. Например проверка, что веб-сервер отключен от балансировщика нагрузки, до апгрейда ПО на сервере.
  • Мониторинг и уведомления.
  • Логгирование. Централизованный сбор логов.



По сравнению с другими популярными инструментами автоматизации ит-инфраструктуры, Ansible не требует установки клиентских приложений на обслуживаемые сервера, что может сократить время настройки перед развертыванием инфраструктуры. Для работы Ansible подключается к обслуживаемым серверам по SSH.
Читать дальше →

Готовимся к собеседованию по PHP: Всё, что вы хотели узнать об интерфейсах, совместимости сигнатур и не побоялись узнать

Reading time6 min
Views114K
imageИнтерфейсы, впервые появившись в PHP 5, давно уже заняли прочное место в объектно-ориентированной (или всё-таки правильнее «класс-ориентированной»?) части языка.

Казалось бы — что может быть проще интерфейса? "Как бы класс, но и не класс, нельзя создать экземпляр, скорее контракт для будущих классов, содержит в себе заголовки публичных методов" — не правда ли, именно такими словами вы чаще всего отвечаете на собеседовании на дежурный вопрос о том, что такое интерфейс?

Однако не всё так просто, как может показаться начинающему программисту на PHP. Привычные аналогии не работают, руководство по языку вводит вас в заблуждение, в коде таятся неожиданные «подводные камни»…

Три предыдущие части:

Проверьте себя: всё ли вы знаете об интерфейсах в PHP?

Symfony: Webpack Encore — плагин для управления ресурсами

Reading time6 min
Views20K
Позавчера обнаружил новость о том, что команда Symfony выпустила плагин Webpack Encore для интеграции замечательного инструмента Webpack в ваше приложение. Если вы не знакомы с Webpack, то я настоятельно рекомендую ознакомиться с ним, так как он возможно решит множество вопросов связанных с управлением ресурсами в вашем проекте. В любом случае даже если вы не собираетесь его использовать, знать о том что он существует будет крайне полезным. Очень хорошо этот инструмент описан тут.
Читать дальше →

GitLab CI для непрерывной интеграции и доставки в production. Часть 1: наш пайплайн

Reading time6 min
Views154K


Итак, GitLab CI: что можно ещё рассказать о нём? На хабре уже есть статьи про установку, про настройку раннеров, про командное использование, про GitLab Flow. Пожалуй, не хватает описаний того, как используется GitLab CI в реальном проекте, где задействовано несколько команд. А в современном мире разработки ПО это действительно так: ведь есть (как минимум) разработчики, тестировщики, DevOps- и релиз-инженеры. С подобным разделением на команды мы работаем уже несколько лет. В этой статье я расскажу о том, как мы, используя и улучшая возможности GitLab CI, реализовали и применяем в production для коллектива из нескольких команд процессы непрерывной интеграции (CI) и отчасти доставки приложений (CD).
Читать дальше →

Как готовить SphinxQL

Reading time6 min
Views46K
По заявкам трудящихся, расскажу про две новых мега-фичи в Sphinx. Предложения тем для последующих рассказов можно засылать в комментарии.

Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег.

1я мега-фича. Теперь Sphinx поддерживает сетевой протокол MySQL (внутренней версии номер 10, которую поддерживают все версии сервера и клиента, начиная с MySQL 4.1 и по MySQL 5.x включительно).

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

«А что если», Event Sourcing

Reading time4 min
Views71K
Наверное, про Event Sourcing слышал каждый, кто хоть раз пересекался с темой CQRS и DDD. Это подход хранения данных, при котором вместо конечного результата храниться череда записей о событиях происшедших с некоторой сущностью. На сайте Мартина Фаулера есть подробное описание, а мы же остановимся на фундаменте, основных «печенюшках», а также проблемах в его применении.
Читать дальше →

Selenium за 60 секунд

Reading time5 min
Views85K

Представляю вам перевод моей статьи на Medium.com.


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



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

Рецепт идеального Хабропоста

Reading time5 min
Views7.2K


На наш взгляд, создание «идеального поста» — это не только процесс выбора темы и написание текста. Немалая доля успеха заложена в оформлении и тех обстоятельствах, при которых статья опубликована. Длина заголовка, количество текста до ката и привлекающая картинка — все эти факторы имеют свой вес. Хотели бы Вы получить на 30% больше просмотров, просто поменяв оформления поста и время размещения?

Мы в Cloud4Y хотели бы. Поэтому мы провели глубокий анализ публикаций на Хабрахабре за последние полгода и сегодня хотим поделиться новыми полезными находками.
Читать дальше →

Открываем доступ к видеозаписям HighLoad++ за последние пять лет

Reading time1 min
Views28K
image

Мы выложили в открытый доступ видеозаписи последних пяти лет конференции разработчиков высоконагруженных систем HighLoad++. Смотрите, изучайте, делитесь и подписывайтесь на канал YouTube.

Более терабайта записей и 500 видеороликов! Это всё, под катом только реклама :)

Перейти в канал YouTube!

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

Архитектура микросервисов

Reading time18 min
Views277K


К сожалению, у меня нет опыта работы с микросервисами, но около года назад я очень активно интересовался этой темой и изучил все источники информации, какие смог найти. Я просмотрел несколько выступлений на конференциях, прочитал несколько статей очень авторитетных и опытных специалистов вроде Мартина Фаулера, Фреда Джорджа, Эдриана Кокрофта и Криса Ричардсона, чтобы как можно больше узнать о микросервисах. Эта статья — результат моих изысканий.

OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

Reading time11 min
Views95K


Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


Также вы узнаете почему 100% по тестам — не всегда хорошо в реальности.

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

Information

Rating
10,279-th
Location
Россия
Registered
Activity