![Page 1: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/1.jpg)
Реанимация проектов на Symfony
Где стелить соломку
Сергей Великанов <[email protected]>, SymfonyConf IV.2016, пользуясь случаем, передаю привет маме!
![Page 2: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/2.jpg)
Доклад в основном про поддержку
2
![Page 3: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/3.jpg)
Доклад в основном про поддержку
И он более концептуальный нежели технический
3
![Page 4: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/4.jpg)
Доклад в основном про поддержку
Но и разработке стоит послушать
И он более концептуальный нежели технический
4
![Page 5: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/5.jpg)
В момент релиза поддержка не знает о чём идёт речь
5
![Page 6: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/6.jpg)
Сергей Великанов
6
![Page 7: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/7.jpg)
Сергей ВеликановТехнический директор 8bit group
7
![Page 8: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/8.jpg)
Сергей ВеликановТехнический директор 8bit group
Начинал PHP-верстальщиком в 2003 году
8
![Page 9: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/9.jpg)
Сергей ВеликановТехнический директор 8bit group
Начинал PHP-верстальщиком в 2003 годуС Symfony дружим ≈5 лет
9
![Page 10: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/10.jpg)
Сергей ВеликановТехнический директор 8bit group
Начинал PHP-верстальщиком в 2003 годуС Symfony дружим ≈5 лет
В нерабочее время пишу на C#
10
![Page 11: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/11.jpg)
Сергей ВеликановТехнический директор 8bit group
Начинал PHP-верстальщиком в 2003 годуС Symfony дружим ≈5 лет
В нерабочее время пишу на C#Хобби - бокс и джиу-джитсу
11
![Page 12: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/12.jpg)
8bit 😻 Symfony
12
![Page 13: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/13.jpg)
8bit 😻 SymfonyCPA-сети
Товарные партнёрки
Тизерные сети
Мобильные партнёрки
Интернет-магазины
Букмекерки
Опционы
RTB
13
![Page 14: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/14.jpg)
8bit 😻 SymfonyPHP 5/7
Nginx/OpenResty
Redis MySQL Percona (XtraDB, TokuDB)
HAProxy
Symfony 2/3
RabbitMQClickHouse
MongoDB
YII 1/2
Java
Spring
Hadoop
Sylius
14
![Page 15: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/15.jpg)
8bit 😻 Нагрузон
15
![Page 16: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/16.jpg)
8bit 😻 Uptime
High Availability ≥ High Load
16
![Page 17: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/17.jpg)
Как узнать?Индивидуальный мониторинг логов
Команды мониторингаСМСки о критических сбоях
Бот в Telegram
17
![Page 18: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/18.jpg)
Как узнать?Индивидуальный мониторинг логов
Команды мониторингаСМСки о критических сбоях
Бот в TelegramБыстрый чек после релиза
18
![Page 19: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/19.jpg)
Как узнать?Индивидуальный мониторинг логов
Команды мониторингаСМСки о критических сбоях
Бот в TelegramБыстрый чек после релиза
M/Monit19
![Page 20: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/20.jpg)
Как узнать?Индивидуальный мониторинг логов
Команды мониторингаСМСки о критических сбоях
Бот в TelegramБыстрый чек после релиза
M/Monit20
Zabbix Nagios Cacti
![Page 21: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/21.jpg)
M/MonitИндивидуальный мониторинг логов
21
check file gearman_worker_execute.log with path !/var/log/gearman_worker_execute.log if match "Error" then alert if match "Exception" then alert
Команды мониторингаcheck program project_whatever with path !“sf app:whatever:check” uid “project” group project if status != 0 for 2 cycles then alert
![Page 22: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/22.jpg)
Как узнать?
Шестое чувство
22
![Page 23: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/23.jpg)
Как узнать?
Шестое чувство
23
![Page 24: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/24.jpg)
Как узнать?
МенеджерыПродукт-овнерыКонтрагенты
Тикеты от юзеров
24
![Page 25: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/25.jpg)
Как узнать?
МенеджерыПродукт-овнерыКонтрагенты
Тикеты от юзеровНе должны стать неожиданностью
25
![Page 26: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/26.jpg)
То самое чувство…
26
![Page 27: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/27.jpg)
Оно, родимое…
27
![Page 28: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/28.jpg)
Для чего?
28
![Page 29: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/29.jpg)
Для чего?Если в Критический Момент
Ты не эффективен
29
![Page 30: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/30.jpg)
Для чего?Если в Критический Момент
Ты не эффективен
30
![Page 31: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/31.jpg)
Flock
Не даёт плодиться лишним процессам
flock -ne lock_file command
31
![Page 32: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/32.jpg)
Flock
Не даёт плодиться лишним процессам
flock -ne lock_file command
* * * * * flock -ne /tmp/5m.lock php 5_minutes_sleep.php
32
![Page 33: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/33.jpg)
Flock
Не даёт плодиться лишним процессам
flock -ne lock_file command
* * * * * flock -ne /tmp/5m.lock php 5_minutes_sleep.php
Или LockHandler - Symfony way
33
![Page 34: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/34.jpg)
Runalarm
Не даёт спать уснувшим процессам
runalarm -t seconds command
34
![Page 35: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/35.jpg)
Runalarm
Не даёт спать уснувшим процессам
runalarm -t seconds command
runalarm -t 3600 php 3_hours_sleep.php
35
![Page 36: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/36.jpg)
Flock + Runalarm
Не дают спать и плодиться
* * * * * flock -ne /tmp/lock runalarm -t 3600 yes
36
![Page 37: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/37.jpg)
Логи
Всегда пишите логи
37
![Page 38: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/38.jpg)
Логи
Всегда пишите логиВсегда
38
![Page 39: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/39.jpg)
Логи.Monologmonolog: channels: [“calculation”] handlers: calculation_handler: type: stream path: “%kernel.logs_dir%/calculation.log” level: debug channels: calculation
39
![Page 40: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/40.jpg)
Логи.Monologmonolog: channels: [“calculation”] handlers: calculation_handler: type: stream path: “%kernel.logs_dir%/calculation.log” level: debug channels: calculation
“@monolog.logger.calculation”
40
![Page 41: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/41.jpg)
Логи.Monologmonolog: channels: [“calculation”] handlers: calculation_handler: type: stream path: “%kernel.logs_dir%/calculation.log” level: debug channels: calculation
“@monolog.logger.calculation”
$this->get(“monolog.logger.calculation”)->debug(“hello”);
41
![Page 42: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/42.jpg)
Логи.ОК
$this->logger->info(“OK”);
42
![Page 43: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/43.jpg)
ЛогиНазывай логи удобно
43
![Page 44: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/44.jpg)
Логи
/var/log/project/finance_create_holds.log
Называй логи удобно
/var/log/project/finance_update_balance.log
/var/log/project/finance_update_holds.log
44
![Page 45: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/45.jpg)
Логи
/var/log/project/finance_create_holds.log
Называй логи удобно
/var/log/project/finance_update_balance.log
/var/log/project/finance_update_holds.log
/var/log/project/balance_update.log
/var/log/project/holds_create.log
/var/log/project/holds_update.log
45
![Page 46: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/46.jpg)
ЛогиСоздай алиасы для просмотра логов
46
![Page 47: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/47.jpg)
ЛогиСоздай алиасы для просмотра логов
alias ntail=“tail -F /var/log/nginx/error.log”
alias nless=“less /var/log/nginx/error.log”
47
![Page 48: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/48.jpg)
ЛогиСоздай алиасы для просмотра логов
alias ntail=“tail -F /var/log/nginx/error.log”
alias nless=“less /var/log/nginx/error.log”
logtail(){ tail -F /var/log/project/$1; }
~/.bashrc:
logtail prod.log
48
![Page 49: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/49.jpg)
ЛогиСоздай алиасы для просмотра логов
alias ntail=“tail -F /var/log/nginx/error.log”
alias nless=“less /var/log/nginx/error.log”
logtail(){ tail -F /var/log/project/$1; }
~/.bashrc:
logtail prod.log
logless(){ less /var/log/project/$1; }
logrep(){ tail -F /var/log/project/$1 | grep $2; }49
![Page 50: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/50.jpg)
ЛогиСоздай алиасы для просмотра логов
alias ntail=“tail -F /var/log/nginx/error.log”
alias nless=“less /var/log/nginx/error.log”
logtail(){ tail -F /var/log/project/$1; }
~/.bashrc:
logtail prod.log > logtail prod
logless(){ less /var/log/project/$1; }
logrep(){ tail -F /var/log/project/$1 | grep $2; }50
![Page 51: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/51.jpg)
tail -F
51
![Page 52: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/52.jpg)
tail -F
Круче чем tail -f
52
![Page 53: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/53.jpg)
Cron и конфиги
Держите конфиги в репозитории проекта
53
![Page 54: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/54.jpg)
Cron и конфиги
Держите конфиги в репозитории проекта
crontab -e vs crontab -r
54
![Page 55: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/55.jpg)
Cron и конфиги
Держите конфиги в репозитории проекта
crontab -e vs crontab -r
Разгрузите своих админов и DevOps
55
![Page 56: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/56.jpg)
Cron и конфиги
Держите конфиги в репозитории проекта
56
- name: Check for primary host action: shell grep -q 'eth0:frontend' /run/network/ifstate register: is_primary_host ignore_errors: yes - name: Install crontab action: shell cat - {{symfony_current_release_dir}}/app/config/crontab/primary | crontab when: is_primary_host|success
![Page 57: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/57.jpg)
Роллбек, ЙорикТупи ор не тупи
☝
57
![Page 58: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/58.jpg)
Роллбек, ЙорикКаждый релиз индивидуален
58
![Page 59: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/59.jpg)
Роллбек, ЙорикКаждый релиз индивидуален
Каждый должен продумать откат своих фич
59
![Page 60: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/60.jpg)
Роллбек, ЙорикКаждый релиз индивидуален
Каждый должен продумать откат своих фич
Migration Down должен быть проработан заранее
60
![Page 61: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/61.jpg)
Перебрасываем симлинк
61
Шеф, всё пропало
![Page 62: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/62.jpg)
![Page 63: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/63.jpg)
![Page 64: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/64.jpg)
![Page 65: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/65.jpg)
![Page 66: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/66.jpg)
Slow logs
request_slowlog_timeout = 5sslowlog = /var/log/php-slow.log
PHP-FPM:
MySQL:log_slow_queries = /var/log/mysql/slowlong_query_time = 1
66
![Page 67: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/67.jpg)
И напоследокПроблема возникает не когда всё ломается…
67
![Page 68: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/68.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
68
![Page 69: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/69.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
69
![Page 70: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/70.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
70
⌘K вместо VCS->Commit Changes…⌘+Click, ⇧⇧, ⌘O
![Page 71: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/71.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машинеУмей обращаться с редактором на сервере
71
![Page 72: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/72.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машинеУмей обращаться с редактором на сервере
72
$ для перемещения в конец строки^ для перемещения в начало строки
gg для перемещения в начало документаG для перемещения в конец документа
12G для перемещения на 12 строку документаТЫСЯЧИ ИХ!!!11
![Page 73: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/73.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
Понимай, где происходит ошибкаУмей обращаться с редактором на сервере
73
![Page 74: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/74.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
Понимай, где происходит ошибкаВыучи шорткаты ко всему, чем пользуешься
Умей обращаться с редактором на сервере
74
![Page 75: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/75.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
Понимай, где происходит ошибкаВыучи шорткаты ко всему, чем пользуешься
Настрой SSH посерверно (ucarp)
Умей обращаться с редактором на сервере
75
![Page 76: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/76.jpg)
ucarp
76
ucarp1 ucarpN
IP IP
Nginx MySQL
Nginx MySQL
carp
![Page 77: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/77.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
Понимай, где происходит ошибкаВыучи шорткаты ко всему, чем пользуешься
Настрой SSH посерверно (ucarp)СДЕЛАЙ УЖЕ АЛИАС ДЛЯ /app/console, /bin/console
Умей обращаться с редактором на сервере
77
![Page 78: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/78.jpg)
И напоследокПроблема возникает не когда всё ломается…
…а когда всё не может быстро починиться
Умей обращаться с IDE на своей машине
Понимай, где происходит ошибкаВыучи шорткаты ко всему, чем пользуешься
Настрой SSH посерверно (ucarp)СДЕЛАЙ УЖЕ АЛИАС ДЛЯ /app/console, /bin/console
Умей обращаться с редактором на сервере
И СОХРАНИ ЭТИ ЧАСТО ИСПОЛЬЗУЕМЫЕ ЗАПРОСЫ
78
![Page 79: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/79.jpg)
Гениями не рождаются
79
![Page 80: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/80.jpg)
Не пейте Не курите
Занимайтесь спортом
80
![Page 81: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/81.jpg)
Будьте профессионалами
81
![Page 82: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/82.jpg)
8bit 😻 Hiring
ТимлидыКодеры
ТестерыАдмины
Верстальщики ФронтыСимфонисты
Иишники
Автоматизаторы
Явисты
82
![Page 84: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/84.jpg)
Спасибо
Thank youDanke
GraciasMerci
ДякуємоДзякуй
Bedankt
Tänan
Dzięki
Pateicība
Dėkoju
謝謝
感謝
Хвала
Баярлалаа
Tack
![Page 85: SymfonyConf IV.2016 - Реанимация проектов на Symfony](https://reader034.vdocuments.pub/reader034/viewer/2022042611/58ec9ee41a28ab8a4b8b47dd/html5/thumbnails/85.jpg)
/contacts/
" serge.velikanov# live:velikan55555
$ velikanov
% +7 9⎵⎵ 309 88 37