to post messages and comments.

← All posts tagged Python

Перевел один из старых больших проектов на python3. Сложности возникли с

1. принт со скобками
2. .encode('hex') для строк
3. не везде были правильно прописанные относительные импорты.

Почти не возникло проблем с юникодными и байтовыми строками.

После недолго греппинга вышеуказанных проблем прогнал тесты — и все вроде взлетело. Легче чем я думал.

Интересно, что после окончательного перехода с Emacs на PyCharm я стал гораздо меньше комплексовать по поводу отсутствия статической типизации в питоне. PyCharm очень качественно отлавливает ошибки, я порой даже теряюсь сразу понять по какому алгоритму он некоторые из них находит. Конечно, до GHC чарму еще далеко, но все же результат ощутим.

Вчера ко мне набижало несколько фласковских фанбоев, начавших мне доказывать, что джанго — говно. К сожалению, аргументов они особо не предоставили, кроме рекламных лозунгов взятых с выдачи гугла "flask vs django", но мне все равно хочется ответить на них.

Оговорюсь, что лично мне нравятся оба фреймворка и на обеих можно успешно решать задачи в продакшене. Так что просто разберем несправедливые стереотипы.

1. Джанго древний. Аргумент — супер, особенно от человека который наверняка сидит на Вендовс НТ или Линуксе, которым по 25 лет. Почему они не перейдут на какой-то там Redox — загадка.

Что-то я отвлекся. Последний мажорный релиз джанги — 1-го декабря 2015, последний минорный релиз фласка — 14-го июня 2013-го. Любознательным читателям посоветую сравнить чейнджлоги, особенно обратив внимание на секцию Backwards-incompatible changes в джанговском. Чуваки не стесняясь выпиливают говенный легаси заменяя его современными годными компонентами.

2. Джанго тормозной. Такие аргмуенты основанны на популярных бенчмарках по измерению производительности хелловорлдов. Но хелловорлды в продакшен не идут, туда идет чуть более сложная логика, которая будет тормозить в любом случае больше чем рендер шаблонов, который легко закешировать. А возможности оптимизации приложений в джанго и фласке в целом одинаковы.

3. Джанго жирный и маломодифицируемый, а во фласке сам собираешь стек. Этот аргумент работал бы в случае если компоненты джанговского стека были бы дерьмом, которое нужно обязательно заменить. Но если они успешно решают задачу, то в чем смысл замены? Потратить кучу времени на гуглежку фласковских батареек и интеграцию их в свой проект? А замечательные ситуации типа "обновил фласк-секьюрити — сломался фласк-админ"?

Да, есть определенный процент веб-приложений с нестандартным стеком, для них джанго вряд ли подойдет. Но если стек стандартный — в чем смысл тратить время на его сборку в каждом новом проекте еще и с риском что компоненты не сойдутся версиями? То, что стандартный веб-стек в джанго проходит по всему релиз-циклу в сборе — это скорее достоинство, чем недостаток.

Если смотреть более детально по претензиям к компонентам, то главное что джанговцы сделали архитектуру для смены движка темплейтов и допилили ОРМ до годноты. Все остальное меняется достаточно легко и без специальной поддержки во фреймворке. Динамизм питона и отсутствие магии сами по себе обеспечивают такую возможность.

Посравнивал объективно фласк и джангу, и понял, что в джанге (на момент версии 1.9) мне реально мешают только 2 вещи:

1. urlconf
2. необходимость передавать реквест во все вьюхи параметром

У фласка annoy-list поболее будет, думаю. А джанговским девелоперам респект.

Что-то в каждой новой версии джанги появляются, вместо полезных новшеств, тысячи обратно-несовместимых полировок АПИ, которые, безусловно, правильные, но подзадолбали уже.