Ответы пользователя по тегу Веб-разработка
  • Цвет опции на английском языке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    На перечисленных сайтах англоязычные обозначения цветов используются в основном для электроники, где цвет часто является частью названия продукта / модели и тд, разумеется на английском. Например, цвета iPhone (rose gold и тд) или какого-нибудь Samsung Galaxy S10e (у которого классические простые цвета - black, white, yellow, green). У таких товаров цвет также содержится в названии модели. И все потому, что пользователи часто ищут именно конкретную "модификацию", например "Apple Watch 4 silver gray" (вы же, кстати, не ждете что товар будет называться Часы Яблоко 4 серебристо-серые, правда?). А вот другие товары, у которых цвета просто являются вариациями и не продвигаются отдельно, чаще всего написаны на русском/украинском, никто не заморачивается даже склонением - это тупо параметр. А часто в название товара запихивают даже оба варианта - опять же, ключевые слова для поиска. Сравните например на розетке смартфон и тапочки:
    5dbacfe226fa0507423305.jpeg
    5dbacfeaccabe391071946.jpeg

    На других сайтах (комфи, цитрус и тд) это не так заметно, потому что там все связано с электроникой и бытовой техникой. Но если присмотреться внимательней, например зайти в рабочий инструмент на том же комфи, то в характеристиках цвет будет обозначен на русском/украинском. А вот для смартфонов, смарт часов и прочего в UI фильтров комфи вообще название цвета не пишет, только в названии. Зачем - см. выше. Названия цветов для многих категорий товаров являются частью "модели", цвета эти самые часто не обычные стандартные цвета, а "фирменные", даже один и тот же товар в разных цветах может стоить по разному.
    Ответ написан
  • Как ускорить скорость загрузки сайта, метрика и движовосайт тянут вниз?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Отложить загрузку на 5 секунд - выход, но грубоватый (имхо конечно). Я делаю по-другому - оборачиваю код в скролл-ивент + задержка в 1 секунду. То есть, сайт загрузился быстро, и как только пользователь начал скроллить хоть чуть-чуть - секундный таймаут и загрузка дополнительных ресурсов. Гугл доволен, пользователи вообще не замечают задержки:

    var fired = false;
    
    window.addEventListener('scroll', () => {
        if (fired === false) {
            fired = true;
            
            setTimeout(() => {
                // Здесь все эти тормознутые трекеры, чаты и прочая ересь,
                // без которой жить не может отдел маркетинга, и которые
                // дико бесят разработчиков, когда тот же маркетинг приходит
                // с вопросом "почему сайт медленно грузится, нам гугл сказал"
            }, 1000)
        }
    });
    Ответ написан
  • Как решить правильно простенькую задачку по php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    // По вашему коду:
    $source_string = 'abcdefghijklmnopqrstuvwxyz';
    $string_randomized = str_shuffle($source_string); // Перетасовали буквы внутри строки
    echo substr($string_randomized, 0, 6); // Вывели первые 6, без повторений и каждый раз после str_shuffle - уникально-рандомно (относительно, но задача именно этого и требует)
    
    // По красоте:
    $characters = 'abcdefghijklmnopqrstuvwxyz';
    echo substr(str_shuffle($characters), 0, 6);
    
    // Тестируем в psych:
    >>> $characters = 'abcdefghijklmnopqrstuvwxyz';
    => "abcdefghijklmnopqrstuvwxyz"
    >>> echo substr(str_shuffle($characters), 0, 6);
    fzpvad
    >>> echo substr(str_shuffle($characters), 0, 6);
    bzeiyj
    >>> echo substr(str_shuffle($characters), 0, 6);
    pgkuaq
    >>> echo substr(str_shuffle($characters), 0, 6);
    otjszx
    >>> echo substr(str_shuffle($characters), 0, 6);
    zjwaox
    >>> echo substr(str_shuffle($characters), 0, 6);
    rxuhnv
    >>> echo substr(str_shuffle($characters), 0, 6);
    rihoec
    >>> echo substr(str_shuffle($characters), 0, 6);
    uwdfgn
    >>>
    Ответ написан
  • Стоит ли становиться fullstack?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не стоит.

    Я сам лет 12 был FullStack и даже активно отстаивал точку зрения, что FullStack это круто, это удобно клиентам, это полезно (даже must have) знать все составляющие и тд и тп. Потом я как-то принял решение уйти полностью в бекенд. И спусть несколько лет понял что это было одним из самых важных и самых правильных решений в моей жизни/карьере.

    Реально и объективно сравнить хорошего фронтендера с фуллстаком, хорошего бекендера с фуллстаком - сложно. Ибо у всех свой уровень, сложно найти кого с кем реально можно сравнить. Поэтому подкрепленных наукой цифр у меня нет. Но по опыту и ощущениям - фуллстак всегда будет по уровню ниже аналогичного узкого специалиста. Потому что физически он не сможет уделять каждому направлению столько времени, сколько узкий специалист.
    Ответ написан
  • Как закэшировать отдельный шаблон wordpress?

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    PHP, Laravel & WordPress Evangelist
    Вам понадобится посмотреть код плагина кеширования и найти то место, где можно включиться и помочь ему понять, что если wp_is_mobile() у нас true, то берем (или создаем и берем) мобильный кеш, если false - десктопный. Если используется их метод кеширования через mod_rewrite, то и настройки этих rewrite надо будет подкрутить, на уровне сервера определяете desktop/mobile.

    В описании плагина есть:

    8. Enable/Disable cache option for mobile devices


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

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    PHP, Laravel & WordPress Evangelist
    У функций the_field() и get_field() есть второй, необязательный парамент - ID объекта, с которого брать нужное поле. Если его не указывать - берется с текущего объекта. Если нужно взять с другого - указывайте нужный ID явно. Для страниц настроек, таксономий, терминов, юзеров и тд там свой формат для этого ID. Все это есть в официальной документации плагина:

    https://www.advancedcustomfields.com/resources/get... (раздел Get a value from different objects)
    https://www.advancedcustomfields.com/resources/add...
    Ответ написан
  • Как вы разрабатываете и поддерживаете сайты на Worpdress?

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    PHP, Laravel & WordPress Evangelist
    В целом все ок, разница всегда будет в каких-то нюансах. В зависимости от типа проекта, нюансов будет больше или меньше. У нас плюс-минус так:

    - Локальная разработка на macOS + Laravel/Valet (Nginx, PHP 7+, MariaDB, Redis/Memcached).
    -Staging/production могут быть как отдельными серверами, так и находиться на одном сервере, а также могут быть много сайтов на одном сервере, или это может быть не наш сервер, а какой-нибудь Kinsta или вообще клиентская инфраструктура к которой у нас доступа нет. Поэтому devops кухня вообще отделена. С нашей стороны только автодеплой из репы через CI/CD. Ветка develop -> staging, ветка master -> production.
    - WordPress, плагины, тема, и весь кастомный код являются зависимостями проекта, управляется с помощью Composer.
    - Работа с функциональностью WordPress строится полностью на командной строке с помощью WP-CLI. При необходимости пишутся свои команды для него.
    - Вся конфигурация проекта в .env (база, ключи, лицензии и прочее, что не попадает в git) и в папочке config в виде PHP-конфигураций (все что уже влияет на функциональность).
    - Медиа-файлы на локалке либо вообще не хранятся (Valet проксирует запросы на staging/production), либо синхронизируются со staging/production. Делается это с помощью отдельного cli-скрипта, который под капотом использует rsync.
    - Базы данных - отдельная история которая очень сильно зависит от специфики проекта. Где-то это простой push/pull с помощью WP Migrate DB, где-то тот же push/pull c помощью WP-CLI, где-то это целые миграции. В идеале надо стараться контент забирать с прода на стейдж и избегать публикации с dev/staging на продакшн. Но ситуации и проекты бывают разные, здесь нет одного правильного ответа.
    Ответ написан
  • Для каких задач в веб-разработке очень хорошо подходит питон?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    ИМХО, судя по комментариям и вашим ответам, вы как-то странно выбираете - пассионарно, но зашорено (вот например, ваша нелюбовь к PHP, при том что вы его даже не знаете).

    Если хотите быть успешным коммерчески и рубить бабло налево-направо именно в веб - JS, PHP, Ruby, Go как замена Node.js.

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

    А если хотите качественно развиваться как разработчик - перестаньте ограничивать себя устаревшими мемчиками типа "пых-говно", изучайте разные языки. Начните с академической Java, поковыряйте С/С++/С#, попробуйте Go, полистайте доку по Swift или Rust, посмотрите особенности Haskell. Гляньте ассемблер, чтобы почувствовать истоки. Perl и Shell/Bash не забудьте. Ну и, конечно же - PHP, Ruby, Python.
    Ответ написан
  • Есть ли смысл в моем выборе. PHP или JS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Лучше научиться понимать общие принципы, которые стоят за бекендом - реляционные и nosql базы, сильные и слабые стороны и их специфика, АПИ, serverless / lambda, цикл request-response, многопоточность, очереди, in-memory cache и все такое. А язык (JavaScript, PHP, .NET, Python, Ruby etc) или конкретный фреймворк на каком-то из этих языков - дело десятое.
    Ответ написан
  • Как оценить стоимость разработки?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Обычно даже примерно не могу прикинуть требующееся время на разработку

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

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    PHP, Laravel & WordPress Evangelist
    Вариантов много. Либо шаблоны page-{id}.php / page-{name}.php, либо произвольные templates, которые назначаются вручную каждой конкретной странице. Если "страницы" это не page, а custom post type, то при регистрации нужно в 'supports' указать 'page-attributes'.
    Ответ написан
  • Как передается информация о пользователе в WordPress AJAX?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Авторизованный юзер - это кука у юзера на клиенте и сессия на сервере у вас. При всех запросах браузер автоматически передает куку на сервер, по ней идентифицируется сессия пользователя. Если сессия есть и она валидная, юзер считается авторизованным. Ну и все его данные доступны - ID, роль, permissions и тд. Поскольку при аякс-запросе выполняется не только 1 эта функция-коллбек, а сначала загружается и выполняется ядро WordPress, то функция is_user_logged_in() на момент ее вызова в коллбеке уже работает в нормальном окружении WP, имеет доступ к сессии, данным юзера и тд. Вот и вся магия.
    Ответ написан
  • Как определяют стоимость разработки?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Упомянутая статья не определяет стоимости разработки вообще. Она определяет какой-то гопнический способ "сбить бабла с клиента так чтобы не лохануться".

    Стоимость разработки определяется ресурсами, необходимыми на эту разработку (люди, время, объемы, сложность, сторонние лицензии и тд). Цена за идентичную работу должна быть одинакова что для локального малого бизнеса, что для крупной международной корпорации с баблом. Другое дело, что корпорации можно продать допуслуги, хорошую приоритетную поддержку, фичи, обучение персонала и тд.
    Ответ написан
  • Переливание пользователей в МЛМ матричной системе?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Посмотрите в сторону процессинга на PHP с помощью рекурсии. Для МЛМ-матриц рекурсии – самое оно. Глядишь, и код перестанет так сильно пахнуть.
    Ответ написан
  • С чего начать и как себя рекламировать веб-мастеру?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Для начала, перестать называть себя "веб-мастер". Это термин из 90х, и лично у меня закладывается подозрение, что человек владеет технологиями именно того периода. Нынче есть модный термин full-stack developer. Впрочем, и понятие full-stack сейчас не очень-то хорошо на себя натягивать. Ибо тот, кто делает только одно (фронт, бек и тд), как правило прокачивает скилы до более высоких уровней, чем эникейщик, который умеет всего понемножку. И хоть уметь во все в нашей сфере необходимо, должен быть фокус. Именно фокус на чем-то одном приводит к работе над хорошими проектами с хорошими бюджетами. Со временем, естественно. Опыт - все.

    Далее, если еще не учишь английский, то самое время начать. Вчера. Без английского у тебя всегда будет потолок, в который ты упрешься очень быстро.

    Теперь по вопросам:

    Какие сайты выбирать для фриланса по веб-составляющей, популярные или нет?

    Upwork

    Стоит ли вкладываться в покупку премиум-аккаунтов на таких сайтах и окупятся ли они?

    Если собираешься работать там фуллтайм и долго - да и да.

    Нужно ли продвигать себя в контекстной рекламе, группах вк за деньги?

    Не думаю. Хотя, если твоя целевая аудитория там - тогда да. Но нет.

    Долго ли заняло ваше продвижение, и много ли у вас заказов теперь?

    Сложно сказать где и когда наступил тот момент, когда "продвижение" было достигнуто, ну или как еще это сформулировать. Скажу лучше так - я в это сфере с 1997 года, и до сих пор "продвигаюсь". Потому что точка Б как таковая отсутствует. Это вечный процесс движения вверх, местами проседая вниз, местами плато, местами снова вверх... Далее - количество заказов не столь важно. Важно их качество, бюджеты, ну и, как результат, соотношение количества к бюджетам. Грубо говоря, можно за 6 месяцев сделать один проект с бюджетом $10-30-50к, а можно все эти 6 месяцев пилить 20 проектов по $500.

    Какая среда разработки удобнее для вас? (имею под владением сразу mac, windows и ubuntu)

    В принципе она не важна, "на скорость не влияет". Лично мне - mac, ну и ubuntu/debian/centos/freebsd на серверах.
    Ответ написан
  • Как большие сайты справляются с отправкой e-mail?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Имею ввиду письма: уведомление об ответе, письма подтверждения регистрации и т.п.

    Во-первых, это называется транзакционные письма.
    Во-вторых, под это существует вагон узкоспециализированных сервисов, которые умеют только в это, но умеют очень хорошо, и стоят на хорошем счету у всех почтовиков. Сервисы эти, внезапно, называются сервисами транзакционных писем (Transactional Email Service). Это Amazon SES, Mailgun, Sendgrid и вагон аналогичных. Есть и русскоязычные - гугл в помощь.
    Ответ написан
  • Можно ли одновременно использовать flexbox и grid на одной странице?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно и нужно. Grid создали не для того, чтобы заменить Flex. Это 2 разных метода построения лейаута, если грубо:

    - Grid = 2D (расположение элементов по 2м осям одновременно, по горизонтали и по вертикали)
    - Flex = 1D (расположение элементов только по 1й оси, горизонтали или вертикали)

    Еще грубее - flex хорош для "инлайна", выравнивая элементов в одной строке или колонке, как правило это конкретно контент-элементы, а grid - хорош для контейнеров и более общих элементов (карточек и тд). То есть, гридом задали общую структуру и лейаут, флексами внутри блоков расставили контент-элементы.
    Ответ написан
  • Лучший сервис для защиты от брутфорса/парсинга для вебсайта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    имхо:

    - роботам ограничить аппетит в robots.txt адекватным rps/rpm
    - выставить тот же адекватный rps/rpm на уровне сервера с помощью rate limiting

    результат:

    - роботы без проблем индексируют
    - обычным пользователям никаких капч и неудобств
    - особо активным и левым ботам с аппетитом выше rate limit - автоматический бан или просто сброс запросов свыше лимита (тут на выбор по вашему желанию)
    Ответ написан
  • Допустимо ли развернуть git в директории боевого сайта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    саму папку .git закройте на доступ, а так проблем нет
    Ответ написан