Задать вопрос
  • Чем отличается функция от конструктора и где применять то или это?

    @Vitsliputsli

    Собственно, конструктор нужен для того, чтобы выделить память под объект. Скорее всего, это общее правило для всех ОО-языков (а иначе, зачем он нужен?).

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

    @Vitsliputsli
    historydev, а зачем вам уметь декомпозировать? Серьезно, какую проблему решаете?
    В вопросе как то вскользь упомянуто "задача висит неделями, пока я изучаю то, что нужно для её решения", это пытаетесь решить? Вы хотите ускорить выполнение задач, тогда чем поможет декомпозиция? Вы хотите планировать сроки выполнения задач? Тогда декомпозиция только один из вспомогательных инструментов, а не основной.
    Написано
  • Как передать имя таблицы как параметр?

    @Vitsliputsli
    Akina,

    у PDO есть конструкция для подстановки параметра-литерала, но нет таковой для подстановки имени объекта

    Это не PDO, это prepared statements. А с точки зрения последних подстановка имени таблицы бессмыслица. Здесь в комментариях описал почему.
    Ну а в коде можно сделать что угодно.
    PDO конечно имеет свою реализацию, но это эмуляция, т.е. попытка повторить для замены.


    В общем случае ненадёжно

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

    @Vitsliputsli
    Я бы не назвал это ограничением, параметризация имени таблицы бессмыслена. Т.к. таблицы известны, это не бессмысленный набор символов. И, главное, оптимизатор не сможет построить план для неизвестной таблицы.
    Написано
  • Как передать имя таблицы как параметр?

    @Vitsliputsli

    На строго в рамках PDO - полностью согласен с предыдущим оратором. Никак.

    Не совсем понимаю, что это значит. Какая разница какой интерфейс доступа к бд. Что нам мешает использовать динамический sql в pdo?
    Если речь не про pdo, а про prepared statements, то опять же, что нам мешает и здесь использовать динамический sql. Если вопрос инъекций, то также как вы описали для процедур - используем белый список. А байндить как переменную не резон, т.к. это не переменная.
    Написано
  • Как выявить символы не поддерживаемые кодировкой?

    @Vitsliputsli
    Антон Шаманов,
    висивиг редактор т.ч. ограничить проблематично

    Странно, неужели не умеет такое из коробки? Тем не менее это наиболее простой для вас и наиболее удобный для пользователя вариант, если не менять таблицу.


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

    Это проблема, если в БД пишет код, которым вы не управляете, такое чревато.
    Написано
  • Как выявить символы не поддерживаемые кодировкой?

    @Vitsliputsli
    Михаил Ливач, да, согласен, можно посимвольно сравнить. Тогда замечание снимается.
    Но я бы в этом случае просто белый список символов сделал прямо на фронте.
    Написано
  • Как выявить символы не поддерживаемые кодировкой?

    @Vitsliputsli

    Соотв-но если изначальный utf8 не равен итоговому utf8 значит в исходной строке были символы вне кодовой таблицы koi8r

    Придется пользователю сообщать чтото вроде "у тебя тут в тексте 'нехорошие' символы, хз где, сам ищи..."
    Написано
  • Как выявить символы не поддерживаемые кодировкой?

    @Vitsliputsli

    конвертнуть строку в koi8r и сравнить посимвольно

    Не нужно сравнивать, просто на фронте разрешите только те символы, которые нормально конвертируются.
    Либо как предложил Adamos, храните в base64, или в json с преобразованием utf в коды.
    Написано
  • Переподключение PHP к MySQL как правильно организовать?

    @Vitsliputsli
    Владимир Егудин,

    Применительно к данной ситуации - отключение не хорошая практика, так как подключение очень дорогостоящая операция. Как следствие в какой момент отключаться и подключаться - не понятно.

    Подключение не бесплатное, но далеко не дорогостоющее, тем более для mysql. И я не предлагаю для каждого запроса делать коннект, а реконнект по эксепшену это ведь тоже коннект.
    Отключаться нужно по неактивности, как выберете, хоть 10 минут, хоть 1 час. В вашей схеме, при асинхронности, это не должно быть проблемой.
    Я не настаиваю, что только так нужно, но на мой взгляд вместо "словить" ошибку и среагировать лучше недопустить ошибку.
    Написано
  • Как отправить HTTP на локальный сервер?

    @Vitsliputsli
    Lynn «Кофеман»,
    зачем писать две строчки если их можно не писать?

    Действия должны отображаться в коде, все что в нем не отображается - "магия". А это плохо, любая магия затрудняет чтение кода, просто пхпшники привыкли что искать нужно в $_POST и им это кажется само собой разумеющимся. Но это "странная магия", вероятно со времен Personal Home Page.
    Вообще, наличие такого парсинга это прекрасно, проблема что управлять им нельзя, и он сам вызывается в определенных условиях.

    GET и POST покрывают 99% запросов в обычном сайте (если вы не пишите REST API).

    Да, даже не обычные сайты в 80% случаев обходятся только get и post, только вот шлют в post json, ну иногда xml. Потому как rest это основной тренд, путь и не restful.

    И ещё один плюс x-www-form-urlencoded, его можно отправить без всякого JS

    Малозначимый плюс, пойди найди веб-ресурс без js.
    Написано
  • Как отправить HTTP на локальный сервер?

    @Vitsliputsli
    Lynn «Кофеман»,
    отправлять стандартный x-www-form-urlencoded, который PHP автоматически разберёт и положит в $_POST, а не вычитывать из php://input и парсить вручную json.

    А в чем кривизна? Там две строчки, причем очень логичные, читаем вход и парсим его. А вот то, что только для x-www-form-urlencoded и только для post-запросов данные парсятся внутри php и кладутся в некий глобальный массив выглядит как тяжелое наследство языка. Да и json всяко лучше, как более человекочитаемый и более лаконичный без этих километровых разделителей.
    Написано
  • Как отладить обновление строки, залоченой SELECT FOR UPDATE в MySQL8?

    @Vitsliputsli
    Ипатьев, может не совсем понятно написал. Я про то, что это не механизм тотального контроля, поэтому не зная что делает каждая из сторон для избежания гонки очень сложно с гонкой бороться.
    Непонятно откуда уверенность что сторонняя транзакция не выполнилась раньше, или может позже, но ничего не изменив, или может она не ждет блокировку и роллбечится.
    Написано
  • Как отладить обновление строки, залоченой SELECT FOR UPDATE в MySQL8?

    @Vitsliputsli

    сторонний сервис (у меня нет к нему доступа, я не знаю как он работает)

    select for update это попытка избежать гонки в вашем приложении, а не система прав. Она никому не запрещает запись, т.е. у "стороннего сервиса" нет такого запрета. Если вы не контролируете запись в БД, select for update вам ничем не поможет.
    Написано
  • Как отправить HTTP на локальный сервер?

    @Vitsliputsli
    Lynn «Кофеман»,
    хотя читать JSON в PHP несколько криво и лучше бы этого избегать

    Что именно криво и как этого избегать?
    Написано
  • В чем причина ошибки «unknown filesystem» команды grub2-install?

    @Vitsliputsli
    Antowa Kartowa, grub куда устанавливаете, в MBR или в раздел?
    Первый — bootable

    Если речь про метку на разделе, то скорее всего ставите в раздел, а здесь могут быть проблемы, в начале раздела не так много места и grub не сможет там разместить все необходимые модули для загрузки. А если используете fat32 и lvm они необходимы.
    Написано
  • Стабилен ли Manjaro?

    @Vitsliputsli
    Дмитрий, в том то и дело, что manjaro ставят те, кто не хочет настраивать сам, поэтому возможно отсюда и косяки, т.к. процент тех, кто не понимает что делает выше.
    Написано
  • Как передать переменную?

    @Vitsliputsli
    alexalexes, именно так, если СУБД поддерживает, то лучше использовать.
    Написано
  • Как передать переменную?

    @Vitsliputsli
    alexalexes, AUser0,
    Я немного слукавил, не со всех кавычек можно совершить побег.

    Не факт, кодировок много, в UTF8 полно различных вариантов кавычек и проверять как они все работают - так себе затея. Вспомните дыру в PDO в китайской кодировке. Поэтому гарантировать на 100% отсутствие инъекции может только prepared statements, причем натуральные, а не эмуляция.
    А вот с чиловым параметром проще:
    "SELECT * FROM `news_cards` WHERE id  = " . (int)$id

    здесь уже никак не получится провести инъекцию.
    Написано
  • Какое преимущество для текущей конфигурации обеспечивает настройка сетей VLAN?

    @Vitsliputsli
    Какое преимущество

    А какая задача?

    Можно же взять S1 и подключить к нему PC1, PC4 и т.д.

    Если задача изолировать по-парно машины и физически возможно переподключить - то можно, и на коммутаторах доступ в другие подсети закрыт (если это разные подсети, конечно, без маски непонятно).
    Если физически невозможно, то можно это сделать с помощью VLAN.
    Также вы можете вынести управление коммутаторами в отдельный VLAN для пущей безопасности.
    Написано