Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
16 июня 2022, 12:03
0
Наверное, логика была в том, что на один адрес может быть оформлено несколько заказов.

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

С моей стороны, наоборот, удалять адрес при удалении заказа — это спорное решение.
Василий Наумкин
14 мая 2022, 09:36
0
Конечно.

Либо через mod_proxy, либо через mod_rewrite.
Василий Наумкин
14 мая 2022, 05:58
+2
Так можно сделать только если на сервере всего один сайт, который займёт 80 порт.

А если сайтов 2 или более — то нужен Nginx или Apache2, которые будут разруливать запросы.

Очевидно, что на публичных хостингах тебе просто придётся работать с одним из них.
Василий Наумкин
13 мая 2022, 19:41
0
Да что ты говоришь.

Тут вот люди даже Hello World пока не могут вывести, а потом начнутся вопросы про реактивность, асинхронность и Vuex.

Для того, чтобы это стало простым и клёвым, нужно взойти на определённую высоту. После этого — да, оно всё просто. А вот MODX и WP наоборот кажутся очень сложными и неудобными, вот такой парадокс.

Насчёт ассемблера… Ну как покажешь веб-сайт на ассемблере, тогда и продолжим сравнения.
Василий Наумкин
13 мая 2022, 18:30
0
Да, это конечно сложнее чем запустить первичную установку WP или MODX
Это просто 2 разных уровня сложности и мастерства.

На MODX и WP можно пилить сайты вообще без знаний, просто кликая мышкой. А Nuxt и прочее Node.js это уже для серьёзных специалистов.

Придётся учиться, но оно того стоит.
Василий Наумкин
13 мая 2022, 18:26
+2
Это все равно если бы мы писали программу на php, переносили ее на продакшен, так запускали локальный веб сервер php
Вообще-то, именно так и происходит.

Сам Nginx умеет отдавать только статичные файлы, а обработку php он передаёт другому процессу. Как правило, это php-fpm, который непрерывно крутится в памяти сервера. И для запуска нового сайта на хостинге этот процесс нужно перезапускать.

Разница лишь в том, что сервер php запускает ваш хостер. А сервер node.js нужно запускать самому. Но это говорит лишь о неразвитости хостинга для node. Я могу себе представить с будущем хостинги для node, где всё будет настроено так же удобно, как сегодня для php.

Ровно так же Nginx может отдавать обработку запроса в ruby, python, go, опять же в node.js и еще много куда. Сам Nginx этого ничего не умеет, потому что он reverse-proxy server.

Для справки, Apache2 работу с php тоже сам по себе не поддерживает, он это делает через встроенный модуль mod_php, который может быть и отключен.
Василий Наумкин
11 мая 2022, 17:23
0
Да, свой полноценный сервер со многими фишками — v3.nuxtjs.org/guide/concepts/server-engine/

Работа с БД не зависит от вида сервера — он просто будет выполнять ваш код.
Василий Наумкин
11 мая 2022, 17:06
0
И кстати Express раньше ставился «из коробки» при установке Nuxt, а теперь этого почему-то нет.
Потому что не нужно — у Nuxt есть свой собственный сервер, лучше его и использовать.
Василий Наумкин
27 апреля 2022, 16:57
+1
Ну раз ты не видишь проблемы — исправляй и шли коммит в репозиторий MODX.
Василий Наумкин
27 апреля 2022, 11:55
0
Не понял почему это нельзя исправить.
Потому, что тогда парсер перестанет быть рекурсивным и ты не сможешь делать вот так:
[[~[[+id]]]]

Смысл в том, что после разбора внутреннего тега [[+id]] получается новый тег, например [[~9]], а он уже превращается в ссылку на документ с id = 9.

То есть, нужно парсить этот тег минимум 2 раза — это и есть рекурсия. Так весь MODX и работает, это его чуть ли не основная фишка.
Василий Наумкин
27 апреля 2022, 07:45
+2
Как ты исправишь основную фишку рекурсивого парсера — рекурсивный разбор тегов? Это просто такой метод работы, который очень многим в MODX и нравится. Напихать тегов друг на друга, парсер сам разберётся.

Ну а замена простых плейхолдеров… Самый главный архитектор системы об этом давно знает и ничего менять не хочет.

Хочешь исправить — ставь pdoTools и пользуйся, для того расширения и нужны.
Василий Наумкин
24 апреля 2022, 12:24
+8
А кроме комментариев есть ещё примеры?
pdoTools появился не на пустом месте, а потому что я делал разные сложные сайты, включая bezumkin.ru

К самому тесту замечания есть?
Ты даже кода чанков не привёл, тупо итоговые цифры и заявление, что разницы нет.

Если ты эти тесты проводил на одном сайте, и парсер pdoTools был включен — то поздравляю, ты уже пользовался оптимизациями, потому что pdoParser разбирает простые плейсхолдеры сам, без modTag.

Я прямо сейчас создал 2 сайта на modhost.pro. На один установил pdoTools, а на другой нет.

Тестовый сниппет:
<?php
$items = [];
for ($i = 1; $i < 10000; $i++) {
  $data = ['id' => rand(), 'pagetitle' => 'page' . rand()];
  $items[] = $modx->getChunk('test', $data);
}

$output = number_format(microtime(true) - $modx->startTime, 4) . "\n";
$output .= number_format(memory_get_usage() / 1048576, 4) . "mb\n";
$output .= implode("\n", $items);

return $output;

Простейший чанк:
<p>[[+id]] - [[+pagetitle]] [[+id:is=`10`:then=`1`:else=``]]</p>
Обрати внимание, что чанк без Fenom, чисто синтаксис MODX.

Смотрим на 10000 проходов, чтобы разницу было хорошо видно:

— MODX без pdoTools — 1.3216 сек (самый быстрый результат, что удалось увидеть)
— MODX c установленным pdoTools — 0.0557 (самый тормозной результат, было и 0.0156).

Внимание, pdoTools просто установлен, и работает по умолчанию. Никаких специальных оптимизаций.

Теперь понятно, что парсер MODX без pdoTools просто тормозное говно и твои тесты ни о чём?



Updated 26.04.2022
Попробовал повторить тест еще раз и не смог — оказалось, что я допустил ошибку. Если сниппет использует $modx->getChunk(), то разницы в скорости не будет, потому что pdoParser тогда не работает.

Сниппет должен использовать $modx->getService('pdoTools')->getChunk('test', $data);, тогда всё быстро.

Всё проверил еще раз и накатал новую заметку с результатами.
Василий Наумкин
24 апреля 2022, 11:28
0
Даже 100 ресурсов — это большая редкость.
Я тебе привожу пример, что нет — не редкость.

Как справится парсер MODX с выводом такой ветки комментариев, если он каждый тэг и условие будет превращать в modTag и запускать его parse?

PHP шаблонизатор всё еще только про удобство, а не скорость?
Василий Наумкин
24 апреля 2022, 11:18
0
Вот в этой заметке сейчас 890 комментариев и она выводится плюс-минус за 1 секунду на Fenom с разными условиями.

Выводится без кэша, потому что комментарии отличаются для каждого юзера. Админу выводятся удалённые, автору подсвечиваются его ответы и т.д.

Попробуйте это повторить на парсере MODX. Не думаю, что вывод комментариев на сайте это прям такая уж редкая задача.
Василий Наумкин
06 апреля 2022, 18:26
+3
А ты что хотел, чтобы американцы про российский pdoTools рассказывали?

Правда, народ на запрещённом сайте тоже недоумевает
Василий Наумкин
18 октября 2021, 10:21
+1
Я бы предложил вместо miniShop2 3.0 сделать просто miniShop3

Это сняло бы массу проблем с расположением файлов, переездом рабочих сайтов и разработкой дополнений. Тем более, что домен для него давно куплен и ждёт своего часа — minishop3.com
Василий Наумкин
06 августа 2021, 15:32
+2
В описании сказано, используются jQuery.Form и jQuery.jGrowl.
То есть, ему нужен jQuery.
Можно ли обойтись без него?
Я даже не буду ничего отвечать, и процитирую самого автора:
Самый клоунский комментарий, который вызывает улыбку :)))
Василий Наумкин
05 августа 2021, 04:18
+1
Да, если брать за уникальный id хэш от параметров сниппета и получать его потом из запроса юзера — рабочий вариант. Даже, пожалуй, хороший.

Но тут сразу второй вопорос — каждое дополнение будет устанавливать собственную такую таблицу? Или они все должны использовать какую-то общую? Если общую — как дополнениям об этом договориться, требовать какую-то зависимость, типа нового дополнения AjaxSettingsDB?

И если у вызова сниппета будет какой-то уникальный параметр, типа id юзера, то количество записей в такой БД будет ровно тем же, что и у таблицы сессий. Еще встаёт вопрос еще об очистке этой таблицы — сколько дней хранить в ней настройки?

Но, повторюсь, этот вариант мне нравится и в былые времена я мог бы переписать свои дополнения на хранение настроек в одной общей таблице. Кто сейчас это будет делать — вопрос.
Василий Наумкин
04 августа 2021, 18:05
0
Наверное, я просто не так часто пользовался вкладкой releases.

В репозитории та же версия, что и на modstore.
Василий Наумкин
04 августа 2021, 17:51
0
Ничего передавать не нужно, это Open Source — любой человек может сделать форк и выпускать свои версии с любыми исправлениями.

Архивация репозитория означает, что лично я им заниматься не буду, только и всего.