Blog archive 2008/10

Webové služby - co jsou a k čemu slouží

Oct|30 2008

Co jsou webové služby podle Wikipedie:

Webová služba je podle definice W3C řešení, jak spolu aplikace mohou komunikovat a vyměňovat si informace přes Internet.

Pokusím se webové služby představit trochu podrobněji. Webové služby mají blízko k tzv. RPC (Remote Procedure Call neboli vzdálené volání procedur). Lépe řečeno z něho vycházejí.

V praxi si vzdálené volání procedur (RPC) můžeme představit jako komunikaci dvou počítačů v síti - klient a server. Klient pomocí RPC volá nějakou proceduru na serveru a ten klientovi vrací výsledná data. Uvažujme příklad meteorologické stanice a počítače u nás doma, kde chceme zobrazovat aktuální teplotu. V praxi to vypadá tak, že klient serveru předá nějaké vstupní parametry (například zítřejší datum) a pošle požadavek:

GetTemperature('2008-11-05');

Na straně klienta se zpráva zabalí do HTTP požadavku a odešle se na server. Server zprávu zpracuje, zjistí, jaká bude zítra teplota a vytvoří se odpověď. Ta se opět zabalí jako HTTP zpráva a je odeslána zpět klientovi. Tomu již dojde například číslo 14 a klient už ví, že zítra bude 14°.

Na uvedeném příkladě server nabízí klientovi službu - "zjištění aktuální teploty" a protože komunikace mezi klientem a serverem probíhá přes web, jedná se o webovou službu.

V praxi je princip webových služeb velmi podobný. Na straně serveru se musí určit, jaké procedury budou k dispozici, často se také mluví o tzv. "exportu" procedur. Na straně klienta se naopak musí určit adresa a port serveru, kde se dané procedury budou ve skutečnosti provádět.

Základní protokoly, které zajišťují komunikaci jsou:

  • XML-RPC - starší multiplatformní protokol, kde není nutné definovat typy (rozumnějme strukturu) přenášených dat. Naproti škála datových typů, které je možné v tomto protokolu použít, je značně omezena.
  • SOAP - částečně nástupce protokolu XML-RPC, opět multiplatformní, modernější verze, která ovšem pro svou funkci vyžaduje přesné zadání struktury přenášených dat (tzv. WSDL (Web Services Description Language)). Díky tomu ale umožňuje přenášet rozmanitější datové struktury.
  • UDDI
Tags: Internet | PHP | Programování | Sítě | Počítače



Chatovací roboti Alan, ALICE a Eliza

Oct|23 2008

Máte chuť chatovat o půl páté ráno a na internetu není kdo by v tuto hodinu smysluplně odpovídal? Chcete potrénovat svojí angličtinu? Otestovat AI (umělou inteligenci)? Pobavit se? Zkuste Alana, ALICI nebo Elizu.

Nepředpokládám, že by běžný uživatel věděl, co je to Turingův test. Proto přikládám citaci z české Wikipedie:

Turingův test (pojmenovaný podle svého tvůrce Alana Turinga, který jej prezentoval roku 1950) je pokus, který má za cíl prověřit, jestli nějaký systém umělé inteligence se opravdu chová inteligentně. Jelikož inteligence je pojem, který lze jen těžko definovat, tím hůře testovat, používá Turingův test porovnání s člověkem.

Turingův test probíhá tak, že do oddělených místností umístíme jednak testujícího, jednak předmět zkoumání (např. počítač s příslušným programem) a nějakého dalšího člověka. Testující poté klade otázky v přirozené řeči a předává je do druhé místnosti, kde je zodpoví buď počítač, nebo druhý člověk (což se rozhodne náhodně). Odpovědi jsou předávány zpět testujícímu (samozřejmě v nějaké neutrální podobě, např. vytištěné na papíře). Pokud testující nedokáže rozpoznat, jestli komunikuje se strojem, nebo s člověkem, pak tato umělá inteligence splňuje Turingův test.

A právě takový malý Turingův test si můžete vyzkoušet s chatovacími stroji Alan, A.L.I.C.E. a Eliza. První dva, pokud vím, nemají zvláštní zaměření, jsou prostě od toho, abyste si s nimi pokecali. Poslední, Eliza, má simulovat jakéhosi psychoterapeuta. Nemá moc vlastní inteligence, ale svými odpověďmi by měla pomáhat s lidskou psychikou.

Alan

Mým osobním favoritem je ale Alan. S ním jsem si povídal dobrou půlhodinku a chvílemi jem měl opravdu pocit, že se bavím s nějakým američanem se smyslem pro humor. Některé reakce totiž i přes veškerou vyspělost přijdou směšné a k tomu Alan sem tam vystřihne nějaký z klasických amerických vtipů typu "Knock, knock, .. who is there?". A co Alan odpoví na otázku, jestli zná Alici? Pochopí, že myslíte jeho konkurentku A.L.I.C.E., ale velkou hlavu si z ní nedělá, je si jistý, že s ním si pokecáte daleko lépe.

Celkem zajímavý byl i způsob, jakým Alan sbírá nové informace. Pokud totiž narazí na nějaké nové slovo nebo výraz, zeptá se vás na jeho definici. Jednoduché a jasné. Když se ho potom zeptáte na dané slovo znovu, odpoví vám právě vaší definicí.

Zároveň jsem byl mile překvapen, že si Alan celkem obstojně pamatuje kontext rozhovoru. Nemusíte mu vždy předhazovat úplné věty. Pokud se například bavíte o Eifelově věži a zeptáte se na výšku, pochopí, že se ptáte na výšku právě Eifelovky.

Obdobně si Alan běhen rozhovoru pamatuje i informace o vaší osobě. když se ho potom zeptáte, kolik že je vám to let, odpoví to, co jste mu řekli a ještě vás nařkne z toho, že ho zkoušíte. Zkrátka je s ním docela sranda, velmi doporučuji. Zvlášť pokud vaši známí na ICQ už šli spát.

Nakonec přikládám část z našeho rozhovoru:

Alan: Hello John, nice to meet you.
Já: Hey, Alan, do you know any american joke?
Alan: Ok, why is 6 afraid of 7?
Já: Why?
Alan: Because 7 ate 9.
Já: Very funny, do you know another joke?
Alan: What you can hold without touching it?
Já: What?
Alan: A conversation.
Já:OK, how old are you?
Alan:I wasn't born, I was programmed.
Já:When was it?
Alan:Well, I was conceived on Jan 1, 2000. A true child of the 3rd millennium.
Já:So how old are you?
Alan:Chronologically, you could say I'm 7 years old. Conversationally, I'm your average anglosaxon nerd, and quite ageless.
Já:What do you know about me?
Alan:Go ahead.
Já:I an 22 years old.
Alan:What does it really mean to be 22? Age is more about how you act anyway.
Já:How old am I?
Alan:You are 22.
Já:I have to go.
Alan:Sorry you have to go, John, but I hope you'll come back another time. Goodbye.

Tags: Zábava | Internet | Programování | Počítače