Задать вопрос
  • Нужен ли большой монитор для разработки?

    @Drno
    Каждый работает так как ему удобно, вот и всё
    Ответ написан
    Комментировать
  • Почему 0,5 округляется до чётного числа?

    Это банковское округление называется.
    Нужно оно для повышения точности при обработке большого количества околослучайных чисел (когда количество чётных и нечётных +0.5 примерно равно)

    Если тебе такое поведение не нужно, то тогда просто передавай третий аргумент - там можно выбрать, как стоит округлять в такой ситуации.
    Ответ написан
    1 комментарий
  • Почему не работает код?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Потому что len_pass_numbers.lower() (и прочие) возвращает вам строку 'да', а вы сравниваете с 'Да'.
    Соответственно ваш "алфавит" - chars - пустой.

    Ну и, вероятно, удобнее пользоваться встроенными коллекциями, чем вручную набивать:
    from string import digits, ascii_lowercase, ascii_uppercase, punctuation
    Ответ написан
    3 комментария
  • Как передать параметр из события?

    IvanU7n
    @IvanU7n
    nothing interesting here
    объявление хоть и считается "old-fashioned", но должно работать (ПС2), использование нормальное, но я бы сделал современный вариант:
    var rMyEvent = new CustomEvent('appTabsGroupOpen', { detail: { rElem: 'DDDDD', }, });
    document.dispatchEvent(rMyEvent);

    а вот jQuery не факт, что работает с событиями из первого блока, т.е. работающим вариантом должно быть
    document.addEventListener('appTabsGroupOpen', e => { console.log('Событие ' + e.detail.rElem); });


    ПС. ловить событие стоит после добавления обработчика, до этого они уйдут в никуда
    ПС2. да, с имеющим кодом обращение должно быть e.detail.detail.rElem
    Ответ написан
    4 комментария
  • Как передать параметр из события?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    rMyEvent.initCustomEvent( 'appTabsGroupOpen', false, false, { rElem: 'DDDDD' });
    то что посылается последним аргументом, это и есть event.detail

    Ну а правильнее конечно делать так:
    new CustomEvent("appTabsGroupOpen", {
      detail: {
        rElem: 'DDDDD',
      },
    });
    Ответ написан
    2 комментария
  • Как удалить запись в таблице MySQL по трём параметрам?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы правильно удалить запись в таблице по трём параметрам, надо указать все три параметра в условии WHERE
    DELETE FROM table_name WHERE col_1=val_1 AND col_2=val_2 AND col_3=val_3


    Не два, не пять, не десять, а ровно три параметра.
    Ответ написан
    Комментировать
  • Как заблокировать пользователей мобильных устройств через .htaccess?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Во-первых, не обязательно пытаться пользоваться программой с мобильного устройства, можно с ней ознакомиться, и скачать. Не приходило в голову?

    Во-вторых, блокировать ботов через правила .htaccess - это как стрелять по воробьям зубочистками из карманного арбалета. Можно, но какой смысл?

    В-третьих, среди этих ботов и поисковые боты будут попадаться. Ну, тут вообще без комментириев.

    P.S. Капча именно на скачивание программы защитит от "простейших" скриптов.
    Ответ написан
    1 комментарий
  • Как реализовать эффект печатающегося текста?

    0xD34F
    @0xD34F Куратор тега React
    Состояние компонента должно содержать три значения - индекс печатаемой строки, количество отображаемых символов, направление печати (печатаем или стираем, т.е., в какую сторону надо изменять количество отображаемых символов, увеличивать или уменьшать). Дальше понятно что - setInterval или рекурсивный setTimeout, изменяем количество отображаемых символов, если дошли до конца строки - меняем направление, дошли до начала - меняем направление и индекс строки. Вот как-то так:

    const defaults = {
      index: 0,
      length: 0,
      step: 1,
    };
    
    function Typewriter({ strings, delay }) {
      const [ state, setState ] = useState(null);
    
      useEffect(() => {
        setState(() => ({...defaults}));
      }, [ strings ]);
    
      useEffect(() => {
        const timeoutId = setTimeout(setState, delay, ({...state}) => {
          state.length += state.step;
          if (state.length === strings[state.index].length) {
            state.step = -1;
          } else if (state.length === 0) {
            state.step = 1;
            state.index = (state.index + 1) % strings.length;
          }
          return state;
        });
    
        return () => clearTimeout(timeoutId);
      });
    
      return <div>{strings?.[state?.index]?.slice(0, state?.length)}</div>;
    }
    Ответ написан
    8 комментариев
  • Почему код не может записать в БД определённое строковое значение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ошибка, скорее всего, возникает из-за символов в $description, не попадающих в кодировку поля `description`. Такой эффект, например, дают новые эмодзи, требующие utf8mb4.
    Также стоит включить режим выброса исключений для всех ошибок Mysqli, перейти на драйвер mysqlnd, если ещё не сделали этого, и использовать подготовленные выражения.
    Рекомендую прочитать статью: https://habr.com/ru/articles/662523/
    Ответ написан
    Комментировать
  • Как заполнить форму налогоплательщика?

    ZERGE
    @ZERGE
    спрашивай у местних бухгалтеров
    Ответ написан
    1 комментарий
  • Как составить сложную выборку из двух таблиц?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT address, 
           office, 
           t1.fio, 
           t2.counter, 
           CASE t2.counter
               WHEN 'counter1' THEN t1.counter1
               WHEN 'counter2' THEN t1.counter2
               WHEN 'counter3' THEN t1.counter3
               END value,
           t2.num,
           t1.date       
    FROM table1 t1
    JOIN table2 t2 USING (address, office)
    Ответ написан
    2 комментария
  • Персональный гугл, если ли?

    Daemon23RUS
    @Daemon23RUS
    Краулер, который ходит по интернетам и ищет сам, то о чём я его попросил

    Боюсь, что ответ Вашего частного поисковика придется долго ждать. Обратимся к цифрам: сейчас порядка 2 млрд. сайтов ( обратите внимание на то что это сайты, а не страницы, коих на многих сайтах десятки, сотни, тысячи а на части на порядки больше) предположим, что ваш краулер пожирает сайты по 10 шт в секунду (со всеми страницами), так вот ждать ответа придется лет 7.
    И это мы опустили трафик, который сожрет краулер. А там все за гранью не то что домашнего сервера, а не все страны потребляют такой объем.
    P.S. Тут вопрос не в алгоритмах или коде, вопрос в объеме "перевариваемой" информации
    Ответ написан
    3 комментария
  • Как сделать скрипт для вывода массива json форматом?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Делать самостоятельную генерацию json - категорически не правильное решение.
    Вы по любому где-нибудь пропустите экранирование и получите на выходе невалидную структуру.
    Тем более что для абсолютно любого парсера json все эти переносы строк и пробелы не значимы, поэтому я в принципе не понимаю зачем вы хотите это сделать.

    PS
    Если уж очень хочется - можно наколхозить что-нибудь типа
    echo '[' . PHP_EOL;
    $count = count($data);
    $i = 0;
    foreach ($data as $item) {
       $i++;
       echo '    ' . json_encode($item, JSON_UNESCAPED_UNICODE) . ($i < $count ? ',' : '') . PHP_EOL;
    }
    echo ']';

    Но повторюсь, это плохое решение как с точки зрения производительности, так и вообще.
    Ответ написан
    Комментировать
  • Если ли PHP-библиотека для конвертации HTML c CSS Grid в PDF?

    dyuriev
    @dyuriev
    A posteriori
    shell_exec + chromium с флагами headless disable-gpu и print-to-pdf отрисует вам что угодно, что может отобразить chrome.
    у решения есть изъян - на большинстве хостингов даже не пытайтесь запустить, себе дороже, только виртуальные/физические сервера подходят идеально.

    https://github.com/chrome-php/chrome - примерно так
    Ответ написан
    3 комментария
  • Как сделать так, чтобы prettier не переносил каждый метод на новую строчку в JS?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Prettier использует определенную логику для определения ситуаций, когда такие вещи должны быть разделены. Ее нельзя выключить. Этот инструмент в целом имеет очень мало настроек, он изначально очень строгий и нацелен на то, чтобы навязать свой стиль форматирования везде. В этом его философия. Не нужно спорить, как лучше форматировать. Робот все решит за нас.

    Можно игнорировать какие-то конкретные штуки с помощью комментария // prettier-ignore. Но нужно ли?
    Ответ написан
    1 комментарий
  • Возможна ли sql инъекция?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Возможна.

    Почему не стоит использовать mysql_escape_string
    https://www.php.net/mysql_escape_string
    Warning
    This function was deprecated in PHP 4.3.0


    https://www.gosecure.it/blog/art/483/sec/mysql_esc...

    Не хотите SQL-инъекций используйте подготовленные выражения (prepared statements)
    https://www.php.net/manual/en/mysqli.quickstart.pr...

    а был бы с нами FanatPHP он бы ещё дал ссылку почитать https://phpfaq.ru/mysql/slashes
    Ответ написан
    1 комментарий
  • Почему выходит ошибка Each child in a list should have a unique "key" prop?

    Alexandroppolus
    @Alexandroppolus
    кодир
    key надо выставлять не для Crumb, а для фрагмента:
    <React.Fragment key={...}>
        {idx >= 1 && <div> / </div>}
        <Crumb path={crumb.path} title={crumb.title} style={styles.crumbs} />
    </React.Fragment>


    ну и Math.random() для key - худшее, что ты мог придумать. Наверняка у crumb есть какой-нибудь id, вот его и надо использовать. Или, например, path, title, - что-то из них ведь уникальное, не повторяется в массиве crumbs?
    на крайний случай можно idx
    Ответ написан
    8 комментариев
  • На сколько сложно создать офлайн генератор иконок?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Самостоятельно создать - крайне сложно.
    За деньги нанять - легко, но придется выложиться крупно.

    Гораздо выгоднее будет просто купить подписку на freepik
    Ответ написан
    Комментировать
  • Где можно найти бумажную версию книги "C.Petzold - Programming Windows 5th edition"?

    @alexalexes
    С e-bay через посредников заказывать не вариант, т.к. за доставку берут слишком много.

    Добро пожаловать в СССР. Именно так и доставать. Книга не для массового рынка.
    Либо использовать PDF: просто читать с электронной книжки, либо напечатать на принтере, либо иметь знакомого в типографии, который вам самиздатом ее напечатает с минимальными издержками.
    Ответ написан
    4 комментария
  • Как redux определяет, какие компоненты надо обновить?

    Alexandroppolus
    @Alexandroppolus
    кодир
    useSelector внутри себя использует хук useSyncExternalStore (точнее, хук, аналогичный ему)

    вкратце суть работы: из редуксового контекста (того самого, который использован внутри Provider) достается редуксовый же стор. Этот стор постоянный, но в нем есть состояние - объект, ссылка на который меняется при каждом изменении, ибо иммутабельность. Подписываемся на изменение этой ссылки (т.е. по факту на изменение любой части состояния), у стора есть метод subscribe для этого. При срабатывании эвента забираем наши данные селектором, и если результат селектора отличается от предыдущего раза, значит изменились именно наши данные и надо пнуть компонент, чтобы обновился, это уже useSyncExternalStore знает как сделать.
    Ответ написан
    Комментировать