luni, 10 decembrie 2007

Tool monotorizare site

Intrucat la un moment dat ramasesem fara Google Analytics din oarecare motive, am cautat un alt tool de monitorizarea site-ului si a blogului. Am dat de mon.itor.us care din pacate nu testeaza decat cat de repede raspunde site-ul tau la diferite query-uri ale motorului de cautare. Acest utilitar iti construieste si un grafic pentru a vedea timpii la care siteul tau raspunde la cereri. Trebuie sa iti faci un cont la ei si ai la dispozitie un meniu cu care iti poti gestiona site-urile pe care le-ai inscris. Pretul este postarea bannerului lor pe site :)

miercuri, 5 decembrie 2007

Despre laboratorul de XSL

Saptamana trecuta, in cadrul laboratorului de IE, am avut de facut un document .xsl asociat profilului creat in tema 1. Impreuna cu Alina, am plecat de la profilul din tema mea:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v2007 (http://www.altova.com) -->
<?xml-stylesheet type="text/xsl" href="profil.xsl"?>
<!DOCTYPE PROFIL SYSTEM "profil1.dtd">
<PROFIL CNP="D2841110030018">
<GENERAL>
<NUME>NECULA</NUME>
<PRENUME>DIANA</PRENUME>
<SEX TYPE="FEMININ"></SEX>
<DATA_NASTERII>10 Noiembrie 1984</DATA_NASTERII>
<ORAS>CAMPULUNG</ORAS>
<JUDET>ARGES</JUDET>
<LIMBI_VORBITE>ENGLEZA</LIMBI_VORBITE>
<LIMBI_VORBITE>SPANIOLA</LIMBI_VORBITE>
<LIMBI_VORBITE>FRANCEZA</LIMBI_VORBITE>
<LICEU>LICEUL TEORETIC "DAN BARBILIAN"</LICEU>
<FACULTATE>FACULTATEA DE AUTOMATICA SI CALCULATOARE BUCURESTI</FACULTATE>
<CASATORIT>NECASATORIT</CASATORIT>
</GENERAL>
<RELATII_SOCIALE>
<ALTE_PROFILE ID_PERSOANA="A1">
<TIP_RELATIE>PRIETENIE</TIP_RELATIE>
<NUME>VLAD</NUME>
<PRENUME>DIANA</PRENUME>
<TELEFON_FIX>0248544444</TELEFON_FIX>
</ALTE_PROFILE>
<ALTE_PROFILE ID_PERSOANA="A2">
<TIP_RELATIE>COLEGI</TIP_RELATIE>
<NUME>RADU</NUME>
<PRENUME>ALINA</PRENUME>
<TELEFON_MOBIL>0722222222</TELEFON_MOBIL>
</ALTE_PROFILE>
<ALTE_PROFILE ID_PERSOANA="A3">
<TIP_RELATIE>COLEGI</TIP_RELATIE>
<NUME>BUCATA</NUME>
<PRENUME>CATALIN</PRENUME>
</ALTE_PROFILE>
<ALTE_PROFILE ID_PERSOANA="A4">
<TIP_RELATIE>COLEGI</TIP_RELATIE>
<NUME>COSTACHE</NUME>
<PRENUME>STEFAN</PRENUME>
</ALTE_PROFILE>
<ALTE_PROFILE ID_PERSOANA="A5">
<TIP_RELATIE>COLEGI</TIP_RELATIE>
<NUME>CIRJAN</NUME>
<PRENUME>DRAGOS</PRENUME>
</ALTE_PROFILE>
<ALTE_PROFILE ID_PERSOANA="A6">
<TIP_RELATIE>FUN</TIP_RELATIE>
<NUME>IONESCU</NUME>
<PRENUME>MARIAN</PRENUME>
<TELEFON_MOBIL>0724292434</TELEFON_MOBIL>
</ALTE_PROFILE>
</RELATII_SOCIALE>
<CONTACT>
<ADRESA>
<STRADA>CARPATI</STRADA>
<NR>82</NR>
<BLOC>P2</BLOC>
<SCARA>C</SCARA>
<ETAJ>3</ETAJ>
<APARTAMENT>14</APARTAMENT>
<ORAS>CAMPULUNG</ORAS>
<JUDET>ARGES</JUDET>
<COD>115100</COD>
</ADRESA>
</CONTACT>
<PROFESIONAL>
<OCUPATIE>STUDENT</OCUPATIE>
<DOMENIU>CALCULATOARE</DOMENIU>
<NUME_COMPANIE>FACULTATEA DE AUTOMATICA SI CALCULATOARE </NUME_COMPANIE>
<DESCRIERE_OCUPATIE>Studenta in anul 5, specializarea C1</DESCRIERE_OCUPATIE>
</PROFESIONAL>
</PROFIL>

Fisierul de stil asociat a fost:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th align="left"><big>Nume</big></th>
<th align="left"><big>Prenume</big></th>
<th align="left"><big>Data nasterii</big></th>
<th align="left"><big>Oras</big></th>
<th align="left"><big>Judet</big></th>
<th align="left"><big>Facultate</big></th>
</tr>

<xsl:for-each select="PROFIL/GENERAL">
<tr>
<td><xsl:value-of select="NUME"/></td>
<td><xsl:value-of select="PRENUME"/></td>
<td><xsl:value-of select="DATA_NASTERII"/></td>
<td><xsl:value-of select="ORAS"/></td>
<td><xsl:value-of select="JUDET"/></td>
<td><xsl:value-of select="FACULTATE"/></td>
</tr>
</xsl:for-each>
</table>

<table border="1">
<tr>
<th align="left"><big>Relatie prietenie</big></th>
<th align="left"><big>Nume</big></th>
<th align="left"><big>Prenume</big></th>
<th align="left"><big>Telefon</big></th>
</tr>

<xsl:for-each
select="PROFIL/RELATII_SOCIALE/ALTE_PROFILE">
<tr>
<td><xsl:value-of select="TIP_RELATIE"/></td>
<td><xsl:value-of select="NUME"/></td>
<td><xsl:value-of select="PRENUME"/></td>
<td><xsl:value-of select="TELEFON_MOBIL|TELEFON_FIX"/></td>
</tr>
</xsl:for-each>
</table>

</body>
</html>
</xsl:template>
</xsl:transform>

Deschizand noul fisier .xml in browser, vor fi obtinute doua tabele: unul cu informatii generale despre mine, si unul cu relatiile de prietenie si detaliil
Ca o observatie, trebuie sa fim atenti atunci cand facem selectia din XML, campurile selectate sa fie scrise la fel ca si in XML (in acest caz, cu litere mari, ex: PROFIL, ORAS etc)

duminică, 2 decembrie 2007

Ontologii in domeniul informatic

Ontologia in domeniul informatic

Ontologia in domeniul informatic face referire la incercarea de a formula o schema conceptuala exhaustiva si riguroasa in interiorul unui domeniu dat, avand drept scop facilitarea comunicatiei si impartirea informatiei intre diverse sisteme. Termenul de ontologie este intalnit in special in inteligenta artificiala si in domeniul reprezentarii cunostintelor.

O ontologie cuprinde:

- categoriile, conceptele fundamentale

- proprietatile conceptelor

- relatiile si diferentele dintre concepte

Este important sa ne gandim la o partajare a cunostintelor. Orice document XML poate fi considerat ca fiind o ontologie de ordin 0. Din punct de vedere formal, exista ontologii axiomatice (fac distinctia sub-tipurilor prin axiome si definitii specificate intr-un limbaj formal) si ontologii bazate pe prototipuri: disting sub-tipurile prin comparatia cu un membru tipic ori specificând un prototip pentru fiecare sub-tip în parte.

Limbajele bazate pe logici descriptive sunt: OIL (Ontology Inference Layer), RDFS( RDF Schema), OWL (Web Ontology Language) . OWL poate descrie semanticile claselor si proprietatile folosite in documentele web. OWL, fiind bazat pe XML, se foloseste pentru a partaja diferse ontologii intre aplicatii. Limbajul OWL suporta 3 versiuni: OWL Lite (poate face o clasificare ierarhica si simpla a caracteristicilor de constrangere), OWL DL (DL – Description Logic), OWL Full.

Exemplu: ontologie din domeniul animal

<rdfs:Class rdf:ID="cal">
   <rdfs:subClassOf rdf:resource="#mamifer" />
   <rdfs:subClassOf rdf:resource="#ierbivor" /> 
   <oil:hasPropertyRestriction> 
       <oil:ValueType> 
           <oil:onProperty 
              rdf:resource="#consuma" /> 
           <oil:toClass rdf:resource="#planta" /> 
       </oil:ValueType> 
       <oil:hasFiller> 
           <oil:onProperty 
              rdf:resource="#culoare" /> 
           <oil:stringFiller> 
              negru
           </oil:stringFiller> 
       </oil:hasFiller> 
   </oil:hasPropertyRestriction> 
</rdfs:Class> 

Enunt Tema 3

Se cere sa se implementeze o componenta Javascript la alegere dintre cele ce vor fi prezentate mai jos. Dupa ce sunt prezentate la laborator si dupa ce trece termenul de predare al temei, scripturile vor fi integrate pe site-ul proiectului. Ca si la tema precedenta 2 studenti care lucreaza la acelasi proiect nu vor putea sa-si aleaga aceeasi tema.
Fiecare tema are 2 variante - varianta mai simpla presupune numai utilizarea javascript si o tema facuta perfect poate obtine maxim 7p din 10. Varianta mai complexa presupune si utilizarea unui limbaj server-side (java, asp, php, etc.) + ajax si poate aduce 14 (tot din 10) smile

Temele sunt urmatoarele:

a) implementarea unui calendar pe site (folosind YUI).

  • varianta simpla - numai javascript: In calendar trebuie sa apara cu o culoare diferita datele cand au fost adaugate posturi pe blogul proiectului si la click pe una din zilele astfel subliniate sa se deschida pagina cu postul respectiv. maparea intre posturi linkuri si date se face static folosind un fisier de configurare.
  • acelasi comportament dar maparea intre posturi, linkuri si date se face dinamic folosind o baza de date si Ajax pentru incarcarea url-ului numai la click
b) contor (pe langa cel de la trafic sau de la google analytics)
  • varianta simpla ce foloseste numai javascript: la accesul pe site este afisat tipul browserului utilizatorului si de cate ori a mai accesat site-ul (se folosesc cookies si obiectul navigator http://www.w3schools.com/js/js_browser.asp )
  • varianta complexa - se foloseste ajax pentru a pastra vizitele intr-o baza de date si se actualizeaza live pe site (o data la 30 de secunde) numarul de pagini vizitate si de vizitatori unici
c) topul articolelor
  • varianta simpla - numai javascript: intr-o pagina a site-ului este prezentata lista cu titlurile articolelor publicate pana in acel moment. utilizatorul poate sa ordoneze articolele respective dupa preferinta si la sfarsit apasand pe butonul "save" sa reafiseze intr-un tabel linkurile in ordinea data de utilizator
  • varianta mai complicata: la sfarsitul ordonarii utilizatorul sa-si salveze alegerea si folosind AJAX sa i se afiseze lista articolelor in ordinea preferintelor globale ale utilizatorilor (se va folosi un sistem de scor - de exemplu primul primeste 10p, al doilea 8, al treilea 6, etc.) si scorul fiecaruia
d) autocomplete (exemplu: http://www.google.com/webhp?complete=1&hl=en)
  • varianta simpla: intr-un input de tip text se tiparesc caractere. Pe masura ce se tiparesc se cauta articolele dupa titlu intr-o lista initializata static si se ofera utilizatorului o lista cu articolele al caror titlu incepe cu caracterele tastate. dupa selectarea articolului se afiseaza linkul catre articolul respectiv.
  • varianta complexa: acelasi comportament dar cautarea se face intr-o baza de date folosind Ajax.
Dupa cum mi s-a atras atentia sunt si proiecte la care participa 5 persoane. numai pentru aceste grupe mai este valabila urmatoarea optiune:
e) implementarea unui select cu numele participantilor la proiect
  • varianta simpla (doar javascript) - la selectarea unuia dintre participanti se afiseaza un tabel cu linkuri catre toate temele sale (dintr-o lista initializata static)
  • varianta complexa - acelasi comportament dar folosind o baza de date si Ajax.

sâmbătă, 24 noiembrie 2007

Tema 2

Cred ca se cuvine sa amintesc si subiectul Temei 2 la Interfete Evoluate, deoarece Diana a vorbit despre ea in postul de mai jos.

Tema cerea sa realizam analiza unui website de tip comunitate electronica. Se pretau la capitolul asta atat retelele sociale de tip myspace, hi5, yahoo 360, facebook, orkut, cat si forumuri de aproape orice natura.
Ce cerea mai exact tema era sa ne alegem o astfel de comunitate si sa extragem relatiile dintre membrii ei, apoi sa le punem intr-o baza de date. Asta pe scurt. Majoritatea lumii a pornit de la profilul de hi5 si si-a extras prietenii si prietenii prietenilor, pana la o anumita adancime.
Sau daca alegeai un forum, puteai sa analizezi cine a dat replica si cui, sau cine a citat pe cine.
La unele comunitati era mai greu pentru ca trebuia sa gasesti o metoda sa te autentifici pe profilul tau ca sa il poti analiza, pentru ca unele nu sunt publice. Vezi cazul Orkut.
Din pacate... n-am mai ajuns sa fac tema asta, desi ar fi fost interesant.

marți, 20 noiembrie 2007

Etape pentru realizarea celei de-a doua tema la IE

Dupa o scurta discutie cu Dragos in laborator, m-am decis sa fac tema a doua in PHP si MySQL. Dragos mi-a aratat in 4 linii de cod, cum poti sa extragi tot continutul unei pagini web, sa extragi toate linkurile din aceasta si sa faci afisarea lor. Site-ul analizat a fost http://forum.softpedia.com. De aceea, acum, dupa ce am finalizat tema, pot spune ca am parcurs 4 etape:
1. Extragerea tuturor forumurilor.
2. Am ales aleator un forum si pentru acesta am extras toate topicurile care au fost postate.
3. Am ales aleator un topic si am extras toti utilizatorii care au postat pe acel topic.
4. Am populat tabela de relatii.
Ca si tabele, am folosit 4 tabele:
1. Tabela de forumuri care contine printre altele, id-ul forumului, numele sau, url-ul si daca este subforum sau nu.
2. Tabela de topicuri ce contine: id topic, nume topic, url
3. Tabela de utilizatori: oid, username si url
4. Tabela de relatii: id_initiator (cine posteaza), id_post, id_reply (daca mesajul este un reply, pun id-ul acelui postul), tip_relatie("Nu este un mesaj special", "Postul X este un reply la postul Y", "Postul X este un snapback la postul Y").
Pot spune ca a fost o tema destul de interesanta, care mi-a aratat in primul rand cat de util este php-ul.
Drept tutoriale am folosit www.php.net, iar pentru partea de expresii regulate am folosit wikipedia.

joi, 15 noiembrie 2007

NewsFlash!

Site-ul nostru http://interfeteevoluate.webhop.org/ a fost indexat de google. Din acest moment incepe lupta pentru o pozitie cat mai buna:D. Cei din urma vor fi cei dintai so whatch out! :P

miercuri, 14 noiembrie 2007

Unealta pentru laboratorul 6 de Interfete Evoluate

Astazi am fost la laboratorul de Interfete Evoluate. Dupa ce am discutat de XML Schema, a trebuit sa transformam DTD-ul pentru tema 1 in XML Schema.
Ei bine, dupa ce m-am chinuit cam un sfert de ora sa "traduc" DTD-ul creat de mine pentru tema 1 in XML Schema, am gasit si un tool de generare automata din .dtd in .xsd
Din pacate era prea tarziu, pentru ca terminasem deja task-ul de laborator. Dar aviz amatorilor!
Acest tool se foloseste online si va scuteste de ceva munca.
Try it!
http://www.hitsw.com/xml_utilites/

marți, 6 noiembrie 2007

Tool folositor pentru prima tema

Editix este o alta aplicatie cu ajutorul careia puteti crea si dezvolta documente bazate pe tehnologii XML, acest soft putand fi downloadat de pe site-ul www.editix.com.
Programul are atat optiune pentru validare documentelor XML "Check for a well-formed/valid document", cat si optiune pentru genererea documentului DTD "Generate a DTD from this document".

Interfata utilizator are un set de meniuri care sunt active in functie de tipul documentului curent, acesta fiind selectat dintr-o lista de optiuni in momentul crearii unui document nou.
Pentru a va face o impresie despre utilitatea folosirii programului Editix, iata documentele care se pot crea cu ajutorul lui: XML, DTD, XSLT, XHTML, TEXT, FO, RNG, XSD, SVG, DOCBOOK, ANT.

Merita sa-l incercati, deoarece cu ajutorul EditiX-ului se poate rezolva foarte usor prima tema.

luni, 5 noiembrie 2007

Promovare site sau blog!

Ne-am gandit sa creem o modalitate de promovare a site-ului sau blogului dumneavoastra.
Astfel, daca doriti sa va faceti cunoscut, ne puteti scrie un email la adresa ievoluate2007 at gmail.com , cu un link catre site. In functie de continut, vom adauga o legatura, fie in sectiunea Links, fie in cea de Alte bloguri.
Blogul nostru este indexat de Google, astfel incat veti putea fi gasiti mai usor la un simplu search.
Rugamintea noastra este ca pe site-ul dumneavoastra sa adaugati o legatura catre blogul sau site-ul nostru.
O promovare reciproca va duce catre un numar crescut de utilizatori.
Va multumim!

duminică, 4 noiembrie 2007

Alte tool-uri

Un tool care poate fi folosit pentru realizarea temelor este "good ol'" Kate.
Are plug-in-uri speciale pentru XML, care va vor ajuta sa duceti la bun sfarsit cu usurinta prima tema de interfete evoluate.
Plug-in-urile sunt incluse in modulul kdeaddons. Acestea se pot instala in felul urmator:

  1. Pachetele binare sunt disponibile pentru majoritatea distributiilor. Instalati pachetul binar folosind front-end-ul pentru managerul vostru de pachete (Synaptic, Yast), sau compilati modulul de mana.

  2. Deschideti fereastra de configurare din Kate, alegand Settings->Configure Kate... menu item.

  3. Selectati item-ul care va intereseaza dn arborele de aplicatii, de exemplu autocompletarea - Kate XML Completion sau validatorul - Kate XML Validation. Puneti un check in check-boxurile corespunzatoare.

  4. Vi se va cere sa reporniti Kate.
  5. Voila! Acum puteti sa scrieti XML-uri mult mai usor.

Sfaturi legate de prima tema

A venit vremea pentru rezolvarea primei teme. Pentru a realiza aceasta tema am instalat o versiune trial a XMLSpy, un program destul de util, desi eu l-am folosit doar pentru a edita un xml. Cu acest soft iti poti verifica valididatea xml-ului. Daca totul este ok, poti genera automat pe baza xml-ului un .dtd. Aici intervine insa o problema. Daca doresti generarea automata, nu vei obtine exact ceea ce ai vrut. De exemplu: in cazul in care ai in documentul .xml linia:

SEX TYPE="FEMININ"

in .dtd-ul generat automat obtii:

ATTLIST SEX TYPE CDATA #FIXED "FEMININ"

desi ceea ce vroiai este:

ATTLIST SEX TYPE (FEMININ|MASCULIN) #REQUIRED

Cel mai bine in acest caz este sa iti definesti singur lista de atribute si sa folosesti un validator pentru cele doua documente. Un astfel de validator il gasiti la www.validome.com. Selectezi optiunea XML, incarci in partea stanga xml-ul, iar in partea dreapta copy-paste la .dtd. Daca totul este ok, ar trebui sa obtii “THIS DOCUMENT IS VALID”.

Diana


sâmbătă, 3 noiembrie 2007

Hello World!

Hello! Pe acest blog vom posta informatii legate de Interfete Evoluate.

Welcome!

Acesta este blogul echipei formata din:
Alina Radu
Catalin Bucata
Diana Necula
Dragos Cirjan
Stefan Costache