Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_prolog_javasockets [2008/03/04 11:29]
gjn
pl:miw:miw08_prolog_javasockets [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Łukasz Łysik <​llysik@gmail.com> ​ Łukasz Łysik <​llysik@gmail.com> ​
  
Linia 10: Linia 12:
   * zmiana java(server) na java client   * zmiana java(server) na java client
   * logic server   * logic server
 +
 +
  
 ===== 08.03.18 ===== ===== 08.03.18 =====
   * todo: [[pl:​prolog:​prolog_lab:​prolog_lab_2#​tematprosty_system_ekspertowy|car expert system]]   * todo: [[pl:​prolog:​prolog_lab:​prolog_lab_2#​tematprosty_system_ekspertowy|car expert system]]
 +
 +<code prolog>
 +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.
 +</​code>​
 +
 +<code prolog>
 +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).
 +</​code>​
 +
 +Przy założeniu Java pyta prolog o diagnozę:
 +
 +Przerobić to:
 +<code prolog>
 +try_all_possibilities :-     % Backtrack through all possibilities...
 +   ​defect_may_be(D),​
 +   ​explain(D),​
 +   fail.
 +</​code>​
 +
 +//​defect_may_be//​ to zapytanie do prologu...
 +
 +===== 080401 =====
 +
 +MISSED
 +
 +
 +
 +
 +===== 080415 =====
 +  * upload plików java/prolog do wiki + instr obsługi + wraz z opisem rozwiązania
 +  * model z [[hekate:​varda]],​ view w java, funkcjonalność z ''​varda_model.pl''​ (oraz ew. cześć innych predykatów) ma być udostępniania przez socket jako model, do tego jest view w javie
 +
 +===== 080422 =====
 +  * proto varda
 +
 +
 +
 +===== 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 =====
 +  * 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 ======
 +===== Car expert system =====
 +
 +==== Wersja 1 ====
 +{{:​pl:​miw:​car_expers_system_v.1.tar.gz|:​pl:​miw:​car_expers_system_v.1.tar.gz}}
 +{{:​pl:​miw:​prolog_javasockets_v.1.jpg|:​pl:​miw:​prolog_javasockets_v.1.jpg}}
 +
 +==== Wersja 2 ====
 +{{:​pl:​miw:​car_expers_system_v.2.tar.gz|:​pl:​miw:​car_expers_system_v.2.tar.gz}}
 +{{:​pl:​miw:​prolog_javasockets_v.2.jpg|:​pl:​miw:​prolog_javasockets_v.2.jpg}}
 +
 ====== Sprawozdanie ====== ====== 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).
 +
 +===== 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 ======
Linia 24: Linia 178:
   * [[pl:​prolog:​prolog_lab:​prolog_lab_5|bagof/​findall]]   * [[pl:​prolog:​prolog_lab:​prolog_lab_5|bagof/​findall]]
   * [[pl:​prolog:​prolog_lab:​prolog_lab_6|call etc.]]   * [[pl:​prolog:​prolog_lab:​prolog_lab_6|call etc.]]
 +  * [[http://​72.5.124.55/​docs/​books/​tutorial/​uiswing/​components/​dialog.html|Java message box types]] 
 +  * [[http://​72.5.124.55/​docs/​books/​tutorial/​uiswing/​components/​tree.html|Trees in Java Swing]]
pl/miw/miw08_prolog_javasockets.1204626580.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (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