Задать вопрос
  • Можно ли скачать и запустить FFmpeg без установки в систему?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Нашел решение. Нужно с офф.сайта скачать "статичный билд" и выдать права на ffmpeg (chmod guo+x) иможно обойтись без установк пакета.
    Ответ написан
    Комментировать
  • Как составить регулярку для "подсветки" логов?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Получилась такая регулярка:
    ^.*\.DEBUG.*$
    ^.*\.INFO.*$
    ^.*\.WARNING.*$
    ^.*\.ERROR.*$
    Ответ написан
    Комментировать
  • Почему ERR_TOO_MANY_REDIRECTS при инсталляции Wordpress?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Без настроек вирт.хоста проблематично с уверенностью что-то говорить. Но с подобной ошибкой встречался, когда был настроен некорректный редирект с HTTP -> HTTPS.

    В моем случае виновником оказался конфиг виртуального хоста, который зацикливал редирект с https://www.site.com на https://site.com.
    Ответ написан
    Комментировать
  • Как реализовать автоформатирование массива в phpStorm?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Есть схожая тема, но информация устарела.

    Я использую PhpStorm 2021.1.1 и пункт "Align key-value pairs" находится не во вкладке "other" (её вообще нет), а во вкладке "Wrapping and Braces".

    Подытожив, что бы реализовать автоматическое форматирование отступов в массиве необходимо перейти в "Editor"->"Code Style"->"PHP", на вкладке "Wrapping and Braces" спуститься к пункту "Array initializer" и выставить опцию "Align key-value pairs"
    Ответ написан
    Комментировать
  • Как исключить из карты сайта (Yoast SEO) определенную рубрику у постов?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Возможно кому пригодится:
    /** @var WP_Post $obj */
    add_filter( 'wpseo_sitemap_entry', function ( $url, $string, $obj ) {
    	/** @var WP_Term $category */
    	$category = get_the_category( $obj->ID )[0];
    	if ( $category->slug !== 'press-center' ) {
    		return $url;
    	}
    
    	return null;
    }, 10, 3 );
    Ответ написан
    Комментировать
  • Как получить ссылку на архив закрепленной за постом таксономии в Wordpress?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Решил вопрос создав фильтр:
    Фильтр:
    add_filter( 'test_term_url', static function ( string $nameTaxonomy, string $termSlug ) {
    	$terms = get_terms( [
    		'taxonomy'   => $nameTaxonomy,
    		'hide_empty' => true,
    		'slug'       => $termSlug,
    	] );
    	$terms = array_shift( $terms );
    
    	return get_term_link( $terms );
    }, 10, 2 );

    Вызов фильтра:
    <?= apply_filters('test_term_url', 'type-work', 'clients' ) ?>
    Ответ написан
    Комментировать
  • Как настроить права в Docker?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Разобрался, может будет кому пригодится... Проблема заключалась: Если запускать контейнер (nignx) с понижением прав (не root). Нельзя использовать порты ниже 1000, а также с хоста в контейнер нужно пробросить модифицированный nginx.conf.

    модифицированный nginx.conf

    # worker_processes по количеству ядер процессора
    worker_processes  6;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /tmp/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        client_body_temp_path /tmp/client_body_temp;
        proxy_temp_path /tmp/proxy_temp;
        fastcgi_temp_path /tmp/fastcgi_temp;
        uwsgi_temp_path /tmp/uwsgi_temp;
        scgi_temp_path /tmp/scgi_temp;
    
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }


    docker-compose.yml

    version: '3'
    services:
      #Php-fpm Service
      app:
        build:
          context: ./docker/php/
          dockerfile: Dockerfile
        container_name: app
        restart: unless-stopped
        tty: true
        environment:
          SERVICE_NAME: app
          SERVICE_TAGS: dev
        working_dir: /var/www
        volumes:
          - ./www:/var/www
          - ./logssss:/var/log/
          - ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
        links:
          - db
        networks:
          - laravel-network
    
      #Nginx Service
      webserver:
        build:
          context: ./docker/nginx/
          dockerfile: Dockerfile
        container_name: webserver
        restart: unless-stopped
        tty: true
        ports:
          - '80:8080'
          - '443:4430'
        volumes:
          - ./www:/var/www
          - ./hosts/:/etc/nginx/conf.d
          - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./logs:/var/log/nginx
        links:
          - app
          - db
        networks:
          - laravel-network
    
      #MariaDB Service
      db:
        build:
          context: ./docker/mysql/
          dockerfile: Dockerfile
        container_name: db
        restart: unless-stopped
        tty: true
        ports:
          - "3306:3306"
        environment:
          MYSQL_DATABASE: laravel
          MYSQL_ROOT_PASSWORD: secret
          SERVICE_TAGS: dev
          SERVICE_NAME: mysql
        volumes:
          - ./mysql:/var/lib/mysql/
          - ./docker/mysql/my.cnf:/etc/mysql/my.cnf
        networks:
          - laravel-network
    
      #PHPMyadmin Service
      pma:
        image: phpmyadmin:latest
        container_name: pma
        restart: unless-stopped
        tty: true
        ports:
          - 81:80
        environment:
          PMA_HOST: db
          MYSQL_USERNAME: root
          MYSQL_ROOT_PASSWORD: secret
        links:
          - db
        networks:
          - laravel-network
    
    
    #Docker Networks
    networks:
      laravel-network:
        driver: bridge


    Dockerfile(Nginx)

    FROM nginx
    
    # Add user for laravel application
    RUN groupadd -g 1000 www
    RUN useradd -u 1000 -ms /bin/bash -g www www
    USER www


    После этого и nginx завелся и логи из контейнера в хосте создаются не под root
    Ответ написан
    Комментировать
  • Периодические отваливается ctrl+f Ubuntu 20.04. Как исправить?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Вообщем сам спросил - сам ответил :)

    Методом научного тыка, в Gnome Tweaks -> Keyboard & Mouse активировал пункт Pointer Location и все заработало.
    5ed3f7c338ace642569089.png
    ХЗ в какой момент "что-то пошло не так", до этого никогда этот пункт не трогал и он всегда был выключен.
    Ответ написан
    Комментировать
  • Как сделать событие по клавише shift?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Перед кликом зажмите ctrl, alt или shift...
    Ответ написан
  • Как получить часть url по условию?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Накидал такую
    var pathnameNews =  'http://example.com/news/news-name'
    pathnameNews.match('/news/.*')[0]
    Ответ написан
  • Как правильно реализовать "продвинутую" прокрутку страницы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Все такие полезно иногда излогать свои мысли на публику, после написания вопроса в очередной раз полез читать про события в js. И нашел решение, если коротко - вешая на событие несколько действий пользуйтесь пространствами имен.

    Фактически мне нужно было разделить просто прокрутку страницы и прокрутку страницы, когда нужный блок появляется в области видимости. Решение:
    scrollTracking()

    Было:
    function scrollTracking() {
        var lastScrollTop = 0;
        $(document).on('scroll', function () {
            var currentScrollTop = $(this).scrollTop();
            if (currentScrollTop > lastScrollTop) {
                console.log('Прокрутка вниз');
            } else {
                console.log('Прокрутка вверх');
            }
            lastScrollTop = currentScrollTop;
        });
    }


    Стало:
    function scrollTracking() {
        var lastScrollTop = 0;
        $(document).on('scroll.scrollTracking', function () {
            var currentScrollTop = $(this).scrollTop();
            if (currentScrollTop > lastScrollTop) {
                console.log('Прокрутка вниз');
            } else {
                console.log('Прокрутка вверх');
            }
            lastScrollTop = currentScrollTop;
        });
    }



    И общая прокрутка:
    return $(document).on('scroll.isShow', function () {
                    if (is_shown()) {
                        if (blockShow === null || blockShow === false) {
                            console.log('Блок ' + self.attr('class') + ' ПОЯВИЛСЯ');
                            scrollTracking();
                        }
                        blockShow = true;
                    } else {
                        $(document).off('scroll.scrollTracking',scrollTracking());
                        if (blockShow === null || blockShow === true) {
                            console.log('Блок ' + self.attr('class') + ' СКРЫТ');
                        }
                        blockShow = false;
                    }
                })


    Используя пространство имен, я безболезненно смог удалить обработчик:
    $(document).off('scroll.scrollTracking',scrollTracking());
    Оставив, общий, отвечающий за определение - находиться ли элемент в области видимости или нет
    Ответ написан
  • Как составить регулярку и получить результат в отдельные именованные подгруппы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Не знаю насколько правильно и оптимально, но получилось так: (.*min:(?<MIN>\d*))(.*max:(?<MAX>\d*))
    Ответ написан
    Комментировать
  • Как установить xdebuger на php7.2 (Ubuntu 18.04)?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    PHP developer
    Проблему смог решить. Возможно кому-то поможет. Если кто-нибуть сталкивается с ошибкой:
    Failed loading /usr/lib/php/20190902/xdebug.so:  /usr/lib/php/20190902/xdebug.so: undefined symbol: zend_post_startup_cb

    *20190902 - может быть другая дата. Проверьте версию php-config --version. Если собираете, например, xdebuger.so для версии php7.2, а версия php-config --version будет другой, в конечном итоге получете ошибку.

    Чтобы этого избежать нужно лишь, следуя инструкции, на этапе выполнения ./configure, указать полный путь до php-config. В моем случае получилось так:
    ./configure --with-php-config=/usr/bin/php-config7.2

    После чего выполняете указанные далее пункты.
    Ответ написан
    Комментировать
  • Как сделать появление кнопки после нажатия на другую кнопку?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Повесить обработчик события (клик) на нужную кнопку и по клику, подгружать требуемую кнопку.

    Что-то вроде. Это jQuery, на ванильном пишу не так часто, но смысл тот же.
    Ответ написан
    2 комментария
  • Как применять Git начинающему?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Значит курсы были не очень. Git не предназначен ни для верстки, ни для frontend, ни для backend.

    Системой контроля версий вы можете отслеживать изменения в чем угодно. И главным преимуществом (на мой взгляд) является ведение своего рода истории работы над проектом и возможность откатиться на определенный его участок.

    Плюс при командной разработке отпадают "вопросы: "кто это сделал?", плюс возможность ограничить внесения изменения в определенные ветки (например на продакшен).

    Я уверен, что плюсов у Git гораздо больше, назвал известные мне. Не знаю какие вы курсы проходили, но мне хватило githowto, начил ещё читать книгу "Git для профессионального программиста", но меня хватило страниц на 200 :)
    Ответ написан
    4 комментария
  • Правильно ли используется htaccess?

    yaleksandr89
    @yaleksandr89
    PHP developer
    В htaccess нужно прописывать не ссылки, а правило редиректа. Вот небольшой и наглядный видос:
    RewriteEngine on
    # Само правило
    RewriteRule ^-(.*) /redirect.php?key=$1 [L]
    Ответ написан
    Комментировать
  • Как нормально верстать html в PHP-Storm?

    yaleksandr89
    @yaleksandr89
    PHP developer
    emmet в phpStorm работает нормально причем из коробки (никаких сторонних плагинов ставить не надо).
    Выпадающего списка нет, потому что в начале тэга вы не поставили <
    5da1d16b642fc667547205.png
    Ответ написан
    Комментировать
  • Как сделать шорткод для вывода записи по id - add_shortcode?

    yaleksandr89
    @yaleksandr89
    PHP developer
    В свое время реализовывал вывод календаря на странице с помощью шорткода, календарь тоже был сделан через custom types.
    Сделал по статье на wp-kama, если больше нравится видеогайды вот плейлист, тут доскональна объяснен вопрос шорткодов в WP.
    Ответ написан
    Комментировать
  • Почему не работает атрибут backgroud / background-image в Google Chrome?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Как сказал Xdevelx, пробелы в именах файлов или пути к этому файлу (в вашем случае название папки с пробелом), не рекомендуется. Обычно пробелы меняются на _ или - или пишется слитно (что-то типа adventureConsultants).

    Скорректируйте название директории 'Adventure Consultants', что бы в ней не было пробела и внесите изменения в селектор, например:
    #div1 {
    background: url("Adventure-Consultants/Ice-axe.png") repeat;
    }
    Ответ написан
  • Wordfence нашел вредоносный код в файле wp-includes/load.php.orig. Можно его удалить?

    yaleksandr89
    @yaleksandr89
    PHP developer
    Вот стандартный файл load.php из репозитория WordPress.
    Вот описание, что в него входит.

    Если вы видите код, которого нет в стандартном файле load.php из репозитория WordPress, скорей всего вирусня.

    Напрямую файлы движка никто не редактирует (в здравом уме и трезвой памяти), так как при очередном обновление будет перезаписаны.

    P.S. проверил у себя на проекте wp-includes/, присутствует только файл wp-load.php (файла wp-load.php.orig нет)
    Ответ написан
    Комментировать