marţi, ianuarie 15, 2008

XQuery

XPATH este un limbaj de interogare a documentelor XML, o interogare returnand un set de date continand noduri sau valori scalare. Datorita limitarilor XPATH in cazul procesarii unor cantitati mari de date sau in cazul surselor de date multiple a fost dezvoltat limbajul XQUERY care extinde XPATH 2.0 si preia si functionalitati din XSLT (XSL Transformations – limbaj folosit pentru transformari ale documentelor XML).


XQUERY permite interogari care includ documente multiple si este integrat in database engine.

O interogare XQUERY consta in doua sectiuni principale:

§ sectiunea prolog – optionala, folosita pentru declaratii (declararea spatiilor de nume, declararea schemelor)

§ sectiunea body (corpul interogarii) – interogarea propriu-zisa in care expresii XQUERY sunt folosite pentru a specifica datele ce vor fi returnate

O expresie XQUERY utilizeaza o cale XQUERY (bazata pe limbajul XPATH) pentru localizarea unui nod intr-un document xml. O cale XQUERY poate fi absoluta (locatia unui nod este decrisa fata de elementul root) sau relativa (fata de un nod identificat).


Unul dintre IDE-urile cele mai folosite pentru a scrie si rula cereri XQuery se afla Altova XMLSpy. Acesta are o interfata intuitiva si este usor de utilizat, avand toate facilitatile necesare pentru a lucra cu tehnologiile bazate pe XML.


Printre alte IDE-uri utile se mai afla Eclipse sau JDeveloper, recomandate celor care prefera sa aibe toate facilitatile de programare intr-o singura aplicatie: suport pentru Java, Oracle, XML.

sâmbătă, decembrie 08, 2007

Date in Javascript

Am gasit o problema foarte suparatoare in legatura cu calendarul pentru site:Interfete evoluate.

Pentru a deschide paginile cu posturi dintr-o anumita zi am scris un select handler, dupa modelul de pe site:
var mySelectHandler = function(type,args,obj) {
var dates = args[0];
var data = dates[0];
for(i = 0; i
var ev=schedule[i];
if(ev.data.getFullYear()==data[0]
&& ev.data.getMonth()==data[1]
&& ev.data.getDate()==data[2]){
window.open(ev.eveniment);}}}

unde ev este creat in felul urmator:

var ev6 = new Date();
ev6.setFullYear(2007, 12, 5);
schedule.push({data:ev6, eveniment:"http://userfriendly-blog.blogspot.com/2007/12/mozilla-firefox.html"});

Problema e urmatoarea: daca las data asa cum este, si o sa dau click pe ziua 5 decembrie din calendar, nu o sa faca nimic. Daca o sa modific luna si o sa pun 11 in loc de 12 si o sa dau click pe ziua de 5 noiembrie o sa imi deschida postul dorit.

Dupa ce am afisat data curenta am observat ca 2007 12 5 este de fapt 2008 0 5. Asta inseamna ca in Javascript numarul lunilor incepe de la 0(ianuarie), si se termina cu 11(decembrie). Din nefericire, datele din calendarul YUI incep ca numar de luna cu 1 si se termina cu 12. Deci, ca totul sa functioneze cum trebuie, trebuie adunat 1 la numarul lunii. Rezultatul e urmatorul:

var mySelectHandler = function(type,args,obj) {
var dates = args[0];
var data = dates[0];
for(i = 0; i
var ev=schedule[i];
if(ev.data.getFullYear()==data[0]
&& (ev.data.getMonth()+1)==data[1]
&& ev.data.getDate()==data[2]){
window.open(ev.eveniment);}}}

var ev6 = new Date();
ev6.setFullYear(2007, 11, 5);
schedule.push({data:ev6, eveniment:"http://userfriendly-blog.blogspot.com/2007/12/mozilla-firefox.html"});

Nu am incercat inca sa vad daca aceeasi problema exista si pentru zilele dintr-o luna, daca si ele incep de la 0 si se termina la 27, 28, 29 sau 30, in functie de luna. Oricum, daca vi se pare ca nu functioneaza fix in ultima zi a unei luni, solutia s-ar putea sa fie aceeasi.

Inca o chestie, extrem de nashpa: cu AJAX puteti lucra doar daca ruleaza intr-un server care sa poata primi cereri HTTP. Daca, de exemplu, deschideti pagina de unde o aveti salvata pe calculator, o sa fie incarcata fara probleme, dar statusul care va fi intors o sa fie egal cu 0, cu cu 200, cum o sa fie intors daca ruleaza pe un server. E o chestie nashpa, nimeni nu iti spune nicaieri chestia asta si am avut mare noroc ca am gasit raspunsul pe net.

Oricum, pana acum m-am impiedicat la greu de tot felul de chichite Javascript, AJAX si YUI. Sper ca informatiile sa va fie de ajutor

miercuri, decembrie 05, 2007

Mozilla Firefox

Cum eu personal prefer Mozilla la orice ora in fata Internet Explorer-ului, m-am gandit azi sa scriu cate ceva despre diversele facilitati pe care le ofera acesta.

Browserul este bazat pe motorul de randare Gecko, conformându-se cu majoritatea standardelor web în vigoare (HTML, XML, XHTML, CSS 1 şi 2, ECMAScript (JavaScript), DOM, MathML, XSL, XPath). Este implementat parţial şi suportul pentru CSS3, care nu a fost încă standardizat, şi este în lucru implementarea standardelor SVG şi APNG. Notabil este şi suportul complet pentru imaginile PNG, care încă nu este disponibil în cel mai important browser concurent (Microsoft Internet Explorer)

Firefox asigură suport pentru navigare cu file (taburi). Sistemul de file implicit este foarte simplu (de exemplu nu permite redeschiderea unei file închise), dar este foarte uşor extensibil şi adaptabil nevoilor fiecărui utilizator cu ajutorul extensiilor disponibile atât pe site-ul Mozilla cât şi pe diverse alte site-uri. Alte facilităţi importante includ:

  • suport pentru căutare pe web, prin intermediul barei de căutare prezentă în dreapta sus. Conţine ca standard acces motoarele de căutare Google, Yahoo, Creative Commons şi poate fi uşor extinsă pentru diferite motoare de căutare (inclusiv pentru Wikipedia), o facilitate asemănătoare cu GoogleBar-ul pentru Internet Explorer, dar cu diferenţa este că vine implicit cu browserul şi nu ocupă spaţiu inutil în fereastra de navigare.
  • căutare rapidă în pagină, prin utilizarea unei bare în partea de jos, care întoarce rezultatele unei căutări pe măsură ce utilizatorul tastează, prin colorarea rezultatelor
  • opţiuni de blocare a ferestrelor popup, uşor adaptabile pentru fiecare utilizator
  • extensibilitate foarte mare - browserul poate fi îmbunătăţit sau anumite funcţionalităţi pot fi modificate prin instalarea unor add-onuri numite extensii. Sistemul, numit xpinstall, permite downloadul extensiilor şi update-urilor pentru acestea. În plus, sunt asigurate şi uneltele pentru managementul acestora, pentru a le dezactiva şi activa după preferinţe. Există extensii pentru o mulţime de facilităţi, de la prognoza stării vremii şi îmbunătăţirea navigării cu taburi, pâna la unelte pentru blocarea reclamelor din pagini, dezvoltare pagini web, simplificara editării Wikipedia, sau adaptare pentru utilizarea browserului în sistem de punct public de acces Internet
  • personalizare foarte uşoară; practic toate barele de unelte şi meniurile pot fi configurate în cel mai mic detaliu. În plus, există o mulţime de teme şi stiluri grafice disponibile pentru descărcare. Cu minime cunoştinţe de CSS şi de alte tehnologii folosite de Firefox, se poate crea propria temă, se pot modifica meniurile şi se pot face multe ajustări la comportamentul browserului. Cei interesaţi pot să-şi creeze extensii care introduc capabilităţi complet noi
  • este disponibil pentru o varietate foarte mare de platforme şi sisteme de operare. În plus, fiind open-source, utilizatorul poate încerca să-şi porteze aplicaţia pe sistemul propriu, în caz că nu este deja disponibilă o versiune spre download. Actualmente sunt disponibile, fie direct de către Fundaţia Mozilla, fie de către alte entităţi, versiuni pentru Microsoft Windows 98, Me, 2000, XP, 2003 Server, Linux (o varietate largă de platforme) şi MacOS X (de la versiunea 1.5, numai MacOS X 1.0.2 sau mai recent vor mai fi suportate), BSD (FreeBSD, OpenBSD, NetBSD şi PC-BSD) Solaris (x86 şi SPARC), BeOS, OS/2, AIX, SkyOS şi IRIX. În cazul sistemelor multi-boot, fişierele de configurare şi preferinţe pot fi păstrate o singură dată, pe o partiţie accesibilă mai multor sisteme de operare
  • este tradus în peste 30 limbi, printre care şi româna. Este posibilă traducerea lui în alte limbi fără cunoştinţe de programare, doar prin editarea unor fişiere text
  • suport inclus pentru RSS
  • accent pe siguranţă, Mozilla asigurând un premiu pentru fiecare vulnerabilitate descoperită. În plus, neexecutarea de cod ActiveX cât şi modelul de securitate ales, conferă un plus de siguranţa în calea viruşilor, adware şi spyware

duminică, noiembrie 18, 2007

web crawler java

Ieri am reusit sa termin tema 2 de Interfete evoluate: faimosul mini web-crawler. Am pus deja tema pe site, deci cine vrea codul sursa poate sa il vada acolo.

Am folosit Eclipse ca IDE, MySQL ca baza de date. Daca vreti sa o testati trebuie sa procedati in felul urmator:
1. Instalati MySQL si creati baza de date ie cu tabelele:
- utilizatori: user_id (pk) varchar2(45);
address varchar2(100);
- realtii: id (pk) integer;
user_id varchar2(45)
friend_id varchar2(45)
2. Introduceti proiectul in eclipse, deschideti clasa DatabaseConnectionFactory din pachetul database si modificati parametrii de creare a conexiunii astfel incat sa se potriveasca cu instalarea voastra: baza de date, user, parola

Ramane doar sa dati run, si ar trebui sa mearga...cel putin mie imi merge. Daca chiar vrea cineva sa il ruleze, cautati-ma pe mess, sau lasati o intrebare la postul asta.

O mini-particularitate asupra modului de implementare al conexiunilor la baza de date si la net: am folosit design patternul singleton. Cu acesta creez o singura instanta a conexiunii a baza de date, si doar cate o instanta pentru fiecare conexiune la net.

Rezultatul, pe langa progresul ce poate fi urmarit in consola, se afla in baza de date.

Pentru parsare nu am folosit nici dom si nici sax. Am cautat in schimb sectiunea de prieteni, de unde am cautat adresa fiecarui prieten in parte. Pentru detalii exacte, vedeti sursa clasei PageParser, unde sunt 3 stringuri de cautare statice.

Cam atat despre tema 2. Mi-a ocupat mai mult timp decat as fi vrut si sper sincer ca urmatoarele sa fie mai simple, sa le pot rezolva in maxim 2 ore.

miercuri, noiembrie 07, 2007

Download teme de pe site

Astazi mi-am batut capul cu o chestie: de ce si din Internet Explorer, si din Mozilla, in momentul in care dau click pe linkul la arhiva .rar a unei teme, incearca sa afiseze arhiva ca si cum ar fi clear text...Si chiar mai mult, de ce imi apare, cum e si normal, casuta de open/save file din browserul intern la Lomboz??? Stiau oamenii astia ceva ce nu stiu inca browserele cele mai folosite pe net?
Dupa cautat pe net, pe forumuri si intrebat oameni avizati, de unde am aflat de fiecare data cum pot sa uploadez un fisier pe pagina mea(cand de fapt vroiam chiar invers), solutia mi-a venit de la sine: serverul pe care ruleaza site-ul nostru de interfete evoluate nu are instalat WinRar, deci nu recunoaste extensia fisierului si incearca sa il deschida cum poate.

Nu sunt sigur ca asta este explicatia oficiala, dar asta am dedus eu din experienta. Acum, dupa ce am schimbat tipul arhivei din .rar in .zip casuta de download apare la fel de zglobie de fiecare data.

Cam atat pentru azi...revenim in curand cu stiri proaspete.

Varianta Lomboz

Avantaje ale variantei de Eclipse Lomboz:
- este free(nu toate distributiile de eclipse sunt free, mai ales cele dedicate web developmentului)
-are plug-in-uri incluse care usureaza mult munca cu pagini web
-proiectele de XML au exemple utile si concludente

Dezavantaje:
-dimensiune mare(dureaza ceva timp pana il downloadezi)
-consuma mai multa memorie si se incarca mai greu decat eclipse-ul normal.

Totusi, il recomand celor care vor sa faca mai mult decat doar editare/validare/generare de XML-uri.

marţi, noiembrie 06, 2007

eclipse

Prima tema am dezvoltat-o in Eclipse. Am optat pentru acest IDE (integrated development environment) deoarece ofera posibilitatea de validate de DTD-urilor si generare a XML-urilor conform acestora. Continutul XML-ului poate fi generat cu sau fara atribute optionale (cele definite cu #IMPLIED) si elemente optinale (cele definite cu *). Daca atributul unui element are valori predefinite am optiunea sa generez XML-ul cu valoare implicita, iar elementelor li se poate da initial ca valoare chiar denumirea lor.
Lomboz este varianta de Eclipse pe care o fososec eu.