Задать вопрос
  • Как сделать поиск из базы на php?

    @MadridianFox
    Web-программист, многостаночник
    Надо динамически формировать строку запроса в зависимости от заполненных полей поиска. Ищете только по марке? Ок сделайте запрос ... were model='%$model%'. Ищете по марке и детали? Ок
    ... were model like '%$model%' AND detal like '%$detal%'
    и т.д.

    Вы же сейчас используете OR вместо AND и в запросе есть пустые поля. Т.е. если вы не указываете деталь, у вас получается ... were model like '%$model%' OR detal like '%%' -- этому условию соответствуют все записи.
    Ответ написан
    5 комментариев
  • Почему не срабатывает float?

    @MadridianFox
    Web-программист, многостаночник
    Откройте инспектор и посмотрите что мешает ей сдвинуться дальше.
    Я вот могу предположить что это блок с иконками, но без разметки не могу в этом быть уверен.
    Ответ написан
    3 комментария
  • Как запустить демон через supervisor c ssl?

    @MadridianFox
    Web-программист, многостаночник
    [my_daemon]
    user=daemon_user

    Но сам supervisord должен быть запущен от root
    Ответ написан
  • Как защитить фалы (картинки) на стороне сервера?

    @MadridianFox
    Web-программист, многостаночник
    Класть картинки в папку и прикрутить туда basic аутентификацию через .htaccess, apache2.conf или nginx.conf в зависимости от используемого сервера и его настроек.
    Ответ написан
    4 комментария
  • Как выбрать архитектуру приложения с учетом необходимости использования нескольких языков программирования?

    @MadridianFox
    Web-программист, многостаночник
    Вы не сказали что за приложение. Если это сервер, то делайте микросервисы на чём хотите. Если более-менее нагруженное десктопное приложение - то ищите способы вызвать код на каждом языке из, допустим, С/С++. Если не сильно требовательное к производительности десктопное приложение, то можно через stdout или соккеты данные передавать между несколькими приложениями на разных языках (как это в AI Russian Cup делается).
    Ответ написан
    4 комментария
  • Как убрать галочку со всех чекбоксов с одинаковыми параметрами?

    @MadridianFox
    Web-программист, многостаночник
    Это возможно?

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

    Ну вы в js коде сначала делаете с чекбоксами то что вам необходимо и после этого отправляете форму.

    P.S. как уже написали в комментарии к вопросу - одинаковый id у тэгов нельзя делать. Вот вообще нельзя. Лучше давайте им одинаковый класс.
    Ответ написан
    Комментировать
  • Как почистить историю гит?

    @MadridianFox
    Web-программист, многостаночник
    Как вариант можно сделать git reset до "чистого" чистого коммита, так чтобы файлы сами не откатились (там опцию надо указать то ли --soft то ли без опции, но точно не --hard), и снова сделать git add уже только нужных файлов.
    Но тогда у вас все ваши коммиты превратятся в один коммит.

    Возможно через git rebase как-то можно, так чтобы и коммиты сохранить и лишнее из них убрать, но это не точно.
    Ответ написан
    Комментировать
  • Как найти все палиндромы в терабайтном файле?

    @MadridianFox
    Web-программист, многостаночник
    В большинстве ЯП поддерживается чтение некоторого количества байт с определённого места из файла.
    Т.е. можно открыть файл (не считать его весь, а только открыть), после этого в цикле читать по N байт и итерировать по ним. Дальше уже дело за алгоритмом, который принимает по одному символу и пытается в потоке символов вычислить палиндром. Т.е. это машина состояний. Думаю там нужен стэк ограниченного размера с выталкиванием самых старых символов при поступлении новых.
    // псевдокод
    file = open("my_big_file.txt","r");
    buffer = byte[1024];
    palindrome_scanner = new PalindromeScanner(4, 64); // min and max palindrome size
    while(canRead($file)){
        buffer = fread(file, &buffer);
        for(int i=0; i<2024; i++){
            palindrome_scanner->next(buffer[i]);
        }
    }
    Ответ написан
    Комментировать
  • Php mysql из базы брать сообщения только для определенной комнаты?

    @MadridianFox
    Web-программист, многостаночник
    В таблице chats должно быть поле id_room. И делать запросы
    select * from chats where id_room=?
    Ответ написан
    Комментировать
  • Как не плодить процессы php демона?

    @MadridianFox
    Web-программист, многостаночник
    При запуске демона создавать файл, и смотреть создан ли он уже. Если создан - значит демон уже работает. Если нет - можно запускать.
    Ответ написан
  • Простой вопрос по Docker-у?

    @MadridianFox
    Web-программист, многостаночник
    Сам по себе Docker работает под Linux (есть какие-то мутки с запуском на нём вёнд, но я туда не лезу, религия не позволяет).
    Под Windows доккер запускается в виртуалке. Раньше для этого использовался Docker Toolbox, который работает с Virtualbox, ну и с другими гипервизорами, если настроите. Сейчас это считается legacy, хоть его и можно скачать и всё работает.
    Docker for Windows - актуальный на данный момент способ запуска контейнеров, работает только в Windows 10 Pro. И не просто так он работает только там, ведь ему нужен HyperV, который, ой как неожиданно - гипервизор, в котором запускается такой же Linux как и в Docker Toolbox.

    Я пользуюсь Docker Toolbox. Работает нормально. Один только нюанс - проброс папок. Хотите делать volume который подтягиваться с винды - убедитесь что папка винды расшарена в виртуалку, и монтируя volume в контейнер указывайте путь до папки в виртуалке. Естественно, такой двойной проброс влияет на производительность, но мы же не прод тут хостить собрались, для редактирования кода норм.

    По поводу статей вот тут есть чутка инфы для начала. Рядом же есть и пример.
    Ответ написан
    3 комментария
  • Как сделать кнопку доступной админу?

    @MadridianFox
    Web-программист, многостаночник
    Вам нужно для каждого пользователя хранить его роль. В простейшем случае вы можете хранить нолик или единичку - нолик это простой пользователь, единичка - админ.
    Дальше, когда вы рендерите страницу, вы вывод кнопки обрамляете в условие - если у пользователя роль единичка, то показываем, иначе нет. Вот так:
    <?if($user["admin"] == 1):?>
        <button>Delete record</button>
    <?endif?>


    Хотя единичка это самый тривиальный случай и чаще требуется создавать полноценную систему авторизации. Например концепция авторизации RBAC - работает с ролями и разрешениями. Есть список разрешений, например:

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

    И есть набор ролей

    - пользователь
    - модератор
    - админ

    вполне очевидно, какая роль какими правами должна обладать. Но есть одна оссобенность, роли могут наследоваться. Т.е. модератор является так же и пользователем. А админ является модератором. Это логично. Поэтому вводится иерархия ролей.

    Все эти данные о ролях мы конечно-же храним в БД. Итого имеем 3 таблицы:

    - таблица прав
    - таблица ролей
    - таблица связи ролей и прав

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

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

    В конце концов, мы должны прикрепить роль к пользователю. Мы можем разрешать пользователю иметь одну роль, или сразу несколько. И тут мы либо пишем id роли прямо в таблицу пользователя, либо делаем таблицу связи пользователей с ролями.

    После этого пишем код, который будет отвечать на вопрос - имеет ли этот пользователь указанное право?
    Этот код смотрит на его роль/роли, ищет в них такое право, если в них нет - то ищет в родительских ролях поднимаясь всё выше и выше по дереву ролей. Если дошёл до конца и права нет - сорян, тебе сюда нельзя.
    <?if(hasPermission($user, "delete_any_record") or hasPermission($user, "delete_own_record")):?>
        <button>Delete record</button>
    <?endif?>
    Ответ написан
    Комментировать
  • Как удалить из двух таблиц одновременно?

    @MadridianFox
    Web-программист, многостаночник
    Вообще, когда у вас есть две таблицы и одна (назовём её таблица А) имеет внешний ключ на другую (таблица Б), то при удалении записи из таблицы Б вы должны сначала удалить связанную с ней запись в таблице А.
    Т.е. перед удалением какой-то записи вы должны удалить все другие записи, которые на неё ссылаются.

    Как уже написал Rsa97 можно настроить автоматическое удаление этих записей, если в ограничение FOREIGN KEY, которое у вас на столбце type_id добавить опцию ON DELETE CASCADE. Тогда, при удалении записи из таблицы types у вас автоматически удалятся все связанные с ней записи из таблицы group_types.
    Ответ написан
    Комментировать
  • Как обновить строку в базе данных?

    @MadridianFox
    Web-программист, многостаночник
    Когда вы делаете update запрос вам не надо указывать данные, которые не изменяются
    и не надо указывать в where больше условий чем необходимо для идентификации изменяемой строки. Если в строке есть primary key, то достаточно указать только его.
    Ответ написан
    4 комментария
  • Как избежать переполнения типа данных?

    @MadridianFox
    Web-программист, многостаночник
    Точность вычислений вы устанавливаете выбирая тип данных - float или double. Не важно как сильно вы раздробили число, количество занимаемой им памяти не меняется. Т.е. вам нужно "обрезать" его только при выводе, чтобы лишние цифры глаза не мозолили.

    Обрезание производлится по некоторым правилам, которые вы наверняка учили в школе, и называть это надо "округление". Т.е. вам достаточно набрать в гугле "Как округлить число до нужного знака после запятой в Си".

    Переполнением в Си называется случай, когда вы увеличивая значение переменной достигаете предела и следующее увеличение обнуляет переменную или меняет её знак.
    Ответ написан
    Комментировать
  • Как сделать условие на класс body через php?

    @MadridianFox
    Web-программист, многостаночник
    1) технически на php именно то что вы хотите сделать невозможно, но можно на js, на стороне клиента такое провернуть
    2) если надо всё-таки на php, то привязываться надо не к разметке, а к какой-нибудь пременной
    3) если уж очень очень хочется сделать костыль, то можно проверить строку регулярным выражением. Именно строку, а не как вы написали - тэг в условии.
    Ответ написан
    Комментировать
  • Как сконфигурировать nginx для того чтобы он работал как http прокси?

    @MadridianFox
    Web-программист, многостаночник
    Чтобы nginx проксировал запросы другому серверу надо в папку /etc/nginc/conf.d/ добавить файл с расширением .conf в котором написано:
    server{
      listen 5556
      server_name _;
      location / {
        proxy_pass localhost:5555
      }
    }


    Но если можно сконфигугрировать вашу вещь, которая слушает localhost:5555 чтобы она слушала 0.0.0.0:5555 то она и сама станет доступной из локальной сети.
    Ответ написан
    Комментировать
  • Как добавить babel в gulp?

    @MadridianFox
    Web-программист, многостаночник
    Вот тут надо кликнуть на кнопку с надписью Gulp (в третьей строке примерно в середине) и появится код, там всё понятно.
    Ответ написан
    4 комментария
  • Присваивание куки к таблицам бд?

    @MadridianFox
    Web-программист, многостаночник
    Нет. Вы неправильно понимаете куки. Куки - это то, что браузер хранит для определённого сайта определённое время. Сайт может сказать браузеру - запомни для меня что под ключом myVar лежит значение banana, а через час забудь.
    Ответ написан