Артур Чеканов  «Microframeworks» (Python Meetup)
ОБО МНЕ
• 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

PDF
jobDSL plugin: настройка jenkins ci скриптом
PDF
KAZOOMEETUP MOSCOW 2015. Владимир Потапьев. Обзор приложения Circlemaker (RAD...
PDF
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
PPTX
Codeception UATestingDays
PPTX
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
PDF
Alexei Vladishev - Zabbix 3.0 что дальше
PPTX
Майстер-клас "Автоматизоване тестування. З чого почати?
PPTX
180 blue dining room training
jobDSL plugin: настройка jenkins ci скриптом
KAZOOMEETUP MOSCOW 2015. Владимир Потапьев. Обзор приложения Circlemaker (RAD...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Codeception UATestingDays
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
Alexei Vladishev - Zabbix 3.0 что дальше
Майстер-клас "Автоматизоване тестування. З чого почати?
180 blue dining room training

Viewers also liked (20)

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

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

PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
PPTX
django-and-postgresql
PDF
Python и Django – платформа для фрилансера
PDF
django cheBit'11
 
PDF
Python, Django и корпоративные информационные системы
PPT
Django. Web project full circle
PPT
Django. Web project full circle
PPTX
Web осень 2013 лекция 8
PDF
Framework Battle: Django vs Flask vs Chalice
PDF
Flask как хорошее решение для веб проекта
PDF
Павел Прищепа. Бббыстрый бэкенд на базе Друпал
PDF
Павел Прищепа. Бббыстрый бэкенд на базе друпал
PPT
Py con 2010_django_project_dev_full_circle
PPTX
Web осень 2013 лекция 9
PDF
Лекция #7. Django ORM
PDF
Web осень 2013 лекция 6
PPTX
Python Meetup
PDF
Лекция #6. Введение в Django web-framework
PDF
Anton Tsitou "Cycle ORM and Graphs"
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
django-and-postgresql
Python и Django – платформа для фрилансера
django cheBit'11
 
Python, Django и корпоративные информационные системы
Django. Web project full circle
Django. Web project full circle
Web осень 2013 лекция 8
Framework Battle: Django vs Flask vs Chalice
Flask как хорошее решение для веб проекта
Павел Прищепа. Бббыстрый бэкенд на базе Друпал
Павел Прищепа. Бббыстрый бэкенд на базе друпал
Py con 2010_django_project_dev_full_circle
Web осень 2013 лекция 9
Лекция #7. Django ORM
Web осень 2013 лекция 6
Python Meetup
Лекция #6. Введение в Django web-framework
Anton Tsitou "Cycle ORM and Graphs"
Ad

More from DataArt (20)

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

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

  • 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