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/06/13 14:48]
miw
pl:miw:miw08_prolog_javasockets [2008/06/14 15:03]
gjn
Linia 1: Linia 1:
-====== Opis ====== 
-Łukasz Łysik <​llysik@gmail.com> ​ 
  
-Java ↔ Prolog via Sockets, examples, feasibility study, evaluation 
-An example of enabling a Java tic tac toe GUI to interact with the Prolog tic tac toe game agent, using a socket data connector: http://​www.csupomona.edu/​~jrfisher/​www/​prolog_tutorial/​8_4.html 
- 
-====== Spotkania ====== 
- 
-===== 08.03.04 ===== 
-  * zmiana java(server) na java client 
-  * logic server 
- 
- 
- 
-===== 08.03.18 ===== 
-  * 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 ====== 
-===== 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 (jeszcze niepełne)====== 
- 
-===== 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... c.d.n. 
- 
-===== 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. 
- 
-===== Najważniejsze FIXME ===== 
- 
-==== Prolog ==== 
- 
- 
-====== Materiały ====== 
-FIXME 
-  * http://​www.csupomona.edu/​~jrfisher/​www/​prolog_tutorial/​8_4.html 
-  * [[pl:​prolog:​prolog_lab:​prolog_lab_5|bagof/​findall]] 
-  * [[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.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