Олег Годовых «Страх и ненависть в Event Bus»DevDay
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
Август 2014, DevDay, Новосибирск
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
"Мое выступление поможет ответить на следующие вопросы:
1. Что такое HTTP reverse proxy?
2. Настройка NGINX в режиме reverse proxy.
3. Стандартные способы выбора upstream server: Round Robin, Hash, Consistent Hash.
4. Не сдерживаем фантазию -- пишем свой алгоритм.
5. Примеры, когда создание собственного решения оправдано."
1. Компоненты MVC
2. Django как пример MVC фреймворка
3. Структура Django проекта
4. Модульность в Djnago: приложения
5. Конфигурация проектов
6. Маршрутизация URL
7. Обратная маршрутизация URL
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
РИТ++ 2017, Root Conf
Зал Конгресс-холл, 6 июня, 15:00
Тезисы:
http://rootconf.ru/2017/abstracts/2551.html
На основе своего опыта работы в консалтинге я расскажу, как избавить разработчиков от рутинных задач и как сэкономить на ресурсах команды с помощью правильно настроенного CI-CD pipeline.
Единствено верный способ упаковки приложений - это Docker-контейнеры, благодаря этому способу вы сможете унифицировать процесс деплоя. Нужно деплоить приложения с помощью Ansible-плейбука, запакованного в Docker-контейнер, это снижает требования к окружению CI-ранера. Вам нужен только Docker.
...
Методология DevOps - новое течение в управлении разработкой и эксплуатацией. DevOps дает возможность бизнесу быстрее добиваться своих целей, активнее меняться и постоянно пробовать новое.
Основные направления DevOps:
- новая инженерная культура, построенная на взаимной - ответственности коллектива;
- автоматизация и инструменты;
- управление изменениями и мониторинг;
- распространение знаний между всеми участниками технической команды.
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFest
Microsoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
Олег Годовых «Страх и ненависть в Event Bus»DevDay
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
Август 2014, DevDay, Новосибирск
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
"Мое выступление поможет ответить на следующие вопросы:
1. Что такое HTTP reverse proxy?
2. Настройка NGINX в режиме reverse proxy.
3. Стандартные способы выбора upstream server: Round Robin, Hash, Consistent Hash.
4. Не сдерживаем фантазию -- пишем свой алгоритм.
5. Примеры, когда создание собственного решения оправдано."
1. Компоненты MVC
2. Django как пример MVC фреймворка
3. Структура Django проекта
4. Модульность в Djnago: приложения
5. Конфигурация проектов
6. Маршрутизация URL
7. Обратная маршрутизация URL
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
РИТ++ 2017, Root Conf
Зал Конгресс-холл, 6 июня, 15:00
Тезисы:
http://rootconf.ru/2017/abstracts/2551.html
На основе своего опыта работы в консалтинге я расскажу, как избавить разработчиков от рутинных задач и как сэкономить на ресурсах команды с помощью правильно настроенного CI-CD pipeline.
Единствено верный способ упаковки приложений - это Docker-контейнеры, благодаря этому способу вы сможете унифицировать процесс деплоя. Нужно деплоить приложения с помощью Ansible-плейбука, запакованного в Docker-контейнер, это снижает требования к окружению CI-ранера. Вам нужен только Docker.
...
Методология DevOps - новое течение в управлении разработкой и эксплуатацией. DevOps дает возможность бизнесу быстрее добиваться своих целей, активнее меняться и постоянно пробовать новое.
Основные направления DevOps:
- новая инженерная культура, построенная на взаимной - ответственности коллектива;
- автоматизация и инструменты;
- управление изменениями и мониторинг;
- распространение знаний между всеми участниками технической команды.
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFest
Microsoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
Облачные технологии предлагают масс преимуществ для размещения веб-приложений. Надежность, экономия, возможность отказаться от своей инфраструктуры, автоматическое масштабирование и многое другое - вот плюсы облачного размещения.
В этом докладе мы рассмотрим как облачная платформа Azure позволит вам получить все преимущества для хостинга проектов на базе Drupal на Linux или Windows в виде PaaS-решения или просто в виртуальных машинах.
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2940.html
Почти год назад я выступил с докладом 'Как и зачем создавать NginX-модуль - теория, практика, профит'. У меня не получилось рассказать обо всех возможностях Nginx и, уверяю вас, в этом докладе у меня это тоже не получится - тема слишком большая!
Сразу перейдем к делу. "Так что нового будет в этом докладе?" - спросите вы. В нем будут ответы на вопросы, на которые я не успел ответить в прошлом году, а именно:
- Как и зачем создавать upstream-модули?
...
Доклад о насущей и затертой до дыр теме кеширования не только сайтов на WordPress, но и сайтов в целом: от перегрузки js-скриптов и CSS в CDN до установки и настройки Varnish Cache
Построение собственного JS SDK — зачем и как?buranLcme
Многие разработчики любят делать свои велосипеды, но не все задумываются зачем. Мы расскажем о том, зачем вам может понадобится собственный JavaScript SDK и полезно ли кататься на велосипедах.
Мы делали собственный JS SDK для того, чтобы дать возможность создания плагинов в рамках большой enterprise системы - <b>Parallels Automation</b> и <b>Plesk Panel</b>. Сам SDK является частью общего стандарта <b>APS</b>, который является шиной, объединяющей все наши продукты по автоматизации. Обе панели брендируются и мы должны были сохранить брендинг при уже существующей кодовой базе верстки и существующих правилах оформления. И главное - надо было дать возможность создания UI сторонним девелоперам, которые могут иметь абсолютно разный уровень - от пришедших бекэндеров до профессиональных js-разработчиков.
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesArtur Baranok
Основные аспекты управления веб-проектом в Microsoft Azure Websites. Cоздание сайта из коллекции веб-приложений, выбор СУБД, средства развертывания, сервис Kudu, привязка собственного домена, использование HTTPS. Артур Баранок, Azure MVP
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
2. Хранение загруженных файлов
Хранилище:
• Локальная файловая система.
• База данных.
• NFS.
• Amazon S3.
• Webdav.
Организация файлов в локальной ФС:
• Соглашения.
• Общий подход.
3. WEBDAV
- это современный и защищённый сетевой протокол
высокого уровня, работающий поверх HTTP для
доступа к объектам и коллекциям объектов.
• Выполнение основных файловых операций над
объектами на удаленном сервере.
• ngx_http_dav_module или mod_dav.
• Для использования в ZF - Zend_Http_Client.
6. Сервера и их взаимодействие
• Один сервер -> VPS -> Кластер.
• Storage хранит только исходники картинок.
• На storage серверах стоит nginx с модулем
ngx_http_dav_module.
• Create_full_put_path on.
• Webdav используется только для загрузки
картинок на storage.
8. Загрузка файлов
• Для каждого файла своя запись в таблице.
• is_deleted и is_ready для отложенной
обработки.
• На основе id генерируется путь
161/374/000473161 до файла на storage
сервере.
• Каждая сущность в базе, имеющая
файл(ы), связывается с id файла.
13. Устройство ресайзера. Кеширование.
• Кеширует nginx, ресайзит php.
• Кешируем на клиенте навсегда.
• В скрипте ресайзера не нужно поднимать
bootstrap ZF).
• В nginx нужно разделять пулы коннектов для
отдачи из кеша и ресайза.
• Благодаря цифровому подписыванию ресайзит
только в разрешенные размеры.
14. Собирая все вместе
• Создание записи в базе при загрузке картинки и
перемещение исходного файла в необходимую
директорию.
• Файл конфигурации.
• Вью хелпер для урлов.
• Скрипт для генерации картинок (с
кешированием).
15. Загрузка файлов
$client = new Ext_Webdav_Client($connect_params);
$adapter = new Ext_File_Adapter_Webdav();
$adapter->setClient($adapter);
$transfer = new Ext_File_Transfer();
$transfer->setAdapter($adapter);
Ext_Form_Element_File::setTransfer($transfer);
return $transfer;
16. Загрузка файлов
public function configure(Ext_File $file) {
$table = new File();
$row = $table->createRow();
list($row->width, $row->height) =
getimagesize($file->getFilePath());
$row->save();
$this->getAdapter()->setUri($this-
>generateUri($row->id));
return $row;