marți, 25 noiembrie 2008

Din ciclul "cum să"...

În episodul de azi, cum să rezolvi problema Wordpress "am ales opţiunea 'Protejaţi cu parola această pagină', însă, după primul acces la care s-a cerut parola, pagina se afişează direct".

O chestiune care m-a cam întristat la blogurile Wordpress a fost faptul că, deşi autorul are posibilitatea de a parola articolele sau paginile, cititorii vor constata că la al doilea acces pe pagina respectivă în decurs de zece zile, de la acelaşi calculator, pagina apare direct, fără nicio pretenţie. Doesn't seem that smart of an interface, does it?

Nu cunosc ratiunile poate logice pentru atat timp, dar ideea e că (doar) pentru ultima parolă introdusă în blogul respectiv, se creează un cookie ce rămâne în calculator 10 zile.

Tratamentul simptomatic pe care l-am găsit eu a fost să editez fişierul "wp-pass.php" din rădăcina wordpress prin modificarea numărului de secunde corespunzător perioadei cât va fi pastrat cookie-ul. So, linia
setcookie('wp-postpass_' . COOKIEHASH, $_POST['post_password'], time() + 864000, COOKIEPATH);
a devenit
setcookie('wp-postpass_' . COOKIEHASH, $_POST['post_password'], time() + 1, COOKIEPATH);
Noul numar de secunde e dupa necesitate.

Acu pare sa mearga.

duminică, 23 noiembrie 2008

Off-topic

Sunt singura care isi da ochii peste cap cand vede pe forumurile curs.cs postari la modul "da, deci as vrea si eu sa spun ceva despre tema, si anume intrati pe blogul nostru http://www.vreautraficinterfeteweb.blogspot.com/ pentru a afla ce" ?

Sa luam un exemplu:
Am vazut ca deja a inceput lumea sa anunte diferitele bug-uri aparute in
rezolvarea temei. Completez si eu acesta lista cu ceva observatii puse pe blog, http://interfeteweb4c.blogspot.com/

Felicitari! You scored! Inca un click, inca un link! Sa oferim cititorilor si un delicios preview din ce urmeaza sa afle de pe blog si nu se putea pe thread:

Pentru cei ce inca nu s-au apucat de tema si pentru cei ce nu au terminat,
enumerez cateva lucruri de luat in considerare:
Acu' de ce sa nu recunosc ca enumerezarea care urmeaza e chiar utila. E atat de utila incat va invit sa intrati pe http://interfetewebsmart.blogspot.com/ sa aflati cat. (Auto-linkurile astea se pun? :-s )

P.S.: Da, da, bine, stiu ca suntem in interiorul unei mici comunitati, a celor cu I.O.M., si incercam sa ne marketam si noi dupa putere micile noastre produse, dar...c'mmon..

marți, 18 noiembrie 2008

Agenti Inteligenti in Internet (1)

Web-ul Semantic

Cu totii ne-am dori sa existe roboti care sa caute in Internet raspunsuri la intrebarile noastre. Sa presupunem ca vreti sa aflati cine este autorul fotografiei zilei de pe National Geographic. Nu ar fi deloc greu. Ati putea afla acest lucru in doar cateva secunde. Ati introduce adresa http://photography.nationalgeographic.com/photography/photo-of-the-day in browser si ati citi, imediat sub imagine, numele fotografului.

Cum am putea scrie un program care sa raspunda la aceeasi intrebare? Nu ar fi la fel de usor. In primul rand, acesta va trebui sa gaseasca adresa paginii pe care se afla fotografia si apoi sa inspecteze continutul sursei. Mai departe, lucrurile se complica. Programul trebuie sa fie capabil sa inteleaga limbajul natural, cautand cuvinte care ar putea sa se refere la autorul fotografiei ("author", "photographer", "photograph by"). Mai mult, repetarea unor astfel de cuvinte cheie in sursa paginii ar complica si mai mult sarcina agentului.

Astfel de programe sunt greu de scris, Web-ul fiind gandit pentru utilizarea lui de catre om, si nu de catre masini.

Ca in majoritatea task-urilor din programare, problema se poate simplifica foarte mult prin utilizarea unor structuri de date potrivite. Daca, in afara textului propriu-zis, site-urile ar avea specificatii formale referitoare la continut, astfel de probleme ar deveni triviale.

Ar fi extrem de usor de extras automat informatia dintr-un XML care ar arata cam asa:

<site name="National Geographic">
<page name="Photo Of The Day">
...
<photographer>John Stanmeyer</photographer>
...
</page>
</site>

Mai mult, daca toate site-urile care au o sectiune "Photo Of The Day" ar avea un XML similar, programul ar putea cauta raspunsul la aceeasi intrebare pentru toate acestea.

Web-ul Semantic ar putea fi noul context ce ar face aceste lucruri posibile.


Reprezentarea Cunostintelor si Motoare de Inferenta

O aplicatie din inteligenta artificiala are la baza doua concepte: reprezentarea cunostintelor si motorul de inferenta. Primul descrie semantica folosita pentru descrierea cunostintelor din domeniul aplicatiei, iar cel de-al doilea utilizeaza aceste cunostinte pentru a raspunde la intrebari. Cu cat reprezentarea cunostintelor este mai clara si mai consistenta si motorul de inferenta devine din ce in ce mai simplu.
Web-ul semantic isi propune standardizarea intr-un mod flexibil si extensibil a reprezentarii informatiei in Internet. Acest lucru deschide orizontul unei noi generatii de aplicatii Web.

Tehnologii folosite in Web-ul semantic

XML-ul este tehnologia de baza. Acesta permite adnotarea documentelor stocate electronic, fiind totodata extensibil (spre deosebire de HTML).

RDF-ul (Resource Description Framework) foloseste o metoda traditionala de reprezentare a cunostintelor: tripletele obiect-atribut-valoare. De exemplu:
automobil:culoare:verde
automobil:roti:4
Se foloseste mai des descrierea tripletelor ca fiind: subiect-predicat-obiect (in exemplu automobilul este subiectul, culoarea este predicatul, iar verde este obiectul).
De exemplu, o descriere in RDF a paginii de pe National Geographic ar fi:
<rdf:Description rdf:ID="National Geographic Photo Of The Day">
<photo:title>Drying Mud</photo:title>
<photo:location>Sidoarjo, East Java, Indonesia</photo:location>
<photo:author>John Stanmeyer</photo:author>
</rdf:Description>

Pentru standardizarea predicatelor folosite in documetele RDF, exista tehnologia RDF Schema. Aceste documente (RDFS) definesc limbajul de reprezentare a cunostintelor in RDF.
Un astfel de set de definitii este The Dublin Core.

Ceea ce nu se poate descrie direct prin RDF, relationarea intre predicate, poate fi realizat folosind OWL (Web Ontology Language).

Conceptele care stau la baza RDF si OWL vin din domeniul logicii. Sunt evidente asemanarile dintre relatiile si predicatele discutate mai sus si principiile de la care au plecat bazele de date relationale, respectiv limbajele de programare logica. Astfel RDF si OWL pot fi tehnologiile care sa "lipeasca" informatiile de pe site-uri cu baze de date si limbaje de programare logica folosite pentru crearea agentilor inteligenti pentru Web.

OWL face posibile inferentele bazate pe asocieri reprezentate in modele prin relationare. Exista motoare de inferenta ce pot opera cu tehnologiile web-ului semantic descrise mai sus, printre care:
Jena Reasoner - framework open-source Java dezvoltat de cei de la HP Labs
Jess - scris la Carnegie Melon University, face posibila dezvoltarea de software Java care sa poata rationa utilizand cunostinte reprezentate prin reguli declarative
SWI-Prolog Semantic Web Library - limbaj Prolog care permite dezvoltarea aplicatiilor cu OWL si RDF, cat si un sistem pentru rationare
FaCT++ - reimplementare FaCT care suporta OWL.

Mai multe despre aceste unelte, incepand cu postul urmator.

duminică, 16 noiembrie 2008

Probleme cu EasyPHP?

Am avut de curand 'ocazia' sa ma lovesc de faptul ca EasyPHP nu functioneaza asa de usor cum ii spune numele.
Concret, am intampinat probleme in incercarea de a configura serverul Apache.
Daca v-a dat si voua dureri de cap acest programel, la mine solutia a fost wampserv, o aplicatie care, spre surprinderea mea, este si franceza si functionala in acelasi timp.

vineri, 14 noiembrie 2008

Variabilele de mediu din JavaScript

Netscape, IE, Google Chrome, rezolutie mare pentru Desktop-uri, rezolutie mica pentru PDA-uri... trebuie sa tinem cont de toate atunci cand cream o interfata web.
Dar cum putem obtine aceste informatii?
JavaScript pune la dispozitie posibilitatea accesarii unor variabile de mediu care ne-ar putea ajuta in detectia browser-ului, rezolutiei si nu numai.
Astfel,
pentru aflarea tipului / versiunii de browser - folosim variabila navigator
<html>
<body>
<script type="text/javascript">
document.write('<hr />');
document.write('Browser >>'+ navigator.appName);
document.write('<br/>');
document.write('Versiunea >>'+navigator.appVersion);
</script>
</body>
</html>

,iar pentru aflarea rezolutiei - folosim variabila screen
<html>
<body>
<script type="text/javascript">
document.write('Rezolutie >>' + screen.width + 'x' + screen.height)
</script>
</body>
</html>

Simplu, nu? Dar in aceasta era a 'razboiului rece' dintre browserele web, variabilele navigator si screen se dovedesc a fi foarte utile in realizarea
unei interfete ce nu are culoare 'browsereasca'.

marți, 11 noiembrie 2008

Interfetele evoluate ale cartilor




Un aspect din ce in ce mai intalnit in ultimii ani este aparitia cartilor virtuale. Eu unul m-am intalnit cu acest concept incepand cu literatura de specialitate, fiind destul de populare variantele electronice ale cartilor de IT. Insa lucrurile nu se mai opresc de mult timp la bibliile de C sau C++.


Un pas important a fost facut de Google, cand a introdus Google Books. Probabil ati auzit de aceasta initiativa si stiti mai mult sau mai putin despre proiect. Ei bine, corporatia a oferit o alternativa virtuala banalelor si demodatelor biblioteci ( a se citi observandu-se ironia evidenta) si ne da ocazia sa rasfoim mii de volume online.

Ne putem bucura de toate avantajele unor versiuni electronice, cum ar fi o cautare in carti dupa keywords , pasaje populare, o descriere scurta a cartilor, reviewuri, facilitati pentru a gasi cartea intr-o biblioteca aproape de utilizator samd.

Singura mica problema ar fi legile de copyright. Google nu a cumparat drepturile in totalitate pentur majoritatea cartilor,lucru ce se aplica mai ales la cartile noi. Ce se intampla de fapt, este ca putem face un preview al cartii, sa citim un numar limitat de pagini. Apoi suntem indrumati politicos catre un site de unde am putea cumpara cartea.

Interfata site-ului este una specifica google. Simpla si intuitiva, fara briz-brizuri. Cu toate ca nu sunt un fan al cititului la calculator, in caz de nevoie ( fie ca este o nevoie de documentare stiintifica sau una emotionala, utilizatorul neputandu-si stapani dorinta de a citi pasajul preferat din cartea preferata) se poate apela la Google Books. Initiativa trebuie salutata, deoarece aduce un mare plus de informatie pretioasa pe web.


marți, 4 noiembrie 2008

BOSS-ul de la Yahoo!

..nu, nu este vorba despre CEO, ci despre serviciul de căutare personalizată oferit gratuit entuziaştilor searchurilor de către Yahoo!.

Build your Own Search Service ne ajută, asadar, să creăm motoare de căutare după pofta inimii. Că tot vorbim de pofte, este deja celebru :) http://www.v3ggie.com/, un produs BOSS menit să facă viaţa vegetarienilor mult mai uşoară, punându-le acestora pe tavă de la adrese ale restaurantelor de profil pâna la reţete delicioase fără ingrediente care cândva au avut faţă. Eu însa voi propune un exemplu mult mai digerabil, mai la îndemână şi mai simplu: site-search-ul.

Cei care doresc un site-search nu trebuie acum decât scrie un minuscul php.

Se începe cu un appid (application id), pe care îl obţii de la http://developer.yahoo.com/search/boss/.
În principiu, rezultatele căutarii sunt înscrise într-un xml (sau json, în funcţie de formatul preferat), pe care îl primeşti de la url-ul format astfel:

http://boss.yahooapis.com/ysearch/web/v1/ +
ce cauţi +
site-ul pe care cauţi +
paramterii 'appid' şi 'format'

Odată obţinut xml-ul - să zicem, extragi elementele care te interesează şi le afişezi. În php există pentru asta SimpleXMLElement. Mai precis:

$query = 'ceva';
$Appid = [appid-ul tau];
$Site="+site:www.siteultau.ro";
$results = new SimpleXMLElement('http://boss.yahooapis.com/ysearch/web/v1/'.$query.$Site.'?appid='.$Appid.'&format=xml',NULL,TRUE);

Iterezi, apoi, prin rezultate cu:

foreach ($results->resultset_web->result as $result)

şi poate ai nevoie de:

$result->clickurl
$result->title
$result->abstract
$result->dispurl.

Un exemplu complet pentru download pe Interfete Web Smart.

In concluzie, BOSS-ul nu va găsi chiar the purpose of meaning, dar este un tool util în materie de search.

Căutare placută!

luni, 3 noiembrie 2008

CSS Specificity


Incepem cu esentialul:
De ce este importanta specificitatea in CSS?
Pentru ca proprietatile unui element html care vor fi luate in considerare vor fi acelea care au specificitatea cea mai mare.

De exemplu, avand acest code html :
<div id="principal">
<p>Interfete web in actiune!</p>
</div>

si css-ul asociat:
p{color: red} /*proprietate A*/
#principal p{color: green} /*proprietate B*/

culoarea paragrafului va fi cea verde, intrucat aceasta este cea mai specifica.

Concret, specificitatea se poate calcula astfel:
Fiecare selector se situeaza pe unul dintre aceste 4 nivele:
(1) Stiluri imbricate in codul html
de exemplu <p style="color: red;">
(2) Identificatori
de exemplu #principal
(3) Clase, atribute sau pseudo-clase
de exemplu .clasa, [atribut], :hover
(4) Elemente si pseudo-elemente
de exemplu p, :before

Putem asocia unui element X urmatoarea formula:
specificitate(X) = 1000*(1) + 100*(2) + 10*(3) + (4),
unde (niv) = numarul de selectori de pe nivelul niv.

In cazul nostru,
specificitate(proprietate A) = 1000*0 + 100*0 + 10*0 + 1 = 1,
specificitate(proprietate B) = 1000*0 + 100*1 + 10*0 + 1 = 101,

ceea ce inseamna ca a doua regula este cea mai specifica, deci ea va fi luata in considerare.
In cazul in care exista 2 proprietati cu aceiasi specificitate, va fi luata in considerare ultima propritate.

Si de ce este asa de utila specificitatea?
Poate nu se observa imediat importanta acestui mecanism, dar privind inapoi, prin analogie, este aceeasi diferenta ca intre limbajele de programare moderne si cele de la inceputuri.
Mecanismul specificitatii devine foarte comod pentru modularizarea si reutilizarea codului, iar interfata are de castigat in claritate si performanta.

duminică, 2 noiembrie 2008

3, 2, 1 ... Start!

Totul despre interfete web: css, html, javascript, flex, orice te ajuta sa iti realizezi propriile interfete web


Noi, adica Iulia, Raluca, Alex si Tudor, va uram bun venit pe blogul nostru, unde vom "diseca" interfetele web, punandu-va la curent cu tehnologiile si tendintele de succes din acest domeniu.
Pentru a ne cunoaste mai bine, vizitati-ne pe site-ul oficial al firmei noastre - www.interfetewebsmart.dap.ro