Flash si Actionscript, AJAX, CSS, PHP, Javascript, MySQL, HTML, SEO

UTF-8 in paginile web (diacritice, caractere speciale, suport multilingv)

Se poate sa fi intampinat dorinta/nevoia de a include in paginile voastre suport pentru alte limbi in afara de romana. In acest caz apare problema afisarii caracterelor speciale, diacriticelor ce sa mai vorbim de alfabetul chirilic sau de limbile arabe/asiatice, etc.

Tags:

Integrarea propriului motor de cautare in Firefox

Demonstratie

Una din multele facilitati ale Firefox este posibilitatea configurarii mai multor motoare de cautare ce pot fi accesate direct din interfata browserului:

Putini stiu insa ca in principiu orice site poate oferi vizitatorilor posibilitatea adaugarii site-ului in cauza in lista motoarelor de cautare din Firefox. Voi ilustra pe un exemplu simplu.

AJAX: Degradare gratioasa

Una din provocarile intalnite in crearea unei aplicatii este necesitatea ca aceasta sa functioneze pentru un numar cat mai mare de utilizatori. Printre aspectele care trebuie acoperite in acest sens se numara si degradarea gratioasa a respectivei aplicatii. Pe scurt functionalitatile principale trebuie sa fie prezente indiferent de tehnologiile la care are acces utilizatorul.

Asigurarea functionarii unei aplicatii ce foloseste AJAX si in cazul in care din diferite motive Javascript nu mai functioneaza (fie datorita dezactivarii sale fie din cauza aparitiei unei erori) nu este dificila, si una din cele mai simple metode este de a proiecta initial aplicatia fara a se face uz de AJAX (dar cu planuirea atenta asa incat implementarea solutiei alternative sa se faca cat mai simplu apoi). In momentul in care totul functioneaza cum ar trebui se poate trece la schimbarea comportamentului aplicatiei pentru cazul optim.

Ca exemplu, voi prezenta o mica aplicatie pentru filtrarea unor articole prezente intr-o baza de date.

TUTORIAL: Cum sa-ti faci propriul CAPTCHA

CAPTCHA - un termen familiar pentru unii dintre noi, mai putin cunoscut altora, dar cu siguranta ceva cu care toti ne-am intalnit la un moment dat.
Generalizat, CAPTCHA (acronim pentru Completely Automated Public Turing test to tell Computers and Humans Apart) reprezinta o modalitate oarecare de a face distinctia intre un utilizator uman si o masina (computer), dupa cum spune si numele. Acest mecanism a aparut din nevoia de securitate, fiind pentru prima oara implementat in sistemul de inregistrare de la Yahoo, si consta in prezentarea unei imagini ce continea un cuvant distorsionat, cerandu-i-se utilizatorului sa recunoasca cuvantul din imagine, lucru foarte greu de realizat, daca nu chiar imposibil, de catre o masina. Cu timpul, conceptul s-a raspandit si s-a dezvoltat, ajungand la forme foarte diverse care impuneau utilizatorilor una din urmatoarele:

Tags:

MySQL Storage Engine: MyISAM vs InnoDB

Multa lume probabil se intreaba ce Storage Engine Architecture sa aleaga pentru MySQL si fiecare are motivele lui pentru care alege InnoDB sau MyISAM.

La o cautare dupa cele 2 engine-uri am fi tentati sa spunem ca InnoDB este alegerea mai buna pentru o serie de avantaje cum ar fi:

Tags:

„Edit In Place” Folosind jQuery

În urmă cu câteva zile, am primit un task destul de înteresant de la un client: aşa numitul „edit in place” (EIP). Cum la tot site-ul am folosit jQuery (deoarece mi se pare mai simplu decât prototype, iar alături de interface-ul făcut de eyecon este chiar mai tare), am vrut să folosesc un EIP făcut tot cu jquery, mai ales că toate plugin-urile găsite nu m-au satisfăcut pe deplin.

Trebuie să precizez că nu sunt un „guru” al javascriptului, din contră, încă fac primii paşi. Nu spun că aceasta este cea mai bună soluţie pentru EIP, doar că această soluţie s-a potrivit cel mai bine nevoilor mele.

Raze X pentru Flash!

Salutare lume,

Acum ceva timp lucram la un proiect si ma impolmolisem cu o chestie, nu puteam sa sterg un movieclip. Am stat, am cautat, am verificat caile catre movieclip, totul era OK, movieclip-ul exista, calea era buna, dar tot nu reuseam sa-l sterg. Atunci mi-a venit ideea sa caut prin HELP, cand colo dau peste un mic paragraf in help, si sa nu-mi vina sa cred ce citesc acolo, ca movieclip-urile care au DEPTH-ul NEGATIV nu pot fi sterse folosind comanda removeMovieClip()! Acest lucru mi-a schimbat proiectul, acum totul mere bine si frumos!

Revenind la subiectul nostru, o chestie foarte utila in Flash este ca atunci cand ai multe movieclip-uri intr-un alt movieclip care sunt unele peste altele, care sunt _visible = false, care au _alpha = 0; si vreti sa vedeti ce/cum/cand/unde despre movieclip-urile voastra, folositi acest cod foarte simplu:

for(var i in cale)
{
    trace(cale[i]);
}

sau concret un exemplu, avem in _root un movieclip, numit main_mc, in main_mc aveam alte 10 movieclip-uri subMain0_mc pana la subMain9_mc. Unele au _alpha property (10,50,67) si tot asa...(puteti pune orice property vreti,_x,_y,_xscale etc.)
In _root vom scrie asa:
for(var i in main_mc)
{
   trace(main_mc[i]);
   trace("Movieclip-ul "+main_mc[i]+" are coordonata x: "+main_mc[i]._x);
   trace("Movieclip-ul "+main_mc[i]+" are coordonata y: "+main_mc[i]._y);
   trace("Movieclip-ul "+main_mc[i]+" are alpha de: "+main_mc[i]._alpha);
   trace("Movieclip-ul "+main_mc[i]+" are depth-ul de: "+main_mc[i].getDepth());
}

Sau daca vreti sa folosit de mai multe ori acest lucru, dar fara sa rescrieti/modificati defiecare data, faceti o functie si apelati functia cu movieclip-ul/calea dorit/a:
Un mic exemplu:
function razeX(clip_path)
{
	for(var i in clip_path)
	{
		trace(clip_path[i]);
                /*
                * Puteti completa voi ce vreti sa va afiseze trace-ul, vedeti exemplul de mai sus.
                */
	};
}
razeX(main_mc);

Aceste articol ofera doar o mica parte din ceea ce puteti face cu razeX. De voi depinde ceea vreti sa aflati din proiectul vostru.

TIP: puteti sa faceti trace si la o variabila/array/object/textfield! Dar trebuie sa folositi instanceof sau typeof!

Oricum exista in lumea Flash un tool foarte avansat, XRAY (il gasiti aici http://osflash.org/xray ) dar este foarte complex, daca aveti nevoie de o chestie rapida, faceti o functie, folosit-o si aveti RazeX in Flash-ul vostru!

Sper ca va este de ajutor acest articol! Bafta in continuare!

I'll be back!

Submit la apasarea tastei enter in formular

Stiu ca formularul face treaba asta default. Ce te faci insa atunci cand ai un buton de submit 'fancy', facut cu poze, cu hover pe un link? acolo practic ai un link care face submit la formular cu ajutorul javascriptului.

Ca sa fie totusi un formular 'uzabil' trebuie sa ii putem oferi userului posibilitatea de a face submit cu ajutorul tastei enter.

Apelarea de metode multiple pe window.onload

M-am confruntat zilele trecute cu o mic? probleme a c?rei rezolvare s-a dovedit într-un final destul de simpl?.

Problema pe care o aveam de rezolvat a fost ca evenimentul de "onload" s? poat? apela metode multiple. S? presupunem c? avem dou? fi?iere javascript: meniu.js ?i filtre.js.

În fi?ierul meniu.js avem o metod? de genul:

function initMenu() {
  //initializeaza meniul
}

iar în fi?ierul filtre.js:
function initFilters() {
  //initializeaza filtrele 
  //(de exemplu, daca aveti o lista cu judete si una cu orase si doriti sa le sincronizati)
}

Dorim ca la terminarea înc?rc?rii unei pagini HTML (evenimentul window.onload) s? apel?m ambele metode. Cum proced?m?

Crearea si aplicarea mastilor CSS

Pentru designeri, crearea si aplicarea mastilor (masks) reprezinta, spre exemplu, o metoda foarte des intalnita in modificarea regiunilor vizibile ale unei imagini. In acest articol voi incerca sa extind conceptul specific editoarelor grafice prin adaptarea acestuia la realizarea si implementarea mastilor CSS.

Ideea a venit in urma imposibilitatii temporare de a schimba intreaga paleta de culori a unei aplicatii web in functie de culoarea aleasa de utilizator. In acest moment probabil multi dintre voi se vor gandi la celebrul "Alternate Style Sheets" prin intermediul caruia, cu ajutorul unui script JavaScript, se poate comuta intre mai multe stiluri CSS. De acord, metoda are o aplicabilitate foarte mare... de la schimbarea fonturilor, culorilor, pana la schimbarea intregului layout. Problema intervine in momentul in care aducem in discutie eternii si fascinantii gradienti, omniprezenti in curentul Web 2.0