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

Post on 15-Jan-2015

44 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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

ОБО МНЕ

• 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_200resp.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

top related