Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
31 августа 2018, 17:49
+1
Кажется это сделано для того, чтобы разработчики не воровали код у друг друга. Код то открытый и в компоненте, при желании, можно восстановить билд, переименовать компонент и продавать как свой.
Но лучше с воровством бороться как-нибудь другим методом :(. Разнообразие компонентов нужно.
Пишите комментарии. 2 отзыва маловато, чтоб на администраторов modstore повлиять.
Александр Туниеков
12 августа 2018, 22:56
0
у phpThumbOn качество по умолчанию стоит 0.9 и я его не менял. А вот OptiPic этот же файл сжал на 67%
Александр Туниеков
12 августа 2018, 21:08
0
У меня при загрузке в ms2Gallery картинки не загружались. Поправил следующим образом.
В файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
это
function createTinyPNG() {

        require_once $this->config['modelPath'] . '/tinycompressor/lib/tinify/init_tinify.php';
        $this->tinyPNGClient = (empty(trim($this->config['tinyPNGApiKey'])) ) ? false : new Tinify\Client($this->config['tinyPNGApiKey']);
        $this->tinyPNGCrazyClient = new Tinify\CrazyClient();
        return true;
    }

    function createILovePDF()
    {
        require_once $this->config['modelPath'] . '/tinycompressor/lib/ilovepdf/init_ilovepdf.php';
        $this->iLovePDF = (empty(trim($this->config['iLovePDFProjectID'])) || empty(trim($this->config['iLovePDFProjectKey'])) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);

        return true;

    }
заменил на это
function createTinyPNG() {

        require_once $this->config['modelPath'] . '/tinycompressor/lib/tinify/init_tinify.php';
        $t = trim($this->config['tinyPNGApiKey']);
        $this->tinyPNGClient = (empty($t) ) ? false : new Tinify\Client($this->config['tinyPNGApiKey']);
        $this->tinyPNGCrazyClient = new Tinify\CrazyClient();
        return true;
    }

    function createILovePDF()
    {
        require_once $this->config['modelPath'] . '/tinycompressor/lib/ilovepdf/init_ilovepdf.php';
        $t1 = trim($this->config['iLovePDFProjectID']);
        $t2 = trim($this->config['iLovePDFProjectKey']);
        $this->iLovePDF = (empty($t1) || empty($t2) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);

        return true;

    }
Теперь работает, но сервис после phpTrumbOn картинки меньше не делает.


PageSpeed Insights ругается, что картинки можно сжать еще. В итоге компонент мне не подходит. Буду пробовать OptiPic
Александр Туниеков
12 августа 2018, 18:54
0
Т.е. я не знаю зачем это нужно, поэтому удалю нафиг?
Да :). Там где это точно не на что не повлияет. Просто имя кеша будет другое и все. А в сам $scriptProperties не трогаю. Я ведь верно понимаю, что удаление из переменной $options внутри функции на $scriptProperties не влияет? И в остальном коде setTotal присутствует?
Не знаю в каких. Наверно не в каких, но если вдруг где-то еще кеш используется, то очистка зависимости имени файла кеша от request не помешает.
И вообще включите на гитхабе issue и я бы вообще в этот код не лез.
Александр Туниеков
12 августа 2018, 18:10
0
Ну я хотел сначала issue, но не разобрался где оно там на гитхабе, а с пулл-регвест разобрался. На pdoTools issue кажется вообще заблокированы. Это во первых. Во вторых setTotal мне вообще не понятно зачем нужно и зачем оно именно в том месте. А request лучше в ядре удалить. Из-за него у всех сниппетов pdoTools проблемы с кешированием.
Александр Туниеков
12 августа 2018, 17:00
0
Сделал пулл-регвест. https://github.com/bezumkin/pdoTools/pull/278 описание правда заново не стал писать. Надеюсь Василий разберется.
PS: кстати у меня открывается ваш сайт за ~400-500мсек.
А у меня время ответа сайта прыгает от 183 до 700 мс. В основном 180-195мс а иногда 300 или 700мс. debugParser ничего такого не показывает. У него от 100мс до 180мс. Как выяснить из-за чего прыгает?
Александр Туниеков
06 августа 2018, 22:59
+1
Нашел 2 ошибки с кешем в pdoPage
Александр Туниеков
06 августа 2018, 10:11
0
Зачем на главной вызов pdoPage, если нет пагинации?
Достаточно просто msProducts.
Пагинация есть. Кнопка загрузить еще. Только она когда вызываешь сниппет кешируемым не показывается. Кстати, если бы не это, то можно было бы вызвать pdoPage кешируемым и Total parse time 0.1153460 s. В рамки гугл бы укладывался. Но вот не работает пагинация.
Александр Туниеков
06 августа 2018, 07:55
0
Спасибо не знал или уже забыл.
pdoPage все равно 88-93мс занимает. Его надо еще сокращать. Правда стало Total parse time 0.1874032 s. Но у гугла время ответа сервера от 210мс до 420мс. Как еще сократить время pdoPage?
Александр Туниеков
06 августа 2018, 07:18
0
Спасибо за ответ.
js и css от компонентов можно тоже в minifyx загнать (не забыть отключить их в настройках или в вызове)
До этого еще просто не добрался. Завис на скорости ответа сайта.
Это очень плохо yadi.sk/i/rvBAyF2g3ZvLEq

Это вообще не понятно зачем такое. В модальном окне зум работает. Наверно разраб сайта под одну гребенку все сделал.
Не работал с Gallery, но на каждую картинку слайдера идет запрос на коннектор — отсюда короткое время кеширования. может есть там возможность уже готовый статичный путь получать?
Тоже удивило. Здесь еще не копался. Только стандартные параметры сниппета смотрел. Наверно напишу свой сниппет для вывода галереи. А то стандартный сниппет работает аж 50мс. Что он там делает столько времени не понятно :(.
Пока больше интересует скорость работы. Кто-нибудь замерял насколько феном убыстряет?
Александр Туниеков
06 августа 2018, 07:04
0
У вас функционал похожий, но явно другой зачем-то табличка в базе создается и какое-то ограничение по пользователям и группам. А у меня все просто скрипт загружает чанк, что указали в параметрах и запускает модальное окно в нем. Если конечно оно там есть. И больше ничего не делает. Функционала на 2 часа работы :). И то в основном на то чтобы из modExtra лишнее вырезать и описание написать.
Александр Туниеков
06 августа 2018, 01:05
0
Спасибо большое. Только добрался проверить. все работает.
Александр Туниеков
03 августа 2018, 16:46
-1
Добрый день! На тикетах доска объявлений не очень. Всякие доп и платные функции сложно программировать.
Александр Туниеков
09 июля 2018, 17:19
0
В плагине usertest сейчас
/*Адрес получателя нашего письма*/
		$teachers_email = explode(",",$teachers_email);
		foreach($teachers_email as $te){
			$modx->mail->address('to', trim($te));
		}
Можно вместо этого сделать примерно так:
switch($test['id']){
	case 1:
		$modx->mail->address('to', 'teacher1@mail.ru');
	break;
}
Александр Туниеков
09 июля 2018, 17:12
0
Вот и придумали. В текущем плагине нету. Но переписать плагин для этого не сложно :).
Александр Туниеков
09 июля 2018, 17:11
0
К сожалению, я чисто программист и подавать красиво не сильно умею :(. На практике, можно отправить отправку сообщения администратору. Что и сделано. Но в сообщении, можно, не только итоговый балл, как сейчас, отправлять но еще и отправить отчет со всеми ответами пользователя. Можно прикрутить счетчик пройденных тестов. Больше вариантов, пока, в голову не приходит :). Событие сделано чтоб программисты не лезя в основной код могли что угодно сделать по окончании сеанса тестирования. Мне в голову не приходит что еще можно, но Думаю что-нибудь оригинально придумают.
Александр Туниеков
09 июля 2018, 16:12
0
Ну когда топик выкладываешь, лучше покупают. Обновление маленькое, но повод напомнить :). Стараюсь не спамить, но что-то по краю спама пошел :(. Извиняюсь если что не так.
Александр Туниеков
25 июня 2018, 13:04
+1
Похоже я понял в чем косяк. $modx внутри функции вызывается. А внутри функции его нет. Попробуйте перед if (is_email($user['email'])) { вставить global $modx;

->each(function($user, $idx) {
       global $modx;
	 if (is_email($user['email'])) {
           $queue_email = $modx->newObject('EmailQueueItem');
Александр Туниеков
25 июня 2018, 12:59
0
Поставил Cron Manager. Запустил такой код. И все успешно.
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);


if (!$EmailQueue = $modx->getService('emailqueue', 'EmailQueue', $modx->getOption('emailqueue_core_path', null,
	$modx->getOption('core_path') . 'components/emailqueue/') . 'model/emailqueue/', array())) {
	return;
}
$user['email'] = 'a@b.ru';
$queue_email = $modx->newObject('EmailQueueItem');
$data1 = array(
	'sender_package'=>'UsersSend', //дополнение отправитель письма
	'to'=>$user['email'], //емаил
	'from_name'=>'Тест',
	'subject'=>'Поздравляем с Днём рождения!', // тема письма
	'body'=>$modx->getChunk('email_ru', $user), // тело письма
	'date'=>date("Y-m-d H:i:s"), // дата в очереди. Нужно чтоб письма удалялись по истечении срока хранения.
);
$queue_email->fromArray($data1);
if(!$queue_email->save())
	$modx->log(1,"Письмо для ".$user['email']." не удалось добавить в очередь писем!");