Pull to refresh
22
0
Anton MegaPort @AlexTest

Magento, Telegram bots

Send message

Я не нашел на этой странице информации об этом ограничении.
Посчитали, что оно не работает?

Это описание Pull-модели, и она не очень подходит для real-time взаимодействия. Вам надо будет опрашивать бд однотипными запросами. А это чтение с диска. И чем больше вы захотите приблизиться к real-time, тем больше придется дидосить бд.

Никаких лишних запросов к БД не происходит.

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

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

Я об этом написал в статье - возможно вы её невнимательно прочли или неправильно поняли. Спящий процесс не потребляет ресурсов, а отправка межпроцессного SIGCONT - очень дешевая операция.

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

Как только Input хоть что-то получит от Телеграма - он записывает это в очередь обработки и пинает Proc. Тот в свою очередь, как только что-то запишет в очередь отправки - пинает Output. Всё настолько просто, что даже можно сказать - примитивно, и поэтому - быстро, надежно и безотказно работает!

Потому, что данном случае это избыточно. Зачем простую систему усложнять дополнительными сущностями и слоями взаимодействия?

Брокеры сообщений уместны: а) в распределенных системах, б) для обслуживания очередей обмена сообщениями между несколькими компонентами системы.

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

И придумывать тут особо ничего не надо, по сути любая таблица в БД с автоинкрементным ID или полем даты добавления записи - это уже очередь, в конец которой один процесс может добавлять, а другой - вынимать сообщения из начала.

  1. Требования я сам себе ставил: простота, надежность, расширяемость, масштабируемость.

  2. Из лучших практик - это разделение бота на отдельные, параллельно работающие сервисы, взаимодействующие между собой через обработку очередей сообщений.

  3. Вдохновлялся я пожалуй - устройством и работой пулемета Maxim :)

Я полагал, что описываемая архитектура бота настолько проста, что достаточно текста, да и художник из меня - не очень, но раз надо графику, то вот что у меня получилось:

Да, вы правы. Когда у меня начала крыша ехать от рассуждений — написал простую програмку, чтобы численно проверить результат:
$d = 0;
$m = 0;
$n = [];
for ($i = 0; $i < 10000; $i++) {
    $notm = true;
    $k = 0;
    do {
        $v = mt_rand(0, 9999);
        if ($v < 5000) {
            $d++;
            $k++;
        } else {
            $m++;
            $notm = false;
        }
    } while ($notm);
    $n[$k] = isset($n[$k]) ? ++$n[$k] : 1;
}
ksort($n);
print_r($n);
echo "d=$d\nm=$m\n\n";

На 10000 семей каждый раз количество мальчиков и девочек получается примерно одинаково — по 10000 соответственно. При этом иногда получаются семьи, где есть и по 16 девочек, вот например в таком результате:
Array
(
[0] => 5038
[1] => 2393
[2] => 1291
[3] => 640
[4] => 323
[5] => 169
[6] => 73
[7] => 39
[8] => 23
[9] => 5
[10] => 5
[16] => 1
)
d=10038
m=10000
ну если не думать то f = (f + 1) /2 отсюда на 1 мальчика будет 1 девочка. И ничего не меняется. Ну что логично в целом, так как количество детей никак не влияет на проценты рождаемости.
Вы забываете о том, что по условию задачи они рожают девочек пока не родится мальчик. Т.е. на первом же мальчике процесс останавливается, а девочек может быть сколько угодно до этого. Очевидно, что в этой ситуации девочек будет рождаться больше чем мальчиков, вопрос в том — насколько?
Как найти время… ?
К сожалению только за счет сокращения рабочих часов на основной работе или полном уходе с нее (например в долгий неоплачиваемый отпуск).
Допустим Вы решили создать бизнес сводящий таксистов и клиентов.
Да даже если и не бизнес, а просто бесплатно помочь людям в неудобных/неинтересных местах для крупного бизнеса типа Донбасса, большинства островов и т.д. наладить хоть как-то сервис перевозок. Мой знакомый уже пару лет пилит бесплатный и все равно никому особо не нужный сервис на ботах «UNTER TAXI» и тоже жалуется на проблему «замкнутого круга».
Для защиты от контролирующих органов существуют другие механизмы — обеспечивающие анонимность в p2p сетях.
Никаких таких механизмов анонимности не существует, как только с вашего IP началась раздача блоков «запрещенного» контента и это засекли — всё, вы попались!
Главным в своем предложении я считаю все-же интеграцию с обычным вебом через плагин и захват контента — сохранение в оффлайн и раздачу уже в децентрализованную сеть.
Как только вы сохраните что-то, что государство считает противозаконным и начнете его раздавать — у контролирующих органов появится повод к вам прийти. И вероятность их прихода будет тем выше, чем опаснее они посчитают то, что вы раздаете.
Проблему ответственности за распространение т.н. противозаконного контента ваше предложение не решает, а для вполне законных «котиков» и «прона» — достаточно обычного веба.
Какая чушь :( Если человек нуждается — значит его жизнь ничего не стоит?
А сколько по вашему стоит жизнь нуждающегося в водке настолько, что он готов вломиться за ней в чужой дом?
Интересно, а есть приложение типа «fake gps», в котором можно было бы включить режим случайной смены координат с заданным интервалом или диапазоном интервалов времени в заданном радиусе от реальной точки расположения? Или еще лучше — пусть генерит случайные маршруты перемещения. Тогда трекать их будет бессмысленно. Ну и только когда требуется вызвать такси или сделать другой заказ с привязкой к реальным координатам — эту штуку отключать, причем только на время, пока делаешь такой заказ.
Можете не верить, но я вашу карму не минусовал.

А что касается
культуры в эпоху освоения Америки
лично я думаю, что во многом благодаря именно ей штаты и стали топовым государством на этой планете.
Когда «дикари» на западе в конце 19 века начали пахать землю на тракторах — в Европе еще не знали что это такое.
Когда «дикари» в начале 20 века в Нью Йорке и других городах, освещаемых электрическими фонарями уже ездили в основном на автомобилях — в Лондоне, Берлине и Париже продолжали убирать горы навоза за лошадьми с центральных улиц, где все еще использовались газовые фонари.
Потом «дикари» смогли погулять по Луне, где до сих пор еще не было ни одного «цивилизованного» человека, а вот когда они оцивилизовались и стали толерантными и политкорректными — им пришлось закрыть свою программу пилотируемых космических полетов.
Как по мне, так пока они были «дикими» — у них все намного лучше получалось чем после того, как стали «цивилизованными».
Да — эти толерастия и политкорректнось уже конкретно достали!
Как же хочется иногда сделать по его совету:
Когда какой-то засранец скажет тебе: «У меня есть право на моё мнение», ты скажи: «А, да? А у меня есть право на моё мнение, а моё мнение в том, что у тебя нет прав на твоё мнение». Затем пристрелите ***ка и уходите!

Последний кандидат, с 2 годами опыта, в цикле нашел значение и создал новый массив без него, плакали все.
А где в условии написано, что исходный массив можно менять? Человек вам сделал универсальное решение в котором есть и исходный массив и новый, без второго элемента — что в этом плохого?
Пункт, с которого надо начинать, и в принципе его будет достаточно:
0. Найдите работу, на которой вас оценят по достоинству и будут платить больше, увольтесь (предложения о повышении оплаты на старом месте работы в момент увольнения лучше игнорировать) и устройтесь на новую работу с более высокой оплатой.
Если не можете сделать этого — вы реально переоцениваете себя, и все остальные пункты уже не важны.
Даже юридически второй вариант сильно отличается от первого
Да, за второй можно сесть.
Но первом случае вариантов посадки больше. Сами подумайте: если кто-то без вашего ведома вам пришлет письмо с ЦП, то скорее всего будет виноват именно он, а вот если вы сами «сходили» за ЦП — то виноваты однозначно вы.

Выдача «органам» мастер-пароля от зашифрованного контента под пытками или угрозами — это «сами захотели»?
Ну под
пытками или угрозами
можно под чем угодно подписаться. Если такая практика станет массовой, то цензура и анонимность будут вас беспокоить меньше всего. Если же говорить о более-менее цивилизованном обществе, то вариант о котором я написал — вполне жизнеспособен.

Information

Rating
5,069-th
Registered
Activity