Как стать автором
Обновить
32
0
Никита Полунин @Pontific

Пользователь

Отправить сообщение

Про сына: напомнило задачу про 3 двери. За одной из них приз, и ведущий знает, за какой. Вы выбрали первую. Ведущий показал, что за второй дверью ничего нет. Поменять свой выбор на третью дверь или остаться на своём?

В чём нюанс

Исходная вероятность угадать: 1/2.

Ведущий может выбрать, какую из дверей открыть. Он выберет случайно между 2 и 3, только если приз за 1 (вероятность 1/3). В других 2 случаях — у него нет выбора. Значит, надо менять свой выбор на 3, вероятность успеха 2/3.

Так же и с сыном: нам предъявляют младшего или старшего ребёнка на свой выбор (в зависимости от того, кто из них сын). Если оба сына, то без разницы, кого предъявить. Получается, 1/3, что оба сына.

Понял свою ошибку: нам предъявляют не конкретного ребёнка (старшего или младшего), а того, который обладает нужным полом. Тогда, действительно, очень похоже на 1/3.

Что если ввести понятия старший/младший (или первый/второй). И может быть два равновероятных случая: в качестве сына упоминался старший либо младший ребёнок.

50%, что предъявили старшего. Тогда из 4 исходных комбинаций подходят 2: мальчик/мальчик, мальчик/девочка.

50%, что предъявили младшего. Тогда из 4 исходных комбинаций так же подходят 2: мальчик/мальчик, девочка/мальчик.

(50%*50%) + (50%*50%) = 50%.

Иначе говоря, если девочка/мальчик и мальчик/девочка считаются по какой-то причине разными случаями, то и мальчик/мальчик должны рассматриваться как два случая. Нам могли как бы упомянуть первого, а могли — второго (младшего).

Много желающий платить, окупаются затраты на хостинг?

Не больше десятка пока что. Хостинг примерно окупается, да.

Я бы разбил на хранимые функции как минимум для удобства чтения.

Из преимуществ текущего запроса — всё в одном месте, можно читать не переключаясь.

Но идея с хранимыми функциями мне тоже нравится. Если будет настроение и приведёте пример, какие можно было бы выделить функции — будет интересно.

если у пользователя отвалился бекенд то сервер вернёт 200, а при запросе к api пользователь ничего не увидит

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

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

Есть ещё регулярный отчёт за сутки/неделю, в нём можно посмотреть статистику времени ответов, если Вы об этом:

Замеряю чисто время отработки curl, вот так:

    $start_time = microtime(true);
    $response = curl_exec($ch);
    $end_time = microtime(true);
    $result['response_time_ms'] = intval(round(($end_time - $start_time) * 1000));

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

  1. Если минимальное время из двух последних в два раза превышает последнее сообщённое время — сообщаю это новое время.

  2. Если максимальное из двух последних в два раза меньше последнего сообщённого — тоже сообщаю.

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

Запросы делаю сейчас раз в 5 минут. Если 2 запроса подряд без ответа — шлю уведомление. К сожалению, многие сайты с завидной регулярностью "мерцают", пришлось добавить такой фильтр. Но некоторые и два раза подряд могут быть недоступны, а на третий раз отвечают — не знаю, с чем связано.

Telegram-бот для мониторинга ваших сайтов.

Держит на контроле:
✅ Доступность сайта и код ответа.
🌐 Срок регистрации домена — напомнит вовремя продлить.
🔒 Срок действия SSL-сертификата.
⌛ Время ответа — сообщит, если ждать пришлось дольше 5 секунд.
📰 Изменение заголовка страницы.

Работает с кириллическими доменами.
Проверка — каждые 10 минут.
1 сайт на мониторинге — бесплатно, дополнительные — по 2 ₽ в день.

https://t.me/daily_site_monitor_bot?start=r_5018__u_258__t_1

Да, забыл уточнить: "ориентироваться на 10 утра Мск".

Тоже склоняюсь к варианту рассчитываться днём.

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

Дельное замечание, боту в Telegram недоступен часовой пояс.

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

Это было бы так, если бы был JOIN. В случае с LEFT JOIN разница есть.

Вот тут добавил все варианты, можно посравнивать: https://www.db-fiddle.com/f/dMR923n7iJnoeUZG9xhfaR/0

Ещё в WHERE должно быть не lc.db_message_id , а c.db_message_id . Вот тогда да.

Он не полностью идентичен: если нет ни одной записи с lc.response_received = true , то не вернётся ничего.

Дело в том, что из результатов берутся разные поля. Из последнего запроса я беру код ответа, а из последнего успешного беру заголовок и срок SSL-сертификата.

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

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

Проблема в том, что MySQL 5.7 (который у меня на хостинге) не поддерживает WITH.

Мне 4o тоже предлагал какие-то варианты, но они не помогли.

Фото → Поделиться → Параметры → Наиболее совместимый формат, затем сохранить или отправить.

P. S. Надеюсь, американцы не прочитают.

1
23 ...

Информация

В рейтинге
5 472-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность