• Wordpress в 2к20, ожидание vs реальность?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    На апворке на WordPress можно зарабатывать и $3000-$8000
    Ответ написан
    Комментировать
  • Вопрос по кешированию wordpress на выделенном сервере?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А как именно вы собираетесь кешировать в memcached, как его использовать? Как стандартный object cache? Fragment cache? Full page cache?

    Из всех вариантов кеширования самым быстрым будет Nginx fastcgi_cache, поскольку он будет отдавать статические HTML-страницы прямиком с диска, а то и из памяти – даже не обращаясь к PHP-процессу, не поднимая WordPress и тем более не трогая базу. Но это полная статика, а значит не подойдет если у вас необходимость показывать динамические данные на странице (авторизованные пользователи с личными кабинетами, корзины покупателей и тд).

    WP Super Cache по сути делает то же самое, но на уровне плагина - он генерирует статические HTML-страницы, и веб сервер конфигурируется чтобы отдавать их. Это тоже быстро, минусы плюс-минус те же, но как бонус есть возможность определенной настройки в админке и гибкости. Но это в экспертном режиме. Кроме него он может работать в cмешанных режимах где PHP все-таки задействован, не нужно менять конфиги сервера и при этом можно даже кешировать условно динамические страницы. Это огромное преимущество перед nginx fastcgi_cache, если сайту такая функциональность нужна.

    Нужно ли иметь одновременно и nginx fastcgi_cache и wp super cache? Нет. Выберите одно из двух. Если сайт может полностью жить в статике - nginx fastcgi_cache настроили и забыли. Если логика статики и динамики чуток посложнее - WP Super Cache.

    Независимо от первых 2х вариантов, можно использовать кеширующий бекенд (memcached, redis) для кеширования фрагментов, объектного кеша и любых других данных. Полезно для кеширования .mo файлов переводов, отрендеренных ресурсоемких фрагментов (меню, блоки/виджеты с калькуляциями и тд), стандартного объектного кеша WP и тд. Это второй, внутренний уровень кеширования и важен как раз для динамических запросов, которые не используют full page cache от Nginx / WP Super Cache.
    Ответ написан
    Комментировать
  • Изучения Larvel без ооп?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Laravel - ООП фреймворк. Единственный способ делать что-то на ларе - писать ООП. Грубо говоря, от него не отвертеться.

    Можно ли учить лару, пробовать что-то писать, изучая параллельно и ООП, и лару? Да, конечно. Совершенно ничего не мешает.
    Ответ написан
    2 комментария
  • Банальный вопрос - как быть дальше?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Собственно, если вырезать из текста всю лирику, то остается один вопрос:

    В какую нишу мне пристроиться

    И ответ на него до банального прост - в ту, которая интересна. Потому что в неинтересной ничего не получится - не хватит мотивации. А пахать надо в любой нише.
    Ответ написан
    Комментировать
  • Не работает форма на openserver WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Обработчик по прямому файловому URL - это дичь. В WordPress для этих задач используются хуки и коллбеки на них.
    Ответ написан
    Комментировать
  • Почему сайт не работает после подключения к Cloudflare?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Там же написано - сервер ответил bad gateway, это 502я ошибка:

    HTTP серверный код ответа на ошибку 502 Bad Gateway указывает, что сервер, действуя как шлюз или прокси, получил неверный ответ от восходящего сервера.

    Сетевой шлюз может ссылаться на разные вещи в сети, а ошибка 502 обычно не является чем-то, что вы можете исправить, но требует исправления веб-сервером или прокси, к которым вы пытаетесь получить доступ.

    На странице с ошибкой есть Ray ID или как там оно называется, это идентификатор события, по которому в логах CloudFlare можно получить дополнительную информацию. Обратитесь с эти в поддержку CloudFlare, а они уже или исправят ее (если проблема на стороне их прокси), или подскажут как сформулировать вопрос для вашего хостера, если ошибка у них.
    Ответ написан
    Комментировать
  • Как простым образом перенести файлы с одного хостинга на другой?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Самым простым, удобным и быстрым всегда будет scp или rsync:
    # Находясь на старом сервере, рекурсивно копируем директорию отсюда на удаленный (новый) сервер
    scp -r /path/to/local_dir remote_host:/path/to/remote_dir
    
    # Или находясь на новом сервере, копируем директорию со старого
    scp -r remote_host:/path/to/remote_dir /path/to/local_dir

    Rsync удобен, если нужно сохранить права, владельцев, даты, или уже частично данные пересекаются – подробнее можете изучить в документации или в одном из многих уроков, типа вот этого. Если речь о простой переносе "отсюда и сюда, целиком и без каких-либо дополнительных нюансов - scp будет более чем достаточно.
    Ответ написан
    Комментировать
  • Как на Laravel делать приложения с формочками и CRUD операциями?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    – Кастомизация дефолтных стабов
    https://github.com/laravel-shift/blueprint
    – Кастомные команды для artisan, которые автоматизируют многие шаги
    – Кастомные пакеты которые берут на себя heavy lifting и предоставляют удобный API для работы

    Вы же программист. Фреймворк – это не жесткие рамки, в которые вас зажимают. Это гибкая основа, на базе которой вы строите ровно то, что вам нужно. Так, как вам удобнее.
    Ответ написан
    Комментировать
  • Как резолвить урл?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Посмотрите хуки template_include / template_redirect и что на них происходит. Ну и да, с помощью add_rewrite_rule или даже add_rewrite_endpoint можно создать дополнительные правила которые будут корректно отрабатываться.
    Ответ написан
    Комментировать
  • Можно ли не обновлять плагины на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно ли не обновлять? Можно.
    Нужно ли обновлять? Нужно.

    Исписано на эту тему уж не знаю сколько...

    Обновления бывают нескольких типов. По semantic versioning это патчи, minor и major.

    Патчи обновлять ОБЯЗАТЕЛЬНО и КАК МОЖНО СКОРЕЕ, потому что в 99% случаев это либо security либо bug fix. От патчей ничего никогда не ломается (если только сильно-сильно не стараться строить свой код на баге в стороннем коде). Желательно обновлять их автоматически, без вашего участия вообще.

    Дальше у нас идут minor. Это как правило улучшения и небольшие дополнения. С полной обратной совместимостью. Их можно смело ставить, почитав changelog. Можно поклацать соответствующую фичу на сайте, чтобы проверить, сбросить кеши и тд. Если у вас что-то ломается от minor релизов, то в 99% у вас кривой код. Ваш код. Или какие-то дикие конфликты с другими кривыми плагинами. И то и другое - проблема, но она не из-за обновлений.

    И только major релизы подразумевают какие-то глобальные изменения (breaking changes) которые потенциально могут сломать ваш код и могут требовать вмешательства в ваш код, чтобы подогнать его к новым фичам. Если речь о конфликте с другими плагинами - надо ждать пока те обновятся. Такие обновления, естественно, не стоит ставить не думая. Сначала читаем changelog и (если есть) migration guide - чтобы понять, что изменилось и что нужно менять в своем коде. Дальше обновляем локально и/или на тестовом сервере, все проверяем. И только если мы убедились что все ок, или внесли необходимые изменения в свой код - вот только тогда обновляем на боевом сайте.

    Конечно, не все разработчики для своих плагинов используют корректную семантическую маркировку, поэтому в идеале надо всегда читать changelog, чтобы понимать что же было изменено и как это может повлиять на ваш сайт (и может ли вообще).
    Ответ написан
  • Какой сервер выбрать для доски объявлений, загруженность сайта в первое время 10-20 тыс. хостов в день?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1) Какой сервер выбрать нужно бюджетно но не в ущерб производительности.

    Не тот вопрос задаете. Любой крутой и мощный сервер будет ДЕШЕВЛЕ чем реклама, необходимая для 50к пользователей, и будет растворяться в маркетинговом бюджете. Какой сервер (или сервера) ваш девопс или бекендер посоветует, такой и будете брать.
    2) какой движок выбрать (думал на wordpress сделать).

    WordPress только в 2х вариантах:
    - дешеве и быстро протестировать идею / нишу, тогда имеет смысл собрать на коленке из недорогой темы и пробовать
    - или же делать по уму если в нишу верите - тогда нормальный бюджет и знающие WordPress- разработчики смогут сделать конфетку. Выберете недостаточно опытных разрабов - получите проблему, потеряете время и деньги. И потом в итоге все равно придете к более опытным переделывать все это. Ну или закроетесь.
    Ответ написан
    Комментировать
  • Быть разработчиком веб-сайтов невыгодно?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    сроки разработки веб-сайта могут достигать одного или даже двух месяцев, а оплата во многих случаях не превышает 10 000 - 15 000 рублей

    Сроки разработки по разным задачам/проектам могут быть от получаса до нескольких лет, а с учетом постоянного развития проекта – пока он жив. Оплата может быть от 0 и до десятков тысяч долларов в месяц. Все очень относительно. Вопрос не в технологиях, рынке и профессии, а в вашем месте в этом всем.
    Ответ написан
    Комментировать
  • Есть ли в Mac OS что-то наподобие микшера в windows?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Имхо, лучшее что есть это Boom 3D - https://www.globaldelight.com/boom/
    Сейчас кстати цены вкусные, да и вообще у них часто скидки.
    Ответ написан
    Комментировать
  • Как быть медлительному разработчику?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Даже опытные разрабы часто ошибаются в оценках и делают дольше - именно поэтому опытные ПМы наши оценки всегда умножают на коэфициент. У хорошего ПМа даже есть матрица коэфициентов - благодаря магии статистики можно посчитать на сколько в среднем ошибается тот или иной разраб в команде. Jira вообще умеет это считать сама.
    2. Чем детальнее задача прописана/поставлена, тем проще и быстрее ее делать. Если задачи не идеальны (а они всегда не идеальны), часто будет всплывать что-то непредусмотренное, что сдвинет сроки. Это нормально.
    3. Очень полезный совет Strannyk - лимит на тупление. Именно это один из главных скилов джуна, который надо развивать. Максимум час времени на самостоятельный разбор, если гугл и документация не помогли за это время - идем к более опытным товарищам за советом. Лиды для этого и существуют, а не для получения более высоких зарплат (как некоторым из них кажется).
    4. Определите ВСЕ нюансы, которые влияют на вашу скорость. Что именно вас тормозит. И устраните то, что можно, а с остальным учитесь жить, возможно даже использовать в свою пользу. Мне известны очень крутые разрабы, которые достаточно медленные в классическом понимании из-за их "задротства" - у них всегда вместе с кодом идут тесты, документация и тд, в том числе грамматика в документации в порядке. Какой-то команде такой стиль работы не подойдет и там такой разраб не продержится, а в какой-то наоброт, именно такие и нужны. Где-то нужно "*уяк-*уяк и в продакшн", а где-то важно качество/стабильность/надежность/безопасность, а сроки вторичны.
    5. Набираться опыта. Больше опыта - точнее оценки и быстрее все делается.
    Ответ написан
    Комментировать
  • Перемешать и переименовать классы html (css)?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    https://github.com/sndyuk/mangle-css-class-webpack...
    https://www.freecodecamp.org/news/reducing-css-bun...
    https://evilmartians.com/chronicles/postcss-module...

    Но в целом смысла в этом особого нету. Во-первых, повторяющиеся строки хорошо ужимаются с помощью gzip и brotli. Во-вторых, сами стили то никуда не денутся, подсмотреть и "стырить" все равно можно. Единственный реальный use case который мне приходит в голову это "нейтральные" названия классов, которые не будут вырезаться каким-нибудь AdBlock.
    Ответ написан
    Комментировать
  • Как в PHPStorm в коде добавить emoji?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Включить в PhpStorm шрифт, который поддерживает emoji.
    JetBrains Mono, например, поддерживает.

    И еще важный момент – то, что emoji не отображается в PhpStorm из-за шрифта, еще не означает, что на страничке оно не будет отображаться. Там же другой шрифт уже будет.
    Ответ написан
    Комментировать
  • Как вывести секцию в админке wp в определенном месте?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    https://www.smashingmagazine.com/2011/10/create-ta...
    https://deliciousbrains.com/create-wordpress-plugi...
    admin-page-framework.michaeluno.jp/tutorials/04-cr...

    А вообще решений масса. Я бы советовал сначала подумать и прикинуть. Если у вас будет одна страничка и 2-3 таба, то делайте вручную. Если больше - имеет смысл использовать библиотеку/фреймворк для административный страниц, сильно упростит жизнь.
    Ответ написан
    2 комментария
  • Что следует почитать/посмотреть для изучения Git?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ написан
    Комментировать
  • Как в wordpress удалить домен в url меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вообще есть несколько способов, и все они решают задачу - но с разной степенью влияния на производительность и возможными побочными эффектами (или же наоборот - их отсутствием). Лично я предпочитаю любой код писать как можно "ближе к телу", чтобы изменения происходили с минимальным количеством телодвижений.

    Например, вариант от WP_Panda абсолютно рабочий. Но меня напрягает использование get_home_url() - и в нем нет никакого смысла, если у вас не мультисайт (что чаще всего), достаточно использовать get_option( 'home' ). Эффект тот же, CPU cycles использовано - меньше.

    Дальше, мне не очень по душе перебирать длинные строки которые потенциально могут сломаться целиком, комфортнее работать с данными, до того как они собрались в HTML:
    function absolute_to_relative_url( $atts )
    {
        $atts['href'] = str_replace( get_option( 'home' ), '', $atts['href'] );
    
        return $atts;
    }
    add_filter( 'nav_menu_link_attributes', 'absolute_to_relative_url' );


    Но и здесь мой внутренний задрот все еще не будет удовлетворен, потому что у нас постоянно вызывается get_option( 'home' ) (или get_home_url()), хотя это значение не меняется. Плюс наша логика выполняется на фильтре, который запускается для каждого элемента меню - это все тоже лишние CPU cycles. Поэтому я бы сделал вот так:
    function absolute_to_relative_url( $sorted_menu_items )
    {
        $host = get_option( 'home' );
    
        foreach ( $sorted_menu_items as $item ) {
            $item->url = str_replace( $host, '', $item->url );
        }
    
        return $sorted_menu_items;
    }
    add_filter( 'wp_nav_menu_objects', 'absolute_to_relative_url' );

    Бенефиты - наш коллбек вызывается всего один раз для одного меню, адрес сайта получается один раз, простой цикл быстро перебирает объекты пунктов меню (данные).

    Этого можно не делать, можно просто отфильтровать HTML - и это будет работать, и заметной разницы в производительности не будет, если это сделано только в этом одном месте. Но важен ваш подход к написанию кода в целом. Если подходить без задротства, то в крупных и сложных проектах начнут появляться проблемы с производительностью. Решить эту задачу можно сразу "оптимальнее", по времени и количеству строк одно и то же, эффект тот же. Но в долгосрочной перспективе - как для конкретного проекта, так и для вашей карьеры в целом, больше пользы если решать задачи наиболее эффективным методом.

    ЗЫ: Задроты поймут, лентяи - нет :)
    Ответ написан
    4 комментария
  • Как передавать Post запрос на другой сайт с параметрами?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Laravel 7:
    Http::post('https://example.com/endpoint', [
        'param' => 'value',
    ]);
    Ответ написан
    Комментировать