SlideShare a Scribd company logo
ОБО МНЕ
• PYTHON РАЗРАБОТЧИК
• СЕРИЙНЫЙ ПРОГРАММИСТ
• СИЛЬНАЯ DJANGO-ЗАВИСИМОСТЬ
• БАЛУЮСЬ МИКРОФРЕЙМВОРКАМИ
DJANGO
ИЛИ КАК ПЕРЕЙТИ И ЭТУ ГРАНЬ
DJANGO
• ORM
• TEMPLATES
• FORMS
• AUTHORIZATION
• SECURITY
• ADMINISTRATION
• UNIT TESTING
• MANAGE COMMANDS
• DEV SERVER
• Configuration
• Sessions
• Cache
• Internalization
• Event dispatching
• Messaging
• And more
А ВСЕ ЛИ ЭТО НУЖНО?
• DJANGO БОЛЬШОЙ
• СОЗДАВАТЬ НОВЫЙ ПРОЕКТ УТОМИТЕЛЬНО
• МНОГО ФАЙЛОВ
• МНОГО НАСТРОЕК
• МНОГО МАЛОИЗУЧЕННОЙ ФУНКЦИОНАЛЬНОСТИ
• ИНТЕРНЕТЫ ГОВОРЯТ, ЧТО DJANGO МЕДЛЕННЫЙ
• ГОВОРЯТ, ЕСТЬ ORM ПОКРУЧЕ ЧЕМ У DJANGO
• ДА И ТЕМПЛЕЙТЫ ГОВОРЯТ МЕДЛЕННЫЕ
ЗНАЧИТ
• НАМ НУЖЕН ЛЕГКИЙ И БЫСТРЫЙ ФРЕЙМВОРК!
ИЛИ…
• - СЛУШАЙ ТУТ ПРОЕКТ ЕСТЬ, ЗАКАЗЧИК ХОЧЕТ ЧТОБЫ БЫЛО БЫСТРО И БЕЗ ДЖАНГО. СМОЖЕШЬ?
• - ЭММ... ДА?!
РЕШЕНО!
НО ЧТО ВЫБРАТЬ?
ФРЕЙМВОРКИ
• FLASK
• ПЕРВОЕ, ЧТО ПРИШЛО НА УМ
• ПОЧТИ DJANGO
• BOTTLE
• НЕМНОГО ПОГУГЛИЛИ
• БЫСТРЫЙ, МАЛЕНЬКИЙ (ОДИН ФАЙЛИК)
• FALCON
• ЕЩЕ ПОГУГЛИЛИ
• САМЫЙ БЫСТРЫЙ, REST-ОРИЕНТИРОВАН
FLASK
• САМ ПО СЕБЕ НЕ FULL STACK
• ЕСТЬ МНОГО РАСШИРЕНИЙ
• ORM
• ADMIN
• CACHE
• AUTHORIZATION
• INTERNALIZATION
• UNIT TESTING
• AND MORE
BOTTLE
• ФУНКЦИОНАЛЬНЫЙ СТИЛЬ
• ЛАКОНИЧНЫЙ
• ЕСТЬ ТЕМПЛЕЙТЫ
@app.route('/hello')
def hello():
return 'Hello World!'
FALCON
• БЫСТРЫЙ
• CLASS-BASED, REST ARCHITECTURE
class HelloResource:
def on_get(self, req, resp):
resp.status = falcon.HTTP_200
resp.body = 'Hello World'
app = falcon.API()
app.add_route('/things', HelloResource())
HELLO BRAVE NEW WORLD!
А ЧТО ДАЛЬШЕ?
ПРОБЛЕМА #1. БАЗА
• НУЖНО РАБОТАТЬ С ДАННЫМИ
• ДАННЫЕ ХРАНЯТСЯ В БАЗЕ
• СЕЙЧАС ВОЗЬМЕМ ORMКУ
• СТОП! У НАС НЕТ ORM
ПРОБЛЕМА #1. БАЗА
• EXECUTE ЖЕ ЕСТЬ. ЕСЛИ ЕСТЬ RAW SQL, ORM НЕ НУЖЕН
• НЕТ ПРОВЕРКИ ТИПОВ
• РУЧНОЙ ПАРСИНГ ОТВЕТА
• SQL ИНЬЕКЦИИ
• НЕТ IN-MEMORY
• СВОЙ ORM
• ТРУДНО
• ЗАБАГОВАНО
• УНИКАЛЬНЫЕ КЛЕВЫЕ ФИЧИ
• ЗАБАГОВАНО
• SQL ALCHEMY
ПРОБЛЕМА #2. SQL ALCHEMY
• ЭТО НЕ ПОХОЖЕ НА DJANGO ORM
• ОНО НЕ РАБОТАЕТ СРАЗУ
• ДОКУМЕНТАЦИЯ ГОВОРИТ CREATE_ENGINE(CONNECTION_STRING)
• И ПЛЮС ЕЩЕ 20 ПАРАМЕТРОВ
• НЕ ИНТУИТИВНО ПОНЯТНЫЙ МЕХАНИЗМ СЕССИЙ
• EXPIRE ON COMMIT
• EXPUNGE ОТ СЕССИИ
• КЕШ СЕССИИ
ПРОБЛЕМА #2. SQL ALCHEMY
• SQL ALCHEMY ДАЕТ БОЛЬШЕ КОНТРОЛЯ
• МНОГИЕ ВЕЩИ КАЖУТСЯ ЛОГИЧНЫМИ
• SESSION.QUERY(USER).FILTER(USER.NAME == ‘DATAART’)
• ВЫЗОВ ФУНКЦИЙ ПРОЩЕ
ПРОБЛЕМА #3. МИГРАЦИИ
• НЕТ SOUTH
• ЕСТЬ АЛЬТЕРНАТИВЫ
• SQL ФАЙЛЫ
• LIQUIBASE, FLYWAY
• ALEMBIC
ПРОБЛЕМА #4. АДМИНКА
• АДМИНКА ЕСТЬ ТОЛЬКО У FLASK
• ЕСЛИ НЕТ FLASK, ТО ЕСТЬ PGADMIN, PSQL
РАЗНОЕ
• ТЕМПЛЕЙТЫ
• JINJA2
• ПОПУЛЯРНОЕ РЕШЕНИЕ ДАЖЕ ДЛЯ DJANGO
• BOTTLE TEMPLATES
• JSON.DUMPS
• DEV SERVER
• У BOTTLE СВОЙ
• У FLASK WERKZEUG
• ДЛЯ FALCON WERKZEUG НУЖНО ПРИКРУТИТЬ
• UNIT TESTS
• NOSE
• WERKZEUG TEST CLIENT
И ЕЩЕ КУЧА МЕЛОЧЕЙ
• МНОГО МНОГО МЕЛКИХ ВЕЩЕЙ КОТОРЫХ НЕТ ИЗ КОРОБКИ
• НО ИХ НАВЕРНЯКА УЖЕ КТО-ТО НАПИСАЛ
• КАК ОПРЕДЕЛИТЬ КОГДА СТОИТ ИСПОЛЬЗОВАТЬ СТОРОННЮЮ БИБЛИОТЕКУ
• А КОГДА ПИСАТЬ СВОЮ?
А КОГДА ВООБЩЕ ИСПОЛЬЗОВАТЬ
МИКРОФРЕЙМВОРКИ
• НУЖНО МИНИМИЗИРОВАТЬ ЗАВИСИМОСТЬ ОТ СТОРОННИХ БИБЛИОТЕК
• ОСОБЕННО НЕ СТАБИЛЬНЫХ
• НУЖНО МИНИМИЗИРОВАТЬ КОЛИЧЕСТВО СВОИХ ВЕЛОСИПЕДОВ
КАК?
• ПЕРЕЛОЖИТЬ ЧАСТЬ ЗАБОТ НА ФРОНТ-ЕНД
• JAVASCRIPT
• SINGLE PAGE
• AJAX
• ОТДАВАТЬ ТОЛЬКО JSON
• НЕ ЗАБЫВАТЬ ПРО СОВРЕМЕННЫЙ ФРОНТ-ЕНД
• BACKBONE.JS, ANGULAR.JS
• LESS
• GRUNT
Артур Чеканов  «Microframeworks» (Python Meetup)

More Related Content

Viewers also liked

Bean Plataspid
Bean PlataspidBean Plataspid
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArt
DataArt
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
Arpanasa
 
Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Dc brochure vietv1 (1)
Dc brochure vietv1 (1)
Nguyet Vo
 
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков. Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
DataArt
 
8 Things Business Owners Wish They Knew
8 Things Business Owners Wish They Knew8 Things Business Owners Wish They Knew
8 Things Business Owners Wish They Knew
UrbanBound
 
Transistores
TransistoresTransistores
Transistores
Manuel Bolivar H
 
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыИван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
DataArt
 
Bit trade labs sovereign identity fintech summit 2016
Bit trade labs sovereign identity   fintech summit 2016Bit trade labs sovereign identity   fintech summit 2016
Bit trade labs sovereign identity fintech summit 2016
Glen Frost
 
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
DataArt
 
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
DataArt
 
Christmas eve
Christmas eveChristmas eve
Christmas eve
evertvangool
 
Building Pennsylvania's First Detector Network Part 2
Building Pennsylvania's First Detector Network Part 2Building Pennsylvania's First Detector Network Part 2
Building Pennsylvania's First Detector Network Part 2
PlantHealthResourceCenter
 
First story board pictures
First story board picturesFirst story board pictures
First story board pictures
Abbey Cotterill
 
Matematicas
MatematicasMatematicas
Que es el internet programacion web
Que es el internet programacion webQue es el internet programacion web
Que es el internet programacion web
Diego Rojas
 
Роман Денисенко — Нагрузочное тестирование для самых маленьких.
Роман Денисенко — Нагрузочное тестирование для самых маленьких.Роман Денисенко — Нагрузочное тестирование для самых маленьких.
Роман Денисенко — Нагрузочное тестирование для самых маленьких.
DataArt
 
Николай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoTНиколай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoT
DataArt
 
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
DataArt
 
BARCLAYS TRAVEL
BARCLAYS TRAVELBARCLAYS TRAVEL
BARCLAYS TRAVEL
Vineet Tyagi
 

Viewers also liked (20)

Bean Plataspid
Bean PlataspidBean Plataspid
Bean Plataspid
 
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArt
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
 
Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Dc brochure vietv1 (1)
Dc brochure vietv1 (1)
 
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков. Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
 
8 Things Business Owners Wish They Knew
8 Things Business Owners Wish They Knew8 Things Business Owners Wish They Knew
8 Things Business Owners Wish They Knew
 
Transistores
TransistoresTransistores
Transistores
 
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыИван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
 
Bit trade labs sovereign identity fintech summit 2016
Bit trade labs sovereign identity   fintech summit 2016Bit trade labs sovereign identity   fintech summit 2016
Bit trade labs sovereign identity fintech summit 2016
 
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
 
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
Владимир Бронников (Senior .NET Developer, Perfectial) “Performance optimizat...
 
Christmas eve
Christmas eveChristmas eve
Christmas eve
 
Building Pennsylvania's First Detector Network Part 2
Building Pennsylvania's First Detector Network Part 2Building Pennsylvania's First Detector Network Part 2
Building Pennsylvania's First Detector Network Part 2
 
First story board pictures
First story board picturesFirst story board pictures
First story board pictures
 
Matematicas
MatematicasMatematicas
Matematicas
 
Que es el internet programacion web
Que es el internet programacion webQue es el internet programacion web
Que es el internet programacion web
 
Роман Денисенко — Нагрузочное тестирование для самых маленьких.
Роман Денисенко — Нагрузочное тестирование для самых маленьких.Роман Денисенко — Нагрузочное тестирование для самых маленьких.
Роман Денисенко — Нагрузочное тестирование для самых маленьких.
 
Николай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoTНиколай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoT
 
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
Александр Кашеверов — Коротко про WEB: HTML, CSS, JS.
 
BARCLAYS TRAVEL
BARCLAYS TRAVELBARCLAYS TRAVEL
BARCLAYS TRAVEL
 

Similar to Артур Чеканов «Microframeworks» (Python Meetup)

SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
automated-testing.info
 
рентабельный код
рентабельный кодрентабельный код
рентабельный код
Max Arshinov
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Dev2Dev
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
Alina Dolgikh
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйUISGCON
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
JSib
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Ontico
 
Леонид Юрьев, "Петер-Сервис"
Леонид Юрьев, "Петер-Сервис"Леонид Юрьев, "Петер-Сервис"
Леонид Юрьев, "Петер-Сервис"
Ontico
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на Erlang
Max Lapshin
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
Максим Сячин
 
Криптология в анализе защищённости
Криптология в анализе защищённостиКриптология в анализе защищённости
Криптология в анализе защищённости
beched
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
Iosif Itkin
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Ontico
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoFAleksey Shipilev
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo Development
 
Java/Scala Lab: Юрий Литвиненко - Living in Heroku
Java/Scala Lab: Юрий Литвиненко - Living in Heroku Java/Scala Lab: Юрий Литвиненко - Living in Heroku
Java/Scala Lab: Юрий Литвиненко - Living in Heroku
GeeksLab Odessa
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
Daniel Podolsky
 

Similar to Артур Чеканов «Microframeworks» (Python Meetup) (20)

SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
рентабельный код
рентабельный кодрентабельный код
рентабельный код
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Sivko
SivkoSivko
Sivko
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяй
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Леонид Юрьев, "Петер-Сервис"
Леонид Юрьев, "Петер-Сервис"Леонид Юрьев, "Петер-Сервис"
Леонид Юрьев, "Петер-Сервис"
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на Erlang
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Криптология в анализе защищённости
Криптология в анализе защищённостиКриптология в анализе защищённости
Криптология в анализе защищённости
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Java/Scala Lab: Юрий Литвиненко - Living in Heroku
Java/Scala Lab: Юрий Литвиненко - Living in Heroku Java/Scala Lab: Юрий Литвиненко - Living in Heroku
Java/Scala Lab: Юрий Литвиненко - Living in Heroku
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 

More from DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
DataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
DataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
DataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
DataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
DataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
DataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
DataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
DataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
DataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
DataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
DataArt
 
Selenoid
SelenoidSelenoid
Selenoid
DataArt
 
Selenide
SelenideSelenide
Selenide
DataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
DataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Артур Чеканов «Microframeworks» (Python Meetup)

  • 1.
  • 2. ОБО МНЕ • PYTHON РАЗРАБОТЧИК • СЕРИЙНЫЙ ПРОГРАММИСТ • СИЛЬНАЯ DJANGO-ЗАВИСИМОСТЬ • БАЛУЮСЬ МИКРОФРЕЙМВОРКАМИ
  • 3. DJANGO ИЛИ КАК ПЕРЕЙТИ И ЭТУ ГРАНЬ
  • 4. DJANGO • ORM • TEMPLATES • FORMS • AUTHORIZATION • SECURITY • ADMINISTRATION • UNIT TESTING • MANAGE COMMANDS • DEV SERVER • Configuration • Sessions • Cache • Internalization • Event dispatching • Messaging • And more
  • 5. А ВСЕ ЛИ ЭТО НУЖНО? • DJANGO БОЛЬШОЙ • СОЗДАВАТЬ НОВЫЙ ПРОЕКТ УТОМИТЕЛЬНО • МНОГО ФАЙЛОВ • МНОГО НАСТРОЕК • МНОГО МАЛОИЗУЧЕННОЙ ФУНКЦИОНАЛЬНОСТИ • ИНТЕРНЕТЫ ГОВОРЯТ, ЧТО DJANGO МЕДЛЕННЫЙ • ГОВОРЯТ, ЕСТЬ ORM ПОКРУЧЕ ЧЕМ У DJANGO • ДА И ТЕМПЛЕЙТЫ ГОВОРЯТ МЕДЛЕННЫЕ
  • 6. ЗНАЧИТ • НАМ НУЖЕН ЛЕГКИЙ И БЫСТРЫЙ ФРЕЙМВОРК!
  • 7. ИЛИ… • - СЛУШАЙ ТУТ ПРОЕКТ ЕСТЬ, ЗАКАЗЧИК ХОЧЕТ ЧТОБЫ БЫЛО БЫСТРО И БЕЗ ДЖАНГО. СМОЖЕШЬ? • - ЭММ... ДА?!
  • 9. ФРЕЙМВОРКИ • FLASK • ПЕРВОЕ, ЧТО ПРИШЛО НА УМ • ПОЧТИ DJANGO • BOTTLE • НЕМНОГО ПОГУГЛИЛИ • БЫСТРЫЙ, МАЛЕНЬКИЙ (ОДИН ФАЙЛИК) • FALCON • ЕЩЕ ПОГУГЛИЛИ • САМЫЙ БЫСТРЫЙ, REST-ОРИЕНТИРОВАН
  • 10. FLASK • САМ ПО СЕБЕ НЕ FULL STACK • ЕСТЬ МНОГО РАСШИРЕНИЙ • ORM • ADMIN • CACHE • AUTHORIZATION • INTERNALIZATION • UNIT TESTING • AND MORE
  • 11. BOTTLE • ФУНКЦИОНАЛЬНЫЙ СТИЛЬ • ЛАКОНИЧНЫЙ • ЕСТЬ ТЕМПЛЕЙТЫ @app.route('/hello') def hello(): return 'Hello World!'
  • 12. FALCON • БЫСТРЫЙ • CLASS-BASED, REST ARCHITECTURE class HelloResource: def on_get(self, req, resp): resp.status = falcon.HTTP_200 resp.body = 'Hello World' app = falcon.API() app.add_route('/things', HelloResource())
  • 13. HELLO BRAVE NEW WORLD! А ЧТО ДАЛЬШЕ?
  • 14. ПРОБЛЕМА #1. БАЗА • НУЖНО РАБОТАТЬ С ДАННЫМИ • ДАННЫЕ ХРАНЯТСЯ В БАЗЕ • СЕЙЧАС ВОЗЬМЕМ ORMКУ • СТОП! У НАС НЕТ ORM
  • 15. ПРОБЛЕМА #1. БАЗА • EXECUTE ЖЕ ЕСТЬ. ЕСЛИ ЕСТЬ RAW SQL, ORM НЕ НУЖЕН • НЕТ ПРОВЕРКИ ТИПОВ • РУЧНОЙ ПАРСИНГ ОТВЕТА • SQL ИНЬЕКЦИИ • НЕТ IN-MEMORY • СВОЙ ORM • ТРУДНО • ЗАБАГОВАНО • УНИКАЛЬНЫЕ КЛЕВЫЕ ФИЧИ • ЗАБАГОВАНО • SQL ALCHEMY
  • 16. ПРОБЛЕМА #2. SQL ALCHEMY • ЭТО НЕ ПОХОЖЕ НА DJANGO ORM • ОНО НЕ РАБОТАЕТ СРАЗУ • ДОКУМЕНТАЦИЯ ГОВОРИТ CREATE_ENGINE(CONNECTION_STRING) • И ПЛЮС ЕЩЕ 20 ПАРАМЕТРОВ • НЕ ИНТУИТИВНО ПОНЯТНЫЙ МЕХАНИЗМ СЕССИЙ • EXPIRE ON COMMIT • EXPUNGE ОТ СЕССИИ • КЕШ СЕССИИ
  • 17. ПРОБЛЕМА #2. SQL ALCHEMY • SQL ALCHEMY ДАЕТ БОЛЬШЕ КОНТРОЛЯ • МНОГИЕ ВЕЩИ КАЖУТСЯ ЛОГИЧНЫМИ • SESSION.QUERY(USER).FILTER(USER.NAME == ‘DATAART’) • ВЫЗОВ ФУНКЦИЙ ПРОЩЕ
  • 18. ПРОБЛЕМА #3. МИГРАЦИИ • НЕТ SOUTH • ЕСТЬ АЛЬТЕРНАТИВЫ • SQL ФАЙЛЫ • LIQUIBASE, FLYWAY • ALEMBIC
  • 19. ПРОБЛЕМА #4. АДМИНКА • АДМИНКА ЕСТЬ ТОЛЬКО У FLASK • ЕСЛИ НЕТ FLASK, ТО ЕСТЬ PGADMIN, PSQL
  • 20. РАЗНОЕ • ТЕМПЛЕЙТЫ • JINJA2 • ПОПУЛЯРНОЕ РЕШЕНИЕ ДАЖЕ ДЛЯ DJANGO • BOTTLE TEMPLATES • JSON.DUMPS • DEV SERVER • У BOTTLE СВОЙ • У FLASK WERKZEUG • ДЛЯ FALCON WERKZEUG НУЖНО ПРИКРУТИТЬ • UNIT TESTS • NOSE • WERKZEUG TEST CLIENT
  • 21. И ЕЩЕ КУЧА МЕЛОЧЕЙ • МНОГО МНОГО МЕЛКИХ ВЕЩЕЙ КОТОРЫХ НЕТ ИЗ КОРОБКИ • НО ИХ НАВЕРНЯКА УЖЕ КТО-ТО НАПИСАЛ • КАК ОПРЕДЕЛИТЬ КОГДА СТОИТ ИСПОЛЬЗОВАТЬ СТОРОННЮЮ БИБЛИОТЕКУ • А КОГДА ПИСАТЬ СВОЮ?
  • 22. А КОГДА ВООБЩЕ ИСПОЛЬЗОВАТЬ МИКРОФРЕЙМВОРКИ • НУЖНО МИНИМИЗИРОВАТЬ ЗАВИСИМОСТЬ ОТ СТОРОННИХ БИБЛИОТЕК • ОСОБЕННО НЕ СТАБИЛЬНЫХ • НУЖНО МИНИМИЗИРОВАТЬ КОЛИЧЕСТВО СВОИХ ВЕЛОСИПЕДОВ
  • 23. КАК? • ПЕРЕЛОЖИТЬ ЧАСТЬ ЗАБОТ НА ФРОНТ-ЕНД • JAVASCRIPT • SINGLE PAGE • AJAX • ОТДАВАТЬ ТОЛЬКО JSON • НЕ ЗАБЫВАТЬ ПРО СОВРЕМЕННЫЙ ФРОНТ-ЕНД • BACKBONE.JS, ANGULAR.JS • LESS • GRUNT