Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #5
02 мая 2018, 13:16
0
Статья познавательная! В своё время вникал в механизм пакетов, когда баловался с modTerminal. Но статью написать не сообразил.
А флудить начали именно потому, что нет ясности. Вот и возник спор.
02 мая 2018, 08:29
0
Функция members принимает только один аргумент.
01 мая 2018, 12:37
+5
всё это давно прописано.
Ткни пальцем, просвяти нас немытых.

Ну я прям несказанно за тебя рад. Теперь напиши инструкцию по обходу — и я начну использовать ionCube, всем будет только веселее, правда?
Ты вообще что-ль нормально разучился разговаривать? Ничего мне не нужно уточнять, успокойся.
01 мая 2018, 11:41
+3
Согласен! Но вопрос с техподдержкой всё-таки нужно как-то уточнить в положениях магазина.

П.С. Только что ради эксперимента поставил Office на локалку. Потратил 2 минуты.
01 мая 2018, 11:28
+5
Как продавали поддержку, так и продаём
В положении магазина дополнений modStore по этому поводу ничего не сказано. А в «Вопросах» отвечают, что продаётся дополнение.
А если продается техподдержка, а не лицензия, то почему нельзя использовать дополнение без техподдержки. В чём непорядочность разработчиков-неплатильщиков в юридическом смысле? Нигде же не сказано про обязательность техподдержки. И получается, что ты усложняешь жизнь разработчикам, которые формально ничего не нарушили. Они за техподдержку не платили — они её не получают.

Это вопрос скорее к ребятам из MODSTORE. Я как автор платных дополнений заинтересован в четких правилах, повышающих мои права и продажи.
01 мая 2018, 06:48
+7
До сих пор нет ясности, что же всё-таки мы продаём — компонент или техподдержку. В предыдущих обсуждениях остановились на том, что продаётся техподдержка на год.

По поводу защиты не стал заморачиваться. Ничто не мешает скупому, неблагодарному, бессовестному, беспринципному и наглому разработчику вместо пакета скопировать исходники с сайта-донора. Мы же помним, как такие разработчики собирали пакеты платных дополнений Василия с Гитхаба. Да, чуть сложнее. Но это вряд ли их остановит.
25 апреля 2018, 08:59
1
+4
Данные по запросам к БД вызывают сомнение. Почему они разные?

Сравнивать тысячные доли? Это даже не погрешность, это погрешность погрешности. Пять раз обнови страницу, и пять раз цифры будут разные даже не меняя код.

Я когда переходил не феном тоже сравнивал. Разницы в скорости при вызове сниппетов через стандартный синтаксис и через феном никакой.
25 апреля 2018, 08:54
3
+5
стандартный парсер запускается раньше, чем парсер фенома, из за чего сначала обработаются стандартные теги
Не путай человека.
Парсер MODX запускается перед феномом только для обработки кэшируемых тегов. Вообще парсинг выглядит так:
1. Запускается парсер MODX и обрабатывает кэшируемые теги. Феном теги остаются необработанные.
2. Запускается парсер фенома, если есть теги Fenom.
3. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные не удаляются.
Пункты 2 и 3 могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
// В сниппет попадёт распарсенный тег феном
[[!snippet? param=`{$value}`]]
4. Запускается парсер фенома, если есть теги Fenom.
5. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные теги удаляются.
Пункты 4 и 5 пункт могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
Многие, наверно, обращали внимание на тормоза, если указан несуществующий плейсхолдер.

Выглядит эта конструкция, мягко говоря, как вид жопы сбоку. У этих парсеров разный принцип работы. По хорошему, разработчикам MODX нужно или вообще отказываться от парсера и просто дать возможность пользователям самим выбирать (я сделал маленький шажок в эту сторону) или дорабатывать его до более-менее функционального уровня (я это тоже пробовал).

Я бы посоветовал использовать оба парсера так:
— юзать только кэшируемые теги MODX ([[*tag]], [[$chunk]], [[++system]], [[snippet]]). Хорошо для оптимизации.
— для остального использовать феном.
В этих режимах парсеры не пересекаются.
13 апреля 2018, 08:38
0
Переделаешь под новый минишоп, отвалится текущий работающий функционал. Выход — делать oneBooking2 чисто под новый минишоп и получить проблему с апгрейдом. На всё это нужно время. Его пока нет. Тем более, что минишоп нужен только для привязки плагинов оплаты. А старый справляется с этим без проблем.
09 апреля 2018, 22:30
0
Ну в самом первом примере есть же select().

Добавил пример в описание метода select.

так будет работать?
А попробовать?
09 апреля 2018, 21:46
0
Не должно быть. Это баг. Завтра поправлю.

П.С. Я бы ещё посоветовал ограничить список полей через select(). Не зачем ненужные поля выводить.
09 апреля 2018, 21:16
+1
Ну никто же не знает на чём ты тренируешься. Хорошо, что иначе. Возможно и без кэша можно обойтись. А сейчас грустно смотреть на прелоудер. )
09 апреля 2018, 21:00
+1
Сейчас вкладка «Комментарии» загружается 1.1-1.3 сек. В dev версии грузится в 10 раз быстрее? Турбину поставил? :) Неплохо.

Конечно, это пост оптимизация.
09 апреля 2018, 20:36
+1
Я бы посоветовал кэшировать виджет «Прямой эфир». Хотя бы на минуту. При добавлении нового комментария или поста кэш сбрасывать. Уверен, время загрузки виджета снизиться драматически, а минуту мало кто заметит.

П.С. У меня работает отлично. Феном в помощь.
09 апреля 2018, 20:24
0
Сбросьте доступы в личку, гляну.
06 апреля 2018, 07:27
+1
Очередь нужно организовать самостоятельно. Вариантов несколько. Я бы предложил использовать кэш.
Шаг 1. Отдельным скриптом сохранять письма в кэш.
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->save('birthdays');
В папке core/cache/queue появится файл birthdays.cache.php с массивом писем. У метода save() есть второй параметр, который отвечает за режим работы: true — пересоздать файл, false — дописать данные. По умолчанию, false. Т.е. очередь дописывается.

Шаг 2. Другим скриптом зачитывайте кэш, например, раз 10 минут в течение часа.
$emails = cache('birthdays', 'queue');
Бейте массив на 2 части. По первой части работаете (функция email), а вторую опять сохраняете в кэш.
cache()->set('birthdays', $emails, 'queue');
05 апреля 2018, 16:35
+5
Берём modHelpers и чирикаем
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkName', $user)->send();
        }
    });
Вызывать через cron.
04 апреля 2018, 11:56
0
Проблема может быть связана с тем, что сессия не сохраняется.
По окончании работы скрипта массив $_SESSION нужно сохранить. Для этого обычно используется функция session_write_close.
02 апреля 2018, 23:00
0
Ну Postgres для MODX наверно великоват будет. Вообще в рекомендациях указана MariaDB.

П.С. Вот интересно, если бы у Майкла Видениуса было больше детей, сколько бы SQL серверов он написал? У него 2 девочки по имени My и Maria (MySQL и MariaDB).