it-workshop/UniSched

README наполнить

Closed this issue · 19 comments

cra commented

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

Начал добавлять "в ширь". Если это Ок, то можно уточнить приведенные примеры.
Опечатки к коммиту исправить нельзя?

cra commented

Уточняй. 2 и 3 я вообще не вижу.

Исправить можно, но это проще делать до того как ты сделал push

cra commented

Арш, у нашего проекта в некотором смысле есть идейный брат: remind. Он однопользовательский и имеет свои особенности. К нему есть интерфейс wyrd

Почитать можно здесь
http://pessimization.com/software/wyrd/
http://www.roaringpenguin.com/products/remind

Можешь провести некоторый анализ фич и понять, насколько перекрываются области применения? Если можно, с максимальной конкретикой.

Remind + Wyrd. Очень понравился подход (минималистичность). Идеологические отличия от Расписатора:

  1. Однопользовательский календарь
  2. Нет привязки к базе данных
  3. Автоматизация на базовом уровне: нельзя написать поисковый скрипт для выделения сразу группы событий

Думаю, надо подробно изучить опыт этих проектов. Особенно это касается фронтэнда Wyrd, может нам форкнуть его в какой-то момент под свои цели?

Как я попытался начать излагать в ридми, Расписатор должен выполнять две основные функции: менеджмент событий, объединяющих группу людей и индивидуальный календарь. При этом эти две сущности должны быть непосредственно связаны. Наконец, Расписатор должен быть ориентирован на максимальную автоматизацию. Чтобы от пользователя требовалось настолько мало входной информации, насколько это возможно.

cra commented

Без примеров сложно понять, что ты имеешь в виду. Приведи пять конкретных случаев использования/проблем и примерно опиши, как пользователь их решает (вплоть до условных комманд запросов), например, задача вида "Завтра я хочу провести лекцию по манипулированию сознанием, при этом это надо согласовать ещё с двумя лекторами и пятнадцатью слушателями, допустим, в той же системе, погулять с собакой и выпить чашечку кофе с моей бывшей одноклассницей."

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

Немного не понял, что ты хочешь, чтобы я сделал с запросом

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

Вот 3 примера того, что в нашей программе на мой взгляд уникально:

  1. Многопользовательский календарь. Менеджер проекта организовывает митинги с командой, подписывая участников на соответствующий календарный эвент, который имеет свойства переодичности (раз в неделю), не может приходиться при этом на праздник, в случае чего переходит на ближайший будний день этой же недели, в который более 50% участников имеют свободной время, либо эвенты с более низким приоритетом. В случае, если задача невыполнима, запускается интерактивный режим и просит принять решение об отмене эвента на проблемной неделе, либо о назначении даты вручную. Допустим, я участник команды, который использует функцию ежедневного саммари изменений в своем календаре посредством имейла. Вечером я получаю информацию о новой серии событий. Используя расписатор, я могу внести корректировки в коэффициенты расчета, которые используются в автоматическом выборе, что может повлиять на сдвиги событий. Например, я могу сообщить Расписатору: "если митинг попадет на пятницу, то мне придется уйти на 30 минут раньше". Это позволяет автоматически решить много задач, например, задачу определения кому какое время удобно, что даже в команде из 50 человек занимает 3-4 дня при обычной связи посредством имейла. С точки зрения менеджера, это позволяет тратить минимум времени на планирование, хотя пинятие решений происходит более интерактивно и побочный эффект есть: плохо сформулированные запросы создания событий приведут к созданию "прыгающих" событий. Но введя автоматическую оценку детерменированности, можно давать подсказку, типа "плохая идея". С точки зрения обычного участника, преимущество в том, что твои запросы учитываются по-максимуму.
  2. Использование базы данных дает возможность в сложных запросах использовать чистый SQL. При этом есть главный фронтэнд, который предлагается пользователю по-умолчанию, и на котором основан ГУИ (который нам нужен для конкурирования с Эксчейнджем, например). Кстати, Эксчейндж на мой взгляд в малой степени обеспечивает решение всех этих задач, но на очень тупом уровне. Поэтому у нас на Интеле регулярно отменяются митинги с 100 участников, на которые человек 5-10 готовили сложные презентации.
  3. Если первые два пункта довольно общие, то дальше идеи будут более простыми. С точки зрения архитектуры: надо продумать всякие скользящие события, иерархию индивидов и все такое. Но это подробно имеет смысл обсуждать, когда будет фундамент в виде удовлетворительного плюсового интерфейса.
cra commented

Так, это всё хорошо, но я хочу 5 примеров "запросов".

Обнови README

cra commented

А, сорри, верхнюю фразу не увидел.

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

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

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

     NEWPERSON Вера --birthday 21.12.1991 --sex F --group "Girl Buddies"
     > Group "Girl Buddies" doesn't exist. Create it?
     yes
     > ok, done.
     > The ID of the group "Girl Buddies" is #@0001, enjoy.
     > Вера's ID is $0001, enjoy.
     NEWEVENT "A Cup of Coffie" --time 19:00/3.12.2011 --group @($0001) --descriptor "Buy some flowers" --alarm-warning 1:00
     > The ID of the event
     > Ok, I'll warn you at 18:00/3.12.2011. Enjoy.
     NEWPERSON Enga --birthday 12.06.2004 --sex F --group Pets --comment "a dog"
     > Group "Pets" doesn't exist. Create it?
     yes
     > ok, done.
     > The ID of the group "Pets" is @0002, enjoy.
     > Enga's ID is $0002, enjoy.
     NEWEVENT "Walk with the Dog" --time 16:30/3.12.2011 --group NEW($0002)
     > The ID of the event "Walk with the Dog" is #0002.
     > Ok, don't forget about it. Enjoy.
     # Позвонить двум лекторам и выяснить кто когда юзает аудиторию.
     # Позвонить в секретариат и забронировать аудиторию; добавить свою лекцию в расписание.
     NEWEVENT "Mind Control Lecture" --time 9:00/5.12.2011 --alarm-warning 2:30
     > The ID of the event "Mind Control Lecture" is #0003.
     > Ok, I'll warn you at 6:30/5.12.2011. Enjoy.
     CONNECT ssh://10.82.74.120:544 -p "dont-bee-a-smart-ass" -l WirelessWizard --raspisator-directory ~/raspisator
     > Found new groups: "Students" (ID @0003, with 3 related events, IDs in range #0003-#0005).
     > Adding 15 new Individuals to the DB (IDs in range $0004-$00018). Enjoy.
     GETEVENT #0003 --edit --group @0003 --email-warning now
     > Event "Mind Control Lecture" modified, do you want to sync with the Internet DB (ssh://10.82.74.120:544)?
     yes
     > Synchronized successfully, the notification email is generated:
     > -----------------------------------------
     > Dear Students,
     > Please look to the new event in your calendars. I'll be happy to see you around on Monday, 5-th December for listening to my new lecture about mind controlling.
     > Best Regards, PhD Wireless Wizard.
     > -----------------------------------------
     > Send message or edit via vim?
     send
     > Message sent, thank you&enjoy.
     MAKECAL --all
     [Text-generated calendar output]
cra commented

Батя грит маладца.

В ридми всю переписку и можно закрывать.

Во-первых, у нас пока формат другой, чем я не очень доволен (формат CLI я имею ввиду).
Во-вторых, подтверждаем ли мы тот формат, который я привел в пример?

Было бы хорошо, но я бы сказал это надо делать на более высоком уровне абстракции. да, сообщение нереальное без лексического анализа текста, а это вроде не наша задача.

да, сообщение нереальное без лексического анализа текста, а это вроде не наша задача.
Поясни.

cra commented

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


Dear Students,
первую строку вполне можно сгенерировать
Please look to the new event in your calendars. I'll be happy to see you around on Monday, 5-th December for listening to my new lecture about mind controlling.
Вторую крайне тяжело, конкретно "I'll happy ti see you around", "for listening to my new lecture about mind controlling" у программы вызовет большие затруднения, писать такие сложные алгоритмы нереализующие основную задачу - убийство времени.
Best Regards, PhD Wireless Wizard.

Последнюю сгенерировать можно, даже проще первой.

Добавлен файл usage куда пошел мой пример. Туда и текущий интерфейс надо добавить, в начале файла, и приписать, что пример пока нереализуем.

Пример с письмом абстрактен. Возможно использование пользовательских шаблонов для достижения похожего эффекта. Не принимайте близко к сердцу.

cra commented

LGTM