• Как подружить пагинацию и фильтрацию?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    после получения из гет номера страницы, ансетим пэйдж в гет, после чего в пэйджинге прибавляем
    <a class="page" href="?page=2&<?=http_build_query($_GET)?>">2</a>
    Ответ написан
    9 комментариев
  • Чем отличаются миграции от доктрины?

    Ninazu
    @Ninazu
    Миграции - это последовательность модифицирующих запросов к базе.
    Доктрина - это ORM, способ работы с реляционными данными через обьекты.

    P.S. Не рекоммендую делать миграции на базе ORM. Представим сценарий миграции
    1. Создать таблицу пользователей
    2. Переименовать таблицу пользователей в клиентов
    3. Добавить столбец с таблицу клиентов.

    ORM представляет из себя проекцию текущего состояния структуры базы. Поэтому повторить миграции на другом базе, состояние которой находится на первом этапе не получится, так как маппинг кода будет ссылатся на третий шаг
    Ответ написан
  • Есть ли смысл учить jquery?

    profesor08
    @profesor08 Куратор тега JavaScript
    Нечего там учить
    $(selector).css({});
    $(selector).each(el => void);
    $(selector).on("click", event => void);
    Ответ написан
    Комментировать
  • Есть ли смысл учить jquery?

    DevMan
    @DevMan
    что там учить? это же не отдельный яп.
    осилить его на базовом уровне можно совершенно спокойно за несколько часов/дней, если не совсем нуб.
    Ответ написан
    Комментировать
  • Как подсчитать кол-во единиц в числах от 0 до N?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Создавать массив длиной в N может быть «дорого» – займёт память. Поэтому для метода «в лоб» предложу простой цикл с циклом для поиска «1» в каждом кандидате:
    const sumone = n => {
      let sum = 0;
      for (let i=n; i>0; i--) {
        const numstr = i.toString(10);
        for (let j=0, len = numstr.length; j<len; j++)
          if (numstr[j] == '1') sum++;
      }
      return sum;
    }

    Но можно подумать над формулой вычисления без перебора. Или частично сократить перебор. Например, для чисел, состоящих из одних «9» искомое число единиц в ряде вычисляется как функция числа цифр: d * 10^(d-1) Вот так:
    9 .. 1 = 1 * 10^0
    99 .. 20 = 2 * 10^1
    999 .. 300 = 3 * 10^2
    9999 .. 4000 = 4 * 10^3
    99999 .. 50000 = 5 * 10^4

    Например, для числа 12345 можно мгновенно получить сумму для 9999 и начать перебирать с 10000 до 12345. Это тоже можно упростить: отбросим первую единицу, она есть каждый раз, и остаётся то же, что от 0000 до 2345 + 2346 единиц.
    0..2345 в свою очередь опять сокращается: сразу известно 0..999, остаётся от 1000 до 2345.
    1000 .. 1999 опять упрощаем отбрасыванием первой единицы: на 999 приходится 300 единиц плюс 1000 первых единиц. Остаётся 2000 .. 2345. Тут можно отбросить двойку и посчитать только 0..345. Снова уходит 0..99. и т.д

    Надо будет ещё подумать над формулой..
    Ответ написан
    Комментировать
  • Как бы вы поступили?

    @orbit070
    Проект имеет большой потенциал, вероятность того, что он стрельнет - 90%

    Так думает каждый человек, который пилит какой-то проект. Выстреливают 2-5%. Просто статистика.

    В данной нише крутятся немалые деньги, и проект мог бы "убить" некоторых гигантов в крупной сфере (разумеется, если правильно и эффективно раскручивать, дорабатывать и продвигать).

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

    1. Запускать в одиночку, бороться со всеми проблемами на лету

    Поначалу многим кажется, что можно в одиночку тянуть проект, но к сожалению это не так. Я скажу больше: даже элементарно роль разработчика в одиночку не всегда можно тянуть, а вы хотите быть одновременно разработчиком/тестировщиком/админом/маркетологом/менеджером/управленцеми/бухгалтером/юристом/и т.д. Если бы такая формула работала, то в компаниях вместо 15-и зарплат всем этим людям, платили бы одному умельцу, но даже если такой умелец существует, который прожил три жизни и вобрал в себя все эти знания и умения, то все равно ничего не выйдет, ведь в сутках всего 24 часа. В общем это невозможно, как бы вам этого ни хотелось. Я понимаю, что соблазн велик и делить с кем-то потенциально жирный кусок мяса не хочется(делить, потому что денег у вас я как понял нет, значит придется отдавать долю в проекте), но у вас выбора почти нет. История знает единицы случаев, когда кто-то в одиночку запускал успешный бизнес в интернет-пространстве. Просто изучите историю и поймете - почти за всеми известными цифровыми продуктами стоят команды, потому что физически в одиночку это почти невозможно. Я готов руку на отсечение отдать, что если это будет работающий продукт, вы даже роль разработчика собой не закроете, не говоря уже об остальном, потому что там работы не на одного человека. Если вы думаете что админить, девопсить, тестировать, багфиксить, внедрять новый функционал и тд можно в одиночку, то вы очень сильно заблуждаетесь.

    Итого: нужно найти в себе силы и снять розовые очки. Сделали проект - хорошо. Теперь пойдите и найдите 50 человек, которые скажут, что продукт им может быть полезен. Как только они скажут "круто я бы пользовался" - скажите отлично, вот мой сайт, пользуйся. Так вот если из этих 50и человек хотя бы 3 человека заплатят деньги - то поздравляю, вы создали действительно что-то полезное, и польза продукта подтверждена. Теперь берете пару сотен долларов и ищете наиболее дешевые каналы привлечения клиентов - пробуете разные виды рекламы. Если на двести долларов привлекли например 10 платящих клиентов, то один клиент вам обошелся в 20 долларов. При этом например ваш продукт(для примера) стоит 25 долларов, получается экономика сходится - потратили 20 получили 25. Любой инвестор с удовольствием рассмотрит ваш проект и с большой долей вероятности даст денег. Удачи
    Ответ написан
    Комментировать
  • Перебрать массив?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    var arr = [12, '+', 13, '/', 5];
    var result = eval(arr.join(''));
    console.log(result);

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

    whillson
    @whillson
    помогу, чем смогу ^_^
    Пользуюсь и рекомендую Вам trello.
    Сама по себе канбан доска очень удобна.
    В trello вы можете создавать доски под свои нужды, начиная с работы, жизни, покупок, финансов и так далее.
    Проставляйте себе нужные теги, добавляйте колонки с описанием процессов. Этот сервис очень вам поможет, если вы вникните в суть.
    Ответ написан
    4 комментария
  • Программное решение для упорядочивания жизни?

    Robur
    @Robur
    Знаю больше чем это необходимо
    часть информации в итоге забывается

    Нужно забывать больше - все то о чем вы не можете сказать как именно и когда собираетесь это применить.

    а жизнь кажется хаотичной,

    Потому что у вас каша в голове из всей той ненужной информации которую вы туда пытаетесь запихнуть.

    Тоже когда-то искал средство "упорядочить всю эту информацию" пока не понял два момента:
    1) "потенциально полезной" информации в мире предельно много, не хватит тысяч лет чтобы это просто прочитать. Каждую секунду создается еще больше.
    2) знание этой информации никак не меняет мою жизнь к лучшему, а попытки её узнать и запомнить - вполне конкретно ухудшают.

    Учитесь фильтровать по принципу "а как я собираюсь это применить?". не "вообще" а именно я, именно её и в какие конкретно даты?
    Останется только действительно нужное и вот это вы уже сможете упорядочить.
    Ответ написан
    6 комментариев
  • Я начинающий и в процессе работы у меня довольно часто происходят ошибки в коде, это бесит, буквально каждую минуту косячу и туплю, как быть?

    sim3x
    @sim3x
    Постоянно гуглю ошибки, лезу в документацию
    похвально

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

    Когда это закончится?
    никогда

    Сколько лет пройдёт
    Пройдет после смерти
    А если у вас будет много кода, которым пользуются, то и смерть не будет гарантировать ничего

    Чтоб ты всё понимал, что происходит и вообще ошибок не было никогда
    недостижимо

    Замечу, что ошибки должны со временем меняться и ошибки, которые вы допускаете сейчас через год у вас не должны появляться
    Вам нужен опыт и наработка памяти на стандартные конструкции
    Ответ написан
    Комментировать
  • Как получить свойство из строки PHP?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Ответ написан
    Комментировать
  • Помощь в решении проблемы с ключами массива php?

    Compolomus
    @Compolomus Куратор тега PHP
    Комполом-быдлокодер
    https://www.php.net/manual/ru/function.array-combi...

    Я похожую задачу решал при парсинге csv
    Ответ написан
    Комментировать
  • Как узнать, что ajax-запрос точно пришёл с моего сайта, а не кто-то пытается сам его вызвать со своей машины?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Гарантированно - никак. С помощью того же cURL можно полностью имитировать работу браузера с вашим сайтом.
    Ответ написан
    Комментировать
  • Какой поисковый алгоритм использовать для качественного поиска из БД?

    @PapaStifflera
    Родился, вырос...
    Не нужны тут алгоритмы. Все уже есть готовое.
    Вариант раз: https://dev.mysql.com/doc/refman/8.0/en/fulltext-s...
    Вариант два: sphinxsearch.com

    Первый нативный, но не очень производительный.
    Второй сложнее в реализации, но быстрее.
    Есть еще варианты, можете сами поискать. ElasticSearch, например.
    Ответ написан
    Комментировать
  • Как освободить занятое машиной VirtualBox место?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Нужно выполнить шаги этой инструкции

    1. Забить пустое место нулями при помощи dd if=/dev/zero of=~/zeros bs=4M status=progress
    2. Выполнить VBoxManage.exe modifymedium disk "C:\path\to\disk.vdi" --compact для выбрасывания нулей.
    Ответ написан
    3 комментария
  • Почему приходят порой пустые заявки?

    ivan_zhuck
    @ivan_zhuck
    Валидация должна быть не только на фронте, но и на беке. Поскольку POST запрос можно отправить не только через форму, но и напрямую, обратившить по адресу обработчика формы. Отправлять такой запрос могут спам-роботы, ушлые пользователи, которые ищут уязвимости и т.д. В самом примитивном случае можно сделать так:

    $name = !empty($_POST['name'])?$_POST['name']:false;
    $phone = !empty($_POST['phone'])?$_POST['phone']:false;
    
    if($name and $phone){
          //тут отправляем форму
    }else{
         //тут сообщаем об ошибке
    }


    В не примитивном случае, должна быть более строгая валидация и в клиентской части приложения и в серверной. Например: в имени могу быть только буквы,пробелы и дефисы, а строка номера телефона после очистки от прочих символов должна содержать 10 числел. Сама форма должна быть защищена от CSRF, XSS и прочих типовых уязвимостей. Если форма публичная (например форма контактов, как в вашем случае) должен присутствовать механизм от защиты отправки формы ботами, например reCAPTCHA.
    Ответ написан
    Комментировать
  • Как заполнить массив текстовыми значениями: 0001, 0002, ..., 9999?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Функция str_pad дополняет входную строку до нужной длины любым символом, слева и/или справа.

    Этого достаточно для решения поставленной задачи.

    $resultArray = [];
    
    for ($i = 1; $i <= 9999; $i++) {
      $resultArray[] = str_pad($i, 4, '0', STR_PAD_LEFT);
    }
    
    var_dump($resultArray);


    пояснение функции
    str_pad(
      $i,           // текущее число (оно будет приведено к строке автоматически)
      4,            // дополнить до 4-х символов
      '0',          // нулями
      STR_PAD_LEFT  // слева
    )


    С циклом, надеюсь, знакомы.
    Ответ написан
    6 комментариев