Serwis prównujący ceny z wielu sklepów internetowych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Serwis prównujący ceny z wielu sklepów internetowych"

Transkrypt

1 Warsztat Przemysław Pokrywka, Przemysław Kazienko Na CD: Na płycie CD umieściliśmy spakowane źródła systemu Cocoon w wersji (cocoon/cocoon2.1.2-src), kod źródłowy zmodyfikowanego komponentu HTML Generator (cocoon/ HTMLGenerator.java), aplikację zaprezentowaną w artykule (katalog zestawienie-cen). Serwis prównujący ceny z wielu sklepów internetowych D zięki wielości sklepów internetowych, konsumenci zainteresowani kupnem określonego towaru mogą wybrać ofertę najlepiej spełniającą ich oczekiwania. To jednak tylko teoria. W praktyce na odnalezienie najkorzystniejszej oferty traci się dużo czasu. Z pomocą przychodzą wtedy serwisy porównujące ceny z wielu sklepów. W artykule krok po kroku zbudujemy taki mocno uproszczony, lecz działający i dający się rozszerzać serwis, zestawiający ze sobą ceny procesorów z trzech sklepów internetowych. Problemy do rozwiązania Serwis, który zamierzamy stworzyć, będzie możliwie najprostszy. Składał się będzie z pojedynczej strony, zawierającej tabelę cen procesorów w trzech sklepach (Rysunek 3). Każdemu wierszowi będzie przypisany jeden procesor, każdej kolumnie jeden sklep, a na przecięciu wiersza i kolumny znajdzie się cena procesora w danym sklepie. Dzięki takiemu układowi będziemy mogli szybko zorientować się, w którym sklepie możemy zakupić interesujący nas procesor po najniższej cenie. Budowa jednak nawet tak prostego serwisu postawi nas w obliczu poważnych problemów. Musimy odpowiedzieć sobie na pytanie, jak z poziomu programu uzyskać potrzebne nam dane, w szczególności aktualne ceny in- Przemysław Pokrywka jest studentem ostatniego roku informatyki na Wydziale Informatyki i Zarządzania Politechniki Wrocławskiej. Szczególnie interesuje się językiem Java, w którym programuje od 6 lat, a także dobrymi praktykami rozwoju oprogramowania, wzorcami projektowymi, refaktoryzacją i programowaniem ekstremalnym. Jest entuzjastą oprogramowania open source. Kontakt z autorem: emo@skrzynka.pl Przemysław Kazienko od 5 lat prowadzi wykład z języka XML na Wydziale Informatyki i Zarządzania Politechniki Wrocławskiej. Jest także współautorem książki XML na poważnie oraz licznych artykułów o tym języku. Wraz ze studentami prowadzi serwis poświęcony językowi XML Centrum XML, dostępny pod adresem: Kontakt z autorem: kazienko@pwr.wroc.pl, 70 Rysunek 1. Witryny trzech sklepów internetowych teresujących nas procesorów, oraz jak poradzić sobie z problemem odmiennego nazywania tych samych procesorów w różnych sklepach. Dostęp do danych HTML Mamy szczęście, jeśli sklepy, których oferty porównujemy, udostępniły nam swoje bazy danych przez protokoły w rodzaju ODBC. Wówczas sprawa pobrania potrzebnych danych sprowadza się do oprogramowania dostępu do tych baz za pomocą dobrze znanych technik. Co jednak zrobić, gdy jedyne dane, jakimi dysponujemy, to strony internetowe tych sklepów w formacie HTML? Tu zaczynają się schody, bo z gąszczu nie zawsze poprawnych składniowo znaczników, opisujących sposób prezentacji, trzeba wydobyć interesujące nas informacje: kategorię produktu, producentów, nazwy, ceny oraz dostępność towaru. Oczywiście moglibyśmy posłużyć się algorytmami analizy tekstu. Z pewnością pomyślałeś już, Czytelniku, o wyrażeniach regularnych, techniki te jednak wciąż mają swoje wady. Wyrażenia regularne służące do wydobywania interesujących nas danych potrafią być bardzo skomplikowane, a przez to trudne do modyfikacji, gdy strona, z której pobieramy dane, zostanie zmodyfikowana. Niemal każda zmiana na stronie wymusza zmianę w wyrażeniu regularnym. Dodatkowo, dla niektórych stron opracowanie odpowiednich wyrażeń może być bardzo trudne lub jest wręcz niemożliwe. Zupełnie inaczej sprawa wyglądałaby, gdyby sklep udostępniał swoją ofertę w postaci pliku XML, na przykład poprzez mechanizm web servi-

2 Serwis porównujący ceny z wielu sklepów internetowych Szybki start Do uruchomienia systemu niezbędny jest J2SDK w wersji 1.4. Zaczynamy od rozpakowania dystrybucji Cocoona i podmienienia pliku src/blocks/html/java/org/apache/cocoon/ generation/htmlgenerator.java na jego nową wersję (z katalogu cocoon na CD). Ustawiamy zmienną środowiskową JAVA_ HOME tak, by wskazywała katalog z Javą, na przykład: set JAVA_HOME=c:\j2sdk1.4.2._04 Następnie kompilujemy Cocoona, uruchamiając w jego głównym katalogu skrypt build.bat oraz kopiujemy katalog zestawienie-cen z CD do podkatalogu build/webapp. Po tych zabiegach możemy już uruchomić platformę Cocoon poleceniem: cocoon.bat servlet Działający przykład możemy teraz oglądać wpisując w przeglądarce lokalny adres: ces. Nawet gdyby różne sklepy stosowały swoje własne formaty XML, wydobycie interesujących nas danych byłoby proste wystarczy rzut oka na dokument w takim formacie, by wiedzieć, jakich wyrażeń XPath użyć. R E K Niestety, rzeczywistość nas nie rozpieszcza. Sklepy, mając na uwadze przeciętnych internautów, udostępniają swoją ofertę wyłącznie w wersji HTML i nie widzą sensu inwestowania w inne sposoby prezentacji swoich danych. A gdyby ów HTML w cudowny sposób zamienił się w XML-a, z którego można by wydobywać dane za pomocą prostych ścieżek XPath? Mamy dobre wieści: taka możliwość istnieje i to zupełnie za darmo. Dostarcza ją Apache Cocoon, darmowe środowisko publikacyjne, oparte na XML-u, rozpowszechniane na zasadach liberalnej (Apache-style) licencji open-source. Transformacji niepoprawnego HTML-a do poprawnego składniowo XHTML-a potrafi mianowicie dokonać jeden z komponentów Cocoona HTML Generator. Samo środowisko Cocoon, ze względu na bogactwo oferowanych możliwości, zasługuje na oddzielny artykuł (polecamy warsztaty Szymona Zioło XML i Cocoon książka kucharska, Software 2.0, nr 9/2003), nam jednak do korzystania z niego wystarczy poznanie samych jego podstaw. Wyjątkiem od tej reguły będzie konieczność wejścia w dosyć intymny kontakt z kodem źródłowym HTML Generatora. Uczynimy to w celu dodania do niego pełnej obsługi polskich znaków, ograniczonej domyślnie do Unikodu. Polskie strony WWW najczęściej bywają bowiem mniej łaskawe i serwisy sklepów internetowych kodowane są w większości za pomocą ISO (Latin 2) lub Windows L A M A

3 Warsztat Cocoon Cocoon jest opartym na XML-u środowiskiem do budowy aplikacji webowych. Od swoich dalekich krewnych PHP, ASP, JSP i wszelkiego rodzaju skryptów server-side różni się filozofią działania. Nacisk położony jest w nim przede wszystkim na separację zagadnień (ang. separation of concerns). Aplikacje w nim budowane można łatwiej niż gdzie indziej podzielić na warstwy danych, logiki i prezentacji. Osiąga się to poprzez: korzystanie z danych źródłowych w formacie XML, neutralnym pod względem prezentacji, wydzielenie zazwyczaj z wykorzystaniem XSLT opisu sposobu transformacji danych do formatów wyjściowych, m.in. HTML, PDF, SVG, JPEG, PNG, TXT, WML, RDF, plików MS Excela, VRML, wyspecyfikowanie logiki przetwarzania, czyli kolejności i rodzaju przekształceń, w planie witryny (ang. sitemap) dedykowanym pliku konfiguracyjnym aplikacji webowej (oczywiście w formacie XML). Drugą zasadniczą cechą Cocoona jest jego budowa komponentowa. Każdy komponent realizuje jeden określony krok przetwarzania. Może to być pobranie danych z pliku, z sieci lub z bazy danych, przekształcenie danych arkuszem XSLT, czy w końcu przekazanie wersji HTML przeglądarce. Komponenty komunikują się ze sobą za pomocą zdarzeń SAX, dzięki czemu można je łączyć w potoki (ang. pipelines), podobnie jak w przypadku zestawiania procesów w Unixie, przekazując wyjście jednego komponentu na wejście drugiego. W planie witryny deklarujemy, których komponentów i w jakiej kolejności używamy w celu zrealizowania określonego żądania. Wraz z instalacją Cocoona otrzymujemy bogaty zestaw komponentów, wystarczających do realizacji większości typowych zadań. W razie potrzeby możemy także wspomóc się napisanymi ręcznie stronami JSP (Cocoon jest napisany w Javie i działa w kontenerze serwletów) lub XSP (extensible Server Pages), czyli w pełni XML-owymi, rozszerzalnymi stronami interpretowanymi po stronie serwera. W każdej chwili możemy też rozbudować Cocoona o własne komponenty wymaga to jednak znajomości Javy i wykorzystywanej w Cocoonie architektury komponentów Avalon. Unifikacja nazw towarów Skąd wiadomo, że Procesor AMD DURON 1800 MHz oznacza to samo, co Duron 1800Mhz Applebread lub AMD Duron 1.8GHz? Dla każdego średnio zorientowanego użytkownika może to być oczywiste. Sęk w tym, że dla komputera to zupełnie różne ciągi znaków. Żeby móc wygenerować sensowne zestawienie, trzeba w jakiś sposób przekazać maszynie, że te trzy napisy oznaczają dokładnie to samo. Można w tym celu spróbować zastosować jakąś funkcję badającą podobieństwo tekstów. Można też próbować normalizować teksty: sortować wyrazy wewnątrz nazwy, usuwać białe znaki, zamieniać wszystkie duże litery na małe, a znaki na słowa (na przykład + na plus ), itd. Tych podejść nie będziemy jednak stosować w naszym systemie, choćby ze względu na chęć zachowania jego prostoty. Do naszych celów doskonale nada się prosty słownik nazw, Listing 1. Słownik towarów <?xml version="1.0" encoding="utf-8"?> <slownik> <kategoria nazwa="procesory"> <producent nazwa="amd"> <czesc nazwa="amd Duron 1800 MHz"> <askryptor>amd Duron 1.8GHz <askryptor>procesor AMD DURON 1800 MHz <askryptor>duron 1800Mhz Applebread <czesc nazwa="amd Athlon XP Barton"> <askryptor>amd Athlon XP Barton <askryptor>procesor AMD ATHLON XP MHz <askryptor>athlon XP Barton <czesc nazwa="amd Athlon XP 2200+"> <askryptor>amd Athlon XP <askryptor>procesor AMD ATHLON XP MHz <askryptor>athlon XP </producent> <producent nazwa="intel"> <czesc nazwa="intel Pentium GHz BOX"> <askryptor>intel Pentium4 2.8GHz Prescott BOX <askryptor>procesor INTEL PENTIUM GHz 800MHz BOX <askryptor>intel PIV 2,80GHZ 800 Socket 478 BOX <czesc nazwa="intel Pentium GHz BOX"> <askryptor>intel Pentium4 3.0GHz Hyper-Threading BOX <askryptor>procesor INTEL PENTIUM GHz 800MHz BOX <askryptor>intel PIV 3,00GHZ 800 Socket 478 BOX <czesc nazwa="intel Celeron 2600 MHz"> <askryptor>intel Celeron 2.6GHz Northwood <askryptor>procesor INTEL CELERON 2600 MHz <askryptor>intel Celeron 2600 SOC.478 OEM </producent> </kategoria> <!-- inne kategorie --> </slownik> 72

4 Serwis porównujący ceny z wielu sklepów internetowych Listing 2. Budowa serwisu plik sitemap.xmap <?xml version="1.0" encoding="iso "?> <map:sitemap xmlns:map=" <map:components> <map:generators default="file"> <map:generator name="html" src="org.apache.cocoon.s generation.htmlgenerator"> <jtidy-config>jtidy.properties</jtidy-config> <in-encoding>iso </in-encoding> </map:generator> </map:generators> <map:transformers default="xslt"/> <map:serializers default="html"/> <map:readers default="resource"/> <map:matchers default="wildcard"/> <map:pipes default="caching"/> </map:components> <map:pipelines> <map:pipeline> <!-- Aktualizacja danych źródłowych co 12 godz. --> <map:parameter name="expires" value="access plus 12 hours"/> <map:match pattern="age"> <map:generate src=" list.php?m_grupa=pr&m_sort=n_nazwa" type="html"/> <map:serialize type="xml"/> <map:match pattern="arest"> <map:generate src=" index.php?inc=cennik&katid=1" type="html"> <map:parameter name="in-encoding" value="windows-1250"/> </map:generate> <map:serialize type="xml"/> <map:match pattern="proline"> <map:generate src=" shop.php?kat=procesory" type="html"/> <map:serialize type="xml"/> </map:pipeline> <map:pipeline> <map:match pattern="zestawienie"> <map:generate src="slownik.xml"/> <map:transform src="glowny.xsl"/> <map:serialize type="xhtml"/> </map:pipeline> </map:pipelines> </map:sitemap> zapisany w postaci dokumentu XML (Listing 1), w którym wymienione zostaną reprezentacyjne nazwy części komputerowych (te, które będą wyświetlane w docelowym zestawieniu) deskryptory, oraz ich nie zalecane odpowiedniki (te, które występują w sklepach) askryptory. W celu większej przejrzystości ostatecznego zestawienia, części pogrupujemy wg kategorii i producenta. W naszym przykładzie z procesorami oznaczałoby to, że deskryptorem byłby na przykład AMD Duron 1800 MHz, a wymienione wcześniej nazwy byłyby askryptorami. System, po napotkaniu nazwy na stronie sklepu, wyszuka ją w słowniku, i w przypadku odnalezienia, dalej posłuży się już tylko jej deskryptorem. Takie rozwiązanie pociąga za sobą konieczność ciągłej ręcznej aktualizacji słownika nazw towarów. W zamian daje pewność poprawnego kojarzenia towarów występujących na stronach różnych sklepów, czego tak łatwo nie bylibyśmy w stanie zagwarantować, nawet używając skomplikowanych algorytmów porównywania tekstów. Uzyskaliśmy odpowiedzi na zasadnicze pytania: w jaki sposób uzyskać dane ze sklepów, oraz jak je unifikować. Pora teraz na wykorzystanie tej wiedzy w praktyce. Naszym pierwszym krokiem będzie... Konfiguracja środowiska pracy Do instalacji Cocoona potrzebny nam będzie Java 2 Software Development Kit. Sama maszyna wirtualna nie wystarczy, gdyż Cocoon jest od pewnego czasu rozpowszechniany tylko w postaci źródeł i wymagana jest jego kompilacja. Ściągnięty J2SDK instalujemy do wybranego przez nas katalogu (najlepiej, żeby jego ścieżka nie zawierała spacji) i ustawiamy zmienną środowiskową JAVA_HOME tak, by wskazywała na ten katalog. Zmiennej tej potrzebuje skrypt kompilujący Cocoona, żeby wiedzieć, gdzie jest kompilator Javy. Gdy mamy już zainstalowaną i skonfigurowaną Javę, instalujemy samego Cocoona, rozpakowując jego dystrybucję do wybranego katalogu znów bez spacji w ścieżce. Zostanie w nim utworzony dodatkowy katalog, cocoon src, zawierający źródła. Są one gotowe do kompilacji, jednak zanim przejdziemy do tego kroku, musimy zmodyfikować źródło komponentu HTML Generator, aby umożliwić poprawną obsługę polskich znaków oraz adresów URL przekazanych mu z planu witryny. W tym celu kopiujemy przygotowaną wersję HTML Generatora (na CD HTMLGenerator.java) do katalogu src\blocks\html\java\ org\apache\cocoon\generation (wewnątrz katalogu coco- 73

5 Warsztat Tidy Skromny, darmowy programik Dave'a Raggetta, goszczący niegdyś na stronach WWW Consortium (W3C), a obecnie na SourceForge, którego autor prosi o pocztówkę, jeśli jego dzieło komuś się przyda, reklamuje się jako automatyczny oczyszczacz niedbale napisanych stron WWW, radzący sobie szczególnie dobrze z HTML-em generowanym automatycznie przez narzędzia i zwracający uwagę na dostępność stron dla osób niepełnosprawnych. Tidy rozwiązuje szeroką gamę problemów w dokumentach HTML i pseudo-html, takich jak: niepodomykane znaczniki, elementy zachodzące na siebie, atrybuty nie przewidziane dla danego elementu HTML, wartości atrybutów nie otoczone apostrofami lub cudzysłowami, elementy spoza HTML-a. Tidy generuje dokumenty XHTML. Do jego znanych słabości należą m.in.: tolerowanie podwójnych wystąpień atrybutów w elemencie i słaba obsługa nieprawidłowo osadzonych skryptów JavaScript. on-2.1.2, powstałego po rozpakowaniu źródeł). Dzięki tej poprawce będziemy mogli w planie witryny specyfikować rodzaj kodowania znaków, który ma być użyty przy przetwarzaniu danej strony WWW. Teraz już możemy uruchomić proces kompilacji. W tym celu w katalogu cocoon uruchamiamy plik wsadowy build.bat. Po zakończonej kompilacji w tym samym katalogu pojawia się katalog build, zawierający katalog webapp. W katalogu webapp założymy katalog naszego serwisu zestawienie-cen, w którym utworzymy: plik konfiguracyjny HTML Generatora jtidy.properties, plik słownika slownik.xml (Listing 1), plan witryny sitemap.xmap, przekształcenie generujące gotowe zestawienie glowny.xsl. Plik jtidy.properties określa ustawienia, jakie mają być brane pod uwagę przy przekształcaniu HTML-a do XHTML-a. Są to faktycznie ustawienia programu JTidy (Javowej wersji programu Tidy), który wykorzystywany jest do czyszczenia niepoprawnych składniowo dokumentów HTML wewnątrz HTML Generatora. Szczegółowa znajomość opcji tego programu nie jest nam potrzebna, warto jednak wiedzieć, że aby transformacje w naszej aplikacji przebiegały poprawnie, musimy nakazać JTidy zwracać dokumenty w kodowaniu UTF-8, ustawiając opcję: char-encoding: utf8 a także opcję: output-xhtml: true aby zwracane przezeń dokumenty były w formacie XHTML. Konfiguracja serwisu Nasz serwis nie jest skomplikowaną witryną. Jej konfiguracja zawarta jest w planie witryny, tj. w pliku sitemap.xmap (Listing 2). Jest to dokument XML złożony z dwóch podstawowych sekcji: components i pipelines. W sekcji <map:components> deklarowane są wykorzystywane przez dany plan witryny komponenty (generatory, serializery, transformatory, itd.) HTML Generator, wymieniony na naszej liście komponentów, posiada dwa parametry: kodowanie pobieranych stron (domyślnie ustawione na ISO ) oraz położenie pliku konfiguracyjnego JTidy. Inne istotne komponenty to: procesor XSLT (transformator) oraz serializer do formatu XHTML, którego zadaniem będzie utworzenie dokumentu dla przeglądarki. Sekcja <map:pipelines> zawiera konfigurację poszczególnych potoków, wraz z wzorcami ich wywołania (<map: match pattern= >). Nasza aplikacja zawiera łącznie cztery potoki: po jednym potoku dla każdego sklepu oraz potok generujący docelowe zestawienie (Rysunek 2). Osobne potoki dla poszczególnych sklepów są niezbędne po to, aby wskazać źródła pobieranych stron oraz określić sposób ich oczyszczania do formatu XHTML. Każdy ze sklepów ma inny wzorzec swojego wywołania, na przykład pattern="age", co wykorzystamy później w odpowiednich odwołaniach w przekształceniu XSLT. W na- Rysunek 2. Budowa serwisu integrującego dane z trzech sklepów internetowych 74

6 Serwis porównujący ceny z wielu sklepów internetowych Listing 3. Transformacja generująca zestawienie cen (fragmenty) <xsl:variable name="age" <xsl:variable name="arest" select="document('cocoon:/age')"/> select="document('cocoon:/arest')" /> <xsl:variable name="proline" select="document('cocoon:/proline')" /> <xsl:template match="czesc"> <tr> <p><xsl:value-of select="@nazwa"/></p> <xsl:for-each select="askryptor"> <xsl:variable name="czesc" <xsl:if test="$czesc"> <a href=";" title="{.}"> select="$age//*[.=current()]"/> <xsl:value-of select="$czesc/../../h:td[3]"/> </a> </xsl:if> </xsl:for-each> <xsl:for-each select="askryptor"> <xsl:variable name="czesc" select="$arest//*[.=current()]"/> <xsl:if test="$czesc"> <a href=";" title="{.}"> <xsl:value-of </a> </xsl:if> </xsl:for-each> select="$czesc/../../h:td[4]/h:a"/> <xsl:for-each select="askryptor"> <xsl:variable name="czesc" select="$proline//*[.=current()]"/> <xsl:if test="$czesc"> <a href=";" title="{.}"> <xsl:value-of </a> </xsl:if> </xsl:for-each> </tr> </xsl:template> select="$czesc/../../../h:td[3]"/> szym przypadku wartość age możemy traktować jako nazwę potoku. Każdy ze sklepów ma poza tym inny parametr generatora (src= ), określający adres internetowy pobieranej strony. Ponieważ domyślnym generatorem jest HTML Generator, więc będzie on wywoływany dla każdego sklepu. Uważny Czytelnik od razu spostrzeże coś, co różni sklep Arest od innych. Chodzi o zmianę domyślnego kodowania. Otóż sklep ten, w przeciwieństwie do dwóch pozostałych, używa zamiast Latin 2 strony kodowej Windows Wszystkie potoki sklepów kończą się serializacją przekształconego dokumentu źródłowego. Potok zestawienia cen jest uruchamiany zapytaniem HTTP zawierającym jego nazwę (zestawienie). Pobiera on słownik towarów (slownik.xml) i wykonuje na nim transformację XSLT zdefiniowaną w pliku glowny.xsl. Transformacja ta odwołuje się z kolei do potoków poszczególnych sklepów, dzięki czemu integrujemy dane z nich pochodzące. Końcowym akcentem jest wygenerowanie docelowego dokumentu HTML przez serializer i przekazanie go przeglądarce. Generowanie zestawienia arkusz XSLT Przyjrzyjmy się teraz sercu naszego systemu arkuszowi stylów XSLT, którego zadaniem jest generowanie zestawienia cen. Listing 3 przedstawia jego najważniejsze fragmenty, odpowiedzialne za integrowanie danych z poszczególnych sklepów oraz generowanie zestawienia dla konkretnej części. z potoków poszczególnych sklepów została zrealizowana dzięki funkcji document() dostępnej w XSLT. Przy jej pomocy ładujemy zewnętrzne dokumenty XML, przypisując ich zawartość do zmiennych, a następnie wykorzystujemy je w przekształceniu na równi z zawartością dokumentu wejściowego. Cocoon oferuje wprawdzie bardziej eleganckie i elastyczne metody integrowania danych, na przykład agregatory czy transformator XInclude, jednak proste rozwiązanie, na które się zdecydowaliśmy, ma jedną podstawową zaletę: jest uniwersalne i można je wykorzystać także samodzielnie, bez użycia Cocoona. Wygenerowanie tabeli cen polega na przejściu w pętli po wszystkich wpisach ze słownika. Każdy wiersz zawiera w pierwszej komórce nazwę części, pobraną ze słownika. Następne komórki zawierają ceny tej części w kolejnych sklepach, bądź są puste, jeśli dany sklep nie ma w ofercie danej części. Jeśli część pojawia się w sklepie, to oprócz jej ceny udostępniamy użytkownikowi odpowiadający jej askryptor, wyświetlany po najechaniu myszką na cenę. Dzięki temu użytkownik, dziwiący się ogromnej różnicy w cenach tego samego procesora, może się ewentualnie przekonać, że tak naprawdę w zestawieniu znalazły się dwa różne modele (na przykład na skutek błędu autora zestawienia). Pomińmy nieistotne z punktu widzenia naszego wywodu szczegóły generowania układu strony oraz 75

7 Warsztat niezwykle prosta, i w dodatku jednakowa dla wszystkich sklepów: //* Analizując treść strony w bezpośredniej okolicy askryptora, łatwo jest też odkryć, w jaki sposób dotrzeć do odpowiedniego węzła z ceną. W przypadku sklepu Age, ścieżka od nazwy części do jej ceny ma postać:../../h:td[3] Rysunek 3. Zestawienie cen z trzech sklepów internetowych nagłówków tabel dla poszczególnych kategorii i producentów, i przyjrzyjmy się szablonowi dla elementu czesc, wypisującemu wiersz z nazwą części i jej cenami w kolejnych sklepach. Nie jest problemem wypisanie nazwy części pochodzi ona ze słownika. Większe wyzwanie stanowi odnalezienie ceny tej części w danym sklepie. Podejście, które zastosujemy, opiera się na obserwacji, że sklepy publikują swoje cenniki HTML mimo wszystko w uporządkowanej, powtarzalnej postaci. Zazwyczaj nazwa części i jej cena znajdują się w jednym wierszu tabeli, choć mogą być pozagnieżdżane w elementach <a>, <img>, <b>, itp. Istotne jest to, że dysponując węzłem nazwy części, możemy używając względnego wyrażenia XPath przejść do węzła zawierającego jej cenę. Dla każdego węzła nazwy na stronie danego sklepu zrobimy to w ten sam sposób. Aby więc umieć odnaleźć cenę danej części ze słownika na konkretnej stronie, musimy: potrafić odnaleźć askryptor szukanej części w treści strony, wymyślić względną ścieżkę XPath, która z nazwy części skieruje nas do jej ceny. Spójrzmy, gdzie w strukturze strony dowolnego z trzech sklepów mogą znajdować się nazwy części. Wprawdzie strukturę tę można badać analizując źródło strony, to jednak trzeba się przy tym sporo napracować i łatwo się jest przy tym pomylić. Na stronach WWW sklepów internetowych normą jest wielokrotne zagnieżdżanie tabel (element <table>), dochodzą do tego elementy <div>, <center>, <a>, <b> i tym podobne. Dlatego łatwiej i bezpieczniej będzie skorzystać ze spostrzeżenia, że askryptorów możemy szukać po prostu w całej zawartości strony! Ścieżka XPath wskazująca położenie askryptora w treści strony będzie więc gdzie h jest przedrostkiem przestrzeni nazw XHTML. Zatem aby we wzorcu czesc wypisać cenę konkretnej części, musimy przeiterować po wszystkich askryptorach tej części (nie wiemy bowiem, który askryptor występuje w danym sklepie), i spróbować znaleźć bieżący askryptor na stronie sklepu. W przypadku sklepu Age robimy to wyrażeniem: $age//*[.=current()] Wartość wyrażenia (węzeł zawierający askryptor) zapamiętujemy na zmiennej czesc w celu późniejszego przeniesienia się z niej do węzła ceny. Znając (specyficzną dla każdego sklepu) drogę od węzła części do jej ceny, wypisujemy ją, dodatkowo umieszczając w atrybucie title łącza sam askryptor. Efekt Mając przygotowaną witrynę, nie pozostaje nam nic innego, niż ją uruchomić i cieszyć się efektem. Uruchamiamy Cocoona z jego głównego katalogu poleceniem: cocoon servlet a następnie wprowadzamy w przeglądarce adres: Po pewnym czasie, niezbędnym do ściągnięcia danych ze sklepów oraz ich zintegrowania, ujrzymy stronę zestawienia. Stworzony w ten sposób serwis jest bardzo uproszczony i ma charakter prototypowy. Brakuje mu prawdziwej szaty graficznej, nie ma opcji wyszukiwania interesujących nas towarów, ale działa na prawdziwych danych. Ci z Czytelników, którym pomysł integracji się spodobał, mogą przekształcić zaproponowany system tak, aby działał również dla innych sklepów internetowych z częściami komputerowymi a także dla kategorii innych niż procesory. Powodzenia! 76

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004 Środowisko publikacyjne oparte na XML-u Szymon Zioło 1 maja 2004 Przygotowywanie serwisu internetowego Role biznesowe: redakcja treści (autor), styl, redakcja graficzna (grafik), organizacja witryny (redaktor).

Bardziej szczegółowo

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0 Słowem wstępu Część rodziny języków XSL Standard: W3C XSLT 1.0-1999 razem XPath 1.0 XSLT 2.0-2007 Trwają prace nad XSLT 3.0 Problem Zakładane przez XML usunięcie danych dotyczących prezentacji pociąga

Bardziej szczegółowo

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz Język XSLT Po zrealizowaniu materiału student będzie w stanie Dokonać przekształcenia zawartości dokumentu XML do formatu HTML oraz TXT Realizować przetwarzanie warunkowe dokumentu XML Formatować wartości

Bardziej szczegółowo

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT 1. Wstęp XML (Extensible Markup Language Rozszerzalny Język Znaczników) to język formalny przeznaczony do reprezentowania danych

Bardziej szczegółowo

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

I. Informacje ogólne. Jednym z takich systemów jest Mambo. MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację

Bardziej szczegółowo

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 1, część 2 1 Język JAVA podstawy Plan wykładu: 1. Krótka historia Javy 2. Jak przygotować sobie środowisko programistyczne 3. Opis środowiska JDK 4. Tworzenie programu krok po

Bardziej szczegółowo

Cocoon środowisko publikacyjne oparte na XML-u

Cocoon środowisko publikacyjne oparte na XML-u Szymon Zioło empolis Polska sp. z o.o. ul. Płocka 5a 02-776 Warszawa szz@empolis.pl Streszczenie Cocoon jest darmowym, rozwijanym przez środowisko open source, narzędziem do tworzenia witryn internetowych

Bardziej szczegółowo

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6 Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

XML extensible Markup Language 3

XML extensible Markup Language 3 XML extensible Markup Language 3 XSL transformations (XSLT) XSLT (ang. extensible Stylesheet Language Transformations) jest opartym na XML językiem transformacji dokumentów XML XSLT umożliwia przetłumaczenie

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Continuous Integration z ClickOnce

Continuous Integration z ClickOnce Continuous Integration z ClickOnce To, że Continuous Integration (z ang. ciągła integracja) to proces polegający na stałym, możliwie częstym konsolidowaniu (kompilacji, testowaniu, publikacji) wyników

Bardziej szczegółowo

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop. 2012 Spis treści Wstęp 9 1 HTML 5 i XHTML w pytaniach i odpowiedziach 13 Co to jest HTML 5? 13 Co to jest XHTML? 15 Czy strony utworzone w HTML

Bardziej szczegółowo

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych rk Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych pojęć, prawdopodobnie zastanawiasz się, kiedy zaczniesz

Bardziej szczegółowo

Instrukcja obsługi DHL KONWERTER 1.6

Instrukcja obsługi DHL KONWERTER 1.6 Instrukcja obsługi DHL KONWERTER 1.6 Opis: Niniejsza instrukcja opisuje wymogi użytkowania aplikacji oraz zawiera informacje na temat jej obsługi. DHL Konwerter powstał w celu ułatwienia oraz usprawnienia

Bardziej szczegółowo

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT Marek Wojciechowski marek@cs.put.poznan.pl http://www.cs.put.poznan.pl/~marek/ Formatowanie dokumentów XML Język XML opisuje strukturę i

Bardziej szczegółowo

Facelets ViewHandler

Facelets ViewHandler JSF i Facelets Wprowadzenie JSP (JavaServer Pages) są natywną i najczęściej używaną technologią do tworzenia warstwy prezentacyjnej dla JSF (JavaServer Faces) Istnieją alternatywne technologie opisu wyglądu

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1 INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1 Producent: Lukaszjarosinski.com Nazwa oprogramowania: Websoft Site Analyzer 2.7.1 Wersja finalna: 28.02.2013 Kontakt: lukaszjarosinski@gmail.com,

Bardziej szczegółowo

Instrukcja obsługi Multiconverter 2.0

Instrukcja obsługi Multiconverter 2.0 Instrukcja obsługi Multiconverter 2.0 Opis: Niniejsza instrukcja opisuje wymogi użytkowania aplikacji oraz zawiera informacje na temat jej obsługi. DHL Multiconverter powstał w celu ułatwienia oraz usprawnienia

Bardziej szczegółowo

Komunikacja i wymiana danych

Komunikacja i wymiana danych Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Przykłady na podstawie zadań lab. z przedmiotu Technologie internetowe

Bardziej szczegółowo

INSTRUKCJA INSTALACJI

INSTRUKCJA INSTALACJI INSTRUKCJA INSTALACJI TcpMDT ver. 7 Aplitop, 2014 C/ Sumatra, 9 E-29190 MÁLAGA (SPAIN) web: www.aplitop.com e-mail: support@aplitop.com Spis treści Instalacja MDT ver. 7... 3 Wymagania systemowe... 3 Menu

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Ceneo.pl Wersja 2016.3.2 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA NA CENEO.PL... 4 3 KONFIGURACJA Z SERWISEM CENEO.PL... 5 4 PRZYGOTOWANIE ASORTYMENTU...

Bardziej szczegółowo

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 SGML (Standard Generalized Markup Language) Standardowy uogólniony język znaczników służący do ujednolicania struktury i formatu różnego typu informacji (danych). Twórcy

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

Generator recept. Program pomagający tworzyć wypełnione wydruki recept lekarskich. Instrukcja obsługi użytkownika

Generator recept. Program pomagający tworzyć wypełnione wydruki recept lekarskich. Instrukcja obsługi użytkownika Generator recept Program pomagający tworzyć wypełnione wydruki recept lekarskich Instrukcja obsługi użytkownika Copyright Paulina Głąb, Wojciech Januszek 2012-1 - Spis treści 1. Cel programu.... 3 2. Instalacja

Bardziej szczegółowo

Extensible Markup Language III

Extensible Markup Language III KIiMK 2010 Plan XSLT-transformacje dokumentów 1 XSLT-transformacjedokumentów Informacje o XSLT Przykład transformacji 2 3 Informacje o XSLT Przykład transformacji Informacje o XSLT Przykład transformacji

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0 Instrukcja instalacji środowiska testowego na TestingCup 2017 wersja 1.0 Spis treści: 1. Wstęp Błąd! Nie zdefiniowano zakładki. 2. Konfiguracja sprzętowa 2 3. Instalacja bazy danych MySQL 5.7 2 4. Import

Bardziej szczegółowo

Silent setup SAS Enterprise Guide (v 3.x)

Silent setup SAS Enterprise Guide (v 3.x) SAS Institute TECHNICAL SUPPORT Silent setup SAS Enterprise Guide (v 3.x) Silent Setup ( cicha instalacja oprogramowania) pozwala na instalację Enterprise Guide (lub całości oprogramowania SAS) na wielu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Nokaut i Radar Wersja 2016.2 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 NOKAUT... 4 2.2 RADAR.PL... 4 3 KONFIGURACJA... 5 4 PRZYGOTOWANIE ASORTYMENTU...

Bardziej szczegółowo

29. Poprawność składniowa i strukturalna dokumentu XML

29. Poprawność składniowa i strukturalna dokumentu XML 29. i strukturalna dokumentu XML 13 października 2015 1 2 Poprawny składniowo dokument XML powinien być tworzony zgodnie z poniżej przedstawionymi zasadami. Deklaracja XML Powinien zawierać deklarację

Bardziej szczegółowo

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne) 1 90 min. Aplikacje WWW Harmonogram ń, semestr zimowy -2017 (studia stacjonarne) 6 października Wprowadzenie do aplikacji WWW Rys historyczny Składniki architektury WWW o klient HTTP o serwer HTTP o protokół

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

METODY REPREZENTACJI INFORMACJI

METODY REPREZENTACJI INFORMACJI Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Magisterskie Studia Uzupełniające METODY REPREZENTACJI INFORMACJI Ćwiczenie 1: Budowa i rozbiór gramatyczny dokumentów XML Instrukcja

Bardziej szczegółowo

Aplikacje WWW Wprowadzenie

Aplikacje WWW Wprowadzenie Aplikacje WWW Wprowadzenie Beata Pańczyk na podstawie http://www.e-informatyka.edu.pl/ http://wazniak.mimuw.edu.pl/index.php?title=aplikacje_www Plan wykładu Składniki architektury WWW: klient HTTP, serwer

Bardziej szczegółowo

Data modyfikacji: 2013-08-14

Data modyfikacji: 2013-08-14 Data modyfikacji: 2013-08-14 Co zawiera ten dokument: Ten dokument przedstawia, w jaki sposób zainstalować program Kancelaris PLUS 4 za pomocą standardowego instalatora na serwerze MySQL w wersji 5.0 i

Bardziej szczegółowo

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows Instalacja PS Bonus Pack Przed przystąpieniem do instalacji PS Bonus Pack należy wcześniej zainstalować program

Bardziej szczegółowo

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie 1. Instalacja w zwykłym skrypcie PHP Instalacja PHP Hypercachera Refresher Standard i PHP

Bardziej szczegółowo

System Zarządzania Treścią

System Zarządzania Treścią System Zarządzania Treścią Dawno, dawno temu, w latach 90-tych XX wieku publikowanie w Internecie nie było proste. Wymagało znajomości HTMLa do stworzenia strony, FTP do wysłania zawartości na serwer i

Bardziej szczegółowo

Jak ustawić cele kampanii?

Jak ustawić cele kampanii? Jak ustawić cele kampanii? Czym są cele? Jest to funkcjonalność pozwalająca w łatwy sposób śledzić konwersje wygenerowane na Twojej stronie www poprzez wiadomości email wysłane z systemu GetResponse. Mierzenie

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone Typy przetwarzania Przetwarzanie zcentralizowane Systemy typu mainfame Przetwarzanie rozproszone Architektura klient serwer Architektura jednowarstwowa Architektura dwuwarstwowa Architektura trójwarstwowa

Bardziej szczegółowo

Aktualizacja środowiska JAVA a SAS

Aktualizacja środowiska JAVA a SAS , SAS Institute Polska marzec 2018 Często spotykaną sytuacją są problemy z uruchomieniem aplikacji klienckich oraz serwerów SASowych wynikające z faktu aktualizacji środowiska JAVA zainstalowanego na komputerze.

Bardziej szczegółowo

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical;

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Tworzenie aplikacji Web Alicja Zwiewka. Page 1 Tworzenie aplikacji Web Alicja Zwiewka Page 1 Co to są web-aplikacje? Aplikacja internetowa (ang. web application) program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Tomasz Boiński: 1. Pozycjonowanie stron i zastosowanie mod_rewrite

Tomasz Boiński: 1. Pozycjonowanie stron i zastosowanie mod_rewrite Tomasz Boiński: 1 Pozycjonowanie stron i zastosowanie mod_rewrite Pozycjonowanie stron Promocja strony odbywa się poprzez umiejscowienie jej jak najwyżej w wynikach wyszukiwania Wyszukiwarki indeksują

Bardziej szczegółowo

5. Mechanizm szablonów.

5. Mechanizm szablonów. 5. Mechanizm szablonów. Moduł szablonów daje możliwość definicji dowolnej ilości szablonów strony publicznej serwisu. W połączeniu z modułami Marketing MIX oraz Wzorców Elementów został opracowany tak

Bardziej szczegółowo

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski 1.) Wymagania sprzętowe: SSI Katalog Program do katalogowania zawartości dysków Dariusz Kalinowski - System operacyjny: Windows 2000 lub Windows xp - Procesor minimum Pentium 1Ghz - Pamięć RAM minimum

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer

Bardziej szczegółowo

Instrukcja obsługi i konfiguracji dodatku Ceneo dla Virtuemart 2 v 1.0.1

Instrukcja obsługi i konfiguracji dodatku Ceneo dla Virtuemart 2 v 1.0.1 Instrukcja obsługi i konfiguracji dodatku Ceneo dla Virtuemart 2 v 1.0.1 Wersja dokumentu 1.0.0 20.12.2012 Wersja dokumentu 1.0.1 17.07.2013 Spis treści Instrukcja obsługi i konfiguracji dodatku Ceneo

Bardziej szczegółowo

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS Qmail radość listonosza Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS 1 STRESZCZENIE Artykuł jest przedstawieniem podstawowej konfiguracji jednego z najpopularniejszych agentów MTA (Mail Transfer Agent)

Bardziej szczegółowo

Pomoc dla systemu WordPress

Pomoc dla systemu WordPress Pomoc dla systemu WordPress Ten plik pomocy przeznaczony jest dla pluginu stat24 w wersji 0.2. W tym pluginie porzucono wsparcie dla starszych wersji WordPress (niższych niż 1.5) oraz zrezygnowano z opcji

Bardziej szczegółowo

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania, SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Wykład 3 1 SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Przykład Bingo 2 Treść przykładu Jak wygląda karta do

Bardziej szczegółowo

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Tworzenie i obsługa wirtualnego laboratorium komputerowego Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Michał Ochociński nr albumu: 236401 Praca magisterska na kierunku informatyka stosowana Tworzenie i obsługa wirtualnego

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu. Integracja z Okazje.info, Skąpiec, Sklepy24

Dokumentacja Użytkownika Systemu. Integracja z Okazje.info, Skąpiec, Sklepy24 Dokumentacja Użytkownika Systemu Integracja z Okazje.info, Skąpiec, Sklepy24 Wersja 2016 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 OKAZJE.INFO... 4 2.2 SKĄPIEC... 4 2.3 SKLEPY24.PL... 4 3 KONFIGURACJA...

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Instrukcja instalacji oprogramowania dla środowiska Windows

Instrukcja instalacji oprogramowania dla środowiska Windows Instrukcja instalacji oprogramowania dla środowiska Windows Kurs.NET od podstaw Przygotuj się jeszcze przed zajęciami! Specyfikacja komputera.net od postaw minimum 8 GB RAM, rekomendowany procesor minimum

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Okazje.info, Skąpiec, Sklepy24 Wersja 7.9 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 OKAZJE.INFO... 4 2.2 SKĄPIEC... 4 2.3 SKLEPY24.PL... 4 3 KONFIGURACJA...

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Porównywarki cen Liquid Wersja 2016.2 Spis treści 1 WSTĘP... 3 2 OPIS OBSZARU... 4 2.1 TOWARY... 5 2.2 RELACJE... 5 2.3 EDYTUJ... 6 2.3.1 KONFIGURACJA... 6 2.3.2 KATEGORIE...

Bardziej szczegółowo

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne

Bardziej szczegółowo

Aplikacje internetowe laboratorium XML, DTD, XSL

Aplikacje internetowe laboratorium XML, DTD, XSL Aplikacje internetowe laboratorium XML, DTD, XSL Celem ćwiczenia jest stworzenie dokumentu XML, wyposażenie dokumentu w specyfikację struktury (przy użyciu DTD), oraz transformacja dokumentu XML do postaci

Bardziej szczegółowo

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Tomasz Kapelak Nr albumu: 187404 Praca magisterska na kierunku Informatyka

Bardziej szczegółowo

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. Gdy już posiadamy serwer i zainstalowany na nim system Windows XP, 7 lub 8 postawienie na nim serwera stron WWW jest bardzo proste. Wystarczy

Bardziej szczegółowo

Generatory pomocy multimedialnych

Generatory pomocy multimedialnych Generatory pomocy multimedialnych Storna 1 Instalacja generatorów oraz praca z generatorem puzzli, memory oraz grupowania.* *Projekt jest całkowicie finansowany z programu Kapitał Ludzki, III Wysoka jakoś

Bardziej szczegółowo

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II - 2012-10-08

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II - 2012-10-08 Języki i narzędzia programowania III Łukasz Kamiński Wykład II - 2012-10-08 Wykład II Wprowadzenie kontynuacja Cookie HTML (JS/CSS/Flash/Java) Instalacja Apache, PHP, MySQL Konfiguracja Hosting i domeny

Bardziej szczegółowo

XML w bazach danych i bezpieczeństwie

XML w bazach danych i bezpieczeństwie XML w bazach danych i bezpieczeństwie Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2007/08 Klasyfikacja wsparcia dla XML-a w bazach danych (Relacyjna) baza danych

Bardziej szczegółowo

Nowoczesne aplikacje internetowe w praktyce

Nowoczesne aplikacje internetowe w praktyce 1 Lech Madeyski Wydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Politechnika Wrocławska e-mail: madeyski@ci.pwr.wroc.pl Paweł Mazur Wydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania

Bardziej szczegółowo

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO). XSL (XSLT) Transformacja dokumentów XML. XML warstwa przechowująca informacje XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO). Transformacja XSLT utworzenie nowego dokumentu wynikowego

Bardziej szczegółowo

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. Autor: Larry Ullman Poznaj zasady wirtualnego handlu i zarabiaj prawdziwe pieniądze Jak stworzyć doskonałą witrynę sklepu internetowego? Jak

Bardziej szczegółowo

Aktualizowanie systemów operacyjnych

Aktualizowanie systemów operacyjnych Aktualizowanie systemów operacyjnych Na czym polega aktualizowanie systemów operacyjnych? Aktualizowanie systemów operacyjnych to jedna w czynności poinstalacyjnych, której zadaniem jest naprawa tzw. luk

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Nokaut i Radar Wersja 7.7 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 NOKAUT... 4 2.2 RADAR.PL... 4 3 KONFIGURACJA... 5 4 PRZYGOTOWANIE ASORTYMENTU...

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Rozpoczynamy import Kreator uruchamiamy przyciskiem Z tekstu, znajdującym się na karcie Dane, w grupie Dane zewnętrzne.

Rozpoczynamy import Kreator uruchamiamy przyciskiem Z tekstu, znajdującym się na karcie Dane, w grupie Dane zewnętrzne. 2. Zadania praktyczne rozwiązywane z użyciem komputera 91 2. Zadania praktyczne rozwiązywane z użyciem komputera Wczytywanie danych Dane do zadań rozwiązywanych na komputerze zapisane są w plikach tekstowych.

Bardziej szczegółowo

Podstawowym zadaniem, które realizuje

Podstawowym zadaniem, które realizuje Funkcje wyszukiwania i adresu INDEKS Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical; Pytania:

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

DVD2one DVD2one 1.4 Start Program Start Screen Compression Mode Constant Ratio Variable Ratio Copy Mode Movie-only Full disk Join: Movie-only

DVD2one DVD2one 1.4 Start Program Start Screen Compression Mode Constant Ratio Variable Ratio Copy Mode Movie-only Full disk Join: Movie-only DVD2one DVD2one 1.4 to kolejny program, który potrafi wykonać kopię bezpieczeństwa płyty DVD. Umożliwia skopiowanie na dysk twardy komputera plików filmowych wraz z wybranym językiem i napisami. Jak zapewnia

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Ceneo.pl Wersja 7.0.2 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA NA CENEO.PL... 4 3 KONFIGURACJA Z SERWISEM CENEO.PL... 5 4 PRZYGOTOWANIE ASORTYMENTU... 8

Bardziej szczegółowo

WPROWADZENIE DO JĘZYKA JAVA

WPROWADZENIE DO JĘZYKA JAVA WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny

Bardziej szczegółowo

Przetwarzanie dokumentów XML za pomocą XSLT (30.03.2015 r.)

Przetwarzanie dokumentów XML za pomocą XSLT (30.03.2015 r.) Przetwarzanie dokumentów XML za pomocą XSLT (30.03.2015 r.) Przetwarzanie dokumentów XML oznacza zwykle, wyłuskanie z nich danych oraz przetwarzanie ich na inny format np HTML lub PDF. Jedną z metod przekształcania

Bardziej szczegółowo

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2 1. Instalacja serwera WWW Aby zainstalować serwer WWW w systemie Linux, należy wykorzystać menedżer pakietów apt-get. Polecenia które należy wpisać w terminalu użytkownika root 1 : apt-get install build-essential

Bardziej szczegółowo

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR Producent: Nazwa oprogramowania: Printec Websoft CEIDG Monitor Aktualna wersja: 1.0 Ostatnia aktualizacja: 25.01.2015 Kontakt: biuro@e-printec.com.pl,

Bardziej szczegółowo

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.

Bardziej szczegółowo

CMS- kontakty (mapa)

CMS- kontakty (mapa) CMS- kontakty (mapa) Rozpatrzy inny rodzaj kontaktu mapa sytuacyjna. W naszej kategorii kontaktów dodamy teraz multimedialną mapę dojazdową. W tym celu potrzebny nam będzie moduł HTML 1.0. Będziemy mogli

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania. XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania. Reformuje on znane zasady języka HTML 4 w taki sposób, aby były zgodne z XML (HTML przetłumaczony na XML).

Bardziej szczegółowo

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE Budowa i oprogramowanie komputerowych systemów sterowania Laboratorium 4 Metody wymiany danych w systemach automatyki DDE 1 Wprowadzenie do DDE DDE (ang. Dynamic Data Exchange) - protokół wprowadzony w

Bardziej szczegółowo

Instrukcja użytkownika Porównywarki cen Liquid

Instrukcja użytkownika Porównywarki cen Liquid Instrukcja użytkownika Porównywarki cen Liquid Wersja Spis treści 1 Wstęp... 3 2 Opis obszaru... 4 Towary... 5 Relacje... 6 Edytuj... 7 2.3.1 Konfiguracja... 7 2.3.2 Kategorie... 7 2.3.3 Ustawienia...

Bardziej szczegółowo

Bazy danych i strony WWW

Bazy danych i strony WWW Bazy danych i strony WWW Obsługa baz danych poprzez strony WWW Niezbędne narzędzia: serwer baz danych np. MySQL serwer stron WWW np. Apache przeglądarka stron WWW interpretująca język HTML język skryptowy

Bardziej szczegółowo

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW KARTA KURSU Nazwa Nazwa w j. ang. Przetwarzanie dokumentów XML i zaawansowane techniki WWW XML processing and advanced web technologies Kod Punktacja ECTS* 3 Koordynator dr Maria Zając Zespół dydaktyczny:

Bardziej szczegółowo