Задать вопрос
  • Почему webpack-dev-server не видит файл в каталоге /public/assets?

    @karpo518 Автор вопроса
    В моём проекте использовался devMiddleware, который переопределял publicPath для всех статических файлов.
    ...    
    devServer: {
          ...
          devMiddleware: {
            publicPath: '/',
          }
          ...
    }
    ...

    Чтобы задать нужный publicPath, потребовалось переопределить его при подключении каждого статического каталога. Вот как это выглядит:
    static: [
            { directory: `${path.resolve(__dirname)}/../assets/`, publicPath: '/assets/'},
            { directory: `${path.resolve(__dirname)}/../public/assets/`, publicPath: '/assets/'},
          ],
    Ответ написан
    Комментировать
  • Почему github pages не деплоит моё react приложение?

    @karpo518 Автор вопроса
    Проблема была в кеше браузера и github *facepalm*. Я исключил проблему с кешем браузера до того, как обновился кеш на сервере github. Когда обновился кеш github, я исключил и его. Видимо на тот момент проблема была в кеше браузера, но я уже не пытался это проверить. Сейчас открыл в инкогнито, и всё заработало.

    P.S. Я намеренно отказался от режима инкогнито, потому что браузер блокировал сторонние куки, и авторизованный доступ к приложению не работал. Таким шагом я сам создал себе проблему. Оказывается, в режиме инкогнито можно разрешить сторонние куки.
    Ответ написан
    Комментировать
  • Как правильно удалять/перерисовывать Яндекс.Карту, созданную через конструктор карт?

    @karpo518 Автор вопроса
    Решил проблему адаптивности блока карт использованием кода Iframe вместо Javascript. Указал тегу iframe width и height 100%. Теперь блок подстраивается под размеры родителя. Одним костылем на сайте меньше)
    Ответ написан
    Комментировать
  • Почему Linux не позволяет изменить владельца папок и файлов в разделе /media/gallery?

    @karpo518 Автор вопроса
    Для решения проблемы потребуется установка дополнительного пакета, если он уже не установлен:
    sudo apt install ntfs-3g
    Затем нужно будет внести изменения в /etc/fstab .У меня уже было настроено автоматическое монтирование для нужного раздела, поэтому я просто заменил:
    UUID=209AC33027DAFCFC /media/gallery	ntfs	defaults	0	2
    на
    UUID=209AC33027DAFCFC /media/gallery	ntfs-3g	uid=user1,gid=user1,dmask=022,fmask=133	0	0

    Здесь я вместо ntfs указал установленный драйвер ntfs-3g, указал пользователя и группу владельца файлов и директорий на диске (uid и gid), а также с помощью битовых масок переопределил права на директории и файлы на 755 и 644 соответственно(dmask и fmask).

    Вообще рекомендуется монтировать разделы вручную, а потом уже прописывать правила в /etc/fstab, чтобы не поломать систему, но я так не делал. На случай, если вдруг вы ещё не примонтировали раздел, UUID удобно определить с помощью Gparted в информации о разделе.

    Решить проблему помог комментарий planc и его ссылка https://wiki.archlinux.org/index.php/NTFS-3G_(%D0%...

    Единственное - не понял в чём разница между (dmask + fmask) и umask

    P.S. Также благодарю за помощь ky0, мою любимую маму и всех-всех моих фэнов за то что всегда верили в меня =)
    Ответ написан
    Комментировать
  • Как избежать использования функции the_post() в шаблоне архива?

    @karpo518 Автор вопроса
    Для себя решил проблему так:
    global $wp_query;
    $my_posts = $wp_query->posts;
    <?php foreach ( $my_posts as $my_post) {?>
    // Вывод превью постов
    Ответ написан
    Комментировать
  • Как актуализировать информацию о резервных копиях в панели vestacp?

    @karpo518 Автор вопроса
    Создать очередную резервную копию было невозможно из-за нехватки места на диске. Это случилось из-за ошибки при указании неправильного каталога в настройках исключений резервного копирования. Из-за этой ошибки в резервную копию попал большой каталог с медиа-файлами. В результате резервное копирование не работало, а информация в панели Vesta не обновлялась.

    Я исключил в настройках резервного копирования каталоги с медиа-файлами и удалил все резервные копии. После этих действий очередная резервная копия создалась без проблем, а информация в панели Vesta актуализировалась.

    P.S. Резервную копию каталогов с media-файлами вместе со всей домашней папкой пользователя я храню только локально для экономии места на сервере. Синхронизация домашней папки запускается вручную через rsync.
    Ответ написан
    Комментировать
  • Как правильно использовать namespace и use в PHP?

    @karpo518 Автор вопроса
    В PHP нельзя импортировать сразу несколько классов из-за особенности работы языка. Если Java может легко узнать какие классы находятся в пакете (namespace), то PHP так не может, там все динамически и заранее какие классы находятся в namespace'e узнать невозможно. Да и namespace в PHP это как макросы, все названия классов раскрываются на этапе трансляции в байткод, а не во время выполнения.

    https://habr.com/ru/post/212773/
    Ответ написан
    Комментировать
  • Как проверить работоспособность выделенных ip-адресов на web-сервере?

    @karpo518 Автор вопроса
    При помощи AUser0:
    1) Обнаружил в /etc/networks/interfaces коммент о том, что файлы настройки сети лежат в папке /etc/netplan.
    2) В файле /etc/netplan лежит файл 01-netcfg.yaml обнаружил следующий код:

    # This file describes the network interfaces available on your system
    # For more information, see netplan(5).
    network:
      version: 2
      renderer: networkd
      ethernets:
        eno2:
          accept-ra: false
          addresses: [ a.b.c.d/24 ]
          gateway4: m.n.o.p
          nameservers:
              search: [ worldstream.nl ]
              addresses:
                  - "s.t.u.v"
                  - "w.x.y.z"


    3) Заменил строку "addresses: [ a.b.c.d/24 ]" на "addresses: [ a.b.c.d/24, e.f.g.h/24, i.j.k.l/24 ]", где:

    a.b.c.d - основной адрес сервера
    e.f.g.h и i.j.k.l - дополнительные ip-адреса, которые не работали, потому что отсутствовали в этой строке

    4) Выполнил от имени root на сервере команду netplan apply

    После выполнения шагов ip-адреса появились в выводе команды ip a
    Ответ написан
    Комментировать
  • Как средствами php запустить выполнение linux-команды в фоновом режиме?

    @karpo518 Автор вопроса
    Ещё раз всё проверил и написал костыль... Считаю проблему нерешенной =(

    Подробности


    Итоговые выводы:

    Чтобы запустить команду асинхронно, нужно:

    1. Перенаправить основной поток вывода из консоли (в /dev/null или файл)
    2. Использовать после команды символ &

    nohup и другие дополнительные команды не нужны

    В моем случае это всё не сработало. Мне требуется получить код выхода rsync. По какой-то причине этот код не попадает ни stdout, ни в stderr. В итоге мне пришлось использовать конструкцию:

    rsync params && echo $? >> /log.txt 2>&1 &

    Именно эта конструкция по какой-то причине не работает асинхронно.

    Чтобы код заработал асинхронно, потребовалось создать прослойку в виде bash-скрипта:

    #!/bin/bash
    
    rsync -avz -e "ssh -p $2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" $3@$1:$4 $5 >> $6 2>&1
    
    echo $? >> $6
    
    # rsync_download.sh sshHost sshPort sshLogin target destinity logPath


    И запускать её асинхронно:

    $command = $shDir . "rsync_download.sh $sshHost $sshPort $sshLogin $directory $snapshotPath $logPath > /dev/null 2>&1 &";
    
    exec($command);


    Это ужасное и громоздкое решение. Если кто-то сможет объяснить причину проблемы и подсказать аккуратное решение без bash-скрипта, буду очень благодарен.

    Тестовый пример, который подтверждает проблему с echo:

    exec('grep -r "user" /folder/ && echo $? >> /home/user1/web/backuper.ru/web/log.txt 2>&1 &');

    Ответ написан
  • Viber запретил простым смертным публиковать ботов?

    @karpo518 Автор вопроса
    Извиняюсь, забыл здесь отписаться. Для использования бота заведомо известным кругом лиц не требуется публикация. Поделиться ботом можно с помощью qr-кода. В приложении Viber есть соответствующий функционал. Спасибо информацию пользователю Dimano с хабра.

    Алгоритм настройки уведомлений с сайта отлажен и работает корректно. Более того, на данный момент Viber - единственный популярный мессенджер, который позволяет отправлять из России уведомления пользователям без костылей. Напомню, что Telegram требует прокси, а публичный аккаунт Whatsapp стоит космических денег(от 3000$).
    Ответ написан
    Комментировать
  • Почему не отправляются деньги с кошелька Blockchain в валюте Bitcoin Cash?

    @karpo518 Автор вопроса
    Проблему решил экспортом кошелька в https://wallet.btc.com.
    Ответ написан
    Комментировать
  • Какой инструмент можно использовать для логирования вызовов небезопасных/подозрительных функций PHP?

    @karpo518 Автор вопроса
    В данный момент рассматриваю возможность использования расширения php-suhosin. В частности, для меня будут полезны опции suhosin.executor.func.blacklist и suhosin.simulation.
    Ответ написан
    Комментировать