Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу Программирование
  • Верно ли это утверждение?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Добавлю к пессимизму.
    Верно ли это утверждение? 59 минут назад
    Сломался WordPress Кто поможет? 14 окт.
    Почему так произошло Опенкарт? 06 июл.
    Стоит ли учить Python по книгам? более года назад
    Как двигаться в гейм дев? более года назад
    Как начать путь в сферу game дизайна? более года назад
    Не получается верстать самостоятельно. Как преодолеть это? более года назад


    Этот список говорит нам открытым текстом, что увлекаетесь вы не программированием, а "вайти".
    Ой, геймдев! Ой нет, Питон! А, нет - вёрстка! Ну и понятное дело что всё кончилось вордпрессом.

    Люди, которые действительно увлекаются программированием, не задают вопросов, "стоит ли учиться по книгам". и "как войти вайти". Они учатся. И входят.

    Есть очень большая вероятность, что программирование - это не ваше призвание. А интересуетесь вы им только из-за хайпа. В этом нет ничего плохого. Надо просто найти дело, к которому действительно лежит душа.
    Ответ написан
    2 комментария
  • Зачем использовать готовые решения?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос писать или не писать такую тривиальщину как роутер, сводится, в сущности, к вечному вопросу поддержки.

    Написать десяток велосипедов не проблема.
    Поддерживать один-два в актуальном состоянии - тоже.
    Но может накопиться такое количество велосипедов, что их поддержка будет занимать все наличные ресурсы, и на разработку собственно функционала попросту не останется времени.

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

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

    Для того, чтобы упростить управление системой, её надо усложнить.
    Этот принцип относится к любой области человеческой деятельности, от постройки ракет до управления государствами.
    Чем сложнее система, тем больше накладные расходы на ее управление. Хоумпейдж с котиками можно и нужно делать примитивными средствами. В большом проекте надо сразу закладываться на будущую расширяемость. То есть, заранее делить ответственность между "леерами".

    И кстати. Код, в котором "всё друг на друге завязано" - это очень плохой код. Собственно, предназначение всех этих "лееров, провайдеров и репозиториев" как раз в том, чтобы компоненты были как можно более независимы друг от друга.
    Ответ написан
    1 комментарий
  • Структурирование исключений. Что вы указываете в качестве exeption code?

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

    Главная неувязка - какая связь между кодом исключения и уникальным кодом ошибки, служащим для идентификации конкретного места в логах? Это совершенно разные сущности, не имеющие ничего общего. Генерацией уникальных кодов должен заниматься обработчик ошибок, ни ни к кодам исключений, ни к самим исключениями, ни тем более к их иерархии это все не имеет отношения.
    Ответ написан
  • Чистый код: блоки try/catch. Стоит ли так делать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > если у нас в try {} несколько понятных вызовов методов,

    причем таких как в примере, далеющих только логирование, и поэтому повторающихся сотни и тысячи раз, то try catch в таеом случае писать не нужно вообще. А добавить либо глобальный трай для всего приложение, либо написать отдельный хендлер/обработчки исключений, если язык позволяет.

    То есть ответ на вопрос очевиден:

    - если у нас в кетче только логинование, то трай не пишем вовсе
    - если в кетче замороченная логика, то трай разумеется имеет смысл вынести в отдельный метод
    Ответ написан
    Комментировать
  • RedBeanPHP или PDO для манипуляций с базой данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Изучать - сначала PDO, потом RedBean
    Использовать - сразу RedBean
    Ответ написан
    Комментировать
  • Чему научиться за год до эмиграции?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Читай книжки.

    Для языка не нужно никаких ни курсов, ни скайпов. Простым чтением за год можно поднять себе грамматику и словарный запас до болеe чем достойного уровня. Учитывая, что разговорный навык уже небольшой есть.
    Правда, для миллениалов этот совет не подходит, конечно.
    Ответ написан
    5 комментариев
  • Какие поставленые задачи junior web dev должен уметь выполнять?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перечисленного более чем достаточно.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Открою тебе маленький секрет.
    "Новая страница" показывается после отправки формы (методом POST) вообще ВСЕГДА.
    Поскольку это предусмотрено стандартом НТТР.
    Это может быть та же самая страница, или другая - но сервер обязан перенаправить браузер хоть куда-нибудь.
    Как это делается стандартно - читаем здесь: Самые основы. Способы общения браузера с сервером.
    В заголовок Location: можно подставить любой урл
    Ответ написан
    1 комментарий
  • При записи параметров GET в MySQL нужно экранировать какие-то символы для предотвращения выполнения произвольного кода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    из массивов $_GET и $_POST (то есть любого значения)

    Вообще-то, кроме $_GET и $_POST бывают и другие массивы. и не массивы. На источник "любого" значения $_GET и $_POST никак не тянут, непонятно, с чего этим двум такая честь.

    использовать какие-то функции экранирования, например mysql_escape_string или addslashes, для предотвращения выполнения произвольного кода?

    а это уже полный бред. Я навскидку приведу десяток примеров, когда "функции экранирования" не предотвратят вообще ничего. А всё почему? Потому что предназначение этих функций совсем другое, к защите от выполнения кода никакого отношения не имеющее.

    Для защиты от исполнения кода любые переменные должны попадать в запрос через плейсхолдер.
    Ответ написан
  • Есть простой скрипт, который показывает на главной странице последнее добавленное?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не хочу чтобы скрипт обращался к базу данных

    Это еще что за капризы?
    Ответ написан
    7 комментариев
  • Есть технология предотвращения исполнения вредоносного php кода. Усовершенствуйте. У вас есть другие идеи или замечания?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Правду говорят - один дурак десять мудрецов в тупик поставит.
    Мусор из этой головы надо вывозить вагонами.

    Ты, часом, не из этой команды горемык?
    Ответ написан
    9 комментариев
  • Как правильно перенаправить пользователя на страницу "Спасибо за заявку" после отправки формы?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Он что-то перепутал или имел в виду под ассоциативными массивами что-то еще.
    Ответ написан
    Комментировать
  • Почему код работает не правильно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А зачем в этом коде session_start()?
    Ответ написан
    Комментировать
  • Как правильно написать php код для проверки значения поля в MySql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $stmt = $pdo->prepare("SELECT `group` FROM users WHERE id=?");
    $stmt->execute([$id]);
    $group = $stmt->fetchColumn();
    if ($group != 2)
    {
        throw new NotEnoughPermissionsException();
    }
    Ответ написан
  • Как вернуть код ошибки из метода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если исключение ловить, то оно не относится к фатальным ошибкам.
    Ответ написан
    1 комментарий
  • Можно ли использовать глобальные переменные?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Про статью.
    Аффтар кликушествует и тупит.
    Единственная претензия, которую он родил, сводится к тому, что глобальную переменную можно переписать. Офигеть недостаток. А используя while, можно уйти в бесконечный цикл. Следуя его логике, while нельзя использовать, он разрушает структуру программы. И ещё моск.

    2. О глобальных переменных.
    Существует [по крайней мере] два способа использовать глобальные переменные.
    1. Для доступа к глобальным сервисам.
    2. Для передачи данных в функцию и получения результата из неё.

    Так вот, второй способ является гарантированным пропуском в АДЪ. Это реальный способ довести до самоубийства человека, котрый будет потом разбирать твою программу.
    В то же время, в первом варианте нет ничего зазорного. Все исползуют его, но из религиозных соображений задрапировав в статическую функцию, класс, или контейнер, но суть у всех будет ровно одна - получить доступ к глобальному сервису.

    3. О твоем коде.
    1. Учитывая п.2 из предыдущего раздела, становится понятно, что твой второй вариант нежелателен. При этом.
    2. Я не понял фразу про "тасакать". Куда и что ты собираешься таскать? Код коннекта должен лежать вызываться РОВНО ОДИН РАЗ, лежать, где-нибудь глубоко в бутстрапе, и не вызывать ни малейших ассоциаций со словом "таскать".

    И - да. Сто процентов отвечателей будут тебе писать не про твои переменные с хостом и паролем, а про саму $pdo. Потому что вопрос про неё является более логичным и куда боле актуальным: ведь переменные для коннекта требуются тебе 1 раз, а само соединение - десятки раз в разных местах скрипта.
    Ответ написан
    4 комментария
  • Сокрытие расширения PHP файлов?

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

    Не говоря уже о том, что уже много-много лет стандартом де-факто является адресация через ЧПУ, при которой никаких .php файлов в любом случаеснаружи не видно.
    Ответ написан
    4 комментария