• Как сделать миграции в django проекте на GitLab?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вопрос похоже поставлен некорректно.
    На гитлабе хранятся только исходники. Там не надо выполнять миграции.
    Создать миграцию - это сделать файл миграции, который будет преобразовывать БД.
    Выполнить миграцию - это применить логику этого файла к конкретной БД.
    Выполнять миграцию вы можете на любой машине, но подключаться при этом должны к конкретной БД на которой хотите применить эту миграцию.
    Обычно к какой БД подключаться указывается в настройках.
    Если у вас есть продакшн-сервер, на котором запущен проект, то миграции делаются (выполняются, применяются к БД продакта) при деплое (релизе) очередной ревизии. Обычно это происходит после успешного слияния текущей рабочей ветки в релизную.
    Есть такой механизм, который называется CI\CD. Он отвечает за обнаружение нового коммита в релизной ветке, сборку продукта (докер-образов, например) и выкатку (остановку старой и запуск на проде новой версии продукта). При этом настроен автоматический запуск миграций.
    Ответ написан
    Комментировать
  • Как на php убрать тег html эллемента, и очистить форму?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    По уровню вопроса конечно понятно что гениальности от кода ждать не стоит, но все же...
    Для начала пару занудных замечаний:
    1)
    if($query = $db->query("SELECT `login`, `password` FROM `admin`")){
    Не стоит выбирать все записи из таблицы, если вам нужна одна, та где логины совпадают. Это в целом плохая практика, но еще хуже когда такой подход будет применен к большой таблице. SQL для этого и придуман чтобы так не делать. Так же, если у вас есть таблица пользователи, не нужно дублировать функционал, перенесите админов туда же, указав им уровень доступа или роль.
    2) пароли в бд должны быть соответствующе зашифрованы, используйте соответствующие функции password_hash() и password_verify() при создании и проверке пароля.
    3) Больше совет, чем инструкция: испльзуйте один стиль обрамления кодовых блоков везде, либо текстовые конструкции типа if - endif, либо везде фигурные скобки. Второе предпочтительнее.

    Что касается собственно вопроса, есть несколько вариантов, самый кривой из которых уже написал сеньор Sergei Parfenov. При неверном логине код просто продолжается формой и вы имеете все данные о проверке, включая правильность/неправильность пароля. Стоит отметить что в данном случае блок проверки логина нужно обрамить проверкой метода запроса и вызывать ее только в случае если метод запроса POST (как это сделать - задание на дом).

    Второй вариант более адекватный, так как первый имеет ряд недостатков.
    1) В начале формы создаем переменные в сессии: $_session['message'] и $_session['old'] с пустыми значениями
    2) В блоке проверки логина $_session['old'] присваиваем значения пришедшие из формы $_POST.
    3) Если в ходе проверки у нас возникли ошибки, пишем сообщение об ошибке в $_session['message'].
    4) Выполняем переадресацию. В форме сначала переносим в переменную $message = $_session['message']??'';; и $_session['message'] очищаем. Тоже самое делаем с $old, не забывая что там обычно массив;
    5) Переносим в поля формы старые значения там где это нужно из $old;
    6) Проверяем что лежит в $message, если там что-то есть - выводим сообщение об ошибке.
    Профит.
    Ответ написан
    Комментировать
  • Как перевернуть наоборот добавленные из бд отзывы?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Я думаю что так лучше:
    SELECT `name`, `text`, `date` FROM `reviews` ORDER BY `date` DESC


    Кроме этого, я не советую использовать "root" для подключения к базе!
    Так же не советую выводить пользователю ошибки базы данных. Их следует писать в лог!
    Ответ написан
    Комментировать
  • Как добавить перенос строки на html странице?

    NeiroNx
    @NeiroNx
    Программист
    Заменить на \n на <br/> когда в параграф вставляете.
    Ответ написан
    2 комментария
  • Как заполнить таблицу excel?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Начать нужно с декомпозиции вашей задачи. Разбейте её на более простые подзадачи и решайте их по отдельности.
    Попробуйте решить вашу задачу для одного наименования. Потом решайте отдельно задачу как брать входные данные из таблицы, потом решайте как записывать результаты в таблицу.
    Это уже три отдельные задачи из совершенно разных областей и тем. Да, все три по отдельности и всю задачу в целом способен решить ИИ на текущем этапе. Но вы пришли не к ИИ, а на этом ресурсе есть правила. Здесь нельзя постить задания, только конкретные вопросы.
    Ответ написан
    2 комментария
  • Как можно каждый раз при нажатии на кнопку создавать input, и потом при отправке формы получить данные из всех созданных input'ов через flask?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Ну генерируйте их через JS с уникальным name и потом отправляйте форму как FormData
    https://learn.javascript.ru/formdata

    Другой вариант - элементы формы доступны через свойство .elements у формы.
    https://learn.javascript.ru/form-elements

    Дополнительные статьи по вопросу:
    https://learn.javascript.ru/forms-submit
    https://learn.javascript.ru/modifying-document
    Ответ написан
    Комментировать
  • Git удалил коммит/ы при переключении веток с помощью checkout?

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

    Коммиты удалить довольно сложно. И случайно это сделать вы уж точно не сможете.

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

    Очень просто. Перед тем как переключать ветки всегда смотреть git status, чтобы в рабочем каталоге не было несохраненных изменений. Если изменения есть, то их надо закоммитить, т. е. сохранить, либо сбросить, вернув файлы к первоначальному состоянию через restore например.

    вообще 1 лог остался изначальный

    Эта фраза вообще не понятна.

    если созданы новые файлы или переименованы, и ты возвращаешься, то он их не удаляет

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

    @tgarl
    Вроде вам очень хорошо описали что нужно сделать.
    У вас к вашему серверу должен быть в наличии SSH доступ(или sftp ещё некоторые могут подписывать), иногда бывает делают ftp доступ к папке /home/bitrix/ чтобы под одним доступом править все сайты если их несколько. В общем вам нужен доступ к серверу к папке /home/bitrix/
    Далее с помощью любой программы для подключения к серверу(в интернете их море, под виндой по мне самое удобное пользоваться это winScp, но на вкус как говорится) заходите в указанный раздел, внутри создаете если нет .bx_temp, проваливаетесь внутрь и создаете sitemanager, далее на эти папки даете права bitrix, в приведенном примере задание прав указано если использовать консоль
    По мне одна из самых удобных прог-консолей (может просто привык) Putty, но winScp позволяет все мышкой делать, если это удобнее.
    Ответ написан
    Комментировать
  • Как обработать sql-дамп bash-скриптом[sed,awk]?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище. Тебе не надо этот дамп обрабатывать. Загрузи его в любую БД (SQLite, postgres) и там одной
    командой сделай нужное отбеливание.

    Игры с sed/awk обычное не нужны при работе с БД. Достаточно самой БД.

    Исключение может быть только в том случае если ты делаешь лабу и преподаватель тебе
    специально назначил такие ограничения. Типа изучаем консоль линукс и обработку текста.
    Ответ написан
    Комментировать
  • Как часто должен создаваться бэкап баз данных?

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

    Melkij
    @Melkij
    PostgreSQL DBA
    А вы как думаете?

    Бекапы делаются так, насколько это необходимо. От "никогда" (действительно существуют базы, потеря которых неважна или данные могут быть восстановлены за удовлетворительное время из других источников) до "непрерывный PitR с синхронным подтверждением архивации WAL" (когда приложение получит ответ на запись транзакции данных только когда этот WAL окажется уже в бекапе)

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

    Аналогично с вопросом "за какой срок хранить бекапы" - за тот, который нужен и согласны оплачивать (сотня террабайт под бекап как-то не очень бесплатные).
    Ответ написан
    Комментировать
  • Почему в результате сложения получается Not-a-Number?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы берёте childNodes, куда входят не только элементы, но и текстовые узлы между элементами (переводы строк).
    // [object NodeList] (7)
    [#text,<div/>,#text,<div/>,#text,<div/>,#text]
    Так вот у этих текстовых узлов нет параметра offsetWidth, соответственно вы складываете undefined, получая NaN.
    - let box = document.querySelector(".box").childNodes;
    + let box = document.querySelector(".box").children;
    - box.forEach((item) => {
    + for (let item of box) {
    - })
    + }
    Ответ написан
    Комментировать
  • Как типизировать объект?

    Lynn
    @Lynn
    nginx, js, css
    Использовать Record
    interface Author {
      id: number;
      name: string;
    }
    
    const authors: Record<string, Author> = { ... }
    Ответ написан
    Комментировать
  • Пришло письмо с pay pal, хотя им не пользуюсь. Как реагировать?

    @Asokr
    Это письмо не от paypal.
    Старо как мир. Почитайте про фишинг.
    Ответ написан
    1 комментарий
  • ИИ - хороший помошник в обучении?

    52% ответов ChatGPT по программированию неверны — ... - хотите тратить лишнее время на отсев и исправление в корне неправильных ответов, за которые никто не отвечает?!
    Ответ написан
    Комментировать
  • Как используя ssh удалить из php файлов определённые строки вирусного кода?

    @Nolan81
    программист
    Можно попробовать эту библиотеку. А так, конечно Git бы вам не помешал. Но и надо понять как этот код проникает на сайт, где дыра
    Ответ написан
    Комментировать
  • Как и чем сделать дубль компьютера?

    @Drno
    Образ диска можно снять с помощь rDriveImage, clonezilla, AcronisBackup,Paragon...
    Насчет лицензии знает только разраб, обычно к железу может идти привязка...
    spoiler

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

    @SunTechnik
    Если человек может прослушать - он может сделать копию.

    1. Как минимум, что бы файл проиграть, его надо принять. Соответственно можно этот поток байтов так или иначе перехватить.

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

    @rPman
    Браузеры поддерживают проигрывание DRM контента, это не дает 100% гарантию но создает некоторые трудности для скачивания
    p.s. я не нашел красивого примера, стандарты на это дело еще не стабилизировались

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

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

    Ну и само собой, даже DRM защищенный контент можно будет записать, запустив браузер в виртуальной машине.
    Ответ написан
    Комментировать