• Как разрешить архитектурную проблему?

    @quiex
    Почитайте про закон Деметры
    Ответ написан
    Комментировать
  • Как разрешить архитектурную проблему?

    @soloveid
    Ну Вы сами подошли к более правильному решению.
    Должна быть сущность, которая группирует пользователей и группы, и именно она будет
    знать как пользователь связан и куда принадлежит, соответственно метод getStatus должен быть её.
    Так вы не усложняете текущее решение (навороты в класс User и Group), а добавляете новую функциональность
    с помощью добавления нового кода (знаком такой принцип?)
    Ответ написан
    Комментировать
  • Архитектура сайта?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Итак по полочкам.

    / Корень проекта
    /public - артефакты после сборки, по идее это ваш фронт
    /src - все что учавствует в сборке
    /sql - все что относится к БД
    /docs - документы и прочее
    дальше во вложенности разбирайтесь сами, но рекомендую быть разумным и отделять мух от котлет
    Ответ написан
    Комментировать
  • Как снизить зависимость от разработчиков?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Странно все это стало. На 3 х последних собеседованиях меня спрашивали а вы не уйдёте в закат? Общее правило для вас. Не обижайте разработчиков. В договоре пропишите передачу имущественных прав на код. Документируйте все решение, синхронизируйте код и проектную документацию. Я бы все же выбрал Фреймворк, тут и все те плюсы что вы описали и оптимизация для ceo и легкая интеграция с бэк офисом и платёжными системами и отсутствие костылей потому что программа делает только то что нужно. По уму конечно лучше взять в штат программиста который будет поддерживать ваш проект.
    Ответ написан
    4 комментария
  • Как вычислить что отправляет запросы на сервер со своего же ip?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Если периодичность постоянная - возможно, какой-то скрипт в планировщике или мониторинг. Но поскольку у вас упомянута б-гомерзкая панель - разумеется, первый подозреваемый - именно её потроха.
    Ответ написан
    1 комментарий
  • Подходы и принципы создания безопасных сайтов?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Owasp ищите эту аббревиатуру
    Ответ написан
    1 комментарий
  • Зачем нужен hash?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    это защита от Cross-Site Request Forgery https://cheatsheetseries.owasp.org/cheatsheets/Cro...
    данный hash формируется на сессию. вот он и проверяется при клике, что клик сделан именно с сайта вк, а не подделан с другого сайта
    Ответ написан
    Комментировать
  • Нормальная ли сборка ПК для игр?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Памяти маловато. Хотя бы 16 Гб надо, а лучше 32.
    И видеокарта слабовата.
    Впрочем, смотря под какие именно игры. В шахматы и на калькуляторе играть можно.
    Ответ написан
    Комментировать
  • Почему класс \Memcached() не находится, хотя библиотека php_memcache.dll подключена?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    memcache и memcached - это разные вещи.
    php_memcache.dll не имеет отнощения к классу \Memcached
    Ответ написан
    3 комментария
  • Как вычленить номер автомобиля?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    В номере присутствуют не все буквы, а только из списка
    А, В, Е, К, М, Н, О, Р, С, Т, У и Х
    Регулярка такая:
    ([АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]\s*\d{3}\s*[АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]{2}\s*\d{2,3})|([АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]{2}\s*\d{3}\s*\d{2,3})


    Примеры на reg101
    Ответ написан
    Комментировать
  • Fullstack: составить дорожную карту?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Не устаю постить это раз за разом:

    1*V7TMAzvhW7_cn9FbkKqOcQ.png

    5fdd6ccf619231ae7760a7661324ff64.png
    Ответ написан
    3 комментария
  • Должен ли программист думать о дизайне?

    Maksclub
    @Maksclub Куратор тега Карьера в IT
    maksfedorov.ru
    Программист тоже дизайнер
    https://www.youtube.com/watch?v=h4QuJ0xBGfc
    Ответ написан
    Комментировать
  • Сборка пк для игр 21-23г?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    Мне не кажется покупка 3090 рациональным шагом: мизерный прирост производительности, по сравнению с 3080, но цена вдвое больше. 3080, конечно, надо будет подождать....
    Насчет K процессора и топовой матери - такие-же соображения. Зачем переплачивать и потом еще разоряться на киловатный БП, если вы не заметите разницу в играх (я так понимаю, компьютер для "поиграть" собирается)?
    С таким солидным бюджетом я бы не стал брать hdd вообще. SSD какой-то маловатый. Берите лучше M2 от 500Гб под систему и SATA SSD под файлопомойку.
    Thermalright Macho - ок, но вроде noctua лучше?..

    Итого:
    SSD - побольше. HDD - не нужен.
    Остальное - ок, но можно сильно сэкономить без особых потерь производительности.
    Ответ написан
    1 комментарий
  • Должен ли программист думать о дизайне?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Дизайн программисту знать не нужно. Но если вы занимаетесь разработкой графического интерфейса, то стоит следовать общепринятым практикам и учитывать UX.
    Ответ написан
    Комментировать
  • Как установить свежий PHP8?

    Я не до конца понимаю кто этот ondrej и можно ли вообще доверять этому репозиторию? - этому репу все доверяют
    Ответ написан
    1 комментарий
  • Бесплатный хостинг с доменом и Zend Optimizer?

    Sanes
    @Sanes
    Хостинг 100 руб. стоит. Откуда такая жадность у людей...
    Beget Free
    Ответ написан
    1 комментарий
  • Какой минимум знаний должен быть у Системного администратора Linux?

    Sanes
    @Sanes
    Поставленные задачи должен решать. Они везде разные.
    Ответ написан
    3 комментария
  • Нужно ли проверять каждое обращение к БД на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень хороший вопрос.
    Он вызван одной из родовых болезней РНР, в котором по какой-то причине именно операции с базой данных традиционно проверяются на каждый чих. При этом на все остальные операции почему-то никто не обращает внимания.

    Большинство складывателей букв на РНР об этом не задумываются вообще, и очень хорошо что тебе пришел в голову этот вопрос. А ответ на него очень простой:

    Проверять обращения к БД не нужно вообще

    (за исключением нескольких специальных случаев, когда есть определенный сецнарий обработки ошибки)
    Если же такого сценария нет, то никак проверять не нужно. Просто потому, что обращения к БД ничем не отличаются от любого другого кода.
    И поскольку ты не проверяешь каждый include или там оператор деления, то не нужно и проверять запросы к БД. Их надо оставить в покое. И первый, и каждый по отдельности, и все 5 разом.

    А вот что нужно сделать - это договориться с РНР, чтобы он сам сообщал тебе об ошибках в запросах. Для mysqli надо написать перед коннектом
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    Для ПДО при соединении выставить в настройках соединения

    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

    Всё. Больше ничего для обращений к БД делать не надо.

    А вот обработчик ошибок, общий для всего кода, а не только для работы с БД, настроить желательно.
    Чтобы AJAX-скрипт подписки получал соответствующий НТТР статус при любой ошибке, которая может возникнуть на сервере.
    Ну и разумеется AJAX-скрипт подписки должен проверять НТТР статус, и обрабатывать ответ только если статус= 200
    Пример обработчика можно посмотреть здесь

    Если же надо убедиться, что все пять запросов выполнились без ошибок, то для таких целей служат транзакции.
    Суть транзакции именно в том, что либо выполнияются либо все запросы, либо ни одного.
    Если заключить все 5* запросов в транзакцию, то если при выполнении одного из них произойдет ошибка, то изменения, сделанные остальными, автоматически откатятся!

    *На самом деле в транзакцию имеет смысл заключать только запросы, изменяющие данные. То есть все, кроме первого.

    Соотсветственно, если ПДО настроен на выброс исключений, то при ошибке запроса
    - пдо выбросит ислючение
    - которое будет поймано обработчиком ошибок
    - который выведет код ошибки и завершит работу РНР скрипта
    - при завершении скрипта РНР закроет соединение с БД
    - БД при закрытии соединения автоматически откатит незавершенную транзакцию

    причем без обработчика ошибок будет всё то же самое, только клиенту уйдет код не 500 а 200

    то есть для того чтобы убедиться в том что все запросы выполнились корректно, надо

    1. выставить для ПДО режим исключений
    2. перед первым запросом написать $pdo->begin();
    3. после последнего запроса написать $pdo->commit();
    Ответ написан
    4 комментария
  • Как писать внятное ТЗ, не используя ГОСТ?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Ни разу не сталкивался с ТЗ по 19 (ЕСПД), но постоянно работаю с ТЗ по 34 (АС). Тем, кто говорит, что ГОСТ это про бюрократию, рекомендую в ограниченные сроки создать автоматизированную систему с нуля хотя бы масштаба одного города, в которой будут работать хотя бы человек 20, поработать с инфобезом по ней. Сразу станет понятно, для чего ГОСТ 34 нужен, и ПМИ для чего, и проект на систему.
    Ответ написан
    5 комментариев