Задать вопрос
  • Как сделать роутинг на чистом JS?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    По моему вы пытаетесь переизобрести реакт/вуе.
    Простой ответ - react router.
    Ответ написан
  • Как происходит получение id пользователя для дальнейших манипуляций?

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как мне их правильно соединить?
    Во первых - зачем? Смысл разноса api и приложения в том что бэк работает одинаково со всеми запросами (не особо важно кто и как их дергает, лишь бы права позволяли), а фронт не зависит от бэка в представлении. По этому фронт пишется как морда на каком-нибудь реакте, который от бэкенда получает данные по запросу. Нужно авторизоваться - стучишся в эндпоинт авторизации, отдаешь креденшелы, получаешь токен. Нужно список юзеров - берешь доку по апи, стучишся с нужным пэйлоадом на эндпоинт, получаешь жсон списка, из него рисуешь что хочешь...
    Во вторых -
    Или frontend и backend размещены разными программами?
    что-то мне подсказывает что наверное вы рановато по знаниям взялись за задачу...
    Ответ написан
    Комментировать
  • Почему не отображаются файлы в теге img, html, находящиеся вне папки static?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    пути к файлам пишут от корня сайта, а не от папки темплейта, соответственно если документ рут у вас в app_dir, то путь должен быть src="/static/img.png" и src="/templates/img.png"
    Ответ написан
    3 комментария
  • Почему кука обрезается на 330 символов?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Короче, есть 3 с половиной решения:
    1) Половина раз - сконвертировать полученную жсон строку в бэйс64 или урленкод, класть в куки. Это просто и решается декодом стрки на стороне сервера за 2 минуты. Половина два - разобраться что за символ ломает строку, тупо сравнив что лежит в куках и что дает стрингифай. Что делать - уже решать по ситуации, может конкретно какой-то параметр привести к нормальному формату и все.
    2) Покласть все нужное в локалстораж, при обращении к нужной странице передавать данные любым удобным способом, вплоть до гет параметра в урл.
    3) Если данные нужны для страницы на бэкенде, логичнее хранить их на бэкенде, в сессии, бд или любом другом хранилище на стороне сервера.
    Ответ написан
    2 комментария
  • Filament и мультиязычность кто подружил?

    ThunderCat
    @ThunderCat Автор вопроса, куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Забил на плагин от спати, поднял транслятор outerweb/filament-translatable-fields, все завелось, если кому интересно.
    Ответ написан
    Комментировать
  • Почему PHP считает int числа после математических операций как float?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Так как в выражении одним из операндов присутствует деление, результатом которого будет число с десятичной частью, естественно все дальнейшие действия будут переводить операнды в совместимый формат - с плавающей запятой. Читать про неявные преобразования в языках со слабой типизацией.
    Ответ написан
    Комментировать
  • Чем 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
    При вышеописанных условиях ничего не двигается. Косяк где-то выше по дереву, или какие-то стили перебиваются, что легко можно глянуть в инспекторе стилей.
    Ответ написан