Varda Fix
Paweł Płazieński, niver@student.agh.edu.pl
Fix,
VARDA
improve, extend,
build better ui,
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:
Dodatkowe punkty:
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 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 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 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:
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
.