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:

  • ugraph i sens jego zastosowania
  • Lista ugraph-ów jako historia rozwoju diagramu ARD?

Dodatkowe punkty:

  • Wyjaśnienie czy sort/2 wystarczy
  • shell: readline?

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:

  • 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:

  1. Aby uruchomić shell należy wpisać shl. i nacisnąć enter - to jest jeszcze polecenie prologa, nie shella
  2. Aby dodać pierwszy atrybut, należy wpisać ada. Po wciśnięciu entera na pytanie o nazwe, należy napisać Thermostat
  3. 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
  4. Przed finalizacją trzeba dodać atrybuty poprzez polecenia ada. Dalej będę zakładał, że nazywają się one Time i Temperature
  5. Aby wykonać finalizacje propercji, należy napisać fin i nacisnąć enter.
    1. 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.
    2. 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.
    3. Aby zakończyć wpisywanie atrybutów należy po prostu wysłać pustą linijkę, czyli nacisnąć enter bez wpisywania czegokolwiek.
  6. Aby wykonać split należy wpisać spl i nacisnąć enter.
    1. 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.
    2. 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.
    3. Aby zakończyć wybór propercji wynikowych, należy wysłać pustą linijkę.
  7. Shell nie obsługuje dodawania bezpośrednio zależności w splicie, należy to zrobić osobno wpisując dep.
    1. Pierwsze podaje się śródło zależności - pełną propercje i naciska się enter.
    2. Drugie podaje się cel zależności, także pełną propercje.
  8. Aby zobaczyć wynik tych komend można wpisać sha.
pl/miw/2009/miw09_varda_fix.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0