Задать вопрос
  • Как свзять столбцы по внешнему ключу?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Corresponding columns in the foreign key and the referenced key must have similar data types. The size and sign of fixed precision types such as INTEGER and DECIMAL must be the same.

    https://dev.mysql.com/doc/refman/8.4/en/create-tab...
    Ответ написан
    Комментировать
  • Бесконечная загрузка 3x-ui панели на новом сервере, как можно подключиться?

    @Zerg89
    Скорее всего сайт или его часть расположенная на cdn попала в блокировку(да не вся веб морда лежит на вашем сервере)
    Проверить можно так, в chrome(или девариативах на его движке) есть пункт "посмотреть код" -> вкладка network, обновляем страницу и смотрим что происходит.
    Для firefox пункт называется исследовать->вкладка сеть обновляем страницу и смотрим что происходит.
    Ответ написан
    1 комментарий
  • Как настроить ограничение по количеству отправки с Contact Form 7 для одного пользователя?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    как то так
    со сменой браузера или IP отправит еще раз конечно, но рядовой юзер теоретически отправить не сможет, для большего контроля можно добавить fingerprint
    ну и опцию можно одну , и по ней искать, но направление вам дал, дальше уже доработаете
    // Хуки для Contact Form 7
    add_action('wpcf7_before_send_mail', 'wpp_limit_cf7_submissions');
    add_filter('wpcf7_display_message', 'wpp_block_cf7_form_display', 10, 2);
    
    function wpp_limit_cf7_submissions($contact_form) {
    	$form_id = $contact_form->id();
    	$user_ip = $_SERVER['REMOTE_ADDR'];
    	$user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    	// Создаем уникальный ключ для пользователя
    	$user_key = md5($user_ip . $user_agent);
    	$option_key = 'cf7_submission_' . $form_id . '_' . $user_key;
    
    	// Проверяем, отправлял ли пользователь форму за последние 24 часа
    	$last_submission = get_option($option_key);
    	$current_time = time();
    
    	if ($last_submission && ($current_time - $last_submission) < 86400) { // 24 часа
    		// Блокируем отправку
    		$submission = WPCF7_Submission::get_instance();
    		if ($submission) {
    			$submission->add_status('aborted', 'Вы уже отправляли заявку. Пожалуйста, подождите 24 часа.');
    		}
    		return false;
    	}
    
    	// Записываем время отправки
    	update_option($option_key, $current_time, false);
    	return $contact_form;
    }
    
    function wpp_block_cf7_form_display($message, $status) {
    	if ($status === 'aborted') {
    		return 'Вы уже отправляли заявку. Пожалуйста, подождите 24 часа перед повторной отправкой.';
    	}
    	return $message;
    }
    Ответ написан
    5 комментариев
  • Какое отставание MySQL Slave от MySQL master считать проблемным?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Начать желательно с документации. https://dev.mysql.com/doc/refman/8.4/en/show-repli...
    То есть вы неверно понимаете эти значения.
    SQL_Delay

    The number of seconds that the replica must lag the source.

    SQL_Remaining_Delay

    When Replica_SQL_Running_State is Waiting until SOURCE_DELAY seconds after source executed event, this field contains the number of delay seconds remaining. At other times, this field is NULL.


    SQL_Delay - это намеренная задержка репликации как минимум на такой срок: https://dev.mysql.com/doc/refman/8.4/en/replicatio...
    SQL_Remaining_Delay показывает сколько времени осталось ждать до применения следующей транзакции, только в том случае когда мы ждём сконфигурированную задержку репликации. timestamp выполнения транзакции на источнике мы заведомо знаем, до него и показывается остаток.

    И то и другое отображает намеренно сконфигурированное администратором поведение и поэтому не может быть проблемой по своему определению.
    Ответ написан
    2 комментария
  • Какое отставание MySQL Slave от MySQL master считать проблемным?

    Vamp
    @Vamp
    1. SQL_Delay и SQL_Remaining_Delay относятся к так называемой отложенной репликации. Когда репликация всегда намеренно отстаёт на заданное в конфиге время.

    2, 3. Вам нужно смотреть на параметр Seconds_Behind_Master. Как раз он показывает отставание от мастера в секундах. Может показывать null если репликация полностью остановилась из-за ошибок каких-нибудь.

    Какое отставание MySQL Slave от MySQL master считать проблемным?

    Для mysql проблемным становится такое отставание, когда мастер уже успел отротировать и удалить старые бинлоги, которые слейв ещё не успел обработать.

    Для приложений критичность отставания сильно зависит от бизнес требований к самому приложению. Кому-то и 5 секунд уже катастрофа, а кому-то и 24 часа норм.
    Ответ написан
    1 комментарий
  • Обновление версии PHP с 7.4.33 до 8.3 насколько необходимо?

    В первую очередь надо смотреть на то, когда заканчивается поддержка у той или иной технологии. И у PHP 7.4 она закончилась ещё в 2022 году.

    Это означает, что дыры в безопасности уже никто чинить не будет. А там их немало. И сайт будет всё проще и проще взломать с каждым новым днём.

    Возможно, ваш хостер имеет возможность внедрять патчи расширенной поддержки от Zend, которые так же закончатся уже в 2026 году.

    Поэтому, обновить стоит. Но перед этим надо убедиться в работоспособности сайта с этой версией.

    1. Полный бэкап файлов и базы. Это даже не обсуждается. Если у хостера бэкап не купили, купите.

    2. Обновите всё, что сможете до последних версий. Разработчики часто добавляют совместимость для новых версий PHP в эти последние версии. Это касается и ядра WordPress, и плагинов, и темы, если она была куплена, а не писалась с нуля. Если тему писали с нуля, то можно связаться с разработчиком, чтобы он дал вам точный ответ, будет ли тема работать, или сделал бы поддержку 8.3

    3. После обновления плагинов и тем проверьте в их документации совместимость этих обновленных версий с PHP 8.3.

    4. Используйте плагин проверки совместимости, чтобы узнать, будет ли ваш сайт работать на 8-х версиях PHP. Он старый, но именно с этой задачей поможет справиться. https://wordpress.org/plugins/php-compatibility-ch...

    5. Самым идеальным вариантом проверки всего этого дела было бы купить у хостера на месяц такой же хостинг и там опробовать сайт на новой версии. Это закроет все галочки в вашем списке сомнений. Если нет возможности этого сделать, то хотя бы на локальной машине запустите сайт на новом PHP. Можно ещё и дебаг-режим включить, чтобы иметь полный расклад в логах.

    6. Если всё это сделали, можно пробовать менять версию PHP на основном хостинге. Делать это лучше когда посетителей меньше всего, но поддержка хостера ещё не спит. Если не сработает, то верните всё из бэкапа.

    7. Далее вам нужно наблюдать за работоспособностью и стараться периодически обновлять ядро и плагины, чтобы следующий апгрейд прошел более гладко. Если вы всё-таки решили купить второй хостинг на 5 шаге, то вы можете его даже и оставить как раз для целей проверки обновлений и каких-то новых фич. Не забудьте его тогда закрыть от роботов на всякий случай, чтобы предотвратить индексирование поисковиками.
    Ответ написан
    1 комментарий
  • Парсинг на Python при помощи tor?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Относительно работает, так как например я, как владелец сайта, могу в настройках cloudflare указать запрет трафика из тор сетей и всё, что бы вы не делали, вам ко мне не попасть. Другие cdn сети тоже такой функционал предлагают, да и на самом веб сервере такое можно настроить.

    Зачем блокировать - через тор крайне мало полезных заходов, в основном мамкины хакеры и т.п.
    Ответ написан
    1 комментарий
  • Парсинг на Python при помощи tor?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Относительно недавно начал заниматься парсингом. Использую tor.

    Жестко.
    Попробовал достаточно много способов из инета, но ip так и не меняется

    Но нам вы их конечно же не показали.
    Хотелось бы узнать работает ли вообще сейчас базовый парсинг с помощью tor

    Технически - работал, работает и будет работать. Функционально - не работал и не будет работать, т.к. ip выхода тора палятся так, как не палятся спам-ip дата-центров, ну и про скорость и стабильность работы тора не стоит забывать.
    либо же нужно искать обходные пути?

    - Если денег нет - использовать публичные списки ip проксей.
    - Если денег почти нет - использовать не публичные списки ip проксей.
    - Если деньги есть - использовать мобильные прокси.
    - Если деньги ЕСТЬ! - использовать резидентские прокси.
    Ответ написан
    Комментировать
  • Какой размер пакета NFS выбрать?

    opium
    @opium
    Просто люблю качественно работать
    Берите максимальный плюс на свиче и оборудовании максимальный мту поставьте
    Ответ написан
    Комментировать
  • Как добавить в скрипт заявки тему для письма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если используете функцию mail, то должны сами озаботиться соблюдением всех стандартов. В частности, все заголовки, в том числе и тема письма, должны быть закодированы согласно RFC 2047. В заголовках допускаются только символы из ASCII-128.
    $subject = '=?UTF-8?B?' . base64_encode($pagetitle) . '?=';

    А лучше используйте PHPMailer, он сам приведёт всё в нормальный вид.
    Ответ написан
    4 комментария
  • Изучаю сети. Где брать практику, что посоветуете?

    @Drno
    Тогда уж изучать надо не повершелл, а bash + linux \ freebsd... если в сетивики

    ну и сеть можно сэмулировать подняв несколько виртуалок на ПК, в виртуалБОКС
    В том числе и поставить туда тот же Mikrotik CHR или openWRT для эмуляции роутеров
    Ответ написан
    2 комментария
  • Может ли смартфон удалённо блокироваться?

    Телефон просто просится на пенсию.
    В таких случаях, обычно, либо программная, либо аппаратная проблема. Если сбрасывали до заводских настроек и проблема сохраняется, то тут, скорее всего, второй вариант. А тут могут быть разные причины: проблемы со шлейфом или микросхемой, перегрев и т.д.

    Android 8.1.0.

    На вашем месте, я бы рекомендовал человеку просто обновить себе устройство и не мучаться.
    Ответ написан
    1 комментарий
  • Как frontend и backend соединяют в единый проект?

    @rPman
    фронтэнд - это приложение (html+css+javascript) для веб-браузера, запускается у пользователя, оно должно быть создано таковым, что бы делать запросы к бакэнду

    бакэнд - это приложение (другое), запускаемое на сервере, которое обеспечивает функцианирование всей системы (но бывает оно не единственное). Обычно бакэнд состоит из готового веб сервера (например nginx/apache или майкрософтовский IIS , который выполняет большую часть рутинных операций, включая отдачу статичных файлов, те самые html, css, javascript, точнее те что не меняются в процессе работы приложения) и приложения/модуля (php или к примеру майкрософтовский asp.net), который отдает динамический контент - файлов, содержимое которых меняется в зависимости от запроса фронтэнда.

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

    Разделяют два подхода к реализации всего веб-приложения (обычно это не тригер а нестрогий выбор, типа 'немного первого подхода и в основном второго'):
    1. на каждое действие пользователя (клик по разным страницам сайта и элементам интерфейса типа меню) бакэнд заново формирует html (и по необходимости все остальное) а веб браузер это отображает.
    В этом подходе javascript не требуется, браузер практически не тратит ресурсы, но тратятся ресурсы сервера и нагружается сеть между ними.
    2. все что касается интерфейса реализуется на javascript в браузере, html формируется на javascript, но данные и операции, отсылаются на сервер к бакэнду в виде относительно небольших (по сравнению с html интерфейса) файлов-запросов (формат и структуру этих запросов часто приходится разрабатывать самостоятельно, но есть хелперы).
    Исторически сложилось, что данные от бакэнда удобнее передавать в текстовом виде в формате .json, а вот от фронтэнда к бакэнду исторически отправляют в виде multipart/form-data (то что отправляет на сервер html конструкция из тегов form, input, textarea и т.п.). Но это естественно не обязательные требование, и ничто не мешает и с клиента отправлять запросы в виде json, а так же вместо json использовать свой формат, например в браузер (и его javascript) встроено куча инструментов для отправки бинарных данных (например XMLHttpRequest).

    Очень много ограничений и требований накладывает выбор среды разработки, например при использовании visual studio asp.net, все будет завязано на майкрософтовскую инфраструктуру, начиная с деплоя и кончая собственно работы бакэнда.. Но как бонус, я отчетливо помню (при использовании WinForms) приложение для веб разрабатывалось точно так же как для десктопа, с очень небольшими отличиями, и при этом это работало в браузере (если честно отвратительно, но кто сейчас смотрит на качество реализации).

    p.s. есть еще старый но все еще рабочий способ, формирования страницы на клиенте с помощью xslt (это язык шаблонизатор для получения html), а сервер отправляет xml файл с данными. Можно упороться и реализовать все на таких шаблонах, что они не будут требовать javascript но работать все будет на стороне клиента с очень эффективной тратой ресурсов как сервера так и сети.
    Ответ написан
    1 комментарий
  • Как frontend и backend соединяют в единый проект?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как мне их правильно соединить?
    Во первых - зачем? Смысл разноса api и приложения в том что бэк работает одинаково со всеми запросами (не особо важно кто и как их дергает, лишь бы права позволяли), а фронт не зависит от бэка в представлении. По этому фронт пишется как морда на каком-нибудь реакте, который от бэкенда получает данные по запросу. Нужно авторизоваться - стучишся в эндпоинт авторизации, отдаешь креденшелы, получаешь токен. Нужно список юзеров - берешь доку по апи, стучишся с нужным пэйлоадом на эндпоинт, получаешь жсон списка, из него рисуешь что хочешь...
    Во вторых -
    Или frontend и backend размещены разными программами?
    что-то мне подсказывает что наверное вы рановато по знаниям взялись за задачу...
    Ответ написан
    Комментировать
  • Почему nginx set кодирует значение?

    Driver86
    @Driver86 Автор вопроса
    Немодератор toster.ru
    Не баг, а фича.
    https://serverfault.com/questions/1036804/nginx-ma...
    Оператор try_files использует числовые захваты из регулярного выражения в location операторе. Проблема с числовыми захватами заключается в том, что они перезаписываются всякий раз, когда вычисляется регулярное выражение. map содержит регулярное выражение, которое вычисляется между операторами locationи try_files.
    Решение — использовать именованные захваты

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как обычно, три ответа - и ни одного по делу

    Кодировка таблиц в MySql должна быть utf8mb4.
    Ответ написан
    Комментировать
  • Какую кодировку выбрать для немецкого языка?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Для немецкого я всегда ставлю utf8mb4_unicode_ci
    Работает просто отлично.
    А кодировка utf8mb4.
    Но вы скорее всего будете выбирать тип сортировки, если через phpmyadmin.
    Если руками будете таблицы создавать, то надо прописать типо
    CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
    А когда будете создавать таблицу, то примерно так.
    CREATE TABLE example (
      id INT PRIMARY KEY,
      name VARCHAR(255)
    ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    Ответ написан
    2 комментария
  • Почему при вызове метода increment модели wasChanged принимает значение true у других аттрибутов?

    @mrFlyer Автор вопроса
    В общем в гитхабе сказали делать так:

    You need to use

    $book->increment('some_value', extra: ['full_name' => $book->full_name]);
    or
    $book->increment('some_value', extra: ['full_name' => Str::random()]);
    or
    $book->increment('some_value', extra: $book->getDirty());


    Т.е. указываем какие поля сохранять вместе с инкрементом ... так себе решение.
    Ответ написан
    Комментировать
  • Почему 404 это ошибка клиента?

    Steel_Balls
    @Steel_Balls
    5xx - это ошибка сервера (раньше работало, а тут вдруг приболел чаво-то). Что-то типа - зовите админов и будите программеров, пусть чинят!
    И это надо чинить!
    А теперь представь, что спам-бот начинает запрашивать несуществующие страницы.
    И что? Звать всю команду чинить это? Нет.
    Это уже проблемы юзера, что он запрашивает то, чего не может быть
    Пусть Федот проявит прыть, Пусть сумеет вам добыть. То-Чаво-На-белом-свете- Вообче-Не-может-быть

    P.S. А сам вопрос интересный, буду задавать на собеседованиях
    Ответ написан
    9 комментариев
  • В чем суть логической ошибки, продемонстрированной в старинном учебнике?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ЕСЛИ треугольник прямоугольный ТО квадрат гипотенузы равен сумме квадратов катетов
    Отсюда не следует, что
    ЕСЛИ квадрат гипотенузы равен сумме квадратов катетов ТО треугольник прямоугольный
    Правильное обратное утверждение:
    ЕСЛИ квадрат гипотенузы НЕ равен сумме квадратов катетов ТО треугольник НЕ прямоугольный

    Простейший аналог:
    ЕСЛИ животное это собака ТО у неё четыре лапы ⇏ ЕСЛИ у животного четыре лапы, ТО это собака
    ЕСЛИ животное это собака ТО у неё четыре лапы ⇒ ЕСЛИ у животного НЕ четыре лапы, ТО это НЕ собака

    Студент должен был доказать, что квадрат гипотенузы равен сумме квадратов катетов только в прямоугольных треугольниках и обосновать утверждение
    ЕСЛИ треугольник прямоугольный ТОГДА И ТОЛЬКО ТОГДА квадрат гипотенузы равен сумме квадратов катетов
    Ответ написан
    2 комментария