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