Pavel Zarubin

Pavel Zarubin

С нами с 07 сентября 2016; Место в рейтинге пользователей: #17
Отправить деньги
Pavel Zarubin
04 февраля 2021, 00:11
0
Статья 2017 года, 4 года уже прошло, я думаю если бы этот функционал был кому то нужен, его бы уже 10 раз пофиксили)
Pavel Zarubin
04 февраля 2021, 00:11
0
Хз, компонент вроде как был доступен для скачивания так и остается, по карйне мере в админке модстора, тут уже к администрации modstore вопрос, у меня, к сожалению, нет ни одного проекта на modx на котором смог бы проверить
Pavel Zarubin
26 января 2021, 16:02
+2
Где прервать? И как с помощью die()?
Просто не нужно вызывать сниппет и все, если уж хочется без процессоров и по быстрому, всегда можно сделать php файлик, подключить туда modx и перевести его в API-мод, как тут например:
github.com/pavel-one/modxCustomAuth/tree/master/assets/components/customAuth

Я так понял хорошей и единственно верной практикой, если я хочу свой велосипед, является написание компонента с классами, процессорами и коннекторами. так?
Хорошей и верной практикой — да, единственной — нет, репозиторий который выше кинул поизучай, вполне себе рабочая практика написания своих велосипедов без знания ООП и принципов работы modx, собственно именно при таких же знаниях я это и писал
Pavel Zarubin
26 января 2021, 15:06
+1
Что значит «полный цикл инициализации MODX» и что в этом страшного, если на странице зачастую вызывается несколько сниппетов?
Полный цикл — значит что просто для того чтобы отдать тебе ответ в ajax запросе, modx полностью инциализируется, проверяет все права, делает 100500 запросов в бд и отжирает дофигища оперативы (сколько там? 100мб минимум наверное?). Эти 100мб можно сократить до одного, если прервать инциализацию modx, ну или хотя бы сделать это процессором, к слову так работает mFilter, там прям в конце ответа die() висит в плагине, что тоже к слову не очень ок, но хотя бы что то

А как без использования парсера? Мне же html нужен, а не сырые данные, или JS'ом вставлять?
1) Ну во первых надо было свой сервис сделать у него хандлер и пр, если уж так не хочется использовать процессоры
2) Изучи docs.modx.pro/komponentyi/pdotools/parser, тут не очень подробно, но эксперементируя — понятно

А что до названия, ну «Сделай Сам» или «Мой способ реализации бла-бла» так по-моему без разницы, на код это не влияет)))
На код не влияет, а на восприятие людьми, еще менее знающими чем ты — еще как. Начинающие не знают что хорошо, а что плохо и запросто будут использовать твой код как пример хорошей практики и возможно на нем даже учится, вон, видишь, даже 4 человека в избранное твою статью добавили, значит планируют использовать твой код хотя бы в теории
Pavel Zarubin
26 января 2021, 13:37
+1
Ужас, вся статья — пример того, как делать не нужно))

На сервере я использовал два сниппета ajaxReceiver для принятия запроса и searchResources для поиска.
Зачем? Во первых вызывая сниппет — ты проходишь полный цикл инициализации MODX, тебе нужно отдать очень простые результаты зачем тебе полностью инициализировать modx? Дикая нагрузка на сервер, очень медленная скорость. Также ты вызываешь еще один сниппет из этого сниппета, это прям ну вообще плохо
$pdoTools->runSnippet('msProducts', array(
                            'parents' => 9,
                            'resources'=> implode(',', $ids),
                            'limit' => 0,
                            'sortby' => ['menuindex' => 'ASC'],
                            'tpl' => $tpl
                    ));
Эм… Зачем вызывать сниппет msProducts? Почему бы не использовать pdoFetch например и не задействовать парсер modx?

И это лишь малая часть, тут вообще ни строчки правильного кода по сути нет…

Короче без обид, Артур, учиться программировать не плохо, что мы видим из твоих статей, но пожалуйста, называй свои статьи не «Как сделать что то» а «Подскажите что я делаю не так» ну или хотя бы «Мой способ реализации бла-бла». Твой абсолютный говнокод же будут потом брать новички (что мы видим из количества добавленных в избранное), а учитывая как мало материалов по modx он еще и в гугл может попасть…
Pavel Zarubin
14 января 2021, 19:47
0
не коррелирует с качеством поддержки
Да ты что) А не думаешь что люди не отвечают или отвечают редко только по тому что помимо продажи компонентов у них есть еще и основная работа/заказы?)

+никто не просил авторов заявлять поддержку при продаже
Как это? modstore насколько я помню, всегда заявлял что он продает не компоненты, мол компоненты бесплатны, а продается только поддержка, но это не суть, суть в том, что продавать компоненты невозможно без поддержки, вот и отвечают люди как только освободятся)

К слову мне почему то пришлось обращаться в поддержку только один раз в жизни и то, обращался я уже сразу со скриншотом на код и вопросом почему так, но да не суть собственно
Pavel Zarubin
14 января 2021, 14:33
0
Ну я сужу по своему опыту, да и от типа дополнений наверное сильно зависит, у меня из 10 вопросов на 5 ответом был скриншот прямо из описания компонента где я подчеркивал искомую вопрошающим информацию, а самое удивительное это то, сколько эти «искуны» могли ждать, бывает человек 4 дня ждет ответ, и ни разу за эти 4 дня он не удосужился перечитать описание еще раз.
И ладно бы если бы я как то не так написал бы, но скидываешь скриншот и у человека вопросы сразу заканчиваются, из чего я делал вывод что описание написано достаточно понятно без перефразирований
Pavel Zarubin
14 января 2021, 14:24
+4
Честно, 99% вопросов в поддержке — тупость самих покупателей, а сделать дополнение которое поставил и вот за 10 минут будет работать у всех беспрекословно — невозможно, потому что у MODX нет стандартизации шаблонов, и дополнения покупают для ООООЧЕНЬ разных сайтов. Напомню что прежде всего вы тут программированием занимаетесь, покупая дополнение вы покупаете какой то кусок кода, который не хотите писать сами но как и любой другой кусок кода — это не значит что оно заработает конкретно у вас не прилагая никаких усилий, покупая дополнение хорошо бы разобраться хотя бы в его архитектуре, за два дня которые ждешь ответ можно не только разобраться в архитектуре но и частично переписать бизнес логику под свои задачи
Теперь о скорости ответов в поддержке… Ребят, дополнения для MODX — ооочень дешево стоят, особенно те, которые must have, а пользователей у modx — ну очень мало, большинство разработчиков хорошо если 200$ в месяц имеют с продаж, многие, возможно, и бесплатно бы выкладывали бы дополнения, если бы у сообщества была бы заинтересованность в их поддержке и развитии, а так сделаешь дополнение, оформишь его, выложишь, мало того что вопросами в личку задолбят, так еще и думают что ты им обязан его поддерживать. Если ты нашел баг — найди решение и сделай PR в гитхаб, при таком подходе и бесплатных дополнений было бы больше. Но вы же, не так делаете, вы же исходите из потребительской логики «У меня не завелось оно, пойду скажу заказчику что это сделать невозможно, потому что в modx нет такого функционала»
Большинство разработчиков на modx на самом деле не разработчики нихрена, а обычные продаваны, которые умеют только собирать сайты как конструктор
Pavel Zarubin
08 декабря 2020, 13:31
0
Ну тоже нормальный вариант, значительно лучше чем изначально, только без проверок на доступность DaData и на время ответа от DaData все равно может произойти ситуация, когда у пользователей у которых уже есть нужная кука все нормально работает, а вот новые даже зайти на сайт не могут)
Pavel Zarubin
08 декабря 2020, 13:01
0
Я уже не помню, с modx давненько не работаю, но скорее всего как и везде, пользователь содержится в запросе, т.е. modx и так делает каждый раз запрос на получение пользователя, а этот модификатор берет уже полученную модель, твой же скрипт мало того что делает дополнительные запросы, так еще и делает их ТРИ штуки) Т.е. на 600 одновременно зашедших пользователей уйдет 1800 запросов в БД, а учитывая что свой сниппет ты используешь наверное для каждого поля отдельным вызовом, то на каждый вызов сниппета делается по три запроса в бд, 20 полей надо получить, 60 запросов в бд ушло)))
Pavel Zarubin
08 декабря 2020, 12:12
0
а что делать если у меня десяток полей в extended плюс данные в profile и в user
Как и подразумевалось самим MODX'ом запрашивать их отдельно))
Да, унификация это удобно, удобно когда ты в один и тот же инпут атрибут можешь запихнуть любые данные а твой скрипт уже сам разберется что ты запихнул, но как правило, что в жизни, что в программировании — чем более универсальный инструмент — тем более он бесполезен в применении.
Pavel Zarubin
08 декабря 2020, 12:03
0
В идеале вообще обычно через локальную базу — дубликант делают, т.е. зашел пользователь, проверяем его IP в локальной базе, если нет сопоставлений, создаем новую запись и в следующий раз его местоположение уже будет тянуться с локальной базы, это если просто

А если нужно совсем просто, то хотя бы кэширование к этому коду по времени добавить надо, и добавить проверки как по доступности DaData так и по времени ответа, а лучше вообще запрашивать отдельно отдельным Ajax запросом после того как у пользователя отрендерилась страница, чтобы это не влияло на скорость генерации страницы
Pavel Zarubin
08 декабря 2020, 07:50
+1
поскольку сниппет простой то и ip получаем просто
А можно его как то более сложным методом получать для более сложных сниппетов?)))))

Так делать, как делает автор заметки ни в коем случае нельзя, во первых у вас генерация страницы зависит от сервиса поставщика, т.е. если ляжет например DaData или будет тормозить — ваш сайт тоже отвалится или будет тормозить, каждое обновление страницы — запрос в DaData, первые 100 активных посетителей на сайте, а то и 20 и DaData забанит за слишком активное обращение к АПИ, а будет бан — поломается весь сайт)))

P.s. Артур, я видел что ты пишешь для себя, а я пишу для тех, кто решит «сэкономить немного времени»
Pavel Zarubin
08 декабря 2020, 07:40
0
Не хочу быть снобом, но:
В самом начале аж два запроса в БД просто ради того чтобы не парится и в инпут пихать ид или юзернейм? Не слишком ли большие жертвы ради удобства разработчика?) Да и таблицу профиля дергать просто чтобы разработчик не думал откуда он тянет данные — слишком, и того, ради какого нибудь поля которое может быть вообще в индексе мы делаем аж три запроса в бд))

Я бы не хотел бы чтобы мне так писали сайт, где просто чтобы дернуть имя авторизованного пользователя например уходило по три запроса в бд)
Pavel Zarubin
29 сентября 2020, 12:46
0
Унаследовав процессор, и поменяв пару строк почему нет?
Pavel Zarubin
29 сентября 2020, 11:58
+1
Ну вообще то авторизовать пользователя можно по чему угодно, хоть по имени, да и сделать поле телефона уникальным тоже труда не составит, я уже молчу что можно не делая его уникальным просто на событие добавить ручную проверку уникальности, код древний как говно мамонта, да и не везде правильный, но вот пример абсолютно кастомной авторизации с регистрацией по любому полю github.com/pavel-one/modxCustomAuth
Pavel Zarubin
08 июля 2020, 16:10
0
Пишите в личку))))
Pavel Zarubin
08 июля 2020, 15:24
0
Человек видимо перепутал тему и запостил случайно в «Вопросы» вместо «Работа» ))