• Как изменять сайт на питоне, аналогично javascript коду сайта?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как мне использовать питон код в javascript коде сайта
    Никак. Это не предусмотрено браузером. В среде браузера исполняется только яваскрипт.

    Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
    Исходя из вышенаписанного - никак. Код клиентской части может быть написан только на яваскрипте.

    В общем случае ПРИ ИНИЦИАЛИЗАЦИИ страницы вы можете заранее сформировать что-либо в коде самого хтмл шаблона с помощью питона, но это происходит на стороне сервера, далее загруженная с сервера в браузер страничка может оперировать только яваскриптом.
    Ответ написан
    2 комментария
  • Как сгенерировать pdf из кастомного html (Django Templates), чтобы работало стабильно?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    1) Берем хеадлесс хром
    2) скармливаем ему хтмл на печать в пдф с сохранением в файл
    3) Готовый файл отдаем пользователю
    3) Профит, все красиво, зайчики, графики, картинки...

    При этом для отладки достаточно в хроме нажать ctrl+p и сразу увидеть где косяки с разметкой, как оно выглядит и вообще...

    Нюансы:
    1) хтмл должен быть заточен под вывод на печать, цсс для принт медиа специфичен, но не особо сложен
    2) Для серверного хорма цсс/жс/картинки должны содержать полный локальный путь до файла
    3) Есть некоторый нюанс с яваскриптами, работающими "не мгновенно", иногда надо поиграться с задержкой, там в параметрах оно настраивается.
    Пример
    Ответ написан
    1 комментарий
  • Как реализовать настройки пользователя на сайте в laravel?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Я б хотел понять как мне реализовать настройки
    как и все остальное в Ларавел, да и в любом другом адекватном ООП движке - миграция, модель, связь один к одному.

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

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    6585e3e1d9aef372932044.jpeg
    Ответ написан
    Комментировать
  • Как избежать повтора в запросах многие ко многим?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1280px-SQL_Joins.svg.png

    UPD:
    Ребят JOIN правильный, но так как у шаблона может быть несколько категорий, выборка идет с дублирующими "ЯЧЕЙКАМИ",
    в вопросе идет речь про повторы (по умолчанию строк). Из картинок нифига не понятно чего вам не хватает.
    Если нужно сделать строки уникальными по какому-либо полю, следует сгруппировать соответственно по этому полю, тогда эти строки "схлопнутся" до одной. Беда в том что тогда вы не будете знать какая категория попадет по умолчанию в результат запроса, и соответственно нужно либо использовать агрегирующие функции в списке полей, либо сортирующие. Как вариант можно использовать дистинкт на соответствующее поле.
    Ответ написан
    4 комментария
  • Как обновить блок после удаления и добавления и получить данные для редактирования?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Первое что надо сделать - нормальные запросы с подготовленными выражениями, а не дырявые инъекции...

    Второе - возвращать нормальные данные с понятным (машине) результатом операции, а не текстовый поток сознания. Для этого существует json, который обычно в подобных ситуациях содержит: Код ошибки, текст ошибки, и сообщение для вывода, где первое поле содержит цифру (обычно просто 1 в случае ошибки или 0 в случае успеха), второе поле является необязательным, но сильно облегчает дебаг, и третье - как раз может содержать ваше словесное описание.

    Далее, по результату выполнения операции на бэкенде, исходя из данных полученных обратно аяксом уже решаем что делать, если ошибка - ничего не трогаем, если ошибки нет - добавляем/удаляем строки в таблице. Удаление - банально что-то типа del_button.closest('tr').delete() (емнип). С добавлением сложнее, но в целом ничего особенного, можно засовывать в конец списка, так как не вижу там у вас никакой сортировки при выборке. Строку формируете либо в колбэке, либо можно возвращать готовую в дополнительном поле возвращаемого жсона, и уже оттуда только добавить готовую новую ноду внутрь таблицы.

    Так же, учитывая что новые элементы не будут работать при добавлении, так как на них не навешены слушатели, либо каждый раз перезапускать навешивание листенеров, либо нормально сделать делегирование для кнопки удаления.
    Ответ написан
    Комментировать
  • Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'ID' at row 1. Как решить ошибку?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) Читаем текст ошибки
    2) В меру способностей переводим, в случае клинического английского пользуемся онлайн переводчиками.
    3) Сравниваем текст ошибки с реальной ситуацией в коде, находим 10 отличий от желаемого
    4) Чиним
    5) Профит, пиво, радость, дофамин...
    Подходит для всех ошибок, не только для этой конкретной...

    Так же рекомендуется:
    Проверять данные перед вставкой/апдейтом, например тупо проверив что пришло в $_GET/$_POST
    Использовать подготовленные выражения, так как сейчас у вас там дыра в безопасности (ну хоть что-то в безопасности)) )
    По возможности изучить стандарты нейминга и PSR в целом.

    ЗЫ: делать препэйр и при этом вставлять данные прям строкой - особый вид искусства...
    ЗЫ2:
    1) Видна попытка сделать нормальные подготовленные выражения, но так как учились плохо, то и получилось плохо... В цикле надо задать не значения из массива, а плейсхолдеры, после чего передать соответствующий массив.
    2) mb_strlen($Name, 'utf8') - кодировка называется UTF-8.
    Ответ написан
    Комментировать
  • Еще один вопрос про абстрактные классы на примере Laravel?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как мы все знаем, абстрактный класс в php - это абстракция, инкапсуляция.... и должен иметь хотя бы один абстракный метод.
    Не должен. В определении написано совсем наоборот, "класс должен быть помечен как абстрактный, если в нем есть абстрактный метод", обратное не обязательно.
    Ответ написан
    1 комментарий
  • Почему не работает слайдер Slick в Bootstrap?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Бутстрап тут при чем?
    1) Не вижу подключения сликслайдера.
    2) криво прописаны пути до яваскриптов и стилей, соответственно нифига не работает
    3) Подключен овл карусель, который тоже видимо не работает
    4) В коде нет вышеописанного блока

    что за папка такая - isset? Может assets?

    90% вопросов без отмеченных решением, при том что ответы там вполне есть...
    Ответ написан
    3 комментария
  • Какой выбрать стек технологий?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    2) Есть видеопоток, на котором, например, обнаруживаются автомобильные номерные знаки и отправляется запрос в базу данных для проверки его наличия. В результате возвращается какой-то результат.
    Обычно делается полная обработка видео до конца, после чего все найденные номера пишутся в базу с метками времени, по необходимости делаются снэпшоты конкретного фрейма и сохраняются отдельно, ссылка на место хранения картинки так же пишется в бд. Далее уже можно делать запросы в бд на сопоставление двух таблиц - имеющегося списка владельцев и распознанных номеров. По необходимости заводится табличка связей, типа найдено юзер.айди / парсед_нумбер.айди для того чтобы не бегать с выборочными запросами по пользователю и т.п...

    3) Для этой базы данных я хочу создать WEB с личной учетной записью и реализацией в виде пользователя - администратора...
    Это базовый функционал любого современного фреймворка, авторизация и роли. Здесь вы никакого функционала по идее не пишете вообще. Только создаете и настраиваете соответствующие роли и права. "создать WEB" в вашем случае логично просто написав АПИ с десятком рутов, далее будет не особо важно будет ли у вас веб страничка или приложение.

    1) PostgreSQL
    Любая рбд. Специфичных задач я тут не вижу, подойдет все что можно установить и с чем вы знакомы лучше.

    2) Python + Tenserflow и/или что-то в этом роде + psycopg2
    Опять же, задача чисто прикладная, любые инструменты выполняющие поставленную задачу подойдут. Производительность и качество можно проверить только тестами на конкретных данных.

    По п.2, ожидается, что не будет необходимости отслеживать сразу несколько объектов и отправлять несколько параллельных запросов. Однако это не исключено.
    Это в любом случае будет работа с командной строкой, любой процесс из которой можно запустить отдельным потоком.

    3) Python + Flask и связанное с этим, например, Bootstrap и тому подобное
    Скорее всего апи на любом фреймворке + какой-нибудь реакт/вью.

    4) Android Studio, Kotlin + что-то для работы с БД
    По описанию скорее какой-нибудь PWA хватит с головой. Вся работа с бд идет через апи, ничего дополнительного особо придумывать не надо.

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Сначала читают консоль и очевидные ошибки, например незакрытые фигурные скобки в функции (для особо внимательных хром даже подсвечивает место ошибки)...
    Ответ написан
    Комментировать
  • Регулярка для замены эмодзи символов в стороке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    preg_replace('~⚡~ui', 'X', $str);
    preg_replace('~[\x{26A1}]~ui', 'X', $str);
    https://regex101.com/r/u7pEie/1
    Ответ написан
  • Не получается сделать чтобы форма регистрации передавала данные в БД, как правильно это сделать и что заменить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Код с какого-то древнего ресурса, который надо закрыть за порнографию...
    2) Совать в базу непроверенные строки (логин, например) крайне не желательно, так же, неплохо бы проверить что поле емэйла содержит что-то напоминающее емэйл.
    3) Неплохой практикой считается проверить пришло ли что-нибудь вообще в запросе, например через var_dump($_POST);
    4) Про подготовленные выражения уже пальцы устали писать каждый раз, используйте их!
    5) $password = md5('kakdj834'); хэшировать черте-что после добавления в бд пароля в открытом виде - особый вид искусства...
    6) нужно видеть ошибки, соответственно при подключении вызвать
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    , исполнение оборачивать в трай-кетч, если уж ловите руками...

    Короче, все плохо, сжечь...
    Ответ написан
    Комментировать
  • Не работает feedback форма РНР?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    0) Смотрите логи. Или включите вывод ошибок и варнингов директивой
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);

    1) За использование mail в 21 веке в нормальном обществе с человеком перестают общаться, возможно бьют. Используйте современные мэйл библиотеки, PHPMailer, SwiftMailer, у них внятная документация, удобный и простой функционал, а главное - хороший дебаг и простая отладка.
    2) $send = mail (...) вам НИЧЕГО не скажет об отправке письма, и вернет тру в случае удачной передачи его в пул отправки (что вообще не гарантирует его дальнейшую отправку)
    3) if ($send == 'true') естественно будет всегда возвращать бред, так как вы сравниваете булево значение со строкой. Правда, конкретно в этом коде, у вас, по стечению обстоятельств, будет даже работать правильно...
    Ответ написан
    Комментировать
  • Почему html2pdf выдает пустой лист?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Почитайте гугл, там с десяток похожих проблем, каждая из которых со своим решением, что происходит в вашем случае по описанию понять нереально.

    Я бы в вашем случае шел постепенно
    Попробовать библиотеку на отдельном хтмл файле, без вью, с небольшим элементом.
    Убедиться что все работает - искать решение в: а) Настройках б) Вью в) особенностях хтмл блока г) Версии и совместимости
    не работает - смотреть настройки и параметры, консоль, версии пакетов, в конце концов почитать мануал...
    Ответ написан
    Комментировать
  • Как обновить страницу напрямую через сервер?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    WebSocket
    Ответ написан
    2 комментария
  • Как добавить добавить токен для авторизованного пользователя?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    В вашем случае есть несколько способов, различных по реализации.
    1) Самый простой - не использовать токен в заголовке, а переслать его как пост параметр, соответственно линк будет по сути формой (точнее ее кнопкой субмит). На сервере соответственно проверяете токен вручную из пост запроса, обратно отдаете собсно поток файла, предварив его соответствующими заголовками, что-то типа
    header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=somefile.ext");
        header("Content-Transfer-Encoding: binary");
        header("Content-Type: binary/octet-stream");
        readfile($filePath);

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

    3) Так же через фетч отдаем заголовки, на сервере формируем временный разовый линк с каким-нибудь хитрым хэшем, обратно возвращаем этот линк, далее в колбэке делаем window.location = хитрый_линк, и с сервера с заголовками из первого варианта отдаем файл, - вуаля, получаем диалог сохранения. Беда как и в первом случае с отсутствием заголовков во втором запросе с хитрым линком, то есть те же яйца, вид сбоку... Единственно что тут можно прописать урл скачивания как публичный, и быть уверенным что линк точно получен авторизованным пользователем.
    Ответ написан
  • Что выбрать для мультиязычного сайта?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    https://www.google.com/search?q=%D1%80%D0%B5%D0%BA...

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Сначала убираете у всех, затем включаете на текущем.
    Ответ написан