meridbt, вероятно так:
www-data ALL = (pi) NOPASSWD: /var/www/html/assets/modules/test.py
, но нужно проверить на всякий случай. И, разумеется, из php вызов должен быть через sudo с указанием пользователя.
Не забывайте, что редактировать можно только через visudo, иначе при ошибке можно потерять контроль над sudo.
Нашел статью https://tuning-soft.ru/articles/bitrix/busconvert-..., где один товарищ конвертнул свою базу из utf8 в utf8mb4. Все работает, хотя Битрикс жалуется, вероятно Битриксу просто лень использовать современные кодировки - я не знаю проблем обратной совместимости utf8mb4 относительно utf8, да и теоретически их не должно быть.
то есть self::$curl = null, не означает уничтожение класса как таковой?
Нет, это означает уничтожение ссылки на объект класса. Но когда все ссылки на объект класса будут уничтожены, мусорщик уничтожит и сам объект. В вашем случае, кроме ссылки в self::$curl, есть еще ссылка в $curl, поэтому объект не уничтожен.
я так понимаю перезапуска статического класса нету, лишь путем обнуления всех переменных?
Нет ни перезапуска, ни статического класса, про ссылки смотрите выше.
А можете пояснить, что такое внешняя и внутренняя сортировка, что такое left_key и right_key, зачем 2 столбца для сортировки?
И почему id у всех одинаковый?
Developer, меня когда-то давно такое спрашивали, спрашивал тот, кто сам не претендовал на хорошее знание языка, и искали того, у кого квалификация выше чем в компании. Трудно сказать, какие выводы можно сделать по такому вопросу, больше похоже на вопросы "за жизнь" от менеджера.
topuserman, так и есть, либо в конструктор, либо в отдельный билдер. Раз у вас это решал статический метод этого же класса, значит и конструктор прекрасно справится.
topuserman, может потому, что вы хотите странного. Статический метод, который создает и возвращает объект этого же класса... Со статикой вообще нужно быть осторожным, она приносит много проблем при модификации кода и особенно при тестировании. Чисто для примера, можно решить так, но если решаете реальную задачу, то лучше пересмотреть подходы в корне.
Покажите конкретно что вас смущает, полный код.
Метод у вас статический, а следовательно объект он сможет возвращать только если его создаст внутри себя.
Понятия не имею, как вы будете внутри метода создавать объект по id. Но к примеру так:
public static function getById(): IUser {
return (new static());
}
будет создавать объект класса, соответствующего месту вызова.
Откуда он может появляться и как его оттуда убрать?
Появляется из вашего кода. Найти место где вы выводите этот пробел, если нет в print, который вы привели, значит до него, нет явного вывода в php, смотрите вне его, например пробел перед <?php.
Boris Korobkov, и откидываем все варианты 5,5,5,*, в этом и резон чтобы не формировать варианты полностью, а откидывать сразу группами. Чтото туплю, выше об этом написано. Ок, спасибо.
Boris Korobkov, получается только за счет "Прекращение проверок ветки, если она уже стала хуже ранее найденного". Можешь объяснить, почему если новый вариант расстановки хуже, то последующие будут еще хуже?
Boris Korobkov, не-не, я не претендую, webymax уже сделал примерно так, как я описывал, без оптимизаций, результаты видим.
В итоге, твой оптимизированный вариант в 10-20 раз быстрее, чем твой полный перебор, и будет еще быстрее чем больше данных. Очень круто получилось. А почему твой полный перебор настолько быстрее чем реализованный webymax? За счет массива SPL, более быстрой итерации массива без обращения по ключам в for и отсутствия рекурсий? Или что-то еще играет роль?
Boris Korobkov, спасибо. На больших объемах это действительно должно дать большой прирост производительности.
В принципе автору даже не меняя алгоритм, очень помогут п.6 и 7.
Boris Korobkov, не, писать надо тогда, когда есть полная картина. Кодирование это последний этап.
С перебором все понятно, вопрос про оптимизации, я пока вижу только оптимизацию для вариантов с отклонением 0, ранний выход из поиска. Только для этого случая, для других не могу придумать.
Boris Korobkov, она близка, но не максимально, максимально это 5+4. Об этом и речь, мы не знаем какое должно быть отклонение 0, 1, 2,... Можно отсортировать массив в порядке убывания, это немного уменьшит кол-во вариантов перебора, но только в том случае, если будет найден вариант с отклонением 0 от ИМВВ, во всех других случаях придется проверять все варианты.
Какая тут практика, тут с теорией не разобрались пока.
На последнем моем месте работы, мы не разу ни делали хотфиксы, но я не буду кричать, что хотфиксы не нужны, master разработчикам не нужен. Потому что можно бравировать какой ты офигенный, а можно понимать риски и быть подготовленным.
www-data ALL = (pi) NOPASSWD: /var/www/html/assets/modules/test.py
, но нужно проверить на всякий случай. И, разумеется, из php вызов должен быть через sudo с указанием пользователя.
Не забывайте, что редактировать можно только через visudo, иначе при ошибке можно потерять контроль над sudo.