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

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

    2ord
    @2ord
    Странная затея насчёт удаления очереди.
    Ну если так надо, то отправляй сообщение о том, что окончились сообщения. Тогда обработчик очереди получит его и будет знать, что очередь можно удалять.
    Ответ написан
    Комментировать
  • Как в 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 комментариев
  • Количество переменных не совпадает с количеством токенов при записи в таблицу БД. Можно ли использовать массив как переменную?

    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...
    Ответ написан
    Комментировать
  • Как можно быстро подключить шрифты в css?

    @holllop
    Так давай по полкам всё. Я конечно сомневаюсь, что подобного вопроса не было, но всё же
    1. Локальное хранение шрифтов: Вы можете скачать шрифт в нужном формате (например, WOFF или TTF) и сохранить его в своем проекте. Затем в CSS вы можете использовать правило @font-face, чтобы подключить шрифт, указывая путь к файлу на вашем сервере. Например:

    @font-face {
      font-family: 'MyFont';
      src: url('/path/to/font.woff2') format('woff2'),//пример пути
           url('/path/to/font.woff') format('woff');//пример пути
    }

    2.Есть вариант автоматизации этих процессов. Для этого используйте инструментов сборки и управления зависимостями(например GULP или WEBPACK)
    3.Есть ещё возможность. Внедрение шрифтов через сервисы веб-шрифтов: Некоторые сервисы веб-шрифтов, такие как Google Fonts или Adobe Fonts, предоставляют быстрый и простой способ подключения шрифтов на вашем сайте, предоставляя вам готовый код CSS для вставки на ваш сайт.
    Ответ написан
    4 комментария
  • В чем отличие ngnix от golang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну раз с фронта пересели, то аналогию понять должны: В чëм отличие Google Chrome от JavaScript?
    Ответ написан
    3 комментария
  • Как обрабатывать файл полученный пост запросом правильно?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вероятно вы вообще не изучали тему. Когда на PHP обработчик поступает запрос из браузера в кодировке multipart/form-data, то все полученные файлы автоматически записываются во временную директорию, а ссылки эти файлы добавляются в суперглобальный массив $_FILES.

    Чтобы сохранить файл, надо его из временной директории перенести куда-нибудь в другое место, для этого существует специальная функция move_uploaded_file. Если НЕ использовать данную функцию, то после завершения работы PHP обработчика все полученный файлы из временной директории автоматически будут удалены.

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

    P. S. Я хочу сказать, что при получении файла файл сохраняется на сервере автоматом, пусть и во временную директорию. Это ключевой момент, который вы похоже не поняли. Удаляется он потом тоже автоматом.
    Ответ написан
    Комментировать
  • Не слетит ли windows после обновления Linux?

    Adamos
    @Adamos
    Винда может слететь после обновления Убунты.
    Винда может слететь до обновления Убунты.
    Винда может слететь без обновления Убунты.
    Слеты Винды вообще никак не коррелируют с другими системами.

    Писать заново загрузчик при обновлении Убунте незачем.
    Груб обновит свою конфигурацию - но виндовский загрузчик он обычно находит без проблем, если он не подключен через какие-нибудь железные трюки.
    Кстати, уже пришло время обновиться на 22.04.
    Ответ написан