1 | ||||||
Хуман интерфейс общения с ботом - РЕПЛом01.02.2017, 00:59. Показов 641. Ответов 5
Метки нет Все метки)
(
Делаю чат-бота: интерпретатор языка, РЕПЛ по-народному. Каждый ник в чате может запустить один поток вычислений, пока он не закончится, новый от его имени не запускается, но автор может прервать свой поток. Поток может висеть/вычисляться условно бесконечно. По окончании вычисления в чат от имени бота обязательно выводится результат. Еще у меня есть функции print / read, для вывода / блокирующего ввода информации в процессе вычисления. Если делать print моментальным, тогда можно будет написать бесконечный вывод всякой хрени, что нежелательно. Сейчас сделал так - print выводит не сразу, а в самом конце - когда посчитался результат. Но тогда некрасиво то, что нет последовательности выполнения типа
0
|
01.02.2017, 00:59 | |
Ответы с готовыми решениями:
5
Написать интерфейс общения в процедуре Прикинуться ботом Проблема с тг-ботом |
01.02.2017, 14:11 [ТС] | 3 | |||||
Не по теме: Спасибо, передам :) Как доделаю новый интерфейс и прикручу к какому-нибудь гиттеру, сможешь и лично передать :) Смотри. Допустим у нас нет возможности включать в исполняемый кот команды принт и рид. Тогда все просто - вычисляется выражение и возвращается его результат. Заспамить чат нельзя. Можно запустить долгий (и даже бесконечный) вычислительный процесс, но он не будет никак отражаться в окне чата. И это хорошо. Но если мы добавляем принт посреди вычислений, то кто-то напишет бесконечный цикл вывода и забьет чат фигней. Но принт удобен, для отладки да и просто так. Поэтому я принял решение все принты писать в буфер на сервере, результат вычислений добавлять в конец того же буфера, и выводить его значение в конце вычислений. Если юзер прервал вычисления посреди расчета (не дождался), то можно не выводить буфер, а можно выводить что накопилось., Если в процессе вычислений буфер превысил какой-то заданный максимальный размер, поток вычисления прерывается и выводится то, что накопилось (или не выводится, как будет удобнее). И это все хорошо, кроме того, что этот вариант не дает возможности написать свою диалоговую функция внутри РЕПЛа - чтобы в процессе одного вычисления бот писал принтом запросы, ожидал блокирующего ввода и думал дальше. Но имхо это допустимый компромисс в сложившейся ситуации. Хотя, может я не вижу других вариантов, поэтому и создал тему на форуме. ЗЫ вот пример как онлайн-компилятор реагирует на бесконечные принты: http://rextester.com/OHNJ67301 ![]() ![]()
0
|
01.02.2017, 14:39 [ТС] | 5 |
У меня под одним логином чата можно запустить только одну задачу, вторую не даст. А контролировать уникальность логинов и отсутствие фиктивных - уже задача чата. Конечно в чате могут оказаться 100500 разных логинов и каждый запустит долгие задачи, но такой популярности я не ожидаю
![]() Просто ограничение в 10 секунд во-первых маленькое, а во-вторых, оно не спасает от продемонстрированного выше hell-а ![]() Так я и не как экспертов спрашиваю, а как юзеров, которые могут предложить идеи более удобного им интерфейса ![]()
0
|
09.02.2017, 23:24 [ТС] | 6 | |||||
Вести с полей - придумал как решить проблему и не потерять никакой функциональности
![]()
![]()
1
|
09.02.2017, 23:24 | |
Помогаю со студенческими работами здесь
6
Проблемы с ботом вк Проверка почты ботом Ошибка с чат ботом С ботом подхватил вирус Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной.
Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
|
Формулы поворота
Igor3D 10.03.2025
Добрый день
Тема
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости".
x' = x * cos(a) - y * sin(a)
y' = y * cos(a) + x * sin(a)
Как бы Вы их. . .
|
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
|
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
|
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
|
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view.
string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
|
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
|
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет!
Отправлено 19 февраля 2025 года в 17:20:21 UTC
Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home.
Мы официально. . .
|
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
|
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
|