Артур Чеканов «microframeworks» (python meetup)

24

Upload: dataart

Post on 15-Jan-2015

63 views

Category:

Technology


3 download

DESCRIPTION

Артур Чеканов поведал о волшебном и таинственном мире микрофреймворков. Видео:https://www.youtube.com/watch?v=UiGuomQtFX0&feature=youtu.be Сайт: http://www.dataart.ru/ Facebook: https://www.facebook.com/DataArt.Enjoy Vkontakte: http://vk.com/dataart_enjoy Twitter: https://twitter.com/DataArt_Enjoy

TRANSCRIPT

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

ОБО МНЕ

• PYTHON РАЗРАБОТЧИК

• СЕРИЙНЫЙ ПРОГРАММИСТ

• СИЛЬНАЯ DJANGO-ЗАВИСИМОСТЬ

• БАЛУЮСЬ МИКРОФРЕЙМВОРКАМИ

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

DJANGOИЛИ КАК ПЕРЕЙТИ И ЭТУ ГРАНЬ

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

DJANGO

• ORM

• TEMPLATES

• FORMS

• AUTHORIZATION

• SECURITY

• ADMINISTRATION

• UNIT TESTING

• MANAGE COMMANDS

• DEV SERVER

• Configuration

• Sessions

• Cache

• Internalization

• Event dispatching

• Messaging

• And more

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

А ВСЕ ЛИ ЭТО НУЖНО?

• DJANGO БОЛЬШОЙ

• СОЗДАВАТЬ НОВЫЙ ПРОЕКТ УТОМИТЕЛЬНО

• МНОГО ФАЙЛОВ

• МНОГО НАСТРОЕК

• МНОГО МАЛОИЗУЧЕННОЙ ФУНКЦИОНАЛЬНОСТИ

• ИНТЕРНЕТЫ ГОВОРЯТ, ЧТО DJANGO МЕДЛЕННЫЙ

• ГОВОРЯТ, ЕСТЬ ORM ПОКРУЧЕ ЧЕМ У DJANGO

• ДА И ТЕМПЛЕЙТЫ ГОВОРЯТ МЕДЛЕННЫЕ

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

ЗНАЧИТ

• НАМ НУЖЕН ЛЕГКИЙ И БЫСТРЫЙ ФРЕЙМВОРК!

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

ИЛИ…

• - СЛУШАЙ ТУТ ПРОЕКТ ЕСТЬ, ЗАКАЗЧИК ХОЧЕТ ЧТОБЫ БЫЛО БЫСТРО И БЕЗ ДЖАНГО. СМОЖЕШЬ?

• - ЭММ... ДА?!

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

РЕШЕНО!НО ЧТО ВЫБРАТЬ?

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

ФРЕЙМВОРКИ

• FLASK

• ПЕРВОЕ, ЧТО ПРИШЛО НА УМ

• ПОЧТИ DJANGO

• BOTTLE

• НЕМНОГО ПОГУГЛИЛИ

• БЫСТРЫЙ, МАЛЕНЬКИЙ (ОДИН ФАЙЛИК)

• FALCON

• ЕЩЕ ПОГУГЛИЛИ

• САМЫЙ БЫСТРЫЙ, REST-ОРИЕНТИРОВАН

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

FLASK• САМ ПО СЕБЕ НЕ FULL STACK

• ЕСТЬ МНОГО РАСШИРЕНИЙ

• ORM

• ADMIN

• CACHE

• AUTHORIZATION

• INTERNALIZATION

• UNIT TESTING

• AND MORE

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

BOTTLE

• ФУНКЦИОНАЛЬНЫЙ СТИЛЬ

• ЛАКОНИЧНЫЙ

• ЕСТЬ ТЕМПЛЕЙТЫ

@app.route('/hello')def hello():

return 'Hello World!'

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

FALCON

• БЫСТРЫЙ

• CLASS-BASED, REST ARCHITECTURE

class HelloResource:def on_get(self, req, resp):

resp.status = falcon.HTTP_200resp.body = 'Hello World'

app = falcon.API()app.add_route('/things', HelloResource())

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

HELLO BRAVE NEW WORLD!А ЧТО ДАЛЬШЕ?

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

ПРОБЛЕМА #1. БАЗА

• НУЖНО РАБОТАТЬ С ДАННЫМИ

• ДАННЫЕ ХРАНЯТСЯ В БАЗЕ

• СЕЙЧАС ВОЗЬМЕМ ORMКУ

• СТОП! У НАС НЕТ ORM

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

ПРОБЛЕМА #1. БАЗА

• EXECUTE ЖЕ ЕСТЬ. ЕСЛИ ЕСТЬ RAW SQL, ORM НЕ НУЖЕН

• НЕТ ПРОВЕРКИ ТИПОВ

• РУЧНОЙ ПАРСИНГ ОТВЕТА

• SQL ИНЬЕКЦИИ

• НЕТ IN-MEMORY

• СВОЙ ORM

• ТРУДНО

• ЗАБАГОВАНО

• УНИКАЛЬНЫЕ КЛЕВЫЕ ФИЧИ

• ЗАБАГОВАНО

• SQL ALCHEMY

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

ПРОБЛЕМА #2. SQL ALCHEMY

• ЭТО НЕ ПОХОЖЕ НА DJANGO ORM

• ОНО НЕ РАБОТАЕТ СРАЗУ

• ДОКУМЕНТАЦИЯ ГОВОРИТ CREATE_ENGINE(CONNECTION_STRING)

• И ПЛЮС ЕЩЕ 20 ПАРАМЕТРОВ

• НЕ ИНТУИТИВНО ПОНЯТНЫЙ МЕХАНИЗМ СЕССИЙ

• EXPIRE ON COMMIT

• EXPUNGE ОТ СЕССИИ

• КЕШ СЕССИИ

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

ПРОБЛЕМА #2. SQL ALCHEMY

• SQL ALCHEMY ДАЕТ БОЛЬШЕ КОНТРОЛЯ

• МНОГИЕ ВЕЩИ КАЖУТСЯ ЛОГИЧНЫМИ

• SESSION.QUERY(USER).FILTER(USER.NAME == ‘DATAART’)

• ВЫЗОВ ФУНКЦИЙ ПРОЩЕ

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

ПРОБЛЕМА #3. МИГРАЦИИ

• НЕТ SOUTH

• ЕСТЬ АЛЬТЕРНАТИВЫ

• SQL ФАЙЛЫ

• LIQUIBASE, FLYWAY

• ALEMBIC

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

ПРОБЛЕМА #4. АДМИНКА

• АДМИНКА ЕСТЬ ТОЛЬКО У FLASK

• ЕСЛИ НЕТ FLASK, ТО ЕСТЬ PGADMIN, PSQL

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

РАЗНОЕ

• ТЕМПЛЕЙТЫ

• JINJA2

• ПОПУЛЯРНОЕ РЕШЕНИЕ ДАЖЕ ДЛЯ DJANGO

• BOTTLE TEMPLATES

• JSON.DUMPS

• DEV SERVER

• У BOTTLE СВОЙ

• У FLASK WERKZEUG

• ДЛЯ FALCON WERKZEUG НУЖНО ПРИКРУТИТЬ

• UNIT TESTS

• NOSE

• WERKZEUG TEST CLIENT

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

И ЕЩЕ КУЧА МЕЛОЧЕЙ

• МНОГО МНОГО МЕЛКИХ ВЕЩЕЙ КОТОРЫХ НЕТ ИЗ КОРОБКИ

• НО ИХ НАВЕРНЯКА УЖЕ КТО-ТО НАПИСАЛ

• КАК ОПРЕДЕЛИТЬ КОГДА СТОИТ ИСПОЛЬЗОВАТЬ СТОРОННЮЮ БИБЛИОТЕКУ

• А КОГДА ПИСАТЬ СВОЮ?

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

А КОГДА ВООБЩЕ ИСПОЛЬЗОВАТЬ МИКРОФРЕЙМВОРКИ

• НУЖНО МИНИМИЗИРОВАТЬ ЗАВИСИМОСТЬ ОТ СТОРОННИХ БИБЛИОТЕК

• ОСОБЕННО НЕ СТАБИЛЬНЫХ

• НУЖНО МИНИМИЗИРОВАТЬ КОЛИЧЕСТВО СВОИХ ВЕЛОСИПЕДОВ

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

КАК?

• ПЕРЕЛОЖИТЬ ЧАСТЬ ЗАБОТ НА ФРОНТ-ЕНД

• JAVASCRIPT

• SINGLE PAGE

• AJAX

• ОТДАВАТЬ ТОЛЬКО JSON

• НЕ ЗАБЫВАТЬ ПРО СОВРЕМЕННЫЙ ФРОНТ-ЕНД

• BACKBONE.JS, ANGULAR.JS

• LESS

• GRUNT

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