joi, 15 ianuarie 2009

Interfete evoluate, utilizatori... mai putin

Tot vorbeam intr-un articol precedent despre Wii de la Nintendo. V-ati gandi ca e o jucarie inofensiva, care ocazional te poate face sa arati ridicol? V-ati inselat in legatura cu prima parte!



Poate-l ajuta Mama cumva...

marți, 13 ianuarie 2009

Uber Interfete!



Folosind ultimele cercetari in neuro-tehnologie, Emotiv Systems au dezvoltat o casca revolutionara, in scopul interactiunii intre om si calculator. Avatarurile prind astfel viata, folosind expresii faciale in timp real, interactioneaza cu continuturi ce raspund emotiilor tale si controleaza obiecte cu puterea mintii!

Emotiv este compania care a aruncat pe piata interfetele om-masina ale viitorului. E ca si cum iei tot ce stim pana acum despre interfete, il lustruiesti si obtii ceva cu totul si cu totul nou, ale carui noi posibilitati ti se par infinite.


Cei de la Emotiv s-au gandit sa proiecteze o serie de interfete om-masina care sa faca adauge la caracterul voluntar al comunicarii dintre cele doua entitati si dimensiunea inconstienta a acesteia. Solutiile EPOC sau EmoKey sunt emblema companiei orientata in acest moment catre industria jocurilor video, dar al carei scop declarat, pentru viitor, este acela de a oferi solutii in domenii industriale cat mai diverse.

Aruncati o privire si in ograda celor de la Emotiv Systems!

A doua viata!

O parere neavizata despre interfete om masina...

De la Nintendo Wii si SecondLife la Sinulator sau Emily! Intram intr-o alta lume (virtuala?!) sau exploram o realitate necunoscuta pana acum?

Introducere in tehnologii XML -- Part 2 -- SAX

SAX (Simple API for XML) este un parsre cu acces serial pentru XML ,oferind un mecanism de citire al datelor dintr-un fiser de tip XML.

Orice parser care implementeaza SAX va fi un parser de stream condus de evenimente. Asta se traduce liber in faptul ca in momentul in care parsarea va detecta un anumit eveniment (inceput de fisier ,inceput de tag ,sfarsit de fiseri ,etc) se va declansa un trigger care va apela o metoda definita de user ,astfel reusindu-se sa se extraga informatii din fiser.

Parser-ul SAX are doua avantaje majore asupra DOM - ului : este mai rapid si foloseste mai putina memorie. Totusi ,SAX este destul de dificil de folosit cand avem fisiere XML de stul de complicate ,uesr-ul putand gresi cand defineste metodele ce se declanseaza la diferite tipuri de evenimente.

De exemplu ,avand urmatorul XML

<rootelement param="value"> <firstelement> Some Text </firstelement> <secondelement param2="something"> Pre-Text <inline>Inlined text</inline> Post-text. </secondelement> </rootelement>

Parserul XML va genera o secventa de evenimente similare cu:
  • XML Processing Instruction,numita xml, cu atributele version egal cu "1.0" si encoding egfal cu "UTF-8"
  • XML Element start, numit RootElement, cu un atribut param egal cu "value"
  • XML Element start, numit FirstElement
  • XML Text node, cu data "Some Text"
  • XML Element end, numit FirstElement
  • XML Element start, numit SecondElement, cu un atribut param2 egal cu "something"
  • XML Text node, cu data "Pre-Text"
  • XML Element start, numit Inline
  • XML Text node, cu data "Inlined text"
  • XML Element end, numit Inline
  • XML Text node,cu data "Post-text."
  • XML Element end, numit SecondElement
  • XML Element end, numit RootElement

XML: Atribute versus Elemente

Lucrand la cel mai recent produs al nostru, un parser de arhive pentru diverse aplicatii de tip instant messenger, una din sarcinile pe care le-am avut de indeplinit a fost aceea de a construi o serie de fisiere XML, prin intermediul carora sa modelez informatia legata de tot ceea ce insemna o arhiva specifica unei astfel de aplicatii:

<?xml version="1.0" encoding="UTF-8" ?>

<log>

<auth>

<username value="user1">

<password value="pass1"/>

</auth>

Intrebare fireasca in aceasta situatie: user1 este valoare a elementului <username/> sau poate fi valoarea luata de un atribut al acestui element. Intrebare care se pare ca este pe buzele tuturor celor ce opteaza pentru modelarea datelor cu ajutorul XML.

Raspunsuri variate. Sigur este ca nu exista nici o regula, nici un standard in ceea ce priveste aceasta alegere.

 

Un articol interesant, scris de Uche Ogbuji, de la IBM, mi-a atras atentia. Acesta propune un set de 4 reguli pentru rezolvarea acestei dileme:

·         daca informatia poate fi marcata ea insasi cu elemente, atunci devine element.

·         daca este mai bine ca informatia sa devina atribut, dar exista posibilitatea ca elementul in cauza sa primeasca si alte atribute, atunci se recomanda folosirea unui nou etaj, de copii, informatiile devenind valori ale elementelor.

·         daca informatia trebuie sa se incadreze intr-un standard asemanator DTD, acesta cerand atribute specifice (ID, IDREF, ENTITY), se foloseste un atribut.

·         daca informatia nu trebuie normalizata, in vederea caracterelor whitespace, se folosesc elementele.

 

Cum bine remarca autorul articolului referit, lucrurile nu sunt atat de clare cand vine vorba de identificarea cazului in care te afli la un moment dat. Lasam asadar regulile la o parte si incercam cateva „sugestii”.

 

In primul rand, din categoria asa-NU:

·         faceti totul un element”: argumentele folosite pentru a sprijini aceasta idee variaza de la „Atributele complica lucrurile” pana la „Atributele inhiba extensibilitatea”. Totusi, nefolosirea atributelor, anuleaza unul dintre cele mai importante aspecte ale XML-ului.

·         daca este genul de continut ce trebuie afisat in browser, folositi valoarea unui element”. Problema cu aceasta sugestie este faptul ca incurajeaza utilizatorii sa gandeasca design-ul de continut al XML in termeni de prezentare, doua aspecte care este important sa nu fie amestecate.

 

Intr-un articol viitor, vom reveni si cu sugestiile de tip asa-DA.

 

Surse:

http://www.ibm.com/developerworks/xml/library/x-eleatt.html

http://xmleverywhere.com/newsletters/20000525.htm

 

Introducere in tehnologii XML -- Part 1 -- DOM

DOM este un standard World Wide Web Consortium pentru accesarea documentelor XML sau XHTML.

Din punc de vedere structural DOM - ul se imparte in trei niveluri :
  • Core DOM - modelul standard pentru orice fel de document structurat
  • XML DOM - modelul standard pentru fisere XML + obiecte si propietati ale elemetelor documentului
  • HTML DOM - modelul standard pentru fisere HTML + obiecte si propietati ale elemetelor documentului
Practic ,tot ce se afla intr-un fiser XML este un nod ,principiile fiind acestea:
  1. Intregul document este un nod de tip document
  2. Oricare element XML este un nod de tip element
  3. Textul dintr-un fisier XML este un nod de tip text
  4. Oricare atribut XML este un nod de tip atribut

De exemplu pentru urmatorul XML ,DOM-ul asociat ca avea structura:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

















Proprietati DOM

  • x.nodeName - numele lui x
  • x.nodeValue - valoarea lui x
  • x.parentNode -nodul parinte al lui x
  • x.childNodes - nodurile copii ale lui x
  • x.attributes - nodurile atribut ale lui x

Metodele utilizate in DOM

  • x.getElementsByTagName(name) - extrage un element cu numele "name"
  • x.appendChild(node) - se insereaza un nod copil sub nodul x
  • x.removeChild(node) - se sterge un copil din nodul x

Securitate site ReCaptcha

Zilele trecute am primit sarcina de a face o mica aplicatie care sa stopeze spamul nedorit facut de roboti automati pe un site (nu dau nume sa nu fac publicitate).

Dupa o studiere mai atenta a problemei ,am ajuns la solutie : CAPTCHA ,in traducere libera "Completely Automated Public Turing test to tell Computers and Humans Apart".Si da ,aceasta este baza imaginilor enervante care contin text si care trebuiesc studiate cand vrei sa te inscrii undeva sau sa postezi vreun comentariu.






Mai multe detalii depsre subiectul de baza CAPTCHA la http://en.wikipedia.org/wiki/CAPTCHA

Continuand cautarile am gasit o librarie gratuita pe www.recaptca.net ,tot ce trebuie sa faci este sa iti creezi un cont gratuit si sa obtii doua chei : una publica si una secreta pentru domeniul tau.

Am gasit pe code.google.com si libraria in java pentru aplicatie ,iar restul implementarii a fost floare la ureche.

Daca vreodata aveti nevoie de o asemenea aplicatie pentrul site-ul vostru ,va recomand ReCaptcha ,aceasta fiind bine documentata si foarte usor de implementat.