• Как исправить проблему с созданием регистрации пользователей?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это всё просто ужасно. Начиная прямо с первой строчки, class Register extends Database
    Делать отдельный класс для регистрации глупо. Если уж делать класс, то для манипуляции юзером в целом, а не одной только регистрации. Плюс, регистрация пользователя - это не база данных. И не должна наследовать классу Database.
    По сути, вы хотите натянуть ООП на обычное процедурное программирование. Не надо этого делать, получится самолёт из соломы. Сделайте простую функцию.

    Но это ещё цветочки. Остальных проблем тут выше крыши:
    1. Никогда не используйте сокращённый синтаксис INSERT. Всегда надо явно перечислять поля. Это, скорее всего, и является причиной ошибки. Но даже если нет, то проблемы всё равно вылезут в будущем
    2. Собственно сообщение об ошибке нам и надо получить от базы данных, чтобы понять в чем проблема. для этого к коду соединения с БД надо добавить строчку
      mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
      и после этого смотреть сообщение об ошибке
    3. Самое главное - SQL инъекция. Какой смысл делать регистрацию вообще, если любой дурак узнает пароли всех остальных пользователей или сможет авторизоваться вообще без пароля? Запросы надо выполнять только через подготовленные выражения
    4. И по поводу паролей. Пароли надо хранить в фаршированном виде, обработанными функцией password_hash()
    Ответ написан
    Комментировать
  • Будет ли использоваться индекс в запросе вида WHERE `field1` LIKE '_aa_a_'?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет разницы, один или 10.
    Для простоты индекс можно рассматривать как отсортированный список.
    Если список учеников в классном журнале отсортирован по алфавиту, то вы довольно быстро найдёте нужного.
    А теперь представьте, что вы по тому же самому списку ищете фамилию, на зная первой буквы. И тут уже без разницы, сколько букв мы не знаем. И одной достаточно, чтобы полностью поломать поиск.

    Точно такие же проблемы будут и у базы данных. Вместо отсортированного списка с выходом сразу на нужную букву, придётся тупо искать перебором.

    Полнотекстовый индекс также не является чем-то особенным в этом плане. Он устроен по совершенно тупому принципу: грубо говоря, БД берёт текст из колонки, и разбивает его на слова. И строит по этим словам снова точно такой же отсортированный список, с указанием, в каких строках это слово используется. То есть когда мы делаем запрос с match, то mysql находит искомое слово в индексе, и возвращает из него все строки.

    И точно так же полнотекстовый индекс не работает, если поставить звёздочку спереди. Мануал так и говорит:
    Words match if they begin with the word preceding the * operator

    То есть звездочка работает только если поставить её в конце слова.
    match against ('класс*') найдёт слово "классный", а '*accный' его уже не найдёт.
    То есть БД тебе сразу говорит, что для такого поиска полнотекстовый индекс будет бесполезен.
    Ответ написан
    Комментировать
  • Можно ли настроить синхронизацию хостов, шаблонов между двумя zabbix серверами?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    В чём заключается цель синхронизации? Отказоустойчивость предоставляет репликация базы и контейнеризация приложения, незачем тут, имхо, городить костыли сомнительного качества в угоду "незамороченности".
    Ответ написан
    4 комментария
  • Пара вопросов по поводу сборки ПК?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Во-первых: для каких целей ПК и какой бюджет?
    Второе: для данной конфигурации процессора и видеокарты блок питания слишком слабый, на грани - надо брать минимум 750-800 ватт, иначе БП будет работать на износ, а то и вообще с перегрузкой. У блока питания должен быть запас по мощности минимум в 20%, т.к. постоянная эксплуатация блока питания на максимальной мощности быстро приведет к его деградации и выходу из строя, а так же со временем и старением его мощность падает, что тоже может привести его к выходу из строя при постоянной перегрузке. Кроме того, если в будущем планируется апгрейд на более мощную видеокарту или еще какие девайсы - то это тоже надо учитывать при выборе БП и брать с учетом более мощной будущей видеокарты или просто дополнительным запасом мощности для питания дополнительных устройств. Вообще, на блоке питания крайне не рекомендуется экономить и лучше потратиться один раз на качественный БП, чем потом на весь компьютер, т.к. при выходе из строя БП есть шанс того, что он может утянуть остальное железо за собой в электронный рай всё или частично. Топ - SeaSonic, FSP, например.
    Третье: слишком маленький ССД - имеет смысл брать взять хотя бы на 1ТБ и обязательно M2 PCI-E 4.0 (скорость). Например что-то из самсунгов или интела.
    На счет совместимости: это нынче достаточно редкое явление, а когда случается - то обычно магазины идут на встречу и без проблем меняют несовместимое оборудование.

    Рекомендую обратить внимание на ежемесячную подборку железа от 3DNews: https://3dnews.ru/1073472/kompyuter-mesyatsa-senty...
    Ответ написан
    Комментировать
  • Как вы решаете проблему, когда нужно срочно пофиксить багу - через git stash? А если вдруг забудете что там stash? Есть еще методы?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git commit -m "WIP"— достаточное красивое решение.
    Ещё можно создать дополнительный рабочий каталог для параллельной работы.
    git worktree add
    Тогда прятать недоделанное не понадобится.
    Ответ написан
    3 комментария
  • Глюки на сайте после программных изменений, пока не очистить кэш. Как от этого избавится?

    delphinpro
    @delphinpro
    frontend developer
    Браузер кэширует ресурсы по полному УРЛ, включая параметры запроса.
    Поэтому выход очень простой, и он повсеместно используется.
    Нужно дописать в queryString любой уникальный параметр.
    В лоб можно писать метку времени

    <script src="my_script.js?<?= time() ?>">

    Однако, с таким подходом файл будет постоянно загружаться заново при каждом запросе.

    Лучше ввести версионирование. Простейший вариант – вручную обновлять версию при изменении

    <script src="my_script.js?v=1">
    <script src="my_script.js?v=2">


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

    <script src="my_script.ab21df.js">

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

    В остальных случаях отлично подойдет вариант с подстановкой метки времени изменения файла

    <script src="my_script.js?v=<?= filemtime('/path/to/my_script.php') ?>">
    Ответ написан
    Комментировать
  • Как влить изменения с другой ветки до определенного коммита?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если обе тематические ветки созданы из одного и того же места master, то просто передвиньте указатель ветки task2 так, чтобы он указывал на пятый коммит ветки task1
    git switch task2
    git reset --hard <SHA пятого коммита>


    Если после создания task1 в мастере появились другие коммиты, то просто передвинуть уже не получится. Делаем коммит слияния.
    git switch task2
    git merge <SHA пятого коммита>
    Ответ написан
    Комментировать
  • Как быстро добавлять / обновлять миллионы строк в БД Laravel?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для сферического обновления в вакууме не нужно вообще ничего.
    БД спокойно по умолчанию пишет десятки тысяч строк в секунду.
    То есть просто записывать и всё.

    При возникновении конкретных проблем надо собраться с мыслями и задать конкретный вопрос, детально описывая проблему. А не вот это вот "ну у нас там много всего и растёт нагрузка".

    В качестве чисто гадательной рекомендации поиграться с innodb_flush_log_at_trx_commit / транзакции.
    Ответ написан
    Комментировать
  • Как автоматизировать установку программного обеспечения и настройку windows машины?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Установили Windows, установили драйвера и все нужное ПО - сделали образ диска. Каждые 4 дня - просто восстанавливать ОС из образа.
    Ответ написан
    Комментировать
  • Расскажите пожалуйста, что может произойти, если ответвить ветку от родительской с текущим кодом, а потом изменить родительскую ветку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    вдруг что сломается

    Если вы работаете в Git то вы ничего не можете сломать. Не бойтесь экспериментировать.
    А тематические ветки на то и придуманы, чтобы в них отлаживать фичу перед отправкой в главную ветку.

    Возникнут ли конфликты и если да, то как их можно решить?

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

    @ewgenc
    Взять Ryzen 5600G и мать на b450. ОЗУ и SSD по оставшимся средствам. Встроенное видео в этом процессоре уже на уровне 1050ti, смысла тратить деньги на устаревшую видюху нет.
    Ответ написан
    Комментировать
  • Почему обрывается процесс git pull?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Замените ваши четыре шага одной командой
    git clone --depth=1 --branch=main <repo link> <site-dir>

    — скачать только состояние на последний коммит ветки main.
    Остальная история на хостинге не нужна.
    Ответ написан
    Комментировать
  • Open Server. Как пробросить один входящий порт на три разных приложения?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Nginx.
    Ответ написан
    Комментировать
  • Open Server. Как пробросить один входящий порт на три разных приложения?

    @Drno
    поднять обратный прокси на nginx...
    Ответ написан
    Комментировать
  • Отсутствие терминала выключает бота discord.?

    DevMan
    @DevMan
    Господи, ну 100500 раз уже жевалось.
    самый нормальный способ - сервис для автоматического старта при буте.
    далее - screen, tmux, nohup, run in background и всё такое.
    Ответ написан
    Комментировать
  • Нужно ли Bitix php программистам знание патернов проектирования?

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

    В целом Bitrix Framework неплох и на его примере можно как раз поучиться тем самым патернам.

    К сожалению часто под программистами подразумевают тех кто просто натягивает верстку на стандартные компоненты и добавляет к ним костыли чтобы реализовать какую-то допфункциональность.
    А под Bitrix имеют ввиду скорее компоненты, которые, откровенно говоря, просто чудовищны. Ориентироваться на них в развитии не стоит и если ваша работа полностью связана с использованием стандартных компонентов или решений вроде Аспро, то знание патернов вам не понадобиться и возможно даже будет мешать, потому что слишком часто будет желание прервать работу и пойти помыть руки. А то и полностью помыться.
    Ответ написан
    Комментировать
  • Возможно ли создать кроссплатформенное приложение на php?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    но не просто в виде exeшника файла, а отдельного, опять же, десктоп приложения но с большим функционалом

    Чем отличается приложение в виде экзешника от десктоп приолжения с большим функционалом? размером экзешника или ты плохо понимаешь что такое экзешник?

    Здравствуйте, появилась идея создать кроссплатформенное приложение: ВЕБ + ДЕСКТОП

    Отлично. Язык выбрал, а платформу ты какую выбрал для кроссплатформенности?
    А еще лучше, какие ты уже приложения сделал, хотя бы некроссплатформенные?

    Хочу синхронизировать десктоп приложение с веб составляющей

    чего?

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

    hint000
    @hint000
    у админа три руки
    1. PHP для Web. Как вы сделаете графический интерфейс на PHP, не используя возможности браузера?
    2. Если желание тащить PHP на десктоп связано с нежеланием изучать ещё один язык, то просто преодолейте лень.
    3. Приложение с интерфейсом командной строки тоже можно считать десктопным приложением; PHP на это способен без web-сервера.
    4. Следуя общемировому тренду на подмену понятий, можно и web-приложение на локальном web-сервере назвать десктопным приложением. #не_ну_а_чо
    Ответ написан
    Комментировать
  • Как установить Windows 98 на телефон?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Интересно, такие бредовые идеи возникают отчего? От нежелания хоть немного узнать, что из себя представляет "телефон" с точки зрения вычислительной техники или просто от модно-стильно-молодежности? Это примерно как дети спрашивают "А если взять атом величиной с дом?"

    Нет, малчик, нЭльзя. нЭ тот архитектура.

    Хотя путь джедая конечно же есть. Найти исходники, перекомпилять под нужную архитектуру, написать драйвера, написать загрузчик - делов-то...
    Ответ написан
    Комментировать
  • Docker vs Bare Metal — сравнение производительности?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Везде, кроме высоконагруженных баз данных (ну и вообще хайлоада) падением производительности в докере почти всегда можно пренебречь.
    Ответ написан
    2 комментария