Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_prolog_javasockets [2008/04/22 10:27] gjn |
pl:miw:miw08_prolog_javasockets [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ====== Opis ====== |
| __**Projekt zakończony**__ |
| |
Łukasz Łysik <llysik@gmail.com> | Łukasz Łysik <llysik@gmail.com> |
| |
===== 080422 ===== | ===== 080422 ===== |
* proto varda | * proto varda |
| |
| |
| |
ard_dependency | ard_dependency |
patrz varda_view:dotgen_ard_body | patrz varda_view:dotgen_ard_body |
| |
| |
| ===== 080520 ===== |
| * logika w prologu + shi/sar! |
| |
| ===== 080610 ===== |
| * split(V)->jgrapmvievserialize(V)->xml ->split(varda)->sar_socket <-dot2jgxml->update(V) |
| * po stronie V jest graphviz |
| ''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 ===== |
| * zacząć pisać sprawozd |
| * krótki opis "protokołu" |
| * sugestie co do rozszerzenia api vardy |
| * sug. co do poprawy kody ("switch") |
| |
| ===== FutWork ===== |
| |
====== Projekt ====== | ====== Projekt ====== |
{{:pl:miw:prolog_javasockets_v.2.jpg|:pl:miw:prolog_javasockets_v.2.jpg}} | {{:pl:miw:prolog_javasockets_v.2.jpg|:pl:miw:prolog_javasockets_v.2.jpg}} |
| |
| ====== 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//). |
| - FIXME 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. |
| - FIXME 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//). |
| - FIXME 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. |
| - FIXME Rozpoczynanie nowego grafu (dodawanie pierwszego elementu). |
| - Możliwość finalizowania i splitowania elementów. |
| - Możliwość przemieszczania elementów (metodą drag and drop - feature jGrapha) |
| - FIXME Serializacja i deserializacja obiektu widoku (pierwsza próba nieudana, ale można spróbować jeszcze raz). |
| |
====== Sprawozdanie ====== | ===== Uruchamianie projektu ===== |
| |
| ==== Serwer (Prolog) ==== |
| - Ściągnij archiwum: {{:pl:miw:varda-prolog-1.0.tar.gz|:pl:miw:varda-prolog-1.0.tar.gz}} |
| - Rozpakuj: <code> tar -zxvf varda-prolog-1.0.tar.gz </code> |
| - Wejdź do katalogu: <code> cd varda-prolog-1.0 </code> |
| - Uruchom przykładowy plik: <code> ./varda therm-model.pl </code> |
| - Uruchom serwer na porcie 12345: <code> :- create_server(12345). </code> |
| - Serwer oczekuje na połączenia. |
| |
| |
| ==== GUI (Java) ==== |
| - Ściągnij archiwum: {{:pl:miw:varda-gui-1.0.tar.gz|:pl:miw:varda-gui-1.0.tar.gz}} |
| - Rozpakuj: <code> tar -zxvf varda-gui-1.0.tar.gz </code> |
| - Wejdź do katalogu: <code> cd varda-gui-1.0/bin </code> |
| - Uruchom program: <code> java -cp ../lib/jgraph.jar:./ varda_gui.Main </code> |
| |
| ===== 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. |
| |
| FIXME Ujednolicenie i dopracowanie protokołu |
| |
| ^ Nazwa ^ Zapytanie (od strony javy) ^ Odpowiedź (od prologa) ^ |
| | Pobieranie atrybutów finalizowalnych FIXME Poprawić | <code>list_finalizeables.</code> | <code>[[el1],[el2],[el3]]</code> | |
| | Pobieranie atrybutów splitowalnych FIXME Poprawić | <code>list_splitables.</code> | <code>[[el1a,el1b],[el2a,el2b],[el3a,el3b]]</code> | |
| | Pobieranie połączeń (zależności) | <code>list_deps.</code> | <code>[[el1]-[el2],[el2]-[el3],[el3]-[el4,el5]]</code> | |
| | Pobieranie atrybutów z pliku .svg | <code>list_items_from_svg.</code> | <code>el1@el2@el3,el4@</code> | |
| | Pobieranie współrzędnych z pliku .svg | <code>list_coords_from_svg.</code> | <code>12.5,23.4@12.0,34.5@</code> | |
| |
| FIXME 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: |
| <code>cat therm-model.svg | grep 'class="node"' | cut -d '>' -f3 | cut -d '<' -f1 | tr [:cntrl:] @</code> |
| |
| Pobieranie współrzędnych: |
| <code>cat therm-model.svg | grep -A1 'class="node"' | grep polygon | cut -d '"' -f4 | cut -d " " -f1 | tr [:cntrl:] @</code> |
| |
| n-ty atrybut na liście atrybutów odpowiada n-tej współrzędnej na liście współrzędnych. |
| |
====== Materiały ====== | ====== Materiały ====== |