Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_varda_fix [2009/03/27 21:41] jsi08 Opis projektu, częściowy opis realizacji + pytania |
pl:miw:2009:miw09_varda_fix [2019/06/27 15:50] (aktualna) |
* Wyjaśnienie czy sort/2 wystarczy | * Wyjaśnienie czy sort/2 wystarczy |
* shell: readline? | * shell: readline? |
| |
====== Projekt ====== | ====== 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'ą. | Projekt Varda_Fix jest zbiorem kilku niezależnych względem siebie części związanych z VARDA'ą. |
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. | 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. |
| |
* __Zamieszczać patch? Prawdopodobnie za rok on nie będzie miał większego sensu, żeby tu leżał, ale z drugiej strony nie ma innego dowodu, że wykonałem to co wykonałem :-)__ | Patch: [[http://student.agh.edu.pl/~niver/files/varda-sorting.diff]] |
* __Nie wiem czy jest się jeszcze co rozpisywać w tym punkcie.__ | |
| |
===== Ugraphs ===== | ===== 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). | 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. | 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. |
| |
* __Jeżeli to jest istotne, to chętnie zostawię plik na wiki, bo prawdopodobnie z mojego konta na studencie zniknie w nieokreślonej przyszłości__ | |
| |
===== Shell ===== | ===== 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. | 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 |
| |
* __...pytanie tylko czy GUI w Javie nie będzie wygodniejsze__ | 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. |
| |
====== Prezentacja ====== | Przykładowy scenariusz prostego tworzenia diagramu ARD: |
====== Materiały ====== | - 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''. |