|
|
pl:miw:2009:miw09_varda_fix [2009/06/03 23:49] jsi08 |
pl:miw:2009:miw09_varda_fix [2019/06/27 15:50] |
====== Varda Fix ====== | |
Paweł Płazieński, niver@student.agh.edu.pl | |
| |
:!: | |
Fix, | |
[[hekate:VARDA]] | |
improve, extend, | |
build better ui, | |
* list -> set! | |
* audit! | |
* [[http://gollem.science.uva.nl/SWI-Prolog/Manual/ugraphs.html]] | |
* doc in pldoc | |
* shell?: add, split, finalize | |
* evaluate java guis FIXME | |
| |
====== Spotkania ====== | |
| |
===== 20090305 ==== | |
* zalety ugraph, krótki przykład 1-2 predykatów | |
* prosty shell: predykat czytajacy linie z wejscia z automatycznym dopelnianiem odpowiednich wartosci | |
| |
===== 20090219 ==== | |
| |
Główny punkt spotkania: | |
* ugraph i sens jego zastosowania | |
* Lista ugraph-ów jako historia rozwoju diagramu ARD? | |
| |
Dodatkowe punkty: | |
* Wyjaśnienie czy sort/2 wystarczy | |
* shell: readline? | |
| |
====== Projekt ====== | |
| |
__(Uwaga do prowadzącego: W poniższych paragrafach pytania inline zaznaczam podkreśleniem).__ | |
| |
Projekt Varda_Fix jest zbiorem kilku niezależnych względem siebie części związanych z VARDA'ą. | |
| |
===== Zamiana list na zbiory ===== | |
| |
Patch do VARDY, który podował, że propercje zachowywały się jak zbiory, nie jak listy. Przykładowo lista ['Temp', 'Temp', 'Status'] powinna zachowywać się jak zbiór ['Status', 'Temp']. | |
| |
===== Ugraphs ===== | |
| |
Sprawdzenie czy biblioteka [[http://www.swi-prolog.org/pldoc/doc_for?object=section(2%2C%20'A.25'%2C%20swi('%2Fdoc%2FManual%2Fugraphs.html'))|ugraphs]] nadaje się jako baza danych w VARDA'zie | |
| |
===== Shell ===== | |
| |
Napisanie prostej, interaktywnej, podpowiadającej linii komend do użycia w VARDA'zie. | |
| |
====== Sprawozdanie ====== | |
| |
===== Zamiana list na zbiory ===== | |
| |
Naprawione to zostało przez predykat sort/2, który unifikuje drugi argument z pierwszym argumentem z usuniętymi duplikatami i posortowanym leksykograficznie. Predykat ten został umieszczony w niektórych klauzulach w których propercje były jednym z argumentów. | |
| |
Patch: [[http://student.agh.edu.pl/~niver/files/varda-sorting.diff]] | |
| |
===== Ugraphs ===== | |
| |
Biblioteka ugraphs ustala prostą reprezentacje grafów skierownych i oferuje proste operacje na grafach. Sens jej użycia w VARDA'ize jest ciężki do ustalenia, gdyż nie oferuje ona nic więcej z czego VARDA mogłaby korzystać, a wymaga przepisania większości kodu i wymyślenia sposobu trzymania dwóch osobnych grafów na raz (zależności historyczne i zleżności modelowe). | |
W ramach sprawdzenia sensowności użycia napisałem [[http://student.agh.edu.pl/~niver/files/minivarda.zip|MiniVarda]], która jest częściową implemntacją tego co oferuje VARDA, jednak opartą na Ugraphs. | |
| |
===== Shell ===== | |
| |
Zimplementowany predykat getline/3, znajdujący się w pliku read-tools.pl w [[http://student.agh.edu.pl/~niver/files/minivarda.zip|MiniVardzie]] realizuje odczytanie linijki z klawiatury umożliwiając podpowiedzi i własny prompt. Może to w bardzo prosty sposób zostać wykorzystane w VARDA'zie. | |
Później ten predykat został dostosowany do samej Vardy, zamieszczony jest w patchu razem z generacją schenariuszy historii poniżej. | |
| |
Patrz także przykład użycia shella na dole strony. | |
| |
===== Generacja historii ===== | |
| |
Stworzyłem także metode generacji scenariuszy tworzenia diagramów ARD, które doprowadzają do tej samej histori TPH. Po wygenerowaniu scenariuszy, pierwsze 10 zapisywane jest do plików z wybranym przedrostkiem i odpowiednim numerem w formacie modelu Vardy. | |
| |
Patch (także dla shella): [[http://student.agh.edu.pl/~niver/files/varda-shell-generations.diff]] | |
| |
====== Przykład użycia shella ====== | |
| |
Shell obsługuje pięć dodatkowych komend: | |
* **ada** - dodanie atrybutu | |
* **adp** - dodanie propercji | |
* **fin** - finalizacja propercji | |
* **spl** - split propercji | |
* **dep** - stworzenie zależności pomiędzy propercjami | |
| |
Komendy są interaktywne, nie podaje się do nich żadnych argumentów [tzn po wpisaniu np. ''ada'' naciska się enter], same pytają o potrzebne informacje. Przy wpisywaniu tych danych można używać klawisza tabulacji [znanego także jako tabulator] aby uzyskać podpowiedzi. | |
| |
Przykładowy scenariusz prostego tworzenia diagramu ARD: | |
- Aby uruchomić shell należy wpisać ''shl.'' i nacisnąć enter - to jest jeszcze polecenie prologa, nie shella | |
- Aby dodać pierwszy atrybut, należy wpisać ''ada''. Po wciśnięciu entera na pytanie o nazwe, należy napisać ''Thermostat'' | |
- Aby dodać propercje trzeba wpisać ''adp'' i naciśnąć enter. Można wpisać nazwę atrybutu, który wykorzystamy, ale shell po naciśnięciu klawisza tabulacji podpowie jedyną możliwością i uzupełni nią linijkę. Po wciśnięciu entera zostanie dodana propercja | |
- Przed finalizacją trzeba dodać atrybuty poprzez polecenia ''ada''. Dalej będę zakładał, że nazywają się one ''Time'' i ''Temperature'' | |
- Aby wykonać finalizacje propercji, należy napisać ''fin'' i nacisnąć enter. | |
- Shell zapyta o starą propercje, wystaczy użyć klawisza tabulacji i nacisnąć enter. Można też spróbować napisać ''The'' i nacisnąć tabulator - shell dopełni możliwości mające taki prefiks. | |
- Po wpisaniu albo wymuszeniu uzupełnienia i naciśnięciu enter system zapyta na jakie atrybuty sfinalizować propercje. Klawisz tabulacji w tym przypadku nie dopełni w linii poleceń, ponieważ jest więcej niż jedna wartość możliwa. Jednak po wpisaniu ''Ti'' naciśnięcie klawisza tabulacji spowoduje dopełnienie do ''Time'' - ponieważ tylko ta możliwość pasuje. Atrybuty na które się finalizuje podaje się osobno zatwierdzając każdy enterem. | |
- Aby zakończyć wpisywanie atrybutów należy po prostu wysłać pustą linijkę, czyli nacisnąć enter bez wpisywania czegokolwiek. | |
- Aby wykonać split należy wpisać ''spl'' i nacisnąć enter. | |
- Shell zapyta o pełną [wieloargumentową propercje] na której będzie wykonywany split. W reprezentacji takiej propercji atrybuty są oddzielane przecinkiem. Aby wybrać naszą propercje, można wpisać ''Tem'' i nacisnąć klawisz tabulacji. | |
- Następnie należy podać propercje na które ma zostać podzielona obecna. Wpisywane jest to tak jak atrybuty przy finalizacji, jednak to są pełne propercje - tzn. kolejne atrybuty podaje się oddzielając przecinkiem. Podaje się wiele takich propercji. | |
- Aby zakończyć wybór propercji wynikowych, należy wysłać pustą linijkę. | |
- Shell nie obsługuje dodawania bezpośrednio zależności w splicie, należy to zrobić osobno wpisując ''dep''. | |
- Pierwsze podaje się śródło zależności - pełną propercje i naciska się enter. | |
- Drugie podaje się cel zależności, także pełną propercje. | |
- Aby zobaczyć wynik tych komend można wpisać ''sha''. | |
| |
| |