Эквивалентность автоматов с тегами - практика 2013

Issue #287 duplicate
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 287

Перевести код на PHP и интегрировать с классами автомата, а также классами узлов работы
с отрезками.

Reported by oasychev on 2014-07-07 08:20:17

Comments (62)

  1. Oleg Sychev reporter
    Виртуальная машина скопирована на комп в 902, который сразу за дверью справа (на мониторе
    написано 19). Она лежит в диске D:\moodle vm.
    Там сам образ и небольшое readme. Распространяйте.
    

    Reported by oasychev on 2014-07-08 11:22:35

  2. Former user Account Deleted
    Я передал. Придёт Дай, заберёт.
    

    Reported by SpertsianKamo on 2014-07-08 11:43:10

  3. Oleg Sychev reporter
    Камо, я по-моему уже объяснял вам насчет отъезда на время практики - ну нельзя. Ирина
    Георгиевна попросила еще раз вам объяснить, раз не понимаете. Что вам надо такого сказать,
    чтобы дошло уже наконец? Переносите поездку на после окончания практики!
    
    Как дела с изучением языка/кодом? Пока не вижу на сервере ни одного коммита. Есть вопросы
    - задавайте. Клон доименуйте чтобы было ясно с чем работаете - например - spertsiankamo-preg-quivalence
    

    Reported by oasychev on 2014-07-10 13:28:11

  4. Former user Account Deleted
    Да я думал с заявлением официально оформить.. Нет так нет.
    
    Язык более менее понятен, я разобрал код preg_fa.php, сопоставил классы, единственное
    - пока не рассмотрел класс условия перехода. Я так понял, от меня требуется внедрить
    только функцию checkEquivalence и все, к ней причастные, да?
    
    Тесты к моим функциям отдельным файлом надо сделать?
    

    Reported by SpertsianKamo on 2014-07-10 17:48:18

  5. Former user Account Deleted
    Что-то я не найду свой клон, чтобы переименовать.. Не подскажете, где он?
    

    Reported by SpertsianKamo on 2014-07-10 17:51:39

  6. Oleg Sychev reporter
    Клон в самом низу, поскольку вы ничего еще не выталкивали. Они по дате последнего выталкивания
    сортируются, что очень удобно.
    
    Насчет checkEquivalence - да, но не совсем. Если вы разобрали fa то понимаете, что
    в переходе сами символы хранятся в виде preg_leaf_charset. Ну и теги там тоже посмотрите
    как хранятся. Соответственно, вам скорее всего будет очень полезно сделать функцию
    (статическую) в preg_leaf_charset которая получает два массива чарсетов и возвращает
    наборы интервалов пересечения символов (там есть аналогичная kinda_operator - посмотрите
    ее устройство и алгоритм, но ее задача операции над двумя отрезками типа объединения
    или пересечения) - и возвращает все интервалы в нужном вам виде. (Функция, работающая
    ТОЛЬКО с чарсетами, должна и принадлежать классу чарсета; а вот теги - они в transition
    от автомата, там отдельная песня...)
    

    Reported by oasychev on 2014-07-10 17:58:42

  7. Former user Account Deleted
    Хорошо, буду разбираться и делать. А как переименовать свой клон, я его нашёл, а изменить
    никак не могу... Во вкладке administration немного не то..
    

    Reported by SpertsianKamo on 2014-07-10 18:01:08

  8. Oleg Sychev reporter
    Удалите клон и создайте новый, вы все равно ничего не выталкивали.
    А чего вы меня из Cc убрали??
    

    Reported by oasychev on 2014-07-10 18:11:16

  9. Former user Account Deleted
    Да я что-то не понял, я тут пытался писать, чтобы Вам отправлялось тоже, добавил Ваш
    адрес в Cc ниже, потом понял, что не надо, удалил. Хех, извините, пока не до конца
    во всём разобрался.
    

    Reported by SpertsianKamo on 2014-07-10 18:12:37

  10. Former user Account Deleted
    Всё, вроде создал нормальный и старый удалил.
    

    Reported by SpertsianKamo on 2014-07-10 18:15:23

  11. Former user Account Deleted
    Не могу найти классы qtype_preg_fa_state и qtype_preg_leaf, на которые ссылаются остальные
    классы в preg_fa.. Где они находятся?..
    

    Reported by SpertsianKamo on 2014-07-11 10:43:38

  12. Valeriy Streltsov
    в preg_fa.php и preg_nodes.php
    
    Используй grep.
    
    Перейди в папку с preg'ом в консоли и напиши grep -r 'class qtype_preg_leaf' - это
    будет рекурсивный поиск по подкаталогам во всех файлах
    

    Reported by vostreltsov on 2014-07-11 10:51:08

  13. Former user Account Deleted
    А разве qtype_preg_fa_state существует? мы же его убирали? или это не состояние автомата?
    

    Reported by eklepilkina on 2014-07-11 10:54:07

  14. Oleg Sychev reporter
    Если под Windows то лучше GrepWin поставить - ищется по названию и скачивается легко,
    встраивается в меню проводника. Если под никсом то да - классический греп.
    

    Reported by oasychev on 2014-07-11 10:56:05

  15. Former user Account Deleted
    Лена, там в файле preg_fa.php он используется 4 раза, дважды в комментариях к полям
    класса transition, а дважды в составе qtype_preg_fa_state_limit.. Что кстати последнее
    значит?
    

    Reported by SpertsianKamo on 2014-07-11 11:06:47

  16. Former user Account Deleted
    Камо, этого класса нет, это забыли комментарии поправить. В transition from и to это
    int. А второе это ограничение на количество вершин в автомате, по моему.
    

    Reported by eklepilkina on 2014-07-11 11:09:52

  17. Former user Account Deleted
    Это ограничение забито где-то? Откуда оно берётся? Просто похожего рода я видел ещё
    qtype_preg_leaf_meta..
    

    Reported by SpertsianKamo on 2014-07-11 11:13:53

  18. Oleg Sychev reporter
    Камо, если вы хотите быстро разобраться что там реально происходит - распечатайте автомат
    через var_dump, потом расставьте в этом ужасе переводы строк и отступы и вы реально
    увидите что там хранится.
    Поправить устаревшие комментарии не возбраняется :)
    

    Reported by oasychev on 2014-07-11 11:16:20

  19. Former user Account Deleted
    Класс qtype_preg_leaf нашёл и _meta там же..
    

    Reported by SpertsianKamo on 2014-07-11 11:18:20

  20. Former user Account Deleted
    Хорошо, попробую.. 
    

    Reported by SpertsianKamo on 2014-07-11 11:19:48

  21. Oleg Sychev reporter
    В понедельник в 13-30 встреча будет в политехе. Быть всем, кто по моим задачам работает.
    Лучше взять ноутбуки потому что многим надо показать:
    а) что делать с меркуриалом и клонами
    б) вопросы по коду
    
    Передайте всем пожалуйста!
    

    Reported by oasychev on 2014-07-12 16:50:34

  22. Former user Account Deleted
    Вытолкнул первый тест для моей функции, посмотрите, пожалуйста,есть ли к нему какие-то
    замечания, чтобы я мог от него отталкиваться. Попробовал скомпилировать - получил непонятную
    ошибку, скриншот прикрепил к данному сообщению.
    

    Reported by SpertsianKamo on 2014-07-14 16:03:35

    <hr> * Attachment: 2_h2uQ-UlS4.jpg

  23. Oleg Sychev reporter
    Что значит "непонятная ошибка"? Перевести?
    PHP говорит вам что вы пытаетесь куда-то обратиться по индексу 0, а такого индекса
    там нет. Или это вообще не массив, или там нет 0-го элемента. Строки на которых произошли
    вызовы функций (нижние части таблицы) и сама ошибка (верхняя строка) указаны. Дальше
    смотрите на код preg_fa строка 664, печатайте там состояние объекта через var_dump
    и разбирайтесь, где там проблемы с индексами...
    

    Reported by oasychev on 2014-07-14 16:51:45

  24. Oleg Sychev reporter
    По коду следите за выравниванеим. По правилам Moodle все (!) отступы делаются пробелами
    - по 4 штуки. Табуляции недопустимы и должны быть заменены.
    

    Reported by oasychev on 2014-07-14 16:53:25

  25. Former user Account Deleted
    Не пойму только, где там проблемы то с табуляцией и пробелами? Разве табуляция не есть
    4 пробела?
    

    Reported by SpertsianKamo on 2014-07-14 17:17:13

  26. Former user Account Deleted
    В описании автомата?
    

    Reported by SpertsianKamo on 2014-07-14 17:19:47

  27. Oleg Sychev reporter
    Табуляция это отдельный символ от пробела с точки зрения текстовых файлов. Разные редакторы
    показывают его по разному. Делаем только пробелами. Большинство текстовых редакторов
    можно настроить так, чтобы клавиша табуляции реально добавляла вместо себя пробелы,
    смотрите настройки. Также их можно настроить на показ пробела/табуляции...
    

    Reported by oasychev on 2014-07-14 17:25:16

  28. Former user Account Deleted
    Понял, хорошо, спасибо!
    

    Reported by SpertsianKamo on 2014-07-14 18:20:27

  29. Former user Account Deleted
    Не могу никак воспользоваться var_dump.. Terminal ничего не выводит, почитал в интернете
    - тоже не сработало всё, то там предлагают. Где можно посмотреть пример использования?
    

    Reported by SpertsianKamo on 2014-07-16 16:39:29

  30. Oleg Sychev reporter
    Вон хоть у Скорикова спросите - мы с ним это делали.
    Вписываете в юнит-тест (научились их запускать через PHPUnit? Там readme.txt есть на
    этот счет) 
    var_dump($variable);
    И видите на экране результат. Для больших объектов лучше перенаправлять вывод в файл
    при запуске теста и отформатировать/открыть в удобном редакторе.
    

    Reported by oasychev on 2014-07-16 21:28:41

  31. Oleg Sychev reporter
    Конструктор в PHP-классах один. Но часть параметров может иметь значения по умолчанию.
    Несколько конструкторов не надо.
    

    Reported by oasychev on 2014-07-16 22:11:05

  32. Former user Account Deleted
    Тесты запускаются, но var_ dump не выводит ничего. Я все сделал, как Вы сказали, кроме
    перенаправления потока.
    

    Reported by SpertsianKamo on 2014-07-17 03:48:11

  33. Oleg Sychev reporter
    Надо смотреть что именно не так. ECHO попробуйте или print_r(); еще.
    Сам текст что запускаются юнит-тесты вообще то выходит? Про фейлы в них (учтите, любая
    функция там выполняется до первого фейла ассерта, дальше ничего не распечатается ибо
    return).
    

    Reported by oasychev on 2014-07-17 11:23:28

  34. Former user Account Deleted
    По всей видимости, там глупейшая ошибка - я не сохранял файл перед компиляцией. Сегодня,
    к сожалению, не было времени переделать, но завтра я займусь.
    

    Reported by SpertsianKamo on 2014-07-17 20:11:57

  35. Oleg Sychev reporter
    Язык PHP - интерпретируемый, он вообще не компилируется (в смысле создания исполняемого
    файла) - сразу запускается и все.
    

    Reported by oasychev on 2014-07-17 21:43:52

  36. Former user Account Deleted
    Олег Александрович, я приблизительно разобрался с утройством автомата. (Действительно,
    большое спасибо var_damp.) Остались некоторые вопросы про теги, ибо в параметр tagsets
    класса transition они не добавляются.
    Из того, что я понял - переходы автомата хранятся матрицей смежности, ключи в которой
    являются ключами к соответствующим индексам в массиве индексов состояний. И самое главное
    - в каждом переходе есть массив userinscription, из которого я могу получить как условия
    переходов, так и теги в необходимом мне формате.
    Значит мне остаётся только перевести userinscription в нужные мне форматы данных и
    переписать мои функции.
    
    Насколько я прав?
    

    Reported by SpertsianKamo on 2014-07-18 11:44:24

  37. Oleg Sychev reporter
    Не совсем. Userinscription - это то, как юзер записал данный переход (переведите :)
    - в расчетах использоваться не должно, это для того чтобы внутренняя расчетная ерунда
    на экран не лезла и с толку юзера не сбивала.
    Символы хранятся по хитрому - в виде ДНФ и интервалов - см. функции qtype_preg_leaf_charset
    и там еще класс флагов есть. Теги - отдельно, по ним Лена должна очень хорошо все знать
    - и по чарсетам немного тоже по текущему состоянию кода, т.к. она с ним работает.
    

    Reported by oasychev on 2014-07-18 12:17:50

  38. Former user Account Deleted
    Я переводил! А почему я не могу воспользоваться этим userinscription для своих нужд?
    В любом же случае мне потребуется конвертация условий в нужный мне формат, а из userinscription
    это сделать куда проще, чем вникать в дизъюнктивную нормальную форму и прочие заморочки.
    

    Reported by SpertsianKamo on 2014-07-18 12:53:14

  39. Oleg Sychev reporter
    Во-первых, потому что каждая вещь предназначена для своих целей. ДНФ (а там есть автоматический
    перевод в отрезки, с которыми вы знакомы - можете работать сразу с отрезками) - реально
    удобнее для работы с этими вещами, она на это заточена.
    
    А во-вторых - потому что если вы думаете что в userinscription нет заморочек, множества
    способов описать одно и тоже и т.д. - то вы очень наивный человек, который увидел только
    верхушку айсберга. Там все весело...
    

    Reported by oasychev on 2014-07-18 13:39:25

  40. Former user Account Deleted
    А как тогда быть с тегами?
    

    Reported by SpertsianKamo on 2014-07-18 14:26:25

  41. Oleg Sychev reporter
    У Лены спросите, она с ними много работала в последнее время и больше в курсе их текущего
    состояния.
    

    Reported by oasychev on 2014-07-18 14:37:25

  42. Former user Account Deleted
    Олег Александрович, там с тегами у Камо будут проблемы, во-первых, в тестах, функция
    read_fa не правилась после изменения хранения тегов, а во-вторых, мы же собираемся
    изменять transition для кода по мержингу? Тогда просто из тегов уйдет кое-что и они
    облегчатся.
    

    Reported by eklepilkina on 2014-07-18 14:57:43

  43. Oleg Sychev reporter
    1)С read_fa можете разобраться самостоятельно? Либо Никитского оперативно мотивировать
    сделать, либо показать Камо - комменты же там есть? Или самой исправить... Или непременно
    мое вмешательство требуется?
    
    2)Камо пока делает без оглядки на мержинг. Пусть у него в рамках практики несмерженная
    эквивалетность заработает - уже неплохо. А то, что смержено - будет проверять потом
    когда изменим.
    

    Reported by oasychev on 2014-07-18 15:02:07

  44. Former user Account Deleted
    Я не говорю о смерженности, я говорю о том, что изменения, описанные в 286 затронут
    классы тегов и они поменяются, потому что отпадет надобность в их работоспособности
    при слиянии текущим способом. По крайней мере, отпадет надобность в одном поле, в массиве.
    Вопрос в том, как это будет убирать Стрельцов, там по идеи можно или убрать лишнее,
    либо класс один вообще убрать.
    read_fa вообще надо переписывать, оно тянет только простейшие автоматы. С Никитой я
    говорила, он сказал, что может ее переписать, но только после практики.
    

    Reported by eklepilkina on 2014-07-18 15:15:05

  45. Oleg Sychev reporter
    Лена, изменение структур программы по мере ее развития - нормальное явление. Заранее
    идеально все спроектировать не получается.
    
    Сейчас Камо надо переписать большую часть кода на PHP так, чтобы это можно было проверить
    - включая простейшие теги. А потом уже будем адаптироваться.
    
    Камо - вам надо определиться - или помочь доработать read_fa, или автоматы для тестов
    которые через нее не проходят придется вручную создавать. Первое меньше работы, но
    больше разбираться...
    

    Reported by oasychev on 2014-07-18 15:23:56

  46. Former user Account Deleted
    А какие автоматы через неё не проходят?
    

    Reported by SpertsianKamo on 2014-07-18 16:04:50

  47. Oleg Sychev reporter
    А вы используйте - сами увидите, как нарветесь на ошибки...
    

    Reported by oasychev on 2014-07-18 16:08:23

  48. Oleg Sychev reporter
    Встреча на этой неделе во вторник с 13-30.
    Камо, передайте всем ПрИн-266 пожалуйста...
    

    Reported by oasychev on 2014-07-20 18:47:46

  49. Former user Account Deleted
    Хорошо!
    
    Олег Александрович, скажите, пожалуйста, а где мне надо расположить свободные функции,
    необходимые для проверки эквивалентности? Например, compare_current_transition_tags_array
    и прочие?
    

    Reported by SpertsianKamo on 2014-07-21 04:57:03

  50. Oleg Sychev reporter
    Лучше всего найти им подходящие классы. Теги обычно привязны к transition - значит в
    них и должны быть.
    

    Reported by oasychev on 2014-07-23 13:10:16

  51. Oleg Sychev reporter
    Камо, относительно итоговая встреча по практике будет в среду, с 13-30. Передайте -
    быть ВСЕМ кто работает со мной (включая тем кто не работает по Moodle - Усов, Липов)
    - и быть готовыми показать, что работает! Потом уже исправления замечаний будут только...
    

    Reported by oasychev on 2014-07-28 20:37:50

  52. Former user Account Deleted
    У меня супер-ЧП. Уезжал на море с ноутбуком, доделал там сё, что было нужно, наделал
    коммитов, но не вытолкнул, ибо не было интернета. И, разумеется, по приезде домой у
    меня слетел жёсткий диск. Я отнёс его на восстановление и мне выдали мой .vdi файл
    с arch linux-ом, но вот беда - Oracle больше не хочет его запускать. Зависает на запуске
    при Loading initial ramdisk ...
    
    Никто не сталкивался с такой проблемой? Как мне раздобыть свои файлы? Может можно просто
    из .vdi как-нибудь получить мои исходники?
    

    Reported by SpertsianKamo on 2014-08-19 13:02:35

  53. Former user Account Deleted
    В общем, я так понял, что он может не грузить из-за конфликтов архитектур процессора
    и прочих комплектующих, потому я сдал на ремонт ноутбук и надеюсь, что после его восстановления
    машина у меня всё-таки запустится. Иначе буду пытаться ковырять .vdi файл без запуска
    ОС на его основе.
    

    Reported by SpertsianKamo on 2014-08-20 15:26:08

  54. Former user Account Deleted
    Спешу поделиться радостными новостями - я таки смог запустить ВМ на восстановленном
    .vdi, всё на месте, только репозиторий не работает, но это уже меньшая беда.
    

    Reported by SpertsianKamo on 2014-08-22 06:30:56

  55. Former user Account Deleted
    Всё. Закоммитил и вытолкнул последние изменения, жду Ваших комментариев!
    

    Reported by SpertsianKamo on 2014-08-26 06:43:34

  56. Oleg Sychev reporter
    Информация для всех (ПрИн-266): 29-го августа (в пятницу)в 13 часов у нас собрание.
     Можно назначить комбинированную встречу: часть людей принят с 11 до 13, остальных
    после собрания (не раньше 15 часов наверное, а там как получится).
    
    Касается тех, кто не сдал летнюю практику мне и Саркисову по НКПО - Камо, передайте
    пожалуйста всем кому надо, пусть готовятся. Лучше приходить с ноутами чтобы на месте
    посмотреть можно было все...
    

    Reported by oasychev on 2014-08-26 10:22:39

  57. Oleg Sychev reporter
    Сводим работу в одно issue.
    

    Reported by oasychev on 2015-03-01 22:36:46 - Status changed: Duplicate - Merged into: #81

  58. Log in to comment