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

    Stalker_RED
    @Stalker_RED
    php.net/manual/ru/function.array-walk-recursive.php

    array_walk_recursive (&$data, function($val, $key) {
      if ($key === "VALUE") echo $val;
    })
    Ответ написан
    Комментировать
  • Что добавить в счётчик js, который не досчитывает до нужного числа?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Косяков у вас тут целый ворох:
    • Многократные вызовы setInterval - при каждом событии scroll (из-за этого счётчики работают гораздо быстрее, чем запланировано)
    • Общая для всех счётчиков переменная текущего значения (вследствие чего шаг счётчиков вовсе не единица)
    • Неверное условие окончания работы счётчика; или неверное место увеличения текущего значения счётчика - после его перезаписи (отсюда несоответствие заданного и реального максимальных значений счётчиков)
    • После того как все счётчики завершили свою работу вы не прекращаете вызывать count (да, внешне это никак не проявляется, но всё равно - как-то небрежно)


    Как бы мог выглядеть исправленный вариант вашего кода?
    Например, так.

    let intervalId = null;
    
    $(window).on('scroll', function() {
      const scr = $(this).scrollTop();
      const elem = $('.count-wrapper').offset().top;
    
      if (scr > elem - 400 && !intervalId) {
        intervalId = setInterval(count, 10);
      }
    }).scroll();
    
    function count() {
      let countEnd = true;
    
      $('.count span').each(function() {
        const num = $(this).data('num');
        const currNum = $(this).text();
    
        if (currNum < num) {
          $(this).text(+currNum + 1);
          countEnd = false;
        }
      });
    
      if (countEnd) {
        clearInterval(intervalId);
      }
    }

    Ответ написан
    2 комментария
  • Pusher adn Laravel как найти проблему?

    @Kostik_1993
    Web Developer
    Тут у каждого свой шар с помощью которого мы смотрим ваш код. Реально задолбали с такими вопросами. Покажите ваш код. Если что-то секретное то тогда сами мучайтесь. Консоль смотрите. Нет нет у него никаких камней
    Ответ написан
    6 комментариев
  • Блокировки в mysql, есть ли альтернатива?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    не все числа складываются

    Потому что для таких вещей надо как минимум делать
    не так
    update set field = newvalue

    а вот так
    update set field = field + newvalue

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

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Стоит везде выставить utf8mb4_unicode_ci (работает точнее при сортироваках и проч.) или utf8mb4_general_ci (чуть быстрее работает, крайне незначительно, так что имеет смысл именно первый вариант).

    P.S. Указанные выше utf8_general_ci/utf8_unicode_ci поддерживают лишь половину диапазона utf8, отсюда сохранение, например эмодзи, будет физически невозможным.

    P.P.S. Суффикс "ci" означает Case Insensitive (нечувствителность к регистру при поиске и сравнении).
    Ответ написан
    4 комментария
  • Как относится Laravel к Symfony?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Почему в Laravel много компонентов из Symfony? Laravel это форк Symfony?
    Я бы переформулировал немного. В Laravel много компонентов, авторами которых являются авторы Symfony. Видимо, так сложилось, что эти компоненты обладают достаточно высоким качеством или иными положительными качествами, которые разработчики Laravel сочли нужными/важными.

    Laravel это форк Symfony?
    Нет.

    Есть стандартный (аки стандарт) формат переносимого пакета. Такой пакет может использоваться практически в любом приложении (PHP-приложении, в данном случае). А Symfony - фреймворк модульный (а с версии 4 - ещё более модульный). В результате чего, симфони порвали на лоскуты разобрали на пакеты многие проекты/разработчики. Вот собственно, и результат...
    Ответ написан
    6 комментариев
  • Как ускорить mysql запрос с JOIN LEFT?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала - записать запрос понагляднее. В условиях ON записать поля присоединяемой таблицы в левых частях сравнений:
    SELECT * 
      FROM `tbl_1` 
      LEFT JOIN `tbl_2` ON `tbl_2`.`id_fp` = `tbl_1`.`foto_id` AND `tbl_2`.`sklad` = 'Склад' 
      WHERE (deleted="no" AND `where`="arh")  AND (`type`="Cloth" ) 
      ORDER BY `foto_id` ASC 
      LIMIT 9447,20;

    Теперь видно, что для ускорения JOIN'а стоит сделать в таблице `tbl_2` составной индекс (`id_fp`, `sklad`).
    Затем надо смотреть EXPLAIN и, возможно, переносить условия из WHERE в предварительную выборку из `tbl_1`.
    Но, если к одной строке из `tbl_1` присоединяется несколько строки из `tbl_2`, то ORDER BY и LIMIT надо оставить снаружи.
    SELECT * 
      FROM (
        SELECT *
          FROM `tbl_1` 
          WHERE (deleted="no" AND `where`="arh")  AND (`type`="Cloth" ) 
          ORDER BY `foto_id` ASC 
          LIMIT 9447,20
      ) AS `t1`
      LEFT JOIN `tbl_2` ON `tbl_2`.`id_fp` = `t1`.`foto_id` AND `tbl_2`.`sklad` = 'Склад'

    Ну и, напоследок, заменить * на необходимый список полей, чтобы не тянуть из базы лишние данные.
    Ответ написан
    Комментировать
  • Как вызвать trigger('click') у input[type="file"]?

    @kulaeff
    Front-end developer
    Насколько я знаю, если у инпута тип file, то программно вызвать клик на нем не получится из соображений безопасности.
    Ответ написан
    Комментировать
  • Как в примере сложения двух чисел (банального 1 + 1) на физическом уровне работает процессор?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Учить и понимать по-порядку:
    1. Транзисторы и их применение - советский научно-познавательный фильм
    Хороший обучающий ролик ещё времён СССР про работу транзисторов на русском: здесь
    2. Двоичная система счисления
    3. Битовые операции
    4. Диодно-транзисторная логика

    Наглядно:
    Как-то так )
    ios_640_1136_med.png

    Это реализация реплики на Unity вот с этого механического (видео):
    5811602758_93de01bca7_b.jpg
    Ответ написан
    2 комментария
  • Как добавить перенос на новую строку?

    @Mercury13
    Программист на «си с крестами» и не только
    Я добавлю к Александр .
    В отличие от Си, где условие цикла каждый раз вычисляется полностью, в Паскале вторая граница for вычисляется один раз и запоминается.
    Потому длина строки меняется, а мы ходим до самой первой.

    К тому же вы неправильно решаете задачу. Никакой там не одной строкой. В ответе сервера концы строк LF, а надо CR+LF. Вот функция (крайне неоптимизированная), которая приводит концы строк к единому виду независимо от того, какие там стоят.
    function NormalizeEol(const s : string) : string;
    begin
      Result := StringReplace(s, #13#10, #10, [rfReplaceAll]);
      Result := StringReplace(Result, #13, #10, [rfReplaceAll]);
      Result := StringReplace(Result, #10, #13#10, [rfReplaceAll]);
    end;
    Ответ написан
    Комментировать
  • Какой алгоритм подойдет для описания полета насекомого?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Можно сделать цепочку преследования: к случайной точке тянется одна, к ней другая, и т.д., а последняя – муха.

    Очередную точку ставить на плоскости случайно, в любом месте внутри допустимой области. Эта точка – цель, к которой стремится следующая, невидимая точка: каждый следующий кадр её координаты изменяются на k * векторИзТекущегоПоложения-в-Цель:
    x = x + k * (xTarget - x);
    y = y + k * (yTarget - y);

    Так «преследователь» замедляется, по мере приближения к цели, никогда её не достигая.

    Эта невидимая точка – не одна. К ней, как к цели, стремится следующая. К той ещё одна. Наконец, сама муха по этому закону стремится к хвосту этой цепи - очередной точке.

    Чем больше звеньев в такой цепи, тем плавнее получается кривая. При приближении мухи к цели ближе, чем на D, генерится следующая случайная цель.

    Сделал рабочий пример.

    Можно поменять алгоритм и сделать, скажем, линейную скорость постоянной. Или случайно варьировать параметры k и D – от этого поменяется скорость и траектория от плавной ближе к ломаной.
    Ответ написан
    Комментировать
  • Как подсвечивать магические классы в Phpstrom?

    Можно если руками каждый метод описывать.

    /**
     * Class A
     *
     * @method get_post (string $url)
     */
    class A
    {
    }

    Если это статический метод, то писать так @method static get_post (string $url)

    Если нужна цепочка вызова, то там нужно писать так @method $this get_post (string $url = '') (Если возвращается класс, то $this заменить на название класса)

    9bd90f384757456e942f4740d11dd347.png
    или
    19616338ee92491a851b55003bea731d.png
    Ответ написан
    1 комментарий
  • Test laravel framework?

    mr_T
    @mr_T
    Web-разработчик
    $this->belongsToMany(Categories::class, 'category_post','category_id','post_id');


    Во вторым аргументе указывается название таблицы связи. Или вы неправильно её написали в методе, или в вопросе (category_post или post_categories?). А последние 2 аргумента можно вообще опустить - ларавел сам додумается в данном случае (то есть просто возьмёт название класса + '_id').

    public function category() { ... }

    Стоит назвать categories, а то потом сами запутаетесь. Связь же многие-ко-многим, а название метода в ед. числе.
    В остальном связи правильно прописаны.

    А вот в контроллере проблема - метод findOrNew нужен не для того, чтобы в зависимости от наличия аргумента отдавать новую или существующую запись. Его задача в том, чтобы попытаться найти запись с переданным ID, и если найти таковую не удалось - вернуть свежий экземпляр. То есть совершенно логично, что он ругается на отсутствующий аргумент, так как он ему необходим для работы :)

    Ещё момент - вы пытаетесь вызвать sync, хотя на момент вызова пост ещё может быть не создан. По причине того, что у свежесозданной записи ещё нет идентификатора, sync, очевидно, тоже упадёт с ошибкой, то есть предварительно нужно вызвать $post->save(). А ещё лучше saveOrFail(), который сразу кинет исключение, если не удалось сохранить запись.

    Ну и Александр тут уже написал, что хорошая мысль разделить на 2 метода создание и редактирование элемента. По остальным вопросам, как, опять же, уже упоминалось, нужно читать документацию. У ларавел она очень понятная и хорошо структурированная (хотя и многого не охватывает, но для начала вполне достаточно информации).
    Ответ написан
    Комментировать
  • Как заставить функцию change поверить что было изменение в поле?

    uDenX
    @uDenX
    PHP Developer
    Можно вызывать нужный триггер
    Ответ написан
    Комментировать
  • Как понять циклический алгоритм очереди?

    15432
    @15432
    Системный программист ^_^
    Пусть это ваша очередь:
    --++++---
    (Плюсы где занято)
    putloc - индекс места в массиве, куда кладутся данные (последнее место куда положили плюс, самый правый), getloc - откуда плюсы забирают (самый левый плюс)
    --[++++]---
    Так как очередь циклическая, правая граница плюсов может догнать левую
    ++][+++++++
    это и проверяется (putloc+1 = getloc)
    Ну и если граница ровно на конце массива, нужно второе условие проверки
    [+++++++++]
    Ответ написан
    1 комментарий
  • Как убрать регистрацию в woocommerce и все сопутствующие выводимые сообщения?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Включите гостевой чекаут
    WooCommerce - Settings - Checkout - Checkout Options - Checkout Process
    - поставьте галочку Enable guest checkout

    2. Отключите регистрацию
    WooCommerce - Settings - Accounts - Enable Registration
    - снимите обе галочки
    Enable registration on the "Checkout" page
    Enable registration on the "My Account" page

    3. Там же отключите напоминание о входе
    WooCommerce - Settings - Accounts - Login
    - снимите галочку
    Display returning customer login reminder on the "Checkout" page
    Ответ написан
    Комментировать
  • Правильно ли составлено регулярное выражение на PHP?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    • Делать символьные классы из одного символа совершенно излишне. С другой стороны, тогда вам придётся экранировать специальные символы (скобки, плюс). Такая запись (с экранированием) более привычна тем, кто знаком с регулярками, но может быть сложнее для новичков. Однако, я всё же рекомендую привыкать к обратным слэшам - скоро вы перестанете их замечать.
    • Символьный класс [0-9] можно заменить на сокращение \d. На мой взгляд, так выглядит чище.
    • Если уж ставите ограничение на конец строки ($), то и начало (^) стоит поставить.
    • Учитывая, что у вас в строке вообще нет букв, ни к чему добавлять модификатор i

    Результат:
    /^\+380\(\d{2}\)\d{3}-\d{2}-\d{2}$/
    Ответ написан
    Комментировать
  • Как получить изображение максимально малого объёма для микроконтроллеров?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Для максимального сжатия изображений используют палитровую графику. Суть в том, чтобы в пиксельной матрице изображения заменить тяжелую информацию о цвете на значительно более легкий индекс цвета в некоторой цветовой палитре.

    Для картинки считается количество уникальных цветов, потом все уникальные цвета складываются в палитру и индексируются, а матрица цветов заменяется на матрицу индексов цветов.
    Число цветов в палитре принято делать от степени двойки, чаще всего встречаются палитры в 256 цветов. В этом случае размер индекса цвета в матрице занимает 1 байт. 16 цветов в палитре - индекс уже 4 байта. и.т.д.
    Прозрачность в этом случае неудобств не доставляет, т.к. в палитре можно спокойно хранить цвет в формате RGBA.

    Когда число цветов нужно вписать в некоторые рамки, для этого применяют разные алгоритмы так называемого dithering.
    Ответ написан
    Комментировать