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

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

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
24 августа 2015, 21:58
0
Ну да, я в курсе, просто обозвал так, чтобы было понятнее. Наверно, зря, ибо Василий прицепился именно к этому слову, хотя я уверен, что он понял в чем суть.
Я привел Василию ссылку, где пишут про утечки. Там тоже пишут, что проблемы могут возникнуть, если интерфейс очень сложный. А в обычной жизни ни замыкания, ни jQuery утечки проблем не доставляют.
П.С. Я думаю, это не баг и не фича. Это способ программирования. Кто-то считает, что так можно и вреда не будет, кто-то нет. Вот и вся разница. Такой код не приведет к проблемам, иначе уже давно ругались бы при редактировании системных настроек.
П.П.С. Мы же вроде на ты уже общались :)
Сергей Шлоков
24 августа 2015, 21:52
0
«Доцент, ты, конечно, вор авторитетный», но в чем смысл стеба не пойму. Причем здесь возможность открытия 30 окошек? Я писал про то, что все эти окошки после закрытия остаются в DOMе и больше никогда не используются. Открой еще 30 окошек и у тебя будет 60 окошек. Одно окошко состоит из кучи дивов и разных служебных элементов. DOM разбухает. Вот я про что писал. Ну может это не совсем утечка в формальном смысле, но явно ничего хорошего не получается. Вот несколько раз открыл и закрыл окно

Про утечки можно почитать на learn.javascript.ru.
Сергей Шлоков
24 августа 2015, 20:39
0
Ну как бы формально это называется утечкой. Я тоже не считаю, что это критично. Я так и написал, что небольшая утечка. В самом MODX при редактировании системных настроек такой же код — и ничего ни у кого не виснет. Но феншуйнее было бы одно окно вызывать.
Сергей Шлоков
24 августа 2015, 20:27
0
100500 окон одного и того же коммента?
Сергей Шлоков
24 августа 2015, 20:10
0
Чисто для демонстрации вышеописанного механизма утечки
Сергей Шлоков
24 августа 2015, 18:52
0
Я готов. Но вряд ли без твоего согласия решусь коммитить. Ведь ежели чего поломается, меня же потом тухлыми помидорами закидают.
Кстати, там же Илья вроде уже дирижирует.
Сергей Шлоков
24 августа 2015, 18:32
0
Точно. Выставил вместо статических id динамические
id: config.id + '-class',
Теперь работает. Спасибо.
Но проблема с утечкой (хоть и не большой) в modExtra остается. Есть смысл в репозиторий modExtra писать?
Сергей Шлоков
23 августа 2015, 10:35
0
Тут же проблема не в самом принципе расширения, а в том, что не до конца продуман функционал. С таким же успехом можно было бы озаглавить топик «Как не надо программировать в MODX» или вообще обобщить «Как не надо программировать».
Прошу не относится критически, просто размышление.
П.С. Но к содержанию претензий нет, поэтому плюсанул.
Сергей Шлоков
23 августа 2015, 08:53
0
Зашел прочитать статью «Как не надо расширять MODX-процессоры», а тут баг репорт.
Сергей Шлоков
22 августа 2015, 12:05
0
В том то и дело, что теоретически, между получением и записью, другой пользователь тоже получит старое значение и увеличит. Практически получится увеличение на единицу, а должно на две единицы. Это не вариант.
Теоретически да, но практически вряд ли. Разница между этими операциями составляет доли секунды. Вероятность, что кто-то попадет как раз между, крайне мала. Думаю, что даже если постараться нажать одновременно с кем-то, то все равно не получится.
Ну а в случае использования PDO для таких страхов вообще нет почвы.
Сергей Шлоков
22 августа 2015, 07:45
+1
Вы не совсем понимаете суть транзакций. Их, как правило, используют для одновременного изменения нескольких записей. И если одну из операций выполнить не удалось, то нужно откатить уже проведенные. В вашем примере они не причем.
Хорошо, с транзакциями диалога не получается, может быть подскажите как на xPDO составить такой запрос
UPDATE VotesTable SET votes = votes+ 1 WHERE id = 10
На xPDO такой запрос можно сделать в 2 этапа:
1. Сначала получить количество голосов, увеличить на 1 и записать в переменную.
2. Выполнить тот запрос, который указан в конце вашего поста с подстановкой переменной из первого шага.
А можно сделать на PDO, как выше написал Василий.

П.С. Кстати, можно упростить ваш пример. Вместо
$c =$modx->newQuery('VotesTable');
$c->where(array(
	'id' => 10,
));
//Получили объект
$item = $modx->getObject('VotesTable', $c);
достаточно сделать так
$id = 10;
$item = $modx->getObject('VotesTable', $id);
Сергей Шлоков
21 августа 2015, 08:31
0
Проверьте, если ли папка tmp в /assets/components/dbadmin. Если нет, создайте.
Сергей Шлоков
20 августа 2015, 13:22
0
Даже у нас тут редко всплывает проблема взлома. А на joomla постоянно.
Был кипишь, когда AgelNash в открытую выложил дыру. Но потом вроде затихло.
А вообще лучше перебдеть.
Сергей Шлоков
20 августа 2015, 13:18
+2
Человек, ценящий чужой труд и чужое мнение, никогда не напишет
Отдельно про дескрипшн: не представляю, кому это надо
Ни один человек в мире не знает насколько хорошо вы можете себе что-либо представлять, чтобы считать ваше мнение авторитетным.
Я от этой болезни излечился 20 лет назад. Ни в коем разе не хотел вас обидеть. Просто перечитайте первую строчку моего предыдущего комментария.
П.С. Меня не расстраивают минусы. Главное, чтобы Вам помогало.
Сергей Шлоков
20 августа 2015, 11:58
-1
Проще в настройках отключить дескрипшн для меню ...
Всегда забавляет подобная формулировка. Кому проще? Вам? Значит эта заметка не для вас. Кроме того, решение с отключением описания меню уже обсуждалось. Лично мне не нравится такой вид. Я предложил альтернативу. Вы лично против существования в мире альтернативных решений???
Сергей Шлоков
20 августа 2015, 10:48
0
Самое интересное, что оно добавилось. Видимо проблема с кэшем была.
Сергей Шлоков
20 августа 2015, 10:43
0
Ширина определяется не автоматически, хотя можно сделать и так. В моем примере только 2 колонки предусмотрено — width: 544px;
Кому надо 3 колонки — увеличиваем width до 816.
П.С. Я же говорю, что решение простенькое :) Да и пригодится единицам. Так что пулреквест будет мертворожденным.
Сергей Шлоков
20 августа 2015, 10:24
+1
Думаю, с вашей ценой вы скорее нарветесь на игнор, чем на обиды. Даже вами же предложенный объем работ (заниженный, кстати) не соответствует предложенной вами стоимости. Сейчас средняя цена фрилансера около 500 руб/час. Если считать день за 8 часов, то получаем 7 дней = 56 часов. Умножаем на 500 и получаем 28 тыс. р. И это только по вашей оценке. Вот и думайте.