Closed GoogleCodeExporter closed 9 years ago
wherepic на данный момент не работает вообще и
картинку не генерирует
whatis показывает текст из правильного ответа.
Original comment by oasyc...@gmail.com
on 20 Mar 2015 at 11:21
wheretxt как я понимаю тоже не работает.
При первой возможности постараюсь все
поправить.
Original comment by mamontov...@gmail.com
on 21 Mar 2015 at 6:03
C wheretxt проблем не обнаружил. Возможно нужны
более хитрые тесты.
Original comment by oasyc...@gmail.com
on 21 Mar 2015 at 1:34
what_is пофикшено и сделано, чтобы для ошибки
перемещения, описание бралось из ответа
студента.
Новую версию wherepic протестировал еще на
перемещении и удалении, а так же вставке
лишних лексем. Вроде проблем нет, все
рисуется правильно.
how_to_fix_pic будет позднее. Кстати, может
выберем для нее более короткое название? А
то в ограничение таблицы хинтов на 12
символов можем не влезть...
Original comment by mamontov...@gmail.com
on 30 Mar 2015 at 7:58
what_is должна использовать ответ студента
всегда кроме удаления, т.е. и для опечаток и
т.д. - не только для перемещения
how_to_fix_pic можно конечно fix_pic наверное
назвать. А в надписи уже "Hint how to fix typo" (или
другой вид ошибки).
Original comment by oasyc...@gmail.com
on 30 Mar 2015 at 8:43
Она и использует теперь.
Original comment by mamontov...@gmail.com
on 31 Mar 2015 at 6:08
Залил на edu.vstu.org свежую версию плагина из
репозитория, которая включает в себя
реализацию how_to_fix_pic .
Original comment by mamontov...@gmail.com
on 31 Mar 2015 at 7:22
Потещу в ближайшие пару дней - редактировал
статью Бирюковой, высплюсь - проверю.
Дмитрий - вам пока просьба - помочь
Бирюковой с экспериментом для статьи, там
ничего не посчитано - надо прогнать ее код
по БД ответов которые мы экспортировали и
собрать статистику - сколько процентов
ответов содержали опечатки, пропущенные
разделители, лишние разделители. И т.д. По
коду, идущему в релиз...
Original comment by oasyc...@gmail.com
on 1 Apr 2015 at 1:20
А можно меня тогда в соавторы её внести?
Просто получается что часть материалов
статьи готовил я...
Original comment by mamontov...@gmail.com
on 1 Apr 2015 at 8:04
Я уже думал об этом. :)
Но тогда вам еще помочь Маше с поиском
необходимых ссылок (я ей там замечания
накидал где точно надо) и составление
приличного списка источников.
Original comment by oasyc...@gmail.com
on 1 Apr 2015 at 8:43
Ну, мне и так все равно собирать статистику.
Списком больше, списком меньше...
Original comment by mamontov...@gmail.com
on 1 Apr 2015 at 9:11
Мария и Дмитрий - надо разобраться что
происходит с Lexical error threshold. Он либо не
влияет на генерацию прав, либо криво
передается.
Полюбуйтесь на вопрос
http://edu.vstu.org/question/preview.php?id=20&courseid=2
Он должен получать в качестве ответа
unsigned short int separator ;
Введите ему
unsi gned shartint separator ;
и полюбуйтесь как он залихватски
исправляет опечатки больше 50% длины слова
при Lexical error threshold в настройках вопроса 0,1
(кстати, это значение по умолчанию скорее
всего слишком низкое для правильной работы
- надо уточнить по налаживанию приличное
значение по умолчанию).
Просьба разобраться на каком участке кода
проблема (неправильно сохраняется в
вопросе, криво передается в lexical_analyzer или до
look_for_matches - или look_for_matches так его
замечательно игнорирует... И пофиксить, а
также подобрать вменяемое значение по
умолчанию...
Original comment by oasyc...@gmail.com
on 1 Apr 2015 at 6:42
Original comment by oasyc...@gmail.com
on 1 Apr 2015 at 6:43
И Дмитрий, не забывайте вытягивать когда я
выталкиваю свои коммиты, мержить же
приходится...
Original comment by oasyc...@gmail.com
on 1 Apr 2015 at 6:48
Кстати, по списку литературы. Почему для
опечаток нельзя сослаться на доклад
Левенштейна, который есть в списке
литературы? Вроде бы он излагал там, что тот
набор ошибок является оптимальным, и
опирался как раз на статистику...
Original comment by mamontov...@gmail.com
on 1 Apr 2015 at 7:57
Все кроме этого по списку написал
Бирюковой.
Original comment by mamontov...@gmail.com
on 1 Apr 2015 at 8:18
Есть куда более плохая ситуация. На
сравнении ответов в 14+ лексем программа
съедает всю память в recurcive_backtracking. Как
оказалось - такие ответы весьма
реалистичны.
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 7:05
Брр. С чего бы рекурсии жрать столько
памяти, это ж не в ширь, а в глубь.
а) надо прежде всего пофиксить проблему с
пределами, которую я вчера нашел. Там
количество генерируемых пар и
соответственно объем бэктрекинга может
резко упасть в этом случае - и все будет
нормально
б) если рекурсия жрет много памяти - туда
скорее всего криво передаются параметры,
где-то происходит копирование массива или
чего-то подобного в рекурсивном вызове;
обычно нахождение такого параметра и
передача ссылки вместо копии проблему
решает (в PHP можно сделать объект - как бы
там не массивы целых чисел копировались
при передаче...).
Еще если там new где-то внутри рекурсивной
функции - надо delete сделать когда не нужно.
Original comment by oasyc...@gmail.com
on 2 Apr 2015 at 7:21
Как я понял, там просто очень много пар
создается. Надо бы еще выцепить саму
ситуацию, в общей картине её не видно.
Вообще, этому коду реально нужен
рефакторинг, все эти bloking, unlock и прочее
неподдерживаемы толком.
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 8:03
Примеры мест где тормозит:
Ответ студента Правильный ответ
float projection[4] [4]; float projection[4];
p=p+p2-p1; p += p2-p1;
Видно, что здесь много совпадений. Нет ли
возможности как-то оптимизировать перебор?
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 8:09
Еще:
int n=(*ptr)*2; и int n = 2 * *ptr;
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 8:30
Ну вот во-первых - очень много пар может
создаваться еще и из-за того странного
бага, где очень много ошибок дозволяется в
слове.
Во-вторых, обычно рекурсия жрет время, а не
память. Если память - там где-то кривость в
управлении ею, которую надо отследить...
Перебор там хитрый, там нужно подобрать
набор пар так, чтобы не использовать ни
одну лексему дважды, по двум критериям
оптимизации
а) использовать максимальное количество
лексем
б) при равном количестве лексем
минимизировать суммарное редакционное
расстояние
Как это сделать оптимальнее чем перебор с
отсечениями - вопрос интересный...
Original comment by oasyc...@gmail.com
on 2 Apr 2015 at 8:34
Вы забываете, что GC в PHP очень примитивный и
вообще старается не собирать мусор почти
никогда. Сам язык не был на это рассчитан.
Но дело не в этом - я напихал в некоторые
места gc_collect_cycles, что должно было заставить
его работать быстрее.
Однако, как я понимаю, что он находит очень
много лишних пар, потому что ошибка
происходит либо до, либо во время обхода
массива status.
Я завтра посмотрю, можно ли как-то обойти
через верное использование lexicalerrorthreshold, но
на высоких его значениях проблема
останется.
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 8:40
Пары составляются в look_for_matches, если порог
взять 100% то пар будет вообще жуткое
количество, порог должен сильно влиять на
число пар...
Original comment by oasyc...@gmail.com
on 2 Apr 2015 at 8:46
Сейчас порог как-то странно считается - в
block_formal_langs_token_base::look_for_matches считается
$result = core_text::strlen($this->value) - core_text::strlen($this->value) *
$threshold; ($threshold - наш родной $lexicalerrorthreshold).
Далее с округленной версией этого
сравнивается расстояние с другой лексемой
в операциях и расстояние вернется верно
только в этом случае.
Такое ощущение что тут две ошибки:
1) Если лексема не из правильного ответа, то
операции будут сравниваться с порогом из
сравниваемого ответа, что недопустимо
2) Должно хватить просто
ceil(core_text::strlen($this->value) * $threshold)
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 8:52
Ссылку на код киньте, хочу глянуть чот с
этим result делается...
А то формула прямо странная - получается
что порог интерпретируется прямо наоброт
что-ли - чем ниже порог тем больше ошибок
позволяется??
Original comment by oasyc...@gmail.com
on 2 Apr 2015 at 9:02
Как я понимаю, да.
https://code.google.com/r/mamontovdp-mariabirvg-formallangs/source/browse/blocks
/formal_langs/tokens_base.php
см. с. 709-715
Original comment by mamontov...@gmail.com
on 2 Apr 2015 at 9:14
result это количество символов на которое
могут отличаться 2 лексемы.
соответственно, если порог 0,3, то для 10
символов - отличие составляет 7 символов
для порога 0,7, только 3 символа. Расчет
корректен
Original comment by mariabi...@gmail.com
on 3 Apr 2015 at 11:53
int y=hypercube[4][5][9][14]; и int hypercube[5][6][8][10][15];
hypercube[0][0][0][0][0]= 0;
Ещё вариант, на котором много проблем.
Original comment by mamontov...@gmail.com
on 5 Apr 2015 at 7:37
не удивительно что в нем много проблем.
Наборов создается много из-за скобок
одинаковых
Original comment by mariabi...@gmail.com
on 7 Apr 2015 at 7:59
не удивительно что в нем много проблем.
Наборов создается много из-за скобок
одинаковых
Original comment by mariabi...@gmail.com
on 7 Apr 2015 at 7:59
Дописал разбор дерева для языков C\C++.
Original comment by vad23k...@gmail.com
on 16 Apr 2015 at 2:38
Добился более-менее стабильной работы
модуля в этом моменте. Задеплоил текущий
код на edu.vstu.org, с учетом enum_analyzer.
Однако при слиянии от Вадима прилетело две
ветки. Я сливался с 2313, в которой вроде
последние коммиты. Помимо этого, при
слиянии оказалось, что
qtype_correctwriting_string_pair::clone дублируется, перенес
код из второй в первую.
Залил - вроде бы работает. Задачу по
добавлении поля для перечислений ставлю
отдельно.
Original comment by mamontov...@gmail.com
on 1 May 2015 at 11:42
1) При слиянии и развертывании, а также
создании вопросов возникла проблема - в
форме нет настройки для включения
анализатора перечислений. Вадим, в вашем
репозитории она есть (в смысле она
перезатерлась в моем, а у вас нормально),
или реально что-то не так? Да и строк
локализации недостает для формы, пока
сделал свои.
2) По умолчанию также в объекте question
включены enum_analyzer и syntax_analyzer, предлагаю
выключить оба (на всякий случай).
3) Также, если этого нигде нет - мне
изменения лучше вытолкнуть их в
https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2-enumsupport/sour
ce/browse (так как там изменения для него
координируются). Или в какой-то другой
лучше выталкивать?
4) Ещё заметил, что is_lang_compatible никак не
проверяется при валидации формы - думаю,
что надо тоже проверять. Думаю, надо
проверять.
Пока создал тестовые вопросы в Hinting question
types, можно попробовать и протестировать их.
Все вопросы названы следующим образом:
Question of XXX analyzer (setting test)
Original comment by mamontov...@gmail.com
on 8 May 2015 at 8:47
Что сейчас сделано плохо со стороны Вадима:
1) Переименовать qtype_correctwriting_proccesedstring в
qtype_correctwriting_processed_string (серьезно)
2) Привести код строки к исправленному (см.
приложение) + убрать лишние геттеры и
сеттеры из магических методов. Текущий код
в твоем репозитории рушит систему геттеров
и сеттеров от родительского кода.
3) Исправить warning на главном сервере.
Необходимо исправить в течение пары дней.
Также мне очень не нравится то, что много
патчей не моего кода находятся у меня в
локальном репозитории. Предлагаю создать
репозиторий для подготовки к релизу.
Original comment by mamontov...@gmail.com
on 13 May 2015 at 6:56
Attachments:
Первые два поправил, занят warning'ом.
Original comment by vad23k...@gmail.com
on 15 May 2015 at 11:34
Варнинг закрыт, теперь не предлагает
подсказку, но все равно пишет что ответ
почти правильный. Не знаю с чем это
связанно.
Original comment by vad23k...@gmail.com
on 20 May 2015 at 10:17
А сами перечисления генерируются? Кроме
этого - откуда надо вытянуть код?
Original comment by mamontov...@gmail.com
on 21 May 2015 at 4:24
Да, генерируются.
Сейчас вытолкну в
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/browse
Original comment by vad23k...@gmail.com
on 21 May 2015 at 9:36
Вытолкнул. Еще заметил что в слитой версии,
нехватает моей настройки для количества
порядков. Она позволяет настроить
производительность. Ее стоит вернуть.
Original comment by vad23k...@gmail.com
on 21 May 2015 at 10:01
Кинь мне ссылку на файл репозитория, где
она находится, чтобы я быстро слил.
Original comment by mamontov...@gmail.com
on 21 May 2015 at 10:05
https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/browse/
question/type/correctwriting/settings.php
Original comment by vad23k...@gmail.com
on 21 May 2015 at 10:10
Вадим, а у вас есть тест на такое же
объявление структуры, как я создал на
edu.vstu.org? Если нет, то создайте и проверьте,
особенно enum_catcher. У меня почему-то не
переставляются лексемы, я отладил и пришел
к тому, что это потому что enum_catcher в момент
оценки не возвращает перечисления.
Original comment by mamontov...@gmail.com
on 25 May 2015 at 6:15
Снимаю вопрос, какая-то совершенно
сумасшедшая ошибка в парсере возникла.
Original comment by mamontov...@gmail.com
on 25 May 2015 at 6:24
Нашел в чем было дело. Исправлено в
mamontovdp-mariabirvg-formallangs. В ближайшее время залью
на главный сервер, но сначала сольюсь с
кодом Вадима.
Original comment by mamontov...@gmail.com
on 25 May 2015 at 6:56
Перезалил, исправил все проблемы.
Что осталось с моей стороны:
1) Сейчас валидация зависимостей
анализаторов и их зависимостей от языков
захардкожена. Надо поправить, сделать как
полагается.
2) ??? (Есть ли еще какие-то проблемы, которые
должен я сделать и протестить, кроме 1?)
Original comment by mamontov...@gmail.com
on 25 May 2015 at 7:29
Как, вариант, можно рискнуть и заняться
https://code.google.com/p/oasychev-moodle-plugins/issues/detail?id=333&colspec=I
D%20Type%20Status%20Priority%20Component%20Milestone%20Owner%20Summary .
Например добавить в глобальный конфиг
параметр, который будет менять поле answer на
textarea.
Original comment by mamontov...@gmail.com
on 25 May 2015 at 7:36
UPD. Переделал валидацию формы. Теперь
работает, как полагается.
Original comment by mamontov...@gmail.com
on 25 May 2015 at 8:24
1) enum+sequence
struct MyNiceStructure { long Padding;int char SmallPart; FirstField; }
DefaultValue;
очень странные ошибки
name of long integral field is missing; there is extra ""FirstField"".
хотя там только переставлено
2) lexical+enum+sequence
struct MyNiceStructure { long Padding; char SmallPart;intFirstField; }
DefaultValue;
ошибки выводятся верно, но картинка крайне
глючная
Original comment by oasyc...@gmail.com
on 26 May 2015 at 12:52
В пункте 2) имеется ввиду большая картинка.
Картинка при хинтах в порядке, как и все
хинты.
Original comment by oasyc...@gmail.com
on 26 May 2015 at 3:23
Original issue reported on code.google.com by
oasyc...@gmail.com
on 20 Mar 2015 at 12:29