Задать вопрос
  • Как правильно бэкапить в этом случае?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    У Вас просто неправильный подход. Нужно не на сервер ходить за файлами, а сервер должен сам бекапить в нужное место. Тогда и проблемы с root не будет.
    Работал с тремя bareos (bakula), urbackup, borg - все достойны. В Вашем случае, наверное, borg - лучший выбор.
    Ответ написан
  • Почему докер не видит MySql?

    @Drno
    Ошибку то прочитайте.. он же пишет что Вы не используете пароль, хотя его задали.. там в коменте правильно сказали, надо указать -p еще
    Ответ написан
    Комментировать
  • Почему последовательный вызов работает, а в одну строку нет?

    grantur5707
    @grantur5707
    Full Stack Web Developer
    Метод getOfers() должен возвращать объект класса, а не true.

    class ProductAmount
    {
        function __construct($array = array()) { 
            ...
        }
    
        function getOfers($items = []) {
            ...
            return $this;
        }
    
        function getProfuctStore($inListStore = 'N') {
            ...
            return $this;
        }
    
        function setListStore($inListStore = 'Y') {
            ...
            return $this;
        }
    }


    $obj = new ProductAmount();
    $res = $obj->getOfers([229411])->getProfuctStore('Y')->setListStore('Y');
    Ответ написан
    Комментировать
  • Как понять-то хоть?

    @basili4-1982
    встраивать utm метки в урл. когда чел пришел с релкамы, добавлять метки и прокидывать их по всем переходам. пока он не уйдет на покупку.
    Ответ написан
    Комментировать
  • Можно ли использовать виртуальную машину для отображения программы на втором мониторе вместо покупки второго ПК для отдельного по?

    hint000
    @hint000
    у админа три руки
    В принципе можно на виртуальной машине. Но в частности зависит от особенностей прикладного ПО.
    Можно предположить, что абоненты только прикладывают карточку к сканеру и получают информацию на своём мониторе. Тогда нужно пробросить сканер (как USB-устройство) внутрь виртуальной машины.

    А ещё успех зависит от персональных особенностей сотрудника, который будет работать за этим ПК. Ну вы знаете, одному человеку можно показать, как здесь всё устроено и он поймёт, а другому показывай хоть каждый день, и он всё равно загонит курсор мышки на второй монитор и (глядя на первый монитор) будет говорить "ой, у меня снова мышка не работает". Если рассчитывать на текучку кадров или на низкий уровень сотрудника, то проще за копейки купить отдельный старенький системный блок.
    Ответ написан
    1 комментарий
  • Как можно укоротить код в foreach?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    /**
     * Переделать массив объектов, добавив префикс названию каждого из свойств
     * @param array<object> $srcArray исходный массив объектов
     * @param string $prefix строка, которую добавить перед названием каждого из свойств
     */
    $remap = fn (array $srcArray, string $prefix) => array_map(
        function ($obj) use ($prefix) {
            $keyValues = get_object_vars($obj);
            $keys = array_keys($keyValues);
            $values = array_values($keyValues);
            return (object) array_combine(
                array_map(fn ($key) => $prefix . $key, $keys),
                $values
            );
        },
        $srcArray
    );


    Test
    // Test
    $babySitters = [
        (object) ['a'=>'A1', 'b'=>'B-1'],
        (object) ['a'=>'A2', 'b'=>'B-2'],
        (object) ['a'=>'A3', 'b'=>'B-3'],
        (object) ['a'=>'A4', 'b'=>'B-4', 'c'=>'C4'],
    ];
    
    $result = $remap($babySitters, 'babysitter_');
    
    echo json_encode($result);


    Результат:
    [
      {
        "babysitter_a": "A1",
        "babysitter_b": "B-1"
      },
      {
        "babysitter_a": "A2",
        "babysitter_b": "B-2"
      },
      {
        "babysitter_a": "A3",
        "babysitter_b": "B-3"
      },
      {
        "babysitter_a": "A4",
        "babysitter_b": "B-4",
        "babysitter_c": "C4"
      }
    ]

    Ответ написан
    Комментировать
  • Как взламывают БД (MongoDB)?

    mikes
    @mikes
    нарисуйте схему взаимодействия компонентов приложения и что именно торчит от него в публичной части. будут понятны векторы атак.

    вангую что ломают вас не через субд как таковую (хотя держать ее с доступом извне странно) а через приложение. где то там есть возможность проводить инъекции и тд
    Ответ написан
    Комментировать
  • Какая сложность у этого алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Цикл while же выполняется пропорционально количеству цифр в числе..
    Да. А количество цифр в числе C это ⌊log10C⌋ + 1.
    Элемент суммы с меньшей степенью (1) отбрасываем, округление вниз убираем, основание логарифма неважно, получаем logC
    Ответ написан
    6 комментариев
  • Как с помощью обработчика форм PHP отправлять сообщения о новой созданной заявки в беседу от бота telegram?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Форма отправляется на сервер, далее либо курлом вызывается второй скрипт, либо (если скрипт отправки в тг находится в рамках одного приложения) второй скрипт подключается инклудом после обработчика и обрабатывает форму своим способом.
    Ответ написан
    8 комментариев
  • Как получить данные из Promise?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Значит плохо читали. Прочитайте еще раз и выполните упражнения: https://learn.javascript.ru/promise
    async function one() {fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
    .then(res => res.json()) 
    .then(data => { console.log(data) });
    }
    console.log(one())
    Ответ написан
    Комментировать
  • Как удалить из таблицы первые два символа, если они начинаются на 00?

    @maksam07
    UPDATE имя_таблицы
    SET имя_поля = SUBSTRING(имя_поля, 3)
    WHERE имя_поля LIKE '00%';


    за любые ошибки и потерю данных я ответственности не несу
    Ответ написан
    Комментировать
  • Есть ли возможность удобной миграции(синхронизации) сайта wp бесплатно?

    @Refguser
    Решения для бизнеса: от создания ИМ до...
    Нужна возможность выбора что я конкретно хочу засинхронить (только бд , только файлы и тд)

    Это дупликатор и в бесплатной версии может.
    Только нет смысла для файлов использовать дупликатор (и вообще какой-либо плагин). Их можно хоть по FTP "засинхронизировать".
    Ответ написан
    Комментировать
  • Почему в функции MYSQL при присвоении в переменную значения из таблицы не учитывается условие WHERE?

    @Uncleruc1
    Проблема заключается в том, что в вашей функции условие WHERE \orderid` = 871жестко зафиксировано, и оно всегда будет брать строку с этимorderid, игнорируя переданное значение orderid` в параметр функции.

    Чтобы учитывать переданное значение в параметр функции, необходимо использовать сам параметр orderid вместо фиксированного значения. Вот исправленный код функции:
    DROP FUNCTION IF EXISTS YourFunction;
    DELIMITER $$
    CREATE FUNCTION YourFunction (qty INT, orderid INT) RETURNS TEXT
    
    BEGIN
    DECLARE text_t TEXT;
    SELECT `sum` INTO text_t FROM t_order_price_type WHERE `orderid` = orderid LIMIT 1;
    RETURN text_t;
    END$$
    
    DELIMITER ;


    Однако, в данном виде WHERE \orderid` = orderid` не сработает так, как вы ожидаете, потому что MySQL может спутать поле таблицы с параметром функции. Чтобы избежать этой путаницы, лучше использовать псевдонимы или уникальные имена для параметров. Например:
    DROP FUNCTION IF EXISTS YourFunction;
    DELIMITER $$
    CREATE FUNCTION YourFunction (p_qty INT, p_orderid INT) RETURNS TEXT
    
    BEGIN
    DECLARE text_t TEXT;
    SELECT `sum` INTO text_t FROM t_order_price_type WHERE `orderid` = p_orderid LIMIT 1;
    RETURN text_t;
    END$$
    
    DELIMITER ;

    Здесь параметр функции называется p_orderid, что предотвращает конфликт имен между полем таблицы и параметром функции.
    Ответ написан
    2 комментария
  • Почему не получается спарсить названия учебных заведений?

    Vindicar
    @Vindicar
    RTFM!
    Ты хотя бы в браузере пробовал открыть исходный код страницы (обычно Ctrl-U)?
    Это динамический сайт, там по умолчанию в body два с половиной скрипта, которые уже подтягивают остальной контент. Конечно, ты его не получишь одним запросом.
    Выясняй, какой запрос скрипты делают для получения контента, и имитируй уже его. Консоль разработчика в помощь.
    Ответ написан
    Комментировать
  • Как получить избражение корзины в битрикс 1с?

    @itauditmedia
    CSaleBasket::GetList - не отдает изображение
    вам надо самостоятельно "добрать" его по PRODUCT_ID
    примерно так

    while($elem = $basket->getNext()){
    $el = CIBlockElement::GetList( [], ["ID"=>$elem['PRODUCT_ID']], false, false, ["ID","DETAIL_PICTURE"])->fetch(); 
    if($el['DETAIL_PICTURE']>0) $file = CFile::ResizeImageGet($el['DETAIL_PICTURE'], array('width'=>150, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true); 
    }

    в $file['src'] - будет путь к файлу
    Ответ написан
    1 комментарий
  • Как хранить списки в бд?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если использовать реляционные базы данных то делить на таблицы и описывать связи, предварительно избавившись от списков, на уровне пандаса, переформатировав (распрямив) датафрейм, метод explode например поможет избавится от списков. В целом одна и та же информация, может быть представлена в разном виде и в реляционных бд предпочтительнее (но не обязательно) иметь простые типы данных.

    Использовать не реляционные базы данных, они больше подходят если данные имеют вложенную структуру и простым переформатированием не обойтись.

    Если тебя все устраивает и тебе удобно работать с фреймом, но хочется иметь такое представление информации только не в памяти, а на диске. Можешь использовать например сериализацию, метод для фреймаto_pickle, и соответственно read_pickle для чтения.

    По итогу, когда ты собираешься хранить данные, ты их в дальнейшем будешь извлекать и анализировать. Работать с колонкам содержащими вложенные списки, можно, но не так эффективно, как с правильно организованными данными, будь уверен, что ты хранишь в колонках вложенные списки от отсутствия альтернатив.
    Ответ написан
    Комментировать
  • Как хранить списки в бд?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Вложенные списки организуют классическую связь 1:N (одному блоку данных соответствует несколько записей из списка).
    Если эти строки списка как-то обрабатываются (поиск, фильтрация и пр.), то наиболее разумна схема с 2 таблицами и внешним ключом.
    Если же списки только сохраняются и извлекаются, без вообще какой-либо обработки, то можно использовать предложенную mxelgin схему с хранением всего списка в одном поле TEXT либо JSON в сериализованном виде.
    Ответ написан
    Комментировать
  • Как экстренно удалить профиль текущего пользователя Windows 10?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Логофф текущего пользователя, можно и с помощью команды (logoff), главное полноценный выход, а не смена пользователя, тыкаем мышкой на вход другим пользователем, у которого при входе стоит автоматический запуск скрипта, который удаляет нужного пользователя + делает все остальные нужные действия.
    Ответ написан
    Комментировать
  • Как назвать классы заказа для паттерна "Состояние"?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Попробуйте вместо попыток натянуть сову на глобус, а задачу на паттерн, действовать от простого. Пусть заказ бывает бесплатным. У заказа есть флаг "является ли он бесплатным". Мы даже можем воспользоваться возможностями языка и прикрутить какой-то геттер для надежности, чтобы флаг менялся в зависимости от устанавливаемой цены (в примерах условно JS):
    class Order {
        get isFree() { return this.price === 0; }
    }

    Мы можем прям сюда присобачить и оплату, но допустим мы не хотим, чтобы заказ что-то знал об урлах для оплаты. Ему это не надо. Заказ - это список товаров, какой-то статус завершенности, адрес доставки и.т.д. Он про данные, не про процессы. Путь будет обработчик, который может провести заказ как кассир в пятерочке:
    class Order { /* --- */ }
    
    class Сashier {
        proceed(order) {
            const url = order.isFree ? "free url" : "paid url";
            // ...редиректим, проводим оплату, предлагаем пакетик и кофе по акции
        }
    }

    Допустим у нас есть много платежных систем, там все сложно. Инфраструктура - не кассира дело. Ок, дадим ему доступ к адаптеру, который скрывает все за собой и проводит непосредственно оплату.
    class Order { /* --- */ }
    
    class PaymentHandler {
        charge(price) {
            // ...редиректим куда надо, в зависимости от цены и привязанной карты
        }
    }
    
    class Cashier {
        proceed(order) {
            const isSuccess = PaymentHandler.charge(order.price);
            
            if (isSuccess) {
                // заказ прошел
            } else {
                throw new Error('ГААААААЛЯЯЯ ОТМЕЕЕЕНА!!!!');
            }
        }
    }

    Получается четкое разделение ролей. Заказ - про данные, кассир - про процесс, обработчик оплаты - про муть с платежными системами. Возможно, что даже флаг isFree не особо нужен у заказа. И, возможно, что к паттерну "состояние" мы не придем, потому что он в первую очередь решает проблему бесконечного количества комбинаций флагов, но если нет флагов, то нет и проблемы. И.т.д. Развивайте конструкции по мере их естественного появления. Тогда проблем с именованием будет на порядок меньше. Потому что каждое слово в коде отражает какую-то заранее сформированную сущность в алгоритмах в голове.
    Ответ написан
    2 комментария