MySQL

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.

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:

Stick to the frameworks

Intr-o lume in care aplicatiile web devin din ce in ce mai complexe si majoritatea lucrurilor cu adevarat utile de pe desktop se porteaza pe web, programarea in sine, indiferent de limbajul de programare a devenit o mare consumatoare de timp, resurse, cu alte cuvinte eficienta.
In ultimul timp, programatorii web care-si cunosc telurile si care se descurca destul de bine cu programarea orientata pe obiecte au inceput sa foloseasca framework-uri (in special MVC - Model View Controller) ca sa-si usureze munca. Si s-a dovedit ca framework-urile nu doar ca usureaza munca programatorului, dar adauga si un plus de securitate si integritate aplicatiei.

Exemplul perfect este framework-ul CakePHP pe care-l folosesc de mai bine de 6 luni si de cand lucrez proiectele pe el, ma misc mai repede si mi-e mult mai usor sa adaug functionalitate website-ului.
CakePHP este desi foarte puternic, destul de lipsit de multe facilitati pe care le-ar putea implementa echipa (probabil in versiunile ce urmeaza), dar pe de alta parte este exact ce ai nevoie ca proiectarea unei aplicatii sa fie cake.

Un lucru pe care l-am vazut zilele trecute si care mi-a atras atentia indeajuns de mult cat sa raman pe subiect cateva zile si sa studiez, a fost un alt framework MVC, numit Symfony.
Acest Symfony este mult mai complex decat CakePHP dar mult mai greu de folosit. Se orienteaza catre segmentul de programare enterprise, acolo unde aplicatia va fi instalata pe serverul propriu al firmei... and so on.
Destul de stresanta pentru tine, ca om care vrei sa vezi ce poate, e instalarea: trebuie sa ai PEAR > 1.4.2. Apoi se adauga un nou canal la PEAR, de unde isi ia proiectul Symfony si se instaleaza. Din momentul ala exista comanda "symfony" in consola si se lucreaza cu ea orice s-ar face. Cam asta e baza.

Pe mine m-a uimit foarte tare cum lucreaza si cum se configureaza. Daca la CakePHP nu faci decat sa creezi fisiere si sa scrii in ele, aici nici macar nu le mai creezi, doar schimbi prin ele variabile, si adaugi proprietati.
Sistemul de retinere a datelor de configurare este format din fisiere .yml (http://www.yaml.org/) si e foarte intuitiv.
Un lucru care o sa uimeasca multi developeri este admin-generator-ul care e o componenta care genereaza pagini de administrare pentru continutul site-ului si nu numai.
Il puteti urmari in actiune aici (doar pentru coderii dedicati, daca va plictisiti nu va uitati :D)

Tags:

Numarul de aparitii a unui string intr-un camp MySql

Ce faceti daca sistemul / baza de date / tabela nu va permite sa faceti o cautare cu full text search? Pai folositi LIKE. BIne, folositi like, dar rezultatele vor aparea ordonate dupa ordinea din tabela, fara a avea vreo relevanta "greutatea" keywordului cautat.

O modalitate relativ simpla de a organiza rezultatele in functie de greutate este afisare in functie de numarul de aparitii al keywordului intr-un camp.

Interogarea ar arata cam asa:

SELECT id, (LENGTH(content) - LENGTH(REPLACE (content,'string_de_cautat','')))/LENGTH('string_de_cautat') as hits from articles order by hits desc

Explicatie: extragem numarul de caractere din campul content, inlocuim stringul cautat cu '' (NULL), apoi extragem iar numarul de caractere. Diferenta rezultata din cele 2 numere impartita la lungimea stringului cautat va intoarce fix numarul de aparitii a stringului in acel camp.

Spor !

Tags: