Задать вопрос
  • 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/ в руки и тестируйте свои познания в регулярках.
    Ответ написан
  • Как заставить работать HTML Drag and Drop API на мобильных устройствах?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Как в ходе распознавание номеров, записывать данные в БД, при этом исключить дубли?

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

    Если да, то:
    (поля и таблицы приведены для примера, естественно в реале они у вас будут немного другие)
    1) Номера должны лежать в отдельной табличке, идентифицирующей авто (cars например). Поля - id | number | comments. Номер должен быть с индексом unique.
    2) Интервалы пишутся в другую табличку - intervals, где есть id | car_id | start_time | end_time
    3) При заезде на сервис номер распознается и запрашивается из базы, если не находится - создаем новый, запоминаем id. Записываем в intervals.start_time текущее время, в intervals.car_id запомненный id машины или id выбранный из базы машин. Пишем end_time по таймеру, последняя запись будет временем окончания стоянки.

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

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

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

    В качестве переводчика гораздо лучше подойдет АПИ чатГПТ или джемени, стоит не дорого, а переводит на порядок лучше онлайн переводчиков, так как хорошо учитывает контекст всего текста, а не предложений отдельно.

    Какие способы есть быстро и эффективно проштрудировать .php файлы на наличии в нем кириллицы и задать блокам-родителям уникальные идентификаторы(к примеру data-translate="a += 1")
    Думаю что вариант с маркировкой блоков заведомо кривой, я бы искал регуляркой по русским символам и в местах текста менял бы на что-то типа <?=_t('найденный текст');?>, ну и 'найденный текст' использовал бы в качестве ключа к переводу фразы в структуре переводов. И с бэкенда уже все приходило бы в нужном языке (что позволяет вообще практически не менять фронт). Это исходя из того что сайт самописный, на какой-нибудь ларе есть куча готовых мультиязычных решений.
    Ответ написан
  • Возможно ли используя js очистить кешированные данные загруженных документов?

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Грокаем алгоритмы?
    Ответ написан
    1 комментарий
  • Можно ли использовать одинаковый url для мультиязычного сайта?

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Несколько лет писал его под Windows (C# в MS Visual Studio) ... На что посоветуете перейти? Надежд на перенос кодовой базы не питаю, смирился с тем, что придется писать с нуля.
    а в чем проблема?
    https://code.visualstudio.com/docs/setup/linux
    Нормально ли писать на C# на Linux Manjaro?
    Ответ написан
    Комментировать
  • MySQL: как реализаовать поиска по нескольким вхождениям?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но тут возникает проблема в формировании prepared statements в PHP (PDO).
    А в чем проблема?
    $sql = 'SELECT * 
    FROM articles 
    WHERE name LIKE ? 
    AND name LIKE ?';
    $prep = $dbh->prepare($sql);
    $ret = $prep->execute(['%' . 'опух' . '%', '%' . 'поч' . '%']);
    Ответ написан
    2 комментария
  • За что можно получить бан на хабр фрилансе?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать