Александр Воробьев

Александр Воробьев
Рейтинг
63
Регистрация
03.02.2020
Sly32 #:
Это нормальное поведение  - представь что ты кодишь с исполнительным джуном -мидлом юез фантазии. Если его не ткнуть носом - он и будет лепить все в кучу. Я изначально не проверял это, запуская проект, в итоге у меня масса модулей в которых JS code в  HTML не подключен  модулем а прямо впихнут - как и цсс. Лежит отдельная задача на рефакторинг - руки не доходят. Нужно все это явно указывать в агенте. Примерно так
Но ведь это ни чего не ломало? А тут прям по среди php кода json бахнут (ну видно что сырой ответ LLm ки) или в том же json дублирование с нарушением формата json
Sly32 #:
Не "При использовании". А "Без" 😀 Но мне кажется что все, кто хоть раз запускал докер - понимают как запустить

хе-хе... а чет даже не вчитался. проверил, что инструкция работает и норм.... пасиб

Sly32 #:
Я бы вообще добавил Makefile для таких случаев

хм... подумаю (точнее в случае этого модуля: заставлю)

Sly32 #:
Была надежда на приход настоящих специалистов по ВП. Т

Имхо, тут изначально не корректное сравнение: тут получается под капотом аж целых три:

- php vs python

- асинхронное решение или нет

- cms vs фреймворк

Sly32 #:
Хотя мне непонятно, кто будет таким заниматься  - именно БД и бэкенд - самое уязвимое место Вордпресс. Там Апишка скорее для каких-то сторонних решений, оплату прикрутить, постинг там...

Ну, а почему нет? Из "на поверхности".

У ноды, в плане отдачи есть свои преимущества. 

При работе в команде удобное разделение фронтов и бекендеров.

Sly32 #:
Да, только ИИ не рассказал тебе про GC - Garbage Collector -  а там самое интересное. Этот механизм позволяет вообще забыть о проблемах с памятью, в отличие от тех же плюсов.

Это есть в PHP. Но всегда ли он справляется? для примера из того что мне ИИ написал "Аналог static в PHP. Данные, записанные на уровне модуля, живут весь жизненный цикл процесса" в этом случае GS ни как не поможет.  Т.е. я ту фразу писал уже с учетом GS. т.е. я именно о том что тут необходимо и подходить к разработке с учетом этого и разработчик должен понимать где GS сработает, а где нет.

Sly32 #:
Считается очень плохим тоном использовать их в Пайтон. Простой путь решения некоторых проблем с потенциальным выстрелом в ногу.
Тру питонист будет избешгать это всеми силами.

Это все понятно. Да и это только, что на "поверхности".

Sly32 #:
Мне кажется это немного в сторону от темы, это скорее проблемы менеджмента.

А я думаю нет. Вообще, на мой взгляд, если я правильно понял тему, ты просто стал "заложником" своей эволюции :)

Поясню опять же на Битрикс. (покажу несколько утрировано - специально, чтоб акцентировать) Частенько участвовал в холиварах на его тему. и вот вывод сделал для себя. Есть разработчики: когда то прищли в вуб джунами, им попалась какая то CMS, на которой они как то выполняли задачи. И, естественно, если что то работало медленно - то это cms хреновая. Но все же этот джун растет и уходит в более продвинутую команду где уже ларавел/симфа и где все говорят что цмс зло (хотя в истоках были объективные причины по которым команда на лару перешла). вот в этой конторе происходит основное становление как программиста. Время идет и вот программист ушел в какой то продукт где RPS 100k это норма. О той cms уже смутные воспоминания. С другой стороны для него становится нормой большие числа rps. Сложные задачи и т.д и т.п.  

И вот тут он по каким то причинам начинает оценивать ту самую цмс из прошлого.... Инстинктивно начинает примерять ее на свои текущие задачи (в т.ч. РПС 50k)..... Но есть большое НО:

1 В его текущем проекте любая cms не покрыла бы и 10% необходимого функционала (даже если забить на производительность). т.е.  в  принципе  не подходит

2 Уверен подавляющее большинство сайтов с такими рпс ни когда не сталкиваются

3 Знания. Возможно если бы он на данном этапе своего развития глубоко вник в ту самую цмс из прошлого, у него бы картинка сильно изменилась (да понятно что не на все 100%: универсальность всегда дорогая).

Вот я с такими сталкивался. Да видно что спец офигенно грамотный и часто явно грамотнее меня. Но когда начинает говорить о цмс с которой я работаю ежедневно - ну я вижу что он ее не знает достаточно для оценок :)

Ответвление от челенджа :)

Решил я попробовать использование агентов. И для этого "теста" решил добавить усложнение взять фреймворк которые ИИ не знают. т.е. как раз вот мой. И попробовать написать к нему модуль. При этом условие: я не должен вообще ни строчки написать в нем.

В качестве функционала простейшее: генерировать аватар по нику.

Сначала взял GigaCode - он лихо начал, и быстро написал код. Я в нем видел ошибки, но такие что не сложно было бы исправить... Но вот дальше его переклинило два дня он мне выносил фоном мозг. и я просто плюнул. Был похож на вечно торопящегося джуна бросающегося переписать все каждый раз заново и забывая что делал...

Взял агента от яши. Этот уже шел медленно но очень кропотливо подходил. Постоянно возвращался к анализу фреймоврка (я ему, как и первому, сказал склонировать репозиторий фреймворка во временный каталог), и не просто перечитывал файлы но и порой использовал рефлексию для анализа. после создания очередного класса чекал синтаксис. В общем планомерно фоном сделал. (За день, но тут надо понимать, что он постоянно просил подтверждение действия, а я работал т.е. были и простои пока я увижу). В итоге сделал.  И я его также попросил прикрутить стат анализ и анализ стиля кода - прогнать проверки и исправить. так же написать тесты, gitattributes и конфиг для докера (чтобы можно было использовать не только как модуль, но и как готовый сервис), а так же настроил и использовал тулзу версионирования. так же он делал своевременно коммиты ... в общем справился.

Из проблем: несколько раз в php код вставлял json (думаю это бага плагина vscode) и два раза дублировал строки когда в composer.json добавлял скрипты


Результат здесь  в доке есть описание как попробовать сервис через докер :)

Sly32, я кстати, планирую свой фреймворк из челенджа проверить/доработать для возможности работы с роадраннером или франкеном. Можно будет попробовать погонять сравнение какое то (придумать только задачку)... :)

Ну и далее технический момент который привносит в проект использование FrankenPHP, RoadRunner и, полагаю судя по принципу, FastAPI  - появлется вопросы к которым надо ответственнее относится. Я про те же утечки памяти, т.е. надо внимательнее к коду относиться, причем некоторые вещи на уровне понимания должны быть, т.к. отладить их сложнее.  

Про фаст апи сам я не знаю, потому спросил у ИИ:


В Python (FastAPI / Uvicorn):

  1. Циклические ссылки: Python использует подсчет ссылок + GC. Если объект A ссылается на B, а B на A, они не удаляются сразу. В долгоживущем процессе это накапливается.
  2. Глобальные переменные модулей: Аналог static в PHP. Данные, записанные на уровне модуля, живут весь жизненный цикл процесса.
  3. Незакрытые соединения/ресурсы: Если не использовать async with для баз данных или HTTP-клиентов, соединения могут висеть в пуле или утекать.
  4. Event Loop блокировки: Хотя это не утечка памяти, но "утечка" производительности. Тяжелые синхронные операции в async-коде тормозят весь поток.

Так же дополню.

Для начала по самим языкам. Тут чисто по памяти в этом году видел несколько бенчей которые показали что PHP8.* быстрее чем Питон

Тыц 1  Тыц 2 

Далее FastApi не совсем корректно сравнивать с CMS

Тогда надо например брать RoadRunner + фреймворк какой либо . Как вариант Laravel Octane.  

Так же есть FrankenPHP.  А еще есть kPHP.  

Ну а далее (скажу честно лень было гуглить спросил у ИИ расклад)

  • FastAPI ~ 50-100k req/s (на мощном железе).
  • Laravel Octane ~ 20-50k req/s.
  • kPHP может легко делать 100k+ req/s на том же железе,
Vladimir SEO #:

кроме случаев когда сказали сделать на вп/опенкарте/цс карте/мадженто/инстант И так далее 

Я например много "перевел" на опенкарт

Полагаю таки историй сильно меньше. Т.е. тут либо исполнитель страдает отсутствием заказов (в то что есть исполнители-одиночки, кто владеет всеми cms на абсолютно одинаковом глубоком уровне я не очень верю) - т.е. круг сужается. Да, конечно, можно освоить под проект (я даже плюсы под проект как то освоил), но это такие разовые частные случаи.

Всего: 949