Opis
Spotkania
08.03.04
08.03.18
user_says(Q,A) :- stored_answer(Q,A).
user_says(Q,A) :- \+ stored_answer(Q,_),
nl,nl,
ask_question(Q),
get_yes_or_no(Response),
asserta(stored_answer(Q,Response)),
Response = A.
user_says(Q,A) :- stored_answer(Q,A).
user_says(Q,A) :- \+ stored_answer(Q,_),
nl,nl,
java_ui_quest(Q,Response),
asserta(stored_answer(Q,Response)),
Response = A.
java_ui_quest(Q,R) :-
ask_qest_in_java(Q),
get_ans_from_java(R).
Przy założeniu Java pyta prolog o diagnozę:
Przerobić to:
try_all_possibilities :- % Backtrack through all possibilities...
defect_may_be(D),
explain(D),
fail.
defect_may_be to zapytanie do prologu…
080401
080415
080422
080429
dynamiczne generowanie zawartości (np. checkbox) okienka do split lub finalize
możliwość odpalenia sar/shi z gui.
kiedy można zrobić split/finalize →
ard_property
ard_hist
ard_dependency
patrz varda_view:dotgen_ard_body
080520
080610
dot -Tsvg us.dot|grep 'text-anchor' us.svg
dot -Tsvg us.dot|grep -A1 'node' us.svg
dot -Tsvg us.dot|grep -A1 'node' us.svg|cut -d ' ' -f 3|grep points|cut -d'„' -f2
080617
FutWork
Projekt
Car expert system
Wersja 1
Wersja 2
Sprawozdanie
Prosze o maila, jeśli coś trzeba jeszcze dodać.
Cele osiągnięte w projekcie (+ fixme)
Serwer (Prolog)
Zaimplementowanie serwera oczekującego na połączenia (dodanie pliku varda_server.pl).
Serwer wykonuje czynności na modelu na podstawie poleceń otrzymanych z socketów. Narazie realizowane jest to przez zagnieżdzone if. Można to przerobić na ładniejszy kod.
Poprawić działanie serwera, gdy klient się rozłączy.
Dodanie funkcji ard_split_2, która różni się tym, od ard_split, że nie trzeba podawać drugiego argumentu (czyli tego, na co splitujemy). Jest to obliczane automatycznie na podstawie podanych połączeń ( 3 argument funkcji ard_split).
Zweryfikować pod względem poprawności i wydajności.
Dodanie odczytu informacji z pliku svg: nazw atrybutów i współrzędnych (dodanie pliku varda_pipesys.pl.
Zmiany w pozostałych plikach projektu varda nie były dokonywane (poza dodaniem nagłówków do pliku varda.pl).
GUI (Java)
Stworzenie
GUI do edycji grafu.
Rozpoczynanie nowego grafu (dodawanie pierwszego elementu).
Możliwość finalizowania i splitowania elementów.
Możliwość przemieszczania elementów (metodą drag and drop - feature jGrapha)
Serializacja i deserializacja obiektu widoku (pierwsza próba nieudana, ale można spróbować jeszcze raz).
Uruchamianie projektu
Serwer (Prolog)
-
Rozpakuj:
tar -zxvf varda-prolog-1.0.tar.gz
Wejdź do katalogu:
cd varda-prolog-1.0
Uruchom przykładowy plik:
./varda therm-model.pl
Uruchom serwer na porcie 12345:
:- create_server(12345).
Serwer oczekuje na połączenia.
GUI (Java)
-
Rozpakuj:
tar -zxvf varda-gui-1.0.tar.gz
Wejdź do katalogu:
cd varda-gui-1.0/bin
Uruchom program:
java -cp ../lib/jgraph.jar:./ varda_gui.Main
Protokół komunikacyjny
Wymiana informacji odbywa się na zasadzie komunikacji synchronicznej. Serwer prologowy jest odpytywany przez cześć javową. W poniższej tabeli przedstawiony jest protokół komunikacji.
Ujednolicenie i dopracowanie protokołu
Nazwa | Zapytanie (od strony javy) | Odpowiedź (od prologa) |
Pobieranie atrybutów finalizowalnych Poprawić | list_finalizeables.
| [[el1],[el2],[el3]]
|
Pobieranie atrybutów splitowalnych Poprawić | list_splitables.
| [[el1a,el1b],[el2a,el2b],[el3a,el3b]]
|
Pobieranie połączeń (zależności) | list_deps.
| [[el1]-[el2],[el2]-[el3],[el3]-[el4,el5]]
|
Pobieranie atrybutów z pliku .svg | list_items_from_svg.
| el1@el2@el3,el4@
|
Pobieranie współrzędnych z pliku .svg | list_coords_from_svg.
| 12.5,23.4@12.0,34.5@
|
Można połączyć ze sobą pobieranie atrybutów i współrzędnych. Są one pobierane z tego samego pliku za pomocą poleceń z konsolowych cat, grep, cut, tr.
Pobieranie atrybutów:
cat therm-model.svg | grep 'class="node"' | cut -d '>' -f3 | cut -d '<' -f1 | tr [:cntrl:] @
Pobieranie współrzędnych:
cat therm-model.svg | grep -A1 'class="node"' | grep polygon | cut -d '"' -f4 | cut -d " " -f1 | tr [:cntrl:] @
n-ty atrybut na liście atrybutów odpowiada n-tej współrzędnej na liście współrzędnych.
Materiały