Задать вопрос
  • Чем frontend разработчик занят на реальных проектах?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    И заметила, что основная часть задач - инфраструктурная.
    Такой работы всегда много, но есть нюансы.
    Настройка тестов
    Да, это в любой разработке будет, не только во фронте
    CI/CD
    Сомнительно, но окэй, знать это очень желательно, но в крупных проектах этим занимается девопс, как минимум настраивает скрипты. В малых компаниях это раскидывается на разрабов, есть такая практика.
    OLAP CUBE, оптимизация запросов к БД.
    А это вообще чисто бэкендерские заморочки, конечно никто бить за понимание таких штук не будет, но в целом фронту это не особо важно, у него должно быть расписано апи/эндпоинты и чего туда пихать и что получать. Уж оптимизацией запросов чистый фронтендер точно не обязан заниматься.

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Извините, но
    поныл
    народ здесь как будто вообще никогда ни разработкой ни дебагом не занимался. Один сразу предлагает перейти на симфони (кроме того что это затратно по времени и требует скорее всего изучить еще один фреймворк, так и пользы будет ровно НОЛЬ, так как очевидно что проблема не в движке, а в реализации), причем налицо чистый незамутненный сомнением неаргументированный фанатизм, платят ему что ли за установку каждой симфонии?.. Другие тыкаются в ОС, как будто это волшебный пендель, на котором все сразу полетит... В общем случае докер действительно будет работать быстрее на линухе, но оспанели ОС вообще по барабану, отсюда вывод что проблема не в ОС.

    Первое - определить проблему. Как базовый вариант - ларавель дебагбар + телескоп. Смотреть что и как по времени отрабатывает, смотреть какие куски тормозят, делать точечные замеры исполнения. Обратить внимание на количество и качество запросов, вполне возможно что где-то натыкано левых или кривых запросов, еще и настаканных по 200 штук...
    Второе - 80% что тормозит не код, а бд, но тут это чисто статистическое предположение, так как что там у вас в базе никто не знает. Проверьте запросы, долговыполняющиеся прогнать руками через експлэйн, проверить наличие нужных индексов и отсутствие ненужных.
    Если критических косяков нет, то даже весьма средняя машинка потянет некрупный проект с небольшой базой.
    Ответ написан
    Комментировать
  • Как сделать блокировку тегов/атрибутов тегов на сайтах Android/iOS?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    FF + AdGuard?
    Алсо, что-то типа тампермонки/оранжмонки...
    Ответ написан
    Комментировать
  • Как можно предложить google идею для улучшения android?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Возможно через комюнити центр? По крайней мере можно спросить как связаться с кем-то по вопросам фидбэка.
    Ответ написан
    Комментировать
  • Как сделать список с которым можно будет работать в консоли?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    1) Указывайте язык, который используете, телепаты в отпуске. Ок, из кода понятно что питон, но в вопросе об этом ничего не написано.
    2) Так как структура данных у вас хранится в коде (что однозначно не айс), подойдут словари с соответствующей вложенностью - регион : области. Из него через .keys() и list() получаем регионы, а по регионам уже и области в виде списка получить можно. Алсо, я бы хранил словарь в отдельном файле как json, что сделает работу с кодом независимой от данных.
    3) Все еще не вижу причин издеваться над пользователем через консоль. Страничка с 2 полями и запрос на сервер, вроде в питоне даже свой какой-то вебсервер есть искаропки.
    Ответ написан
    Комментировать
  • Простой счётчик без БД (допустим на основе txt файла)?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    По сути ксть только 2 варианта:
    1) Смотреть логи сервера расположения.
    Из плюсов - простой надежный вариант, не требующий дополнительных телодвижений (ну почти, логи все же надо как-то обработать, но хотя бы с записью проблема отпадает).
    Из минусов - логи могут не вестись конкретно этим сервером, логи могут регулярно чиститься, может быть проблема с доступами к ним, алсо, если сервер заранее не настроен на сбор статистики, то поведение логов может завтра поменяться и приехали.

    2) Встроить систему мониторинга на js, которая будет отсылать данные на внешний сервис, где уже можно делать как нравится.
    Из плюсов - независимость от практически любых условий, единственное требование - доступ к страничке по хттпс. Как вариант - готовые сервисы учета тараффика и аналитики.
    Из минусов - нужен сервер с кастомными настройками и базовые знания жс и какого-нибудь серверсайд языка (пых, питон, та же нода...). В случае внешнего сервиса все проще, но необходим доступ к интернету на местах.
    Ответ написан
    Комментировать
  • Как в REST хранить состояние клиента?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Насколько известно, REST не хранит состояние клиента между запросам.
    Это не значит что он вообще не хранит состояние клиента, это значит что он хранит только состояние на момент синхронизации, а МЕЖУ запросами состояние клиента находится в неопределенном состоянии до момента следующей синхронизации. То есть это не принцип который надо соблюдать, а констатация факта. Кроме того, в вашем примере бэкенду/апи вообще должно быть фиолетово на состояние клиента.

    Клиент передаёт необходимые данные в первом запросе. Эти данные меняют состояние сущности (лабиринт) на сервере.
    Сущность лабиринт НИКАК не затрагивается, у вас может изменяться только принадлежащие вам сущности, в данном примере у вас будет меняться состояние робота.

    Если бы клиент располагал всеми данными,
    то он был бы бэкендом и апи было бы не нужно. Собственно апи - способ обмена запрашиваемыми данными.

    Последующие запрос-ответы связаны с предыдущими, не имеют смысла без выполнения предыдущих, поскольку сервер хранит изменяемую сущность (лабиринт).
    Не лабиринт.

    Как серию "запрос-ответ" логически объединить?
    Зависит. Так как вопрос у вас на пальцах и вообще без конкретики, то и ответ будет достаточно общим в рамках описанной системы.
    1) Вы не работаете с сущностью лабиринт, вы работаете с сущностью робот, которая имеет некоторое положение/координаты в лабиринте.
    2) Сущность робот имеет уникальный идентификатор - id, по которому вы однозначно можете определить какой конкретно робот вами будет задействован. Собственно при первом запросе апи должно вам в числе прочего вернуть id робота и его положение.
    3) Запрос к апи для получения позиции робота на момент следующего запроса примерно: GET someapi.tld/api/v1/robot/{id}, в результате назад вы получите объект робота с координатами. Что с ними делать зависит от вашего функционала, например можно задать новые целевые координаты.
    4) Если вам нужно чтобы роботы принадлежали конкретным пользователям, вводим ключи/авторизацию, через которую апи будет определять что робот 55 принадлежит Василию Пупкину, и только он может менять координаты данного робота. Читать соответствующие мануалы.
    Ответ написан
    Комментировать
  • Как в .htaccess перенаправлять запросы в index.php при отсутствии папки или файла?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    if(!$_GET["request"] || typeof $_GET["request"] !== 'string')
    typeof здесь не в тему, так как у вас ВСЕГДА приходит стринг, в гет запросе (как впрочем и в любом другом) нельзя указать тип.

    1. Есть ли лучшие идеи, чем мои?
    В принципе идея не нова, есть даже сервисы готовые под похожие задачи, типа cors-anywhere от heroku и еще куча по запросу cors proxy.

    Я понимаю, что можно напрямую делать запрос к '/?request=''" и не заморачиваться с .htaccess, но такой вариант не красив.
    Это вообще 2 разные задачи. .htaccess настраивается на единую точку входа как написал Сергей delphinpro, далее вы в коде все запросы прошедшие к индексу проверяете на $_SERVER['REQUEST_URI'] (никакой /?request вам не нужен), вытаскиваете из него урл картинки и уже например curl используете для получения ее с другого сайта. Картинку запросу отдать как текст, предварительно отослав соответствующие картинке заголовки.

    2. Как лучше всего обработать ошибку и сделать перенаправление при ненужном или неправильном запросе?
    проверять $_SERVER['REQUEST_URI'] на "правильность", например что запрашивается файл определенных заранее типов, ака вайтлист. В случае несовпадения можно тупо отправить 404.

    3. Как обеспечить безопасность субдомена?
    Безопасность от чего?

    if(!file_exists(folder)) { // проверка на существование папки / файла (так папки или файла?)
        CreateFolder(folder, req) //а если это файл, все равно создаем папку с таким именем?
        return //то есть вложенность больше 1 уровня папки создаваться не будут? 
    }
    Ответ написан
  • RBAC: когда создавать нового пользователя в ДБ?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1. когда вообще в базе надо создавать отдельного пользователя? Есть практики что что почитать?
    Когда человек регистрируется в системе, вроде очевидно.

    2. есть ли какие паттерны проектирования баз под такое. Идея-то интересная.
    Есть конечно. Только подход с пользователями бд обычно тупая идея, так как смена роли/группы/доступа будет нуждаться в прямом вмешательстве в систему бд, что не есть гуд. Обычно RBAC не реализуется на уровне пользователей бд, а использует код, который ориентируется на данные из бд.

    3. Какие слова вообще гуглить?
    RBAC <ваш фреймворк> library
    Ответ написан
    Комментировать
  • Изучение php с нуля для верстальщика?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Есть ли смысл начать с устаревшего материала?
    4-5 лет не сказать что сильно устаревшие. ИМХО спокойно можно учиться, основы будут одинаковы для любой версии языка, изменения в новых версиях большей частью касаются ООП составляющей, до которой еще дойти нужно. В целом и ООП код более старых версий совместим с последними версиями, во всяком случае с 5+, в обратную сторону конечно же работать не будет. Ну а новые фишки по типу тайпхинтинга и анонимных объектов можно доучить и самостоятельно.
    Ответ написан
  • Можно ли как то внедрить Laravel постепенно, например установить как основной каркас и в него уже встроить CMS?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    разработчики все время советуют перейти на новые технологии а если точнее на Laravel и с MySQL на PostgreSQL чтоб сайт не только стал современным но и работал шустрее.
    Переход с самописа на лару - хороший шаг, переход на постгрес нужен только если нужны конкретные задачи, решаемые постгресом лучше чем мускулем. Например, если у вас есть большой массив json данных, хранимых в соответствующих полях и требующий каких-либо выборок на основании этих полей, то есть по сути - если у вас база хранит ненормализованные сортируемые данные. В остальном выгода от перехода с мускуля на постгрес будет не видна без микроскопа.

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

    Обычно заявы по типу "мускуль гуано, надо менять на постгрес" без конкретных аргументов признак поклонников карго культа, а не профи. Так что я бы послушал аргументы для начала, а то потом окажется что там индексы только первичные на таблицах, про explain никто никогда не слышал, а выборки идут по тысяче в циклах, но виновата, конечно же, тормознутая бд.
    Ответ написан
    3 комментария
  • Что не так с вёрсткой кнопок?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    https://codepen.io/ThunderCat-aka-Snark/pen/bNGdbNe
    При вышеописанных условиях ничего не двигается. Косяк где-то выше по дереву, или какие-то стили перебиваются, что легко можно глянуть в инспекторе стилей.
    Ответ написан
  • Как сделать валидацию очень сложной формы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Пытаюсь сделать обязательными поля: country и birthday
    Для этого существуtт атрибут required. Естественно это не отменяет проверки полей на бэкенде, но это немного другой вопрос.

    где даже submit находится за формой (внесение его внутрь не помогает).
    Как вообще идея вынести из формы кнопку субмита пришла в голову? А главное - зачем?

    Перепробовал все способы которые нарыл. Ничего не помогает.
    Плохо рыли. Это вообще дефолтное поведение формы, не требующее никаких скриптов. Форма не отправиться пока не будут заполнены указанные как required поля. Если нужны какие-либо еще манипуляции с формой на js, то делается по другому. Форма не трогается, а в кнопку никакие онклики не лепятся. На объект формы вешается событие онсубмит, после чего ПРОВАЛИДИРОВАННАЯ форма вызовет это событие, и дальше уже можно работать с данными формы, в том числе и отправить ее аяксом на бэкенд если необходимо.
    Ответ написан
  • Как злоумышленник проникает на сервер?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Первое что стоит проверить - есть ли у вас скрипты принимающие файлы, например загрузка аватаров. Проверить папку загрузки на наличие странных файлов, например что-то типа pupkin.jpg.php...
    Ответ написан
    Комментировать
  • Как сделать отображение эмодзи в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Решением было только поменять кодировку таблицы базы данных MySQL, но в моем случае она была utf8mb4, которая должна поддерживать эмодзи.
    Так как utf8mb4 "обратно совместима" с utf8, все кроме 4байтных символов будет нормально отображаться. Соответственно при указании настроек соединения стоить исправить чарсет на utf8mb4, который по умолчанию у вас скорее всего utf8.
    Ответ написан
    Комментировать
  • Как в Ларавель Orchid выгрузить пользователей определенной роли?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если роли реализованы через spatie, то
    $admins = User::role('admin')->get();, собсно емнип оркид в себе ролей не несет.
    Ответ написан
    Комментировать
  • Устанавливать ли в php таймзону пользователя?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    5) Какие главные минусы против чтобы временную метку хранить просто как число unixtimestamp? То что выборки , когда нужны всякие DATE специфичные функции, потребуют преобразования в тип дату в каждой строке? (это преобразование может не сложное?, ведь datetime и так хранится как число)
    Как минимум то что у вас дата не хранится как дата. Про то что не будут работать стандартные функции работы с датами типа разницы в год, месяц, неделю и прочие весьма неочевидные преобразования я вообще молчу, чего стоит банальное вычисление количества дней до, например, конца месяца, с учетом того что каждый месяц имеет разную длину, не говоря уже про високосные года, ну и всякие расписания, где работа с минутами/часами без готовых функций тоже так себе удовольствие. Кроме того, таймстамп имеет свои ограничения, например в нем нельзя хранить даты раньше чем 1970 год, то есть пользователи старше 55 лет дату рождения сохранить не смогут. Ну и горизонт планирования до 2038 года, дальше все. Алсо, вы теряете защиту от кривых данных на уровне типа поля, что тоже +1 в копилку встроенных типов.
    В целом, таймстампы это именно метки, то есть "тогда-то произошло такое-то событие, относящееся к текущему времени", со своими ограничениями.
    Ответ написан
    Комментировать
  • Как делаются отдельные страницы товаров на многостраничном сайте, где их много?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Можете посоветовать как к этому подойти? Может есть какие-то источники, которые я не смогла найти, где говорится, как это делать? Мне кажется, что это возможно, потому что Авито был до того как появился реакт, как-то же это сделали
    Почти любой современный сайт состоит из 2 основных частей: Фронтэнда и бэкэнда. Фронт - то что отображается в окне браузера, бэк - серверная часть, отвечающая за чтение, изменение и сохранение данных, которые можно вывести для клиента в любой удобной форме. По этому для реализации вашего проекта понадобятся знания не только верстки и js, нужно будет и разобраться с серверной частью, которая обычно состоит из движка на каком-то языке, подходящем для веб разработки (PHP, Pyton, Java, JS...) и базы данных, где будут храниться собственно данные о пользователях, объявлениях, просмотрах и т.д.

    Может есть какие-то источники, которые я не смогла найти, где говорится, как это делать?
    А искали?
    Ответ написан
    Комментировать
  • Как удалить по 2 переноса в строках текста на JS?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    https://regex101.com/ в руки и тестируйте свои познания в регулярках.
    Ответ написан