Комментарии 33
Джентльменский набор веб разработчика, теперь с docker ;)
Почему нет php?
А что это? Наверное, на латыни или древнегреческом? /s
В институте же рассказывали, "это устаревший язык без типизации" и немодный )
А так-то идея засунуть всё в докер - логичная и хорошая, на каком языке не делай. Развернул локально - поработал, сделал, развернул на сервере - запустил в продакшн
даже стало интересно, почему ЯП, в котором 1 == '1' false, "еще менее типизирован", чем ЯП в котом это true?
Холивара ради: рутноп, может быть, и менее типизирован, но дырявый вордпресс написан всё же на рнр.
Только не говорите, что это именно php «дырявый».
Только не говори, что ты не слышал про type hints в рутнопе, которые вполне позволяют статически линтерами прибивать кривые пулл реквесты. Конечно, если пользоваться ими.
Т.е. надо ждать пулл реквеста или запускать линтер, чтобы проверить типы? Смешно.
О, я, наверное, пропустил нудную вступительную часть для самых маленьких любителей экстремального поведения.
Конечно же, IDE может подсветить нарушение контракта по хинтам. Внимательный разработчик обратит на это внимание и переделает. Однако, этот подход строится на одном лишь доверии. Разработчик может быть в плохом настроении, его могут отвлечь, он может даже намеренно захотеть добавить регрессию в код.
Что ж, скажет мой маленький любитель воскликнуть «смотри, как я могу», можно же повесить хук на коммит в репо. Плохой коммит не пройдет. Нет коммита — нет пуша. И мы снова возвращаемся к системе, построенной исключительно на доверии, ведь хук можно и отключить, особенно, если плохое изменение добавляется намеренно.
И тут мы возвращаемся к политикам, которые устанавливаются на серверной части нашего репозитория. Например, для того, чтобы мерж был вообще возможен, обязательно должен успешно выполниться pre-checkin build, который будет включать в себя прогон линтера и всех тестов. Упал линтер — мерж блокируется. Код не собрался — аналогично. Упал хоть один тест — ну ты понял. Сверху можно добавить минимальное покрытие тестами, которое оценивается после успешного прогона тестов. И само собой, у разработчика нет доступа к изменению политик. Таким нехитрым способом разработчик становится вынужден не только соблюдать контракт, но и описывать контракт в хинтах для нового кода, чтобы избежать падения линтера на «argument of type Any» или «function returns Any».
Если бы вордпрес был бы написан на питоне, он был бы точно таким же дырявым. Только ещё и более тормозным и ещё мог бы уронить application server из-за утечки памяти
Каким образом? Импорт модуля требует соблюдения иерархии пакетов по всему пути, инклюд из произвольного места невозможен. Чтобы написать утечку в рутнопе, нужно специально стараться, поскольку большинство встроенных типов, особенно скалярных, организованы по модели refcount. Покажи код. Желательно сразу для сравнения быстрее/медленнее, течет/не течет.
Сделать глобальную переменную и туда что-нибудь складывать. Например сделать типо кэш в виде словаря и добавлять туда значения. Постараться нужно, но джуны тебе ещё и не такое напишут. У меня в команде даже профи делают код который падает на больших данных.
Падать на больших данных не эквивалентно утечке памяти. Это может быть квадратичный по памяти алгоритм, может быть объем данных такой, что невозможно его весь разом прожевать, а реализовали именно так.
Что касается утечек, то всё ещё не вижу повода для беспокойства. Объемы записываемого в глобальную переменную невелики. Сервер приложений всё равно прибьет инстанс раньше по квоте обработанных запросов. Если же сервер приложений настроен не прибивать инстансы, то это вопрос к вашему сисадмину. К тому же, сеньеры ваши пулл реквест с таким вот одобрили? Ну вот, говорю же: специально стараться надо.
По бенчмаркам python быстрее.
В python есть отличная асинхронная модель, а в пыхе?
В python неплохая модель многопроцессности, с версии 3.12 которая работает еще более производительно.
Python не сравнится конечно по скорости с шарпом, джавой, плюсами, тем более растом, однако производительность, которую он выдает, вполне хватает практически на любой проект, где нет овербезумного РПС, и если с умом подойти к организации инфраструктуры, то питончика хватит.
Так что пыха сдохла не потому что она не модная, а потому что отсталая
Пыха сдохла?))) Нуну... я скажу так: с прямыми руками без разницы язык, всё летать будет, а с кривыми хоть c, хоть плюсы, хоть шарп всё одно тормозить будет... каждому инструменту своё применение. И раз уж 80% интернета на пыхе, значит это лучший инструмент для большинства ситуаций.
желаю удачи вам, с вашими прямыми руками, в работе над вашими легаси проектами, на пыхе )
но вы бенчмарки, тесты, статистику, все таки посмотрите, когда будет перерыв на обед.
данные исследования проводились с расчетом на прямые руки (не такие прямые, как у вас, разумеется) ))
ведь главное - чтобы человек был счастлив и работал в кайф!))
PHP используется в вэбе - каждый запрос выпоняется в отельном потоке. То есть php в принципе нету такое проблемы с многопоточностью. Если нужен асинхронный запрос, то в mysql и curl это есть, но для баз данных испоьзуется редко. В принципе есть и настоящая асинхронность и многопоточность через сторонее модули, но используется это редко так как в вэб это не особо актуально. Вот для консольных приложений да, это очень полезно. Но тут куча вариантов для реализации это через процессы. А вообще питон и пхп по своей идеалогии очень близки, но на пхп куча опенсоурс вэб приложений, на питоне много для ИИ и администрования сделано. На мой взгляд в вэбе джанго не может конкурировать с лавалел. Точно так же как пхп не может конкурировать с питон в написании ИИ приложений и утилит для администрования.
Изначально решил, что будет достаточно текущих. Да, я был предвзят. Но почитал комментарии и в ближайшее время добавлю PHP. Как сделаю — напишу.
Идея интересная. Но в боевых проектах обычно (всегда) заранее выбирается и ЯП, и стек, поэтому много фреймов тестировать явно там не будут. Выбирают один и живут с этим)
Cookiecutter и "template repository" такие: "Мы что для вас шутка?"
Отлично! Спасибо!
Зря не написал про бонус разработчику от докера - теперь не нужно вводить эти ненужные пароли чтоб получить рута на хосте (docker run -it -v /:/mnt/root debian). Очень удобно /s

Я упаковал 10 веб-фреймворков в Docker, чтобы вы могли запустить любой из них одной командой