Задать вопрос
  • Как убрать последнее вхождение replace?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Точка в регулярном выражении – один из специальных символов – означает «любой 1 символ». Чтобы буквально обозначить обычную точку, надо её экранировать обратным слешем: \.

    В задаче, наверное, вовсе не нужны регулярки, тут же простая замена подстроки:
    const str = '1 августа 2022 г.';
    str.replace(' г.', '')  // "1 августа 2022"

    Если замен несколько, то вместо replace() использовать метод replaceAll()
    Ответ написан
    Комментировать
  • Зачем нужны скобки в данном случае?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    ({a, b, c} = {a:1, b:2, c:3 }) // вези меня браузер! Ну если внутри ничего нет то попытаемся


    let {a, b, c} = {a:1, b:2, c:3 } // слева переменная, справа значения которые в нее нужно положить. Да Повелитель!
    Ответ написан
    3 комментария
  • Зачем нужны скобки в данном случае?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что в javascript фигурные скобки можно использовать не только для объявления объекта, но и для объединения инструкций в блок. Парсер в этом случае не понимает, что {a, b, c} это именно деструктуризация объекта, а не блок из трёх инструкций a, b и c, потому их заворачивают в скобки, чтобы устранить неоднозначную трактовку.
    Ответ написан
    Комментировать
  • Как отсортировать вложенные модели innerJoinWith yii2?

    @SlimSavernake Автор вопроса
    Разобрался:
    Category::find()->innerJoinWith(['products' => function ($query) {
                $query->orderBy(['sort' => SORT_ASC]);
            }])->orderBy(['category.sort' => SORT_ASC])->all();
    Ответ написан
    Комментировать
  • Как получить несколько значений из базы данных по id в одном запросе?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $sql = $link->query('SELECT sum(quantity) FROM oc_product WHERE product_id in (8908,8909)');
    $row = $sql->fetch_row($sql);
    echo $row[0];
    Ответ написан
    4 комментария
  • Насколько индекс ускоряет выборку с условием-неравенством?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    EXPLAIN вам в руки. Универсального алгоритма нет, СУБД сама решает, когда и какие индексы использовать. ЕМНИП, MySQL использует для этого селективность выборки и накопленную статистику использования таблицы.
    https://dev.mysql.com/doc/refman/8.0/en/optimizati...
    Ответ написан
    Комментировать
  • Насколько индекс ускоряет выборку с условием-неравенством?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Будет ли этот запрос быстрее работать, если для столбца `time` есть индекс?
    Это покажет EXPLAIN, а ещё лучше - само выполнение запроса с индексом и без него. Скорее всего - будет.

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

    alekciy
    @alekciy
    Вёбных дел мастер
    Для этого нужно запустить отдельный pool задав директиву user см. https://www.php.net/manual/ru/install.fpm.configur... . Тогда php будет выполняться от заданного юзера, а не www-data.

    Я на своем сервере делаю так. У каждого отдельного юзера есть свой php pool который работает от своего юзера + слушает сокет на 127* интерфейсе. Пример конфига /etc/php/7.0/fpm/pool.d/aliya.conf (юзер это aliya):
    [aliya]
    listen                 = 127.0.0.1:9041
    listen.backlog         = 20
    listen.allowed_clients = 127.0.0.1
    catch_workers_output   = yes
    
    user  = aliya
    group = aliya
    
    pm                   = dynamic
    pm.min_spare_servers = 2
    pm.max_spare_servers = 4
    pm.start_servers     = 3
    pm.max_children      = 5
    pm.max_requests      = 50
    
    env[HOSTNAME] = $HOSTNAME
    env[PATH]     = /usr/local/bin:/usr/bin:/bin
    env[TMP]      = /tmp
    env[TMPDIR]   = /tmp
    env[TEMP]     = /tmp
    
    php_admin_value[display_errors]  = stderr
    php_flag[display_startup_errors] = on
    php_admin_flag[log_errors]       = on
    
    php_admin_flag[mail.add_x_header] = on
    php_admin_value[sendmail_path]    = /usr/sbin/mini_sendmail -t -f***@***a.ru
    php_admin_value[mail.log]         = /var/www/aliya/data/log/mail.log
    
    php_admin_value[memory_limit]      = 256M
    php_admin_value[session.save_path] = /tmp
    Ответ написан
  • Почему выдает ошибку при конвертировании файла?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Открываем список сигнатур и смотрим комбинацию 0x52 0x49 или RI.
    Получаем один из трёх вариантов - wav, avi или webp.
    А то, что у файла расширение jpeg, так это просто кто-то криво его задал.
    Проверяйте тип через mime_content_type, Для JPEG должен возвращаться тип image/jpeg.
    Ответ написан
    Комментировать
  • Как сделать жесткое исключение NOT IN в mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Разумнее использовать WHERE NOT EXIST, который скорее всего будет более эффективен:
    SELECT [DISTINCT] number
    FROM table t1
    WHERE service NOT IN (1,2,3)
      AND NOT EXISTS (
        SELECT NULL
        FROM table t2
        WHERE t1.number = t2.number
          AND t2.service IN (1,2,3)
    )

    Индекс по (number, service) - весьма желателен.

    Если service - целочисленное поле со значениями от единицы и более, то для даных конкретных условий можно построить и более эффективный запрос:
    SELECT number
    FROM test
    GROUP BY number
    HAVING MIN(service) > 3
    Ответ написан
    Комментировать
  • Как это превращается в строку?

    scottparker
    @scottparker
    new Array(4).join('La')- соединяет элементы массива вставляя между ними La. Элементы массива пустые, то есть получается "" + "La" + "" + "La" + "" + "La" + ""
    Ответ написан
    Комментировать
  • Как проскролить страницу после того как произошел hedaer(location)?

    Adamos
    @Adamos
    <a id="comment-12345">Тот коммент, до которого надо проскроллить</a>
    
    Location: /#comment-12345

    Или полностью на фронте - при отправке ставить куку, а при входе на страницу ее проверять и скроллить, если она установлена.
    Ответ написан
    3 комментария
  • Объект-итератор не итерирует объект. Почему?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Вызов arr.values() всегда возвращает новый объект итератора, "перемотанный" на начало. Поэтому в первом случае у вас два разных итератора, а во втором - один и вы по нему идёте.
    Ответ написан
    Комментировать
  • Как читать вывод git diff?

    @res2001
    Developer, ex-admin
    Файл был переименован. index, видимо, показывает коммит где файл появился первоначально с правами на файл 0644 (стандартные права файловых систем Unix). 10 - "обычный файл".
    Утилита stat выводит такую же инфу о правах, но в шестнадцатиричном виде, а тут восьмеричный.
    Вместо 10 может быть еще 12 - ссылка, и возможно еще какие-то варианты.

    Три минуса и три плюса - стандартное для diff обозначение для сравниваемых файлов. Типа первый файл это ---, второй файл +++.
    Цифры в @@ отрицательная - это "строка, колонка" для первого файла, положительная - для второго. Указывают место где файлы различаются.
    Ответ написан
    Комментировать
  • Подбор пароль к хэшу?

    Sanes
    @Sanes
    Я не могу додуматься как сделать расшифровщик хэшей, на некоторых сайтах есть.

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

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Всем спасибо, похоже я нашел решение. На равне с типами запроса GET, POST и другими оказывается существует еще тип запроса HEAD. Этот тип запроса позволяет запросить заголовки ответа, без самого тела ответа.

    Соответственно факт изменения файла можно проверить через сверку заголовка ETag:
    (await fetch('/', { method: 'HEAD' })).headers.get('ETag');

    Заголовок HTTP ответа ETag является идентификатором специфической версии ресурса. Если ресурс по заданному URL изменился, будет сгенерированно новое значение Etag. Поэтому Etag чем-то похож на отпечаток ("fingerprints") и позволяет быстро определить являются ли два представления ресурса одними и теме же.

    https://developer.mozilla.org/ru/docs/Web/HTTP/Hea...
    Ответ написан
    1 комментарий
  • Существует ли, утилита для Linux с выводом программ для их запуска?

    все установленные программы

    В Linux нет такого понятия, как "установить". В принципе любой исполняемый файл в системе - это уже рабочая программа, которую можно вызывать. Для удобства только они добавляются в $PATH
    Например:
    1. Vim
    2. MIDNIGHTCOMMANDER
    3. ...

    В таком виде никак не получится, так как в Linux нигде не сохраняется человекочитаемое название.

    Так что в целом список всех установленных программ - это ls
    А для запуска нужной достаточно ввести её имя.

    Но такой список вам никакой пользы не даст, так как он будет просто огромный.
    Вот например что выдаёт ls /bin:
    .                                    h2ph                               sbverify
     ..                                   h2xs                               scp
     NF                                   hd                                 screen
     VGAuthService                        head                               screendump
     X11                                  helpztags                          script
    '['                                   hexdump                            scriptreplay
     aa-enabled                           host                               scsi_logging_level
     aa-exec                              hostid                             scsi_mandat
     ab                                   hostname                           scsi_readcap
     add-apt-repository                   hostnamectl                        scsi_ready
     addpart                              htcacheclean                       scsi_satl
     addr2line                            htdbm                              scsi_start
     apport-bug                           htdigest                           scsi_stop
     apport-cli                           htop                               scsi_temperature
     apport-collect                       htpasswd                           sdiff
     apport-unpack                        hwe-support-status                 sed
     appres                               i386                               see
     apropos                              i386-tcc                           select-editor
     apt                                  iconv                              sensible-browser
     apt-add-repository                   id                                 sensible-editor
     apt-cache                            info                               sensible-pager
     apt-cdrom                            infobrowser                        seq
     apt-config                           infocmp                            serialver
     apt-extracttemplates                 infotocap                          setarch
     apt-ftparchive                       install                            setfont
     apt-get                              install-info                       setkeycodes
     apt-key                              instmodsh                          setleds
     apt-mark                             ionice                             setlogcons
     apt-sortpkgs                         ip                                 setmetamode
     ar                                   ipcmk                              setpci
     arch                                 ipcrm                              setpriv
     as                                   ipcs                               setsid
     at                                   iptables-xml                       setterm
     atq                                  ischroot                           setupcon
     atrm                                 iscsiadm                           sftp
     automat-visualize3                   jaotc                              sg
     awk                                  jar                                sg_bg_ctl
     b2sum                                jarsigner                          sg_compare_and_write
     base32                               java                               sg_copy_results
     base64                               javac                              sg_dd
    ... дальне не влезло в лимит по символам.
    Ответ написан
    Комментировать
  • Как корректно подставлять текст к ссылке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как можно реализовать это?
    Если я правильно понял, вам нужно сравнение без кейс сенситив.
    Будем считать что у вас адекватный архитектурный подход и для хранения данных используется БД. Тогда вариантов два:
    1) Магия strtolower(). При регистрации все данные перегоняем в нижний регистр и так и записываем. Соответственно перед выборкой тоже делаем искомой строке strtolower().
    2) Задаем таблице кодировку с постфиксом _ci, то есть кейс инсенситив. Тогда выборка будет игнорировать регистр, и в выборке GazEs12 = gazes12.
    Ответ написан
    7 комментариев
  • Как узнать свой пароль для sudo юзера в ubuntu?

    @pfg21
    ex-турист
    от тебя требуется ввести пароль для юзера someuser

    специальная фишка sudo для того чтобы не светить всяким пользователям пароль root.
    Ответ написан
    6 комментариев
  • В каких случаях нужно регистрировать стили(WordPress)?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Регистрация нужна для корректной работы скриптов и стилей, которые подключаются с зависимостями. Например, скрипт jquery уже зарегистрирован в WordPress, но по умолчанию он не выводится. Если какой-то плагин или вы в функцию wp_enqueue_script() третьим параметром передадите зависимость от скрипта jquery, то сначала подключится он, после него ваш скрипт

    Это обеспечивает правильную последовательность вывода скриптов, а так же гарантирует, что одни и те же скрипты не будут выводиться по нескольку раз
    Ответ написан
    2 комментария