Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_varda_fix [2009/02/18 19:10] jsi08 utworzono + spotkanie 1 |
pl:miw:2009:miw09_varda_fix [2019/06/27 15:50] (aktualna) |
| |
====== Spotkania ====== | ====== 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 ==== | ===== 20090219 ==== |
| |
* Wyjaśnienie czy sort/2 wystarczy | * Wyjaśnienie czy sort/2 wystarczy |
* shell: readline? | * shell: readline? |
| |
====== Projekt ====== | ====== Projekt ====== |
| |
| 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 ====== | ====== Sprawozdanie ====== |
====== Prezentacja ====== | |
====== Materiały ====== | ===== 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''. |