• Как архивировать все кроме одной директории?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $ man tar
    ...
           --exclude=PATTERN
                  Exclude files matching PATTERN, a glob(3)-style wildcard pattern.
    Ответ написан
    Комментировать
  • Сборка бюджетного ПК, запустится?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Даже не соберётся. Процессор от AMD на сокет AM4 не встанет в интеловский сокет LGA1200.
    Ответ написан
    Комментировать
  • У меня не правильный код?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    = ≢ ==
    - if($block_level = 1){
    + if ($block_level == 1) {
    - }elseif($block_level = 2){
    + } elseif ($block_level == 2) {
    - }elseif($block_level = 3){
    + } elseif ($block_level == 3) {
    Ответ написан
    Комментировать
  • Как глобально сохранить куки через компонент HttpFoundation?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    php отправляет заголовок браузеру что нужно установить куку, а не ставит ее. Бесполезно проверять ее наличие сразу после отправки заголовка. В следующем запросе эта кука вернется браузером на сервер.
    Ответ написан
    Комментировать
  • Как в RabbitMQ обработать все сообщения а затем удалить очередь и закрыть соединение?

    Странная затея насчёт удаления очереди.
    Ну если так надо, то отправляй сообщение о том, что окончились сообщения. Тогда обработчик очереди получит его и будет знать, что очередь можно удалять.
    Ответ написан
    Комментировать
  • Как в RabbitMQ обработать все сообщения а затем удалить очередь и закрыть соединение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Очередь - бесконечная по дизайну. Поэтому прикладной софт никогда сам не может решить
    прочитал-ли он последнее сообщение или нет. Сетевой протокол тоже в этом смысле не помошник
    потому-что шлет сообщения пачками и тоже нельзя гарантировать что пачка - последняя.

    Единственный разумный выход - если producer создает специальное сообщение-терминатор
    которое как-бы сигнализирует что все дескыть конец.
    Ответ написан
    Комментировать
  • Производительность решения SQL like vs join?

    @rPman
    Ты забыл третий вариант, самый быстрый и наиболее предпочтительный если общее количество опций не велико (сотни, например у mysql лимит 1024 колонок максимум) - каждая опция это своя колонка, пустое (null) значение будет значить отсутствие опции у записи.

    Недостаток подхода - если у объекта может быть несколько опций с одним именем, то такой подход не работает (но судя по всему это не твой случай).

    Еще момент, полученная таблица будет сильно разряженной (т.е. много нулей) и многие базы данных на диске выделяют для пустых записей место (вопрос нужно изучать).

    Если количество опций незначительно превышает лимит количества колонок - можно завести несколько таблиц. Так же это может решить проблему с разряженными таблицами, если грамотно раскидать часто используемые и редко используемые опции по разным таблицам.

    p.s. если говорить про твои варианты:
    * для 1 используй json сериализацию (опция=значение) в mysql для работы с такими данными есть соответствующие методы
    * для 2 постарайся вместо текстовых наименований опций использовать числовые идентификаторы, заведя соответствующий классификатор либо в базе в отдельной таблице либо в виде констант в коде.

    p.p.s. Ну и еще вариант, если тип значений опций - boolean (либо ограничен небольшим количеством значений, например цвет светофора 4 - выключен, красный, желтый, зеленый) то так же заводи для этих значений числовой эквивалент. В этом случае у тебя появляется еще бонус, упаковывать битовые значения (где количество вариантов 2^x и x это количество бит) и хранить в целочисленном поле сразу несколько (правда не все базы позволяют индексировать операции с битами).
    Ответ написан
    3 комментария
  • Как выбрать базу данных для проекта?

    @alexalexes
    1. Если в разрабатываемой системе нет потребности производить нечеткий поиск, получать сверхбыстрый ответ на запрос в реальном времени (не более пары миллисекунд), производить аналитику данных в самых разных разрезах. У вас в потоках данных определены сущности с четкими реквизитами и сущности имеют высокую связность, то в 99% случаях вы даже не повернете голову в сторону нереляционных СУБД, будете использовать реляционные.
    2. На самом деле, просто зависит от того, как сложно администрировать СУБД в том масштабе, в которой развилась база данных. Сначала берут первую попавшуюся, или с тем, с чем освоились более-менее, а потом смотрят с течением времени, как сложно нанять нужного специалиста на администрирование, удобно ли масштабировать экземпляры баз данных при возросшей нагрузке, удобно подымать экземпляры из небытия, держать непрерывный аптайм. Вот тут уже выясняется специфика работы предметной области и необходимость переезжать на подходящее окружение.
    Ответ написан
    1 комментарий
  • Как объединись значения из двух массивов в один?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Возможно. Просто пройдитесь по имеющемуся массиву и сформируйте новый. В качестве ключа проще всего использовать order_id.
    Ответ написан
    Комментировать
  • Пропадает изображение, что нужно лечить?

    @kalapanga
    1) Простое - клубок перепутаных проводов где каждый тянет другого, который раньше лежал спокойно на полу, а теперь висит, а его ещё и пяткой задевают (образно говоря).
    2) Ученое - компьютер оказался рядом с каким-то мощным источником помех.
    3) Грустное - материнка дохнет.
    Наверное можно и ещё придумать что-нибудь.
    Ответ написан
    Комментировать
  • Почему компьютер постоянно перезагружается?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    Похоже, что видеокарта сдохла.
    Ответ написан
  • Как быстро освоить Git?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    https://git-scm.com/book/ru/v2

    Не стоит переписывать в 100500 раз то, что уже написано. Просто прочтите один раз и сохраните закладку. Пригодится, поверьте.
    Ответ написан
    2 комментария
  • Как записать base64 в таблицу?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) Хранить картинки в бд крайне кривое решение. Это может быть оправдано только в случае когда там хранится пара иконок, вставленная в текст прям через <имг срц="тут_бэйз64_строка"... и нет желания все это переделывать ради 2 кастомных микрокартинок. В остальном - конвертировать в картинку и хранить на диске. В бд писать путь до картинки. Если это какой-то аватар или картинка, связанная с другим объектом, соответственно заводить отдельную таблицу на картинки и связь один-к-одному или один-ко-многим, в зависимости от ситуации. В худшем случае поле в той же таблице, если точно будете знать что других картинок к объекту относиться не будет, но это должен быть путь до реальной картинки на диске.
    2) Почему хранение в бд - плохая идея: При каждом запросе у вас будет вытаскиваться пару мегабайт данных из бд, передаваться по каналу соединения с бд, помещаться в память, и после этого еще нужно программно отдавать картину, кроме прочего картинка в бэйс64 занимает примерно на 30% больше места.
    Когда у вас есть картинка на диске, вы просто вставляете путь до нее, это ~50 символов, и сервер отдает ее БЕЗ УЧАСТИЯ ПРОГРАММНОЙ ЧАСТИ, средствами вебсервера и ОС. Это быстрее, потребляет меньше памяти и занимает меньше места в хранилище.
    Ответ написан
    Комментировать
  • Как дать перманентный бан за мультиак на сайте?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    По ip точно не получится отследить. А раз тут разные браузеры - по фингерпринтингу тоже не выйдет.
    Так что только по признакам, которые пользователь сам по глупости укажет (одну и ту же почту например) или по поведению.
    Ответ написан
    8 комментариев
  • Какой самый лёгкий и безопасный способ держать пользователя авторизованным?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Опять не подходит потому что куки могут украсть.
    Откуда вы такие специалисты по безопасности беретесь?..

    Вопрос остаётся - как реализовать нормальный и безопасный способ для такой функции, чтобы больше не приходилось использовать другие варианты после каждой очередной жалобы на взлом?
    Взлом через уведенную куку входит в топ 5 малореальных сценариев взлома, если у вас есть хоть какая-то защита от XSS.

    Хранить IP последнего входа в аккаунт? Идея неплохая, но если каким-то магическим образом БД взломают, то все айпи попадут нехорошим людям.
    Оу, вас это больше всего расстраивает? Учитывая что 80% траффика сейчас идет через мобильные сети, айпи будет разниться при каждой сессии авторизации. И в данном случае вероятность такого взлома вы почему-то оцениваете практически как "магию", в то время как доступ к кукам пользователя у вас на уровне "ну, это точно случится, и скорее всего раньше, чем позже, любой может там гулять как у себя дома"...
    Ответ написан
    2 комментария
  • Количество переменных не совпадает с количеством токенов при записи в таблицу БД. Можно ли использовать массив как переменную?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Здесь, собственно, весь код на выброс.
    -    $i = 0;
    -    $coll = '';
    -    $mask = '';
    -    foreach ($params as $key => $value) {
    -        if ($i === 0) {
    -            $coll = $coll . "$key";
    -            $mask = $mask . "'" . "$value" . "'";
    -        } else {
    -            $coll = $coll . ", $key";
    -            $mask = $mask . ", '" . "$value" . "'";
    -        }
    -        $i++;
    -    }
    +    $coll = implode(',', array_keys($params));
    +    $mask = ':' . implode(',:', array_keys($params));
    Ответ написан
    Комментировать
  • Как правильно расставить скобки при ошибке установки плагина?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    del
    UPD
    function some_plugin_name_get_remote_address() {
      $remote_addr = getenv('HTTP_CLIENT_IP') ? getenv('HTTP_CLIENT_IP') :
          (getenv('HTTP_X_FORWARDED_FOR') ? getenv('HTTP_X_FORWARDED_FOR') :
          (getenv('HTTP_X_FORWARDED') ? getenv('HTTP_X_FORWARDED') :
          (getenv('HTTP_FORWARDED_FOR') ? getenv('HTTP_FORWARDED_FOR') :
          (getenv('HTTP_FORWARDED')?getenv('HTTP_FORWARDED'):
          getenv('REMOTE_ADDR')
          ))));
    
      $remote_addr = str_replace('for=', '', $remote_addr);
    
      return $remote_addr;
    }
    Ответ написан
    9 комментариев
  • Можно ли в корпус где указан Е-АТХ поставить ATX материнку?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Чаще всего в больших корпусах имеются универсальные расположения креплений меньших форм-факторов.
    Так что в большинство таких корпусов встанут как ATX так и mATX, и более меньшие
    Ответ написан
    Комментировать
  • Можно ли в корпус где указан Е-АТХ поставить ATX материнку?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    да
    Ответ написан
    Комментировать
  • Как исправить ошибку при отправке запроса?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    То что вы пытаетесь сделать в MySQL можно сделать при помощи типа ENUM

    CREATE TABLE species ( 
        species_id       INTEGER PRIMARY KEY,
        type_id          INTEGER,
        species_name     VARCHAR(255) NOT NULL,
        species_amount   INTEGER,
        date_start       DATE,
        species_status   ENUM ('active', 'absent', 'fairy') NOT NULL DEFAULT 'active'
    );

    https://sqlize.online/sql/mariadb/38af7f7fa3c528d5...

    Но лучше использовать таблицу-справочник
    CREATE TABLE species_statuses ( 
        id       INTEGER PRIMARY KEY,
        name     VARCHAR(255) NOT NULL
    );
    INSERT INTO species_statuses VALUES (1, 'active'), (2, 'absent'), (3, 'fairy');
    
    CREATE TABLE species ( 
        id          INTEGER PRIMARY KEY,
        type_id     INTEGER,
        name        VARCHAR(255) NOT NULL,
        amount      INTEGER,
        date_start  DATE,
        status_id   INTEGER DEFAULT 1,
        FOREIGN KEY (status_id) REFERENCES species_statuses(id)
    );

    https://sqlize.online/sql/mariadb/1121e0d679fb1aae...
    Ответ написан
    Комментировать