Эквивалентность автоматов с тегами - практика 2013
Originally reported on Google Code with ID 287
Перевести код на PHP и интегрировать с классами автомата, а также классами узлов работы
с отрезками.
Reported by oasychev
on 2014-07-07 08:20:17
Comments (62)
-
reporter -
Account Deleted Я передал. Придёт Дай, заберёт.
Reported by
SpertsianKamo
on 2014-07-08 11:43:10 -
reporter Камо, я по-моему уже объяснял вам насчет отъезда на время практики - ну нельзя. Ирина Георгиевна попросила еще раз вам объяснить, раз не понимаете. Что вам надо такого сказать, чтобы дошло уже наконец? Переносите поездку на после окончания практики! Как дела с изучением языка/кодом? Пока не вижу на сервере ни одного коммита. Есть вопросы - задавайте. Клон доименуйте чтобы было ясно с чем работаете - например - spertsiankamo-preg-quivalence
Reported by
oasychev
on 2014-07-10 13:28:11 -
Account Deleted Да я думал с заявлением официально оформить.. Нет так нет. Язык более менее понятен, я разобрал код preg_fa.php, сопоставил классы, единственное - пока не рассмотрел класс условия перехода. Я так понял, от меня требуется внедрить только функцию checkEquivalence и все, к ней причастные, да? Тесты к моим функциям отдельным файлом надо сделать?
Reported by
SpertsianKamo
on 2014-07-10 17:48:18 -
Account Deleted Что-то я не найду свой клон, чтобы переименовать.. Не подскажете, где он?
Reported by
SpertsianKamo
on 2014-07-10 17:51:39 -
reporter Клон в самом низу, поскольку вы ничего еще не выталкивали. Они по дате последнего выталкивания сортируются, что очень удобно. Насчет checkEquivalence - да, но не совсем. Если вы разобрали fa то понимаете, что в переходе сами символы хранятся в виде preg_leaf_charset. Ну и теги там тоже посмотрите как хранятся. Соответственно, вам скорее всего будет очень полезно сделать функцию (статическую) в preg_leaf_charset которая получает два массива чарсетов и возвращает наборы интервалов пересечения символов (там есть аналогичная kinda_operator - посмотрите ее устройство и алгоритм, но ее задача операции над двумя отрезками типа объединения или пересечения) - и возвращает все интервалы в нужном вам виде. (Функция, работающая ТОЛЬКО с чарсетами, должна и принадлежать классу чарсета; а вот теги - они в transition от автомата, там отдельная песня...)
Reported by
oasychev
on 2014-07-10 17:58:42 -
Account Deleted Хорошо, буду разбираться и делать. А как переименовать свой клон, я его нашёл, а изменить никак не могу... Во вкладке administration немного не то..
Reported by
SpertsianKamo
on 2014-07-10 18:01:08 -
reporter Удалите клон и создайте новый, вы все равно ничего не выталкивали. А чего вы меня из Cc убрали??
Reported by
oasychev
on 2014-07-10 18:11:16 -
Account Deleted Да я что-то не понял, я тут пытался писать, чтобы Вам отправлялось тоже, добавил Ваш адрес в Cc ниже, потом понял, что не надо, удалил. Хех, извините, пока не до конца во всём разобрался.
Reported by
SpertsianKamo
on 2014-07-10 18:12:37 -
Account Deleted Всё, вроде создал нормальный и старый удалил.
Reported by
SpertsianKamo
on 2014-07-10 18:15:23 -
Account Deleted Не могу найти классы qtype_preg_fa_state и qtype_preg_leaf, на которые ссылаются остальные классы в preg_fa.. Где они находятся?..
Reported by
SpertsianKamo
on 2014-07-11 10:43:38 -
в preg_fa.php и preg_nodes.php Используй grep. Перейди в папку с preg'ом в консоли и напиши grep -r 'class qtype_preg_leaf' - это будет рекурсивный поиск по подкаталогам во всех файлах
Reported by
vostreltsov
on 2014-07-11 10:51:08 -
Account Deleted А разве qtype_preg_fa_state существует? мы же его убирали? или это не состояние автомата?
Reported by
eklepilkina
on 2014-07-11 10:54:07 -
reporter Если под Windows то лучше GrepWin поставить - ищется по названию и скачивается легко, встраивается в меню проводника. Если под никсом то да - классический греп.
Reported by
oasychev
on 2014-07-11 10:56:05 -
Account Deleted Лена, там в файле preg_fa.php он используется 4 раза, дважды в комментариях к полям класса transition, а дважды в составе qtype_preg_fa_state_limit.. Что кстати последнее значит?
Reported by
SpertsianKamo
on 2014-07-11 11:06:47 -
Account Deleted Камо, этого класса нет, это забыли комментарии поправить. В transition from и to это int. А второе это ограничение на количество вершин в автомате, по моему.
Reported by
eklepilkina
on 2014-07-11 11:09:52 -
Account Deleted Это ограничение забито где-то? Откуда оно берётся? Просто похожего рода я видел ещё qtype_preg_leaf_meta..
Reported by
SpertsianKamo
on 2014-07-11 11:13:53 -
reporter Камо, если вы хотите быстро разобраться что там реально происходит - распечатайте автомат через var_dump, потом расставьте в этом ужасе переводы строк и отступы и вы реально увидите что там хранится. Поправить устаревшие комментарии не возбраняется :)
Reported by
oasychev
on 2014-07-11 11:16:20 -
Account Deleted Класс qtype_preg_leaf нашёл и _meta там же..
Reported by
SpertsianKamo
on 2014-07-11 11:18:20 -
Account Deleted Хорошо, попробую..
Reported by
SpertsianKamo
on 2014-07-11 11:19:48 -
reporter В понедельник в 13-30 встреча будет в политехе. Быть всем, кто по моим задачам работает. Лучше взять ноутбуки потому что многим надо показать: а) что делать с меркуриалом и клонами б) вопросы по коду Передайте всем пожалуйста!
Reported by
oasychev
on 2014-07-12 16:50:34 -
Account Deleted Передал!
Reported by
SpertsianKamo
on 2014-07-12 19:01:50 -
Account Deleted Вытолкнул первый тест для моей функции, посмотрите, пожалуйста,есть ли к нему какие-то замечания, чтобы я мог от него отталкиваться. Попробовал скомпилировать - получил непонятную ошибку, скриншот прикрепил к данному сообщению.
Reported by
SpertsianKamo
on 2014-07-14 16:03:35<hr> * Attachment: 2_h2uQ-UlS4.jpg
-
reporter Что значит "непонятная ошибка"? Перевести? PHP говорит вам что вы пытаетесь куда-то обратиться по индексу 0, а такого индекса там нет. Или это вообще не массив, или там нет 0-го элемента. Строки на которых произошли вызовы функций (нижние части таблицы) и сама ошибка (верхняя строка) указаны. Дальше смотрите на код preg_fa строка 664, печатайте там состояние объекта через var_dump и разбирайтесь, где там проблемы с индексами...
Reported by
oasychev
on 2014-07-14 16:51:45 -
reporter По коду следите за выравниванеим. По правилам Moodle все (!) отступы делаются пробелами - по 4 штуки. Табуляции недопустимы и должны быть заменены.
Reported by
oasychev
on 2014-07-14 16:53:25 -
Account Deleted Понял, спасибо..
Reported by
SpertsianKamo
on 2014-07-14 17:15:50 -
Account Deleted Не пойму только, где там проблемы то с табуляцией и пробелами? Разве табуляция не есть 4 пробела?
Reported by
SpertsianKamo
on 2014-07-14 17:17:13 -
Account Deleted В описании автомата?
Reported by
SpertsianKamo
on 2014-07-14 17:19:47 -
reporter Табуляция это отдельный символ от пробела с точки зрения текстовых файлов. Разные редакторы показывают его по разному. Делаем только пробелами. Большинство текстовых редакторов можно настроить так, чтобы клавиша табуляции реально добавляла вместо себя пробелы, смотрите настройки. Также их можно настроить на показ пробела/табуляции...
Reported by
oasychev
on 2014-07-14 17:25:16 -
Account Deleted Понял, хорошо, спасибо!
Reported by
SpertsianKamo
on 2014-07-14 18:20:27 -
Account Deleted Не могу никак воспользоваться var_dump.. Terminal ничего не выводит, почитал в интернете - тоже не сработало всё, то там предлагают. Где можно посмотреть пример использования?
Reported by
SpertsianKamo
on 2014-07-16 16:39:29 -
reporter Вон хоть у Скорикова спросите - мы с ним это делали. Вписываете в юнит-тест (научились их запускать через PHPUnit? Там readme.txt есть на этот счет) var_dump($variable); И видите на экране результат. Для больших объектов лучше перенаправлять вывод в файл при запуске теста и отформатировать/открыть в удобном редакторе.
Reported by
oasychev
on 2014-07-16 21:28:41 -
reporter Конструктор в PHP-классах один. Но часть параметров может иметь значения по умолчанию. Несколько конструкторов не надо.
Reported by
oasychev
on 2014-07-16 22:11:05 -
Account Deleted Тесты запускаются, но var_ dump не выводит ничего. Я все сделал, как Вы сказали, кроме перенаправления потока.
Reported by
SpertsianKamo
on 2014-07-17 03:48:11 -
reporter Надо смотреть что именно не так. ECHO попробуйте или print_r(); еще. Сам текст что запускаются юнит-тесты вообще то выходит? Про фейлы в них (учтите, любая функция там выполняется до первого фейла ассерта, дальше ничего не распечатается ибо return).
Reported by
oasychev
on 2014-07-17 11:23:28 -
Account Deleted По всей видимости, там глупейшая ошибка - я не сохранял файл перед компиляцией. Сегодня, к сожалению, не было времени переделать, но завтра я займусь.
Reported by
SpertsianKamo
on 2014-07-17 20:11:57 -
reporter Язык PHP - интерпретируемый, он вообще не компилируется (в смысле создания исполняемого файла) - сразу запускается и все.
Reported by
oasychev
on 2014-07-17 21:43:52 -
Account Deleted Олег Александрович, я приблизительно разобрался с утройством автомата. (Действительно, большое спасибо var_damp.) Остались некоторые вопросы про теги, ибо в параметр tagsets класса transition они не добавляются. Из того, что я понял - переходы автомата хранятся матрицей смежности, ключи в которой являются ключами к соответствующим индексам в массиве индексов состояний. И самое главное - в каждом переходе есть массив userinscription, из которого я могу получить как условия переходов, так и теги в необходимом мне формате. Значит мне остаётся только перевести userinscription в нужные мне форматы данных и переписать мои функции. Насколько я прав?
Reported by
SpertsianKamo
on 2014-07-18 11:44:24 -
reporter Не совсем. Userinscription - это то, как юзер записал данный переход (переведите :) - в расчетах использоваться не должно, это для того чтобы внутренняя расчетная ерунда на экран не лезла и с толку юзера не сбивала. Символы хранятся по хитрому - в виде ДНФ и интервалов - см. функции qtype_preg_leaf_charset и там еще класс флагов есть. Теги - отдельно, по ним Лена должна очень хорошо все знать - и по чарсетам немного тоже по текущему состоянию кода, т.к. она с ним работает.
Reported by
oasychev
on 2014-07-18 12:17:50 -
Account Deleted Я переводил! А почему я не могу воспользоваться этим userinscription для своих нужд? В любом же случае мне потребуется конвертация условий в нужный мне формат, а из userinscription это сделать куда проще, чем вникать в дизъюнктивную нормальную форму и прочие заморочки.
Reported by
SpertsianKamo
on 2014-07-18 12:53:14 -
reporter Во-первых, потому что каждая вещь предназначена для своих целей. ДНФ (а там есть автоматический перевод в отрезки, с которыми вы знакомы - можете работать сразу с отрезками) - реально удобнее для работы с этими вещами, она на это заточена. А во-вторых - потому что если вы думаете что в userinscription нет заморочек, множества способов описать одно и тоже и т.д. - то вы очень наивный человек, который увидел только верхушку айсберга. Там все весело...
Reported by
oasychev
on 2014-07-18 13:39:25 -
Account Deleted А как тогда быть с тегами?
Reported by
SpertsianKamo
on 2014-07-18 14:26:25 -
reporter У Лены спросите, она с ними много работала в последнее время и больше в курсе их текущего состояния.
Reported by
oasychev
on 2014-07-18 14:37:25 -
Account Deleted Олег Александрович, там с тегами у Камо будут проблемы, во-первых, в тестах, функция read_fa не правилась после изменения хранения тегов, а во-вторых, мы же собираемся изменять transition для кода по мержингу? Тогда просто из тегов уйдет кое-что и они облегчатся.
Reported by
eklepilkina
on 2014-07-18 14:57:43 -
reporter 1)С read_fa можете разобраться самостоятельно? Либо Никитского оперативно мотивировать сделать, либо показать Камо - комменты же там есть? Или самой исправить... Или непременно мое вмешательство требуется? 2)Камо пока делает без оглядки на мержинг. Пусть у него в рамках практики несмерженная эквивалетность заработает - уже неплохо. А то, что смержено - будет проверять потом когда изменим.
Reported by
oasychev
on 2014-07-18 15:02:07 -
Account Deleted Я не говорю о смерженности, я говорю о том, что изменения, описанные в 286 затронут классы тегов и они поменяются, потому что отпадет надобность в их работоспособности при слиянии текущим способом. По крайней мере, отпадет надобность в одном поле, в массиве. Вопрос в том, как это будет убирать Стрельцов, там по идеи можно или убрать лишнее, либо класс один вообще убрать. read_fa вообще надо переписывать, оно тянет только простейшие автоматы. С Никитой я говорила, он сказал, что может ее переписать, но только после практики.
Reported by
eklepilkina
on 2014-07-18 15:15:05 -
reporter Лена, изменение структур программы по мере ее развития - нормальное явление. Заранее идеально все спроектировать не получается. Сейчас Камо надо переписать большую часть кода на PHP так, чтобы это можно было проверить - включая простейшие теги. А потом уже будем адаптироваться. Камо - вам надо определиться - или помочь доработать read_fa, или автоматы для тестов которые через нее не проходят придется вручную создавать. Первое меньше работы, но больше разбираться...
Reported by
oasychev
on 2014-07-18 15:23:56 -
Account Deleted А какие автоматы через неё не проходят?
Reported by
SpertsianKamo
on 2014-07-18 16:04:50 -
reporter А вы используйте - сами увидите, как нарветесь на ошибки...
Reported by
oasychev
on 2014-07-18 16:08:23 -
Account Deleted Ну хорошо...
Reported by
SpertsianKamo
on 2014-07-18 20:02:02 -
reporter Встреча на этой неделе во вторник с 13-30. Камо, передайте всем ПрИн-266 пожалуйста...
Reported by
oasychev
on 2014-07-20 18:47:46 -
Account Deleted Хорошо! Олег Александрович, скажите, пожалуйста, а где мне надо расположить свободные функции, необходимые для проверки эквивалентности? Например, compare_current_transition_tags_array и прочие?
Reported by
SpertsianKamo
on 2014-07-21 04:57:03 -
reporter Лучше всего найти им подходящие классы. Теги обычно привязны к transition - значит в них и должны быть.
Reported by
oasychev
on 2014-07-23 13:10:16 -
reporter Камо, относительно итоговая встреча по практике будет в среду, с 13-30. Передайте - быть ВСЕМ кто работает со мной (включая тем кто не работает по Moodle - Усов, Липов) - и быть готовыми показать, что работает! Потом уже исправления замечаний будут только...
Reported by
oasychev
on 2014-07-28 20:37:50 -
Account Deleted Понял, передам!
Reported by
SpertsianKamo
on 2014-07-29 07:02:12 -
Account Deleted У меня супер-ЧП. Уезжал на море с ноутбуком, доделал там сё, что было нужно, наделал коммитов, но не вытолкнул, ибо не было интернета. И, разумеется, по приезде домой у меня слетел жёсткий диск. Я отнёс его на восстановление и мне выдали мой .vdi файл с arch linux-ом, но вот беда - Oracle больше не хочет его запускать. Зависает на запуске при Loading initial ramdisk ... Никто не сталкивался с такой проблемой? Как мне раздобыть свои файлы? Может можно просто из .vdi как-нибудь получить мои исходники?
Reported by
SpertsianKamo
on 2014-08-19 13:02:35 -
Account Deleted В общем, я так понял, что он может не грузить из-за конфликтов архитектур процессора и прочих комплектующих, потому я сдал на ремонт ноутбук и надеюсь, что после его восстановления машина у меня всё-таки запустится. Иначе буду пытаться ковырять .vdi файл без запуска ОС на его основе.
Reported by
SpertsianKamo
on 2014-08-20 15:26:08 -
Account Deleted Спешу поделиться радостными новостями - я таки смог запустить ВМ на восстановленном .vdi, всё на месте, только репозиторий не работает, но это уже меньшая беда.
Reported by
SpertsianKamo
on 2014-08-22 06:30:56 -
Account Deleted Всё. Закоммитил и вытолкнул последние изменения, жду Ваших комментариев!
Reported by
SpertsianKamo
on 2014-08-26 06:43:34 -
reporter Информация для всех (ПрИн-266): 29-го августа (в пятницу)в 13 часов у нас собрание. Можно назначить комбинированную встречу: часть людей принят с 11 до 13, остальных после собрания (не раньше 15 часов наверное, а там как получится). Касается тех, кто не сдал летнюю практику мне и Саркисову по НКПО - Камо, передайте пожалуйста всем кому надо, пусть готовятся. Лучше приходить с ноутами чтобы на месте посмотреть можно было все...
Reported by
oasychev
on 2014-08-26 10:22:39 -
Account Deleted Сделано!
Reported by
SpertsianKamo
on 2014-08-27 16:54:16 -
reporter Сводим работу в одно issue.
Reported by
oasychev
on 2015-03-01 22:36:46 - Status changed:Duplicate
- Merged into: #81 - Log in to comment
Reported by
oasychev
on 2014-07-08 11:22:35