• У меня не правильный код?

    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) {
    Ответ написан
    Комментировать
  • Как объединись значения из двух массивов в один?

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

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

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

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Тривиальный вариант - пройти циклом по массиву, запоминая элемент с максимальным значением perc.
    Извратный вариант - сортировать массив по возрастанию perc, взять последний элемент.
    Ответ написан
    Комментировать
  • Оптимизируется ли UPDATE, если значения полей на самом деле не меняются?

    Melkij
    @Melkij
    PostgreSQL DBA
    В postgresql создаётся физически новая версия строки при update (с обновлением всех индексов либо hot update если применимо) даже если ни одно поле не меняет своё действительное значение. Есть встроенный триггер suppress_redundant_updates_trigger, который можно повесить на таблицу, тогда ничего действительно не меняющий в данных update будет пропускаться.

    Если меняется хотя бы одно значение - оптимизации не подлежит, должна быть записана новая версия строки в таблицу (чтобы MVCC обеспечить). Если возможно, оптимизация HOT update исключит сопутствующее обновление индексов.
    Ответ написан
    9 комментариев
  • Какой приоритет у оператора => определения элемента массива?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Приоритета нет, поскольку это не оператор, а языковая конструкция key => value.
    Каждый из элементов конструкции вычисляется отдельно.
    Ответ написан
  • Почему в запросе по длине строки её надо умножать на 2?

    Lynn
    @Lynn
    nginx, js, css
    Использовать CHAR_LENGTH.

    Потому что LENGTH считает байты, а не символы, а в UTF-8 русские буквы занимают два байта.
    Ответ написан
    5 комментариев
  • Как повысить уровень создания проектов на чистом php?

    kawabanga
    @kawabanga
    Тем не менее сейчас я столкнулся с тем, что на собеседованиях начинают спрашивать что серьезного доводилось делать на чистом php - без фреймворков и мои ответы на их вопросы касательно парсеров, скиптов для обмена данными остаются неубедительными. Даже дальше кадровиков иногда дело не уходит.


    Вы неубедительны. Парировать надо. Ну найдите разраба, который в угоду своему ЭГО, будет писать проект на чистом php, который в будущем сможет поддерживать только он.

    Еще спрашивюат какие патерные проектирования используешь, придерживаешься ли принципов Solid?

    Вы недостаточно сильны в этом вопросе, SOLID опять же не про фреймворки.

    А сейчас я не только ради прохождения собеседований, но и ради повышения скилла хотел бы углублённо погрузиться в написание кода без фреймворков. Но как к этому подойти? Не писать .же бложег или интернет-магазин на чистом php?

    Зачем вам это? Изучать как работает PHP и смежные вещи - одно. Писать пет проекты чтобы закинуть их в ящик - другое.

    Может начать с изучения PSR

    Нужно, сразу после того, как вы начнете понимать php.

    от него начать писат простой psr фреймворк как это делал Дмитрий Елисеев?

    А что это вам даст?

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

    А при чем тут симфони и вопросы школьников?

    Короче расскажите мне про роудмеп погружения в php. Теорию я и так знаю - книги по php читал.

    Сначала начните с того, как искать в гугле. Полезный навык, помогает.
    https://github.com/thecodeholic/php-developer-roadmap
    Ответ написан
    3 комментария
  • Как получить максимальное значение ключа в JSON?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Развернуть JSON в таблицу через JSON_TABLE().
    Потом обнаружить, что запрос работает медленно, найти того, кто записал активно используемые поля в JSON и заставить его переделать на нормальную таблицу.
    Ответ написан
    4 комментария
  • Почему запрос возвращает ошибку 500?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как только люди не извращаются, лишь бы SQL не изучать. А ведь достаточно сделать уникальный ключ по `word` и использовать запрос INSERT IGNORE.
    Перед подключением к базе разрешить выброс исключений, вместо ручной проверки ошибок:
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    В начале скрипта включить отображение ошибок PHP:
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    Ну и использовать подготовленные выражения. Готовить один раз перед циклом, а в цикле только вызывать с разными значениями параметров.
    Ответ написан
    2 комментария
  • Фильтрация по строковому значению?

    Newto
    @Newto
    $a = ["group.phantom", "group.god", "group.imperator", "group.general", "group.hermit", "group.soldier"];
    
    
    $b = [
       [
          "permission" => "group.default" 
       ],
       [
          "permission" => "group.phantom" 
       ], 
       [
          "permission" => "group.hermit" 
       ],
       [
          "permission" => "group.imperator"
       ],
       [
          "permission" => "group.god" 
       ],
    ];
    
    
    function getItem($a, $b) {
    
    	foreach ($a as $item) {
    		
    		foreach ($b as $data_arr => $data) {
    			
    			if ($item == $data['permission'])  return $item;
    		}
    	}
    }
    
    print getItem($a, $b);
    Ответ написан
    Комментировать
  • Ошибка Allowed memory size of 4294967296 bytes exhausted (tried to allocate 81920 bytes)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Исправить скрипт, чтобы ему для работы не требовалось 4 Gb оперативки.
    Ответ написан
    1 комментарий
  • Есть ли возможность в mysql вывести инфу из присоединенной таблицы в виде вложенного массива?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Вы можете использовать JSON_ARRAYAGG и JSON_OBJECT :

    SELECT cat.id, cat.name, JSON_ARRAYAGG(
      JSON_OBJECT('pro_name',pro.name,'pro_pice',pro.price)
    ) prod
    FROM products as pro
    JOIN categories as cat on pro.cat_id = cat.id
    GROUP BY cat.id, cat.name
    ORDER BY cat.id;


    MySQL JSON aggregate
    Ответ написан
    Комментировать
  • Как достучаться до докер контейнера из браузера?

    @Kostik_1993
    Web Developer
    Для того чтобы из браузера или другой программы попасть в контейнер нужно пробросить порт.
    postgres:
        ports:
          - 5432:5432
        networks:
          - app-network

    Но в вашем случае вам нужно из одного обратиться к другому. Судя по всему вы хотите сделать коннект к БД из вашего приложения, но у вас указан localhost. Нужно прописать postgres вместо него
    Ответ написан
    Комментировать
  • В чем отличие ngnix от golang?

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

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    У Вас ошибка в запросе!

    UPDATE winka SET losse = losse + 1 WHERE user_id = 1;
    
    UPDATE winka SET win = win + 1 WHERE user_id = 1;


    https://sqlize.online/sql/sqlite3/3add68409fbe493d...
    Ответ написан
    Комментировать
  • Как перевести изображения на разные языки?

    Adamos
    @Adamos
    То есть исходники есть как в JPG/PNG так и в формате CDR

    "То есть" ничего не объясняет. Это наложение текста сделано в Кореле или просто какой-то чудак импортировал в него фотки?
    Во втором случае это совершенно бессмысленная информация.
    В первом - с проприетарным кореловским форматом, насколько мне известно, возился только sk1. Но вроде бы достаточно успешно возился, вплоть до того, что на его базе сделаны такие, например, инструменты: https://convertio.co/ru/cdr-sk1/
    Если в файлах таки есть текстовый слой и его можно будет сконвертировать во что-то открытое - останется работа с текстом и замена его в открытом формате.

    P.S. Просто в SVG может не быть возможности пустить текст по кривой, и экспорт в него раздербанит тексты по буковке. А в EPS, например, таки есть.
    Ответ написан
    2 комментария
  • Как исправить ошибку авторизации?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    У вас всегда срабатывает header('Location: avt.php');. Соответственно, происходит переход на GET avt.php, в POST ничего нет, выдаются предупреждения об отсутствии индексов login и password. А, поскольку в выходной поток уже что-то передано, заголовки больше не принимаются и header("Location: $script"); также выдаёт предупреждение.
    Первое: переход должен быть не на avt.php, а на registration.html
    Второе: if (! $_SESSION['admin']); смысла не имеет из-за точки с запятой в конце.
    Ответ написан
    1 комментарий
  • Как исправить ошибку mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Плейсхолдером можно подставить только параметр, вы же пытаетесь использовать его как подстановку содержимого строки.
    - $sql = $conn->prepare("select * from post_comment where body like '%?%'");
    + $sql = $conn->prepare("select * from post_comment where body like CONCAT('%', ?, '%')");
    Ответ написан
    3 комментария
  • Как хранятся индексы в postgresql и mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Прочитал, что в mysql в движке innodb индексы делятся на два больших типа - первичный и вторичный

    Понятия первичного и вторичного индексов никак не связаны с СУБД. И это не типы индексов по большому счёту. Просто первичный - однозначно идентифицирует запись (что определяется ограничениями на значение выражения и используемых в нём полей), тогда как вторичный - всего лишь может использоваться для однозначной идентификации, но лишь при условии, что он отвечает всем требованиям-ограничениям для первичного.

    В InnoDB - всего лишь есть дополнение, что при наличии первичного индекса он является также и кластерным. Для других движков и других СУБД такой зависимости может и не быть.

    кластеризованный, как написано хранится с данными

    Не-а. Кластерный индекс - это когда записи в теле таблицы (т.е. сами данные таблицы) хранятся в порядке сортировки по выражению этого кластерного индекса.

    Всегда ли не кластиризованные индексы хранятся в оперативной памяти или это как-то можно регулировать?

    Индексы всегда хранятся на диске. В оперативной памяти индексы могут всего лишь кэшироваться. Для ускорения доступа.

    Я слышал что индексы должны быть в пределах мегабайт, а не гигабайт.

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

    Читал, что бывает так, что индекс в таблице индекса хранит сразу данные определенных столбцов, а не ссылки на эти строки в основной таблице.

    Вероятно, речь про INCLUDE-предложение в структуре индекса, имеющееся, например, в SQL Server... т.е. значения полей хранятся в выражении индекса как дополнительные данные, и не используются при сортировке.
    Ответ написан
    Комментировать