Как стать автором
Обновить
0
0
Сирожа @SerggioS

Пользователь

Отправить сообщение

Docker для Symfony 4 — от локалки до production

Время на прочтение15 мин
Количество просмотров50K

Предистория


Одним прекрасным днём мне понадобилось развернуть среду разработки для своего проекта. Vagrant уже порядком поднадоел и хотелось иметь единую среду разработки для всех участников проекта которая была бы идентичной production серверу. Соответственно наслушавшись информации про хипстерский docker, я решил начать с ним разбираться. Далее я постараюсь максимально подробно описать все шаги начиная от установки докера на локалке вплоть до разворачивания продуктива на KVM.

Исходный стек технологий:

— Docker
— Symfony 4
— nginx
— php-fpm
— postgresql
— elasticsearch
— rabbitmq
— jenkins

Железо:

— ноутбук под ОС Ubuntu 16.04
— продакшн сервер на хостинге KVM

Почему кроме технологического стека я перечислил ещё и стек железа?

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

Первый и наверно самый важный аспект при начале работы с докером — это операционная система вашего ноутбука. Проще всего работать с докером именно на linux системах. Если вы работаете на Windows или Mac то у вас 100 % будут некоторые сложности, но эти сложности не будут являться критическими и при желании «нагуглить» как это исправляется не составит никаких проблем.

Второй вопрос — это хостинг. Зачем нужен Hosting именно с типом виртуализации KVM? Причина в том, что виртуализация VPS разительно отличается от KVM и установить сам docker на VPS у вас попросту не выйдет, так как VPS распределяет ресурсы сервера динамически.

Подитог: для самого быстрого старта на докере резоннее всего выбирать Ubuntu в качестве локальной операционки и KVM хостинг (либо собственный сервер). Далее рассказ пойдёт опираясь именно на эти две составляющие.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии46

Предметно-ориентированное проектирование на самом деле

Время на прочтение12 мин
Количество просмотров31K

Большинство статей и лекций рассказывают о DDD как о неком ремесле, доступном не многим, в котором самое важное это проектирование модели и всё вокруг этого. И проблема тут в масштабе — мы говорим чаще о безусловно важных вещах кирпичиках, но не ландшафте целиком.


Под катом я хотел бы рассказать о том, что составляет масштаб, почему Эванса нужно дочитать, почему предметно-ориентированному проектированию 100 лет в обед и кое-что от себя.


Читать дальше →
Всего голосов 7: ↑6 и ↓1+11
Комментарии10

Принцип DRY на примере Laravel

Время на прочтение4 мин
Количество просмотров10K
Рассмотрим простой модуль, отвечающий за добавление новых пользователей.

И на его примере увидим, какие возможности открывает применение принципа DRY.

Для меня принцип DRY (Don't Repeat Yourself) всегда воплощался в двух основных определениях:

  1. Дублирование знаний — всегда нарушение принципа
  2. Дублирование кода — не всегда нарушение принципа

Начнем с контроллеров содержащих минимальное количество логики.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+10
Комментарии22

Исследование датасета с IMDB

Время на прочтение5 мин
Количество просмотров27K


Проблематика


Фильмы — это круто, фильмы вдохновляют нас, наполняют уверенностью, в общем дают нам многое. И поэтому в этой статье я бы хотел рассказать вам об исследовании тенденций современного кинематографа с помощью инструментов анализа данных, который уже был презентован в финале Science Slam ITMO University 2.0. Полный выпуск доступен здесь.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии27

Связываем Doctrine Entity и Doctrine Document на форме в Sonata Admin Bundle

Время на прочтение7 мин
Количество просмотров6.4K
В процессе разработки интернет-магазина была поставлена задача реализовать адресную книгу для авторизованного пользователя. Таким образом, чтобы сам пользователь хранился в базе mysql, а связанные с ним адреса — в mongoDB. Отдельного внимания данная задача заслуживает в части управления пользователями и их адресными книгами из админки, основанной на SonataAdminBundle.

Исходные данные:


Есть доктриновская сущность User и доктриновский документ Address. Между ними должна быть установлена связь один-ко-многим. Всё это должно управляться с формы добавления пользователя в админке на базе сонаты. Поскольку у 1 юзера может быть много адресов, на форме добавления пользователей должна быть реализована коллекция форм добавления адресов с кнопками «добавить», «удалить» и inline редактированием полей связанных адресов. Этим мы и займёмся далее.

Что нам надо:


1) Установить @Gedmo\References doctrine-extension

Это нужно, чтобы мы могли получать коллекцию связанных адресов для заданного юзера из монго, и наоборот — привязанного юзера к каждому адресу из mysql.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии3

KnpMenuBundle + Sonata. Делаем меню из базы

Время на прочтение9 мин
Количество просмотров12K
Всем приятного времени суток уважаемые хабровчане. Я люблю Symfony. Она мне нравится и я ее обожаю. Еще мне нравится SonataAdminBundle. Думаю многим из вас тоже. Итак, в данной статье я хочу рассмотреть процесс создания меню для сайта при участие в этом процессе KNPMenuBundle + SonataAdminBundle. По сути процесс создания меню достаточно прост и подробно описан на github’e самого бандла, но что если нам необходимо, что бы меню было управляемо из админки? Заинтересовались? Тогда прошу под кат.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Установка и настройка Sonata Admin на Symfony 4

Время на прочтение9 мин
Количество просмотров22K


Приветствую всех. В данной статье поговорим об Symfony 4 и Sonata Admin.


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


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

Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии25

Sonata Import Bundle

Время на прочтение5 мин
Количество просмотров5.1K
До сих пор одной из самых лучших админ панелей для Symfony является SonataAdminBundle, и не зря. Простая установка, конфигурация, множество фич “из коробки” и большое сообщество.

Единственное, что в ней отсутствует, так это импорт файлов. Согласитесь, немаловажная функция.

В сети лежит множество реализаций импорта для Sonata, но везде есть небольшие недочеты — возможность импорта только текстовых полей, а не сущностей, не работает с коллекциями, проблематично грузить огромные базы, которые могут обрабатываться не один час…

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

image
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии11

Как сделать поиск пользователей по GitHub, используя Vue

Время на прочтение6 мин
Количество просмотров8K

Думаю, все уже знают о том, как написать поиск по пользователям GitHub на React, Svelte, Angular, или вообще без них. Ну и как же тут обойтись без Vue? Самое время заполнить этот пробел.


image


Итак, сегодня мы создадим то самое приложение с использованием Vue, напишем для него тесты на Cypress и немного затронем Vue CLI 3.


В посте есть гифки

Читать дальше →
Всего голосов 15: ↑9 и ↓6+3
Комментарии8

Научитесь создавать собственные команды bash менее чем за 4 минуты

Время на прочтение4 мин
Количество просмотров23K
В этой статье я научу вас создавать собственные псевдонимы команд bash, а также как одновременно запускать несколько команд с помощью одной команды bash.

TL;DR В первой части описывается, почему псевдонимы — это так важно, сколько времени они экономят и т.д., но, если вы просто хотите узнать, как создать собственные псевдонимы, то перейдите к шагу 1.


Читать дальше →
Всего голосов 37: ↑21 и ↓16+5
Комментарии29

Vuex: структурирование больших проектов и работа с модулями

Время на прочтение7 мин
Количество просмотров26K
Vuex — это официальная, отлично документированная библиотека для управления состоянием приложений, разработанная специально для фреймворка Vue.js. Автор материала, перевод которого мы сегодня публикуем, полагает, что пользоваться этой библиотекой гораздо приятнее, чем Redux, так как, во-первых, для работы с Vuex требуется меньше шаблонного кода, а во-вторых — из-за того, что для работы с асинхронными механизмами здесь не нужно дополнительных библиотек. Более того, так как библиотека Vuex создана той же командой, которая занимается работой над Vue, эта библиотека очень хорошо интегрируется с данным фреймворком. К сожалению, в работе с Vuex всё ещё можно столкнуться с одной сложностью, которая заключается в правильной подготовке структуры проектов, в которых планируется пользоваться этой библиотекой.



В этой статье вы найдёте описание методики структурирования больших проектов, использующих Vuex, и скрипта, предназначенного для автоматизации процесса создания модулей Vuex.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии6

Почти OCR для получения пароля VPNBook. PHP + Mikrotik

Время на прочтение5 мин
Количество просмотров13K
Недавно VPNBook стал публиковать пароль вместо прямого текста в виде изображения. «Ну как же так» — подумал я и начал искать пути решения этой проблемы. Распознаем «картиночный» пароль VPNBook на PHP. И, конечно, скрипт для Mikrotik.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии11

10 самых распространенных ошибок безопасности в Python и как их избежать

Время на прочтение8 мин
Количество просмотров19K
Всем привет!

Наша очередная группа по Python успешно запустилась в понедельник, но у нас остался ещё один материальчик, который мы не успели разместить до старта. Исправляем нашу оплошность и надеемся, что он вам понравится.

Поехали!

Писать защищенный код сложно. Когда вы изучаете язык, модуль или фреймворк, вы узнаете, как это предполагается использовать. Вам также нужно подумать о том, как их можно использовать неправильно в контексте безопасности. Python не является исключением, даже в документации стандартной библиотеки есть описание плохих практик написания защищенных приложений. Тем не менее, многие Python-разработчики просто не знают о них.

Всего голосов 33: ↑31 и ↓2+29
Комментарии6

PHP-Дайджест № 134 (24 июня – 8 июля 2018)

Время на прочтение4 мин
Количество просмотров16K

В выпуске: PHP 7.3.0 alpha 3, PHPStan 0.10, Yii 1.1.20 и другие релизы, свежее предложение из PHP Internals по сравнению объектов, порция полезных инструментов, и многое другое.
Приятного чтения!

Всего голосов 47: ↑46 и ↓1+45
Комментарии25

Локальная авторизация без пароля в Ubuntu

Время на прочтение5 мин
Количество просмотров29K
image

Сегодня поговорим о том, как мы нашли локальную авторизацию без пароля в Ubuntu, которая, похоже, никогда не будет закрыта. Как всё происходило, читайте под катом.
Читать дальше →
Всего голосов 66: ↑60 и ↓6+54
Комментарии89

Открытый вебинар «Создание Web-сайта на фреймворке Yii2»

Время на прочтение4 мин
Количество просмотров6.9K
Всем привет!

На прошлой неделе наш новый преподаватель курса «Backend разработчик на PHP» провёл первый открытый урок на тему «Создание Web сайта на фреймворке Yii2». Предлагаем вашему вниманию запись и транскрипцию, собственно, вебинара.

Всего голосов 20: ↑15 и ↓5+10
Комментарии8

Деплой Elasticsearch на AWS с помощью Kubernetes за 10 шагов

Время на прочтение9 мин
Количество просмотров7.4K


Kubernetes aka k8s — это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями. В этой статье я расскажу как настроить кластер Kubernetes и развернуть на нем кластер Elasticsearch в AWS. Эти настройки также работают на GCE и Azure.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Полный гайд по бэкордеру доменов

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

Для чего нужен бэкордер


В популярных доменных зонах (.com, .net, .org) заняты самые короткие и звучные домены.
Существует возможность не пользоваться свободными доменами второго сорта, а перехватить хороший. Часто освобождаются даже трехбуквенные домены, минимальная стоимость которых на вторичном рынке — 17800 $.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии22

Используем Web Bluetooth API для подключения пульсометра и разрабатываем приложение используя Vue.js

Время на прочтение12 мин
Количество просмотров26K

Продолжаем обсуждать темы затронутые на You Gonna Love Frontend конференции. Эта статья вдохновлённая докладом Michaela Lehr. Видео с конференции будут доступны уже на этой недели, пока есть слайды. (Видео уже доступно)


Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии2

Firefox проверит скомпрометированные пароли методом k-анонимизации

Время на прочтение3 мин
Количество просмотров15K


На Хабре неоднократно упоминали полезный сервис Have I Been Pwned (HIBP), где можно безопасно проверить свой пароль на предмет утечки. Люди часто используют один пароль на многих сайтах, поэтому одна маленькая утечка с любого из этих сайтов компрометирует все остальные, а заодно и центр «цифровой личности» — почтовый ящик человека, через который можно изменить пароли практически на всех сервисах.

К сожалению, сервис HIBP малоизвестен широкой публике. Поэтому очень приятно, что разработчики Mozilla приняли решение включить его непосредственно в состав браузера как инструмент безопасности Firefox Monitor.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии35
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность