Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Облака: ожидание vs реальность
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
yaleksandr89

Aleksandr Yurchenko

PHP developer
  • 24
    вклад
  • 67
    вопросов
  • 29
    ответов
  • 83%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как получить имя пользователя по id (Laravel)?

    New_Horizons
    Илья @New_Horizons
    Бред:
    Ошибка в понимании того, как работают отношения моделей в Laravel, советую почитать документацию.

    $post->user->first_name
    Ответ написан 04 февр.
    1 комментарий
    Нравится 3 1 комментарий
  • Как и где лучше хранить документы на сайте?

    glaphire
    Daria Motorina @glaphire Куратор тега PHP
    PHP developer
    1) создаете папку для документов за пределами публичной папки (той, в которой index.php и статика)
    2) создаете экшен для загрузки файлов, помещаете туда эти файлы, привязываете файл к пользователю на уровне базы данных
    3) отдача файла для просмотра должна производиться только через экшен (чтобы не было прямого доступа к файлу методом подбора урла), с проверкой, что только юзер и админы могут его просматривать
    Ответ написан 24 окт. 2020
    Комментировать
    Нравится 6 Комментировать
  • Как настроить права в Docker?

    glaphire
    Daria Motorina @glaphire
    PHP developer
    Возможно что-то не до конца скопипастила, просто нет живого проекта под рукой. Для своих пет проектов я настроила работу докера из под моего обычного юзера системы. Сначала сделала так, чтобы docker и docker-compose работали от юзера (есть инструкция в интернете, надо пошаманить с группами юзеров), потом в docker-compose.env добавила такое
    #run echo $(id -u):$(id -g) and copypaste it to HOST_USER variable
    #HOST_USER is needed to run docker containers under current user on host machine
    HOST_USER=1234:1234

    Потом в docker-compose.yml
    version: "3"
    services:
        nginx:
            image: nginx:latest
            ports:
                - "8081:80"
            volumes:
                - .:/app
                - ./docker/nginx/:/etc/nginx/conf.d/
            depends_on:
                - php-fpm
            working_dir: /app
            networks:
                - internal
        php-fpm:
            user: ${HOST_USER}
            working_dir: /app
            build:
                context: ./docker/php-fpm
                dockerfile: Dockerfile
            volumes:
                - .:/app
                - ./docker/php-fpm/log/:/var/log/
                - /etc/group:/etc/group:ro #####вот
                - /etc/passwd:/etc/passwd:ro #####вот
            ports:
                - '9000:9000'
            networks:
                - internal
            environment:
                XDEBUG_CONFIG: "remote_host=192.168.220.1 remote_enable=1"
                PHP_IDE_CONFIG: "serverName=PHPSTORM"

    В докерфайлах ничего не дописывала. У меня это только для php-fpm, но думаю что для nginx и mysql можно делать по аналогии
    Ответ написан 28 окт. 2020
    10 комментариев
    Нравится 2 10 комментариев
  • Остались ли еще толковые русскоязычные биржи?

    Илья С @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    какие отклики можете дать?

    Учите английский и не связывайтесь с русскими биржами.
    Ответ написан 11 сент. 2020
    4 комментария
    Нравится 13 4 комментария
  • Как подправить регулярку?

    Spartak-2205
    Spartak (Web-StyleStudio) @Spartak-2205
    Разработка и создание сайтов
    videoId всегда содержит 11 символов и всегда будет заканчиваться одним из следующих символов:
    A, E, I, M, Q, U, Y, c, g, k, o, s, w, 0, 4, 8

    Таким образом, регулярное выражение (RegEx) для videoId будет выглядеть следующим образом:
    [\w-]{10}[AEIMQUYcgkosw048]{1}

    И так как вариантов ссылок на видеоролик может быть много, то не всегда подойдёт парсинг URL (parse_url, parse_str итп), поэтому лучше использовать регулярное выражение в этом случае

    function getVideoID ($url)
    {
    	preg_match("%^(?:https?://)?(?:www\.|m\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com(?:/watch\?v=|/watch/\?v=|/embed/|/v/))([\w-]{10}[048AEIMQUYcgkosw]{1})($|\S+).*$%x", $url, $matches);
    	return $matches[1] ?? "";
    }
    
    echo getVideoID("https://youtu.be/DBXH9jJRaDk?t=11");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/embed/DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk&t=30&feature=emb_logo");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://m.youtube.com/watch?v=DBXH9jJRaDk&t=30");
    //DBXH9jJRaDk
    Ответ написан 26 авг. 2020
    5 комментариев
    Нравится 2 5 комментариев
  • Как подправить регулярку?

    Дмитрий @dzhebrak
    Так можно:
    preg_match('/\?v=([a-zA-Z0-9_\-]+)/', $url, $matches);
    print_r($matches[1]);
    Ответ написан 25 авг. 2020
    3 комментария
    Нравится 1 3 комментария
  • WP Customizer API не работает редактирование в реальном времени. Как исправить?

    AntonLitvinenko
    Антон Литвиненко @AntonLitvinenko
    HTML coder
    а что у вас делает эта строчка?
    'transport' => WPTEST_GET_THE_MOD_DEFAULT
    По умолчанию она должна стоять в refresh, что должно обновлять страницу при изменениях. А чтобы вообще прям сразу изменения то нужно писать js для этого
    Ответ написан 14 авг. 2020
    1 комментарий
    Нравится 2 1 комментарий
  • WP Customizer API не работает редактирование в реальном времени. Как исправить?

    V_A_B
    Владимир Брумер @V_A_B
    режим реального времени это 'transport'=>'postMessage'
    например для существующих опций названия и описания:
    ...
    $customizer->get_setting('blogname')->transport='postMessage';
    $customizer->get_setting('blogdescription')->transport='postMessage';
    ...
    //$wp_customize->add_setting('header_h1',array('transport'=>'postMessage'));

    js:
    (function($){
    	var api=wp.customize;
    	api('blogname',function(value){value.bind(function(to){$('.site-title a').text(to);});});
    	api('blogdescription',function(value){value.bind(function(to){$('.site-description a').text(to);});});
    ...

    если не нужен 'transport'=>'postMessage', просто не пишем вообще ничего
    $wp_customize->add_setting('header_h1');

    с Вашим кодом не все ясно, поэтому вот рабочий пример на основе Вашего без учета не ясного/лишнего)))
    add_action( 'customize_register', 'hgjghjghj' );
    function hgjghjghj($wp_customize){
        $wp_customize->add_panel(
          'panel_main_page',
          array(
            'title'    => 'Контент на главной странице',
            'priority' => 999,
          )
        );
    		$wp_customize->add_section(
    			'header_h1',
    			array(
    				'panel'    => 'panel_main_page',
    				'title'    => 'Заголовок (h1) страницы',
    				'priority' => 0,
    			)
    		);
    		$wp_customize->add_setting(
    			'header_h1',array('transport'=>'postMessage')
    		);
    		$wp_customize->add_control(
    			'header_h1',
    			array(
    				'section' => 'header_h1',
    				'label'   => 'Текст заголовка',
    				'type'    => 'text'
    			)
    		);
    }

    js:
    ...
    api('header_h1',function(value){value.bind(function(to){$('#qweqweqwe').text(to);});});
    ...
    //подключаем js для превью через add_action('customize_preview_init','preview_customize_enqueue');
    //либо пишем калбак функцию и пишем js в ней...

    вывод в разметке:
    echo '<div id="qweqweqwe">'.get_theme_mod('header_h1').'</div>';
    Ответ написан 14 авг. 2020
    Комментировать
    Нравится 2 Комментировать
  • Как дать права на /var/www/* для poedit?

    pavelcarcass
    Павел Грузных @pavelcarcass
    ИТ-менеджер из г. Иркутска
    sudo poedit
    Ответ написан 01 июл. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как дать права на /var/www/* для poedit?

    Alexander @MonsterCatz
    Junior system administrator linux
    777 о_о

    Не нужно так, вы создаете серьезную брешь. Права 700 на директории, 600 на файлы. Во первых стоит выяснить, от какого юзера вы работаете в poedit. Во вторых выдайте этому пользователю права на rw. Ну или как рекомендовали выше, sudo poedit.
    Ответ написан 02 июл. 2020
    1 комментарий
    Нравится 1 1 комментарий
  • PhpStorm и Git Bash (в качестве консоли), как изменить цветовую схему?

    mindyourlifeguide
    Bohdan Petrov @mindyourlifeguide
    FGYHcz8.png
    Ответ написан 15 июн. 2020
    1 комментарий
    Нравится 1 1 комментарий
  • Можно ли сейчас без веба?

    Lord_Dantes
    Lord_Dantes @Lord_Dantes
    Чат джунов t.me/developersjunior
    Можно ли спокойно работать программистом, без сильного контакта с веб-разработкой?

    Можно
    Ответ написан 31 мая 2020
    Комментировать
    Нравится 11 Комментировать
  • Как динамически изменить количество отображаемых элементов на странице?

    Sanes
    Sanes @Sanes
    !
    Get параметром передать кол-во.
    Я так сделал у себя.
    public function dataIndex(Request $request, $id)
        {
            $data = Data::where(['server_id' => $id])->orderByDesc('created_at')->limit($request->get('limit', 25))->get();
            $result = $data->sortBy('id')->values()->all();
            return response($result);
        }
    Ответ написан 03 апр. 2020
    6 комментариев
    Нравится 2 6 комментариев
  • Как составить регулярку и получить результат в отдельные именованные подгруппы?

    dodo512 @dodo512
    ^(?=.*min:(?<min>\d+))(?=.*max:(?<max>\d+))
    Ответ написан 30 мар. 2020
    8 комментариев
    Нравится 1 8 комментариев
  • Spatie backup, как изменить папку для резервных копий и установить пароль на архив?

    mamut
    Александр Ковальчук @mamut
    web artisan
    1 поменяй name в конфиге (backup.php)
    2 слушатель не на активное событие.
    Примерно так должно быть
    protected $listen = [
            BackupZipWasCreated::class => [
                EncryptBackupZip::class
            ],
        ];
    Ответ написан 21 мар. 2020
    3 комментария
    Нравится 1 3 комментария
  • Как изменить разметку пагинации?

    maksim92
    Максим @maksim92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Как сделать такую расширенную пагинацию в yii2?
    Ответ написан 06 мар. 2020
    11 комментариев
    Нравится 1 11 комментариев
  • Что не так с регуляркой?

    nokimaro
    nokimaro @nokimaro
    Меня невозможно остановить, если я смогу начать.
    С регуляркой всё в порядке
    Получаю ожидаемый результат

    https://3v4l.org/govdO
    Ответ написан более года назад
    3 комментария
    Нравится 1 3 комментария
  • Как составить регулярное выражение?

    coderisimo
    coderisimo @coderisimo
    например, вот так :

    $str =" SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'zagolovok-dlya-rubriki-13022020' for key 'blog_categories_slug_unique' (SQL:bla-bla-bla........";
    preg_match('/(^\sSQLSTATE.*)(\(SQL:)/', $str , $matches);
    var_dump($matches[1]);
    Ответ написан более года назад
    2 комментария
    Нравится 1 2 комментария
  • Как составить регулярное выражение?

    Stalker_RED
    Stalker_RED @Stalker_RED
    (.*?)\(
    https://regex101.com/r/X2NBpU/1
    Ответ написан более года назад
    1 комментарий
    Нравится 1 1 комментарий
  • Реализация класса interval. Как описать метод __toString()?

    DevMan
    DevMan @DevMan Куратор тега PHP
    никак: __toString возвращает строку.
    и var_dump в примере не имеет никакого отношения к __toString

    кстати, у вас логическая ошибка в коде.
    Ответ написан более года назад
    4 комментария
    Нравится 2 4 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Следующие →
Самые активные сегодня
  • Василий Банников
    • 11 ответов
    • 0 вопросов
  • vesper-bot
    Максим Гришин
    • 11 ответов
    • 0 вопросов
  • rPman
    • 9 ответов
    • 0 вопросов
  • Dr. Bacon
    • 7 ответов
    • 0 вопросов
  • DanceM
    Dance Macabre
    • 6 ответов
    • 0 вопросов
  • galaxy
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации