Pentru că în ultima vreme codurile QR au început să devină oarecum o obsesie pentru mulţi, trebuie ştiut că nu este foarte greu să generezi un cod atâta timp cât Google pune la dispoziţie un API destul de simplu.
Codul QR se foloseşte în special pentru smartphone-uri, iar companiile îl folosesc pentru a trimite mai multe date clienţilor, date uşor de obţinut şi de păstrat.
Majoritatea smartphone-urilor au deja încorporat acest “feature”, daca nu îl au sunt absolut convins că există în magazinele lor virtuale, şi sunt gratis.
Tipurile generale de coduri QR sunt simple texte sau link-uri care duc de obicei la un anume produs sau formular de contact.
Pentru ca telefonul sa înţeleagă ce face conţinutul unui cod QR, codul a fost standardizat prin anumite mesaje:
1 2 3 4 5 6 7 | $bookmark = 'MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu'; // bookmark către acest blog cu titlul "Mihai Iorga" $sms = 'SMSTO:0700000000:Salut'; // SMS către numarul "0700000000" cu mesajul "Salut" $call = 'TEL:0700000000'; // apelare rapidă către numarul de telefon "0700000000" $email = 'MATMSG:TO:mihai@iorga.eu;SUB:Subiectul meu;BODY:Mesajul meu;;'; // email către "mihai@iorga.eu" cu subiectul "Subiectul meu" şi conţinutul mesajului "Mesajul meu" $connect = 'WIFI:T:WEP;S:MIHAIIORGA;P:MIHAI'; // WEP este tipul de autentificare care poate fi WEP sau WPA, MIHAIIORGA este numele SSID, iar MIHAI este parola $geo = 'GEO:44.43163,26.10090,2'; // se referă la geolocaţia "44.43163,26.10090", la înălţimea de "2" metri $text = 'Salut, ce mai faci'; // simplu text care este tradus de aplicaţia care citeşte codul "Salut, ce mai faci" |
Acestea fiind doar principalele tipuri de mesaje.
Pentru a genera un cod QR apelăm serviciile Google:
1 2 3 4 5 6 7 8 9 | // preluăm primul tip de mesaj 'MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu' // accesam Google Charts $QR = "http://chart.apis.google.com/chart?chs=150x150&cht=qr&chld=L|0&chl=MEBKM:TITLE:Mihai Iorga;URL:http://mihai.iorga.eu"; // 150x150 este înălţimea şi lăţimea imaginii, ele trebuie să fie de aceeaşi dimensiune // qr este pentru a informa Google de intenţia noastră, aceea de a genera un cod QR, pentru că acest API nu conţine numai coduri QR. // L este tipul de criptare al codului QR adică "Low" sau "Smallest", poate fi in ordine crescătoare: L, M, Q, H. De obicei se foloseşte L pentru că este cel mai uşor de citit. // 0 este marginea, daca îl schimbăm cu 1 o să primim o imagine cu o margine de 15px. // iar ultimul parametru este textul meu preformatat pentru a produce un bookmark. |
Este o metoda simplă si destul de eficientă care nu necesită prea multe cunoştinţe de programare şi este uşor de implementat.
Acest tutorial este posibil să nu mai funcţioneze la un moment dat în viitor din cauză că nu se bazeaza pe un motor propriu ci se bazează pe API-urile Google care se pot schimba fără nici o notificare.
O alta problemă este postarea automată a unei informaţii direct pe peretele utilizatorului.
Pentru a putea face acest lucru întâi trebuie să obţinem drepturi de a publica pe perete, dreptul pe care trebuie sa îl cerem este “publish_stream”. Acest lucru se face foarte simplu:
1 2 3 4 5 6 7 8 9 | <script type="text/javascript"> FB.login(function(response) { if (response.session) { if (response.perms) { // aici reîncărcăm pagina daca am obţinut permisiunile, există 2 feluri: "top.location.href" sau "window.location.href" pentru că aplicaţia este în iFrame, Facebook nu mai acceptă decât aplicaţii bazate pe iFrame } } }, {perms:'publish_stream'}); </script> |
Pentru ca scriptul de mai sus să funcţioneze trebuie întâi iniţializat SDK-ul Facebook prin Javascript, PHP sau combinate.
Pentru a publica un mesaj pe peretele utilizatorului o să ne folosim de API-ul Facebook-ului prin PHP SDK.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < ?php $atasament = array('message' => 'M-am inscris în aplicaţia lui Ion', 'name' => 'Aplicaţia lui Ion', 'caption' => 'Cea mai tare aplicaţie.', 'link' => 'https://apps.facebook.com/aplicatiamea/', 'description' => 'Descrierea aplicaţiei pentru mesajul de pe perete', 'picture' => 'http://www.example.org/logo.jpg', 'actions' => array(array('name' => 'Vino şi tu', 'link' => 'https://apps.facebook.com/aplicatiamea/')) ); $rezultat = $facebook->api('/me/feed/', 'post', $atasament); ?> |
Nu am mai scris de mult un tutorial sau un exemplu despre “Cum se face” …. o să mai adaug din când în când câte un pic din cunoştintele mele.
Deci, ca developer a unor mici aplicaţii pe Facebook de multe ori m-am lovit de problema “isFan?”
Soluţia e chiar una simplă:
bineînţeles, întâi trebuie creată o aplicaţie pentru a obţine un APP_ID şi APP_SECRET
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < ?php require 'facebook.php'; // SDK-ul facebook poate fi preluat de pe https://github.com/facebook/php-sdk/ $isForPage = "100000000000000"; // ID-ul paginii pentru care vrem sa aflăm dacă suntem sau nu fan $app_id = "123456789101112"; // ID-ul aplicaţiei noastre $app_secret = "0123456789abcdef0123456789abcdef"; // cheia SECRET a aplicaţiei noastre $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret, 'cookie' => true )); // getSignedRequest() de obicei preia informaţii utile despre utilizator şi pagina unde se află, în productie nu o sa preia "like_status" pentru ca nu are acces la informaţii, pentru acces trebuie TOKEN $signed_request = $facebook->getSignedRequest(); $oauth_token = $signed_request['oauth_token']; // preluam isFan direct din api-ul lor, o metodă simplă şi uşoară $isFan = file_get_contents("https://api.facebook.com/method/pages.isFan?format=json&access_token=" . $oauth_token . "&page_id=".$isForPage); // $signed_request conţine o matrice cu destul de multe informaţii utile ;) ?> |
Acest mic tutorial se referă la paginile Facebook care îţi “cer” să fii fan pentru aţi afişa alte informaţii.
Ştiu că nu explic prea bine niciodată, dar cred că m-am facut înţeles.
Mă termină gândurile atunci când greşesc sau chiar nu reuşesc ce mi-am propus.
Ultimul eşec chiar m-a dezamăgit, prostia mea a fost că am avut încredere în mine şi m-am bazat pe ceea ce ştiam, fără să mă documentez prea tare.
Oricum, nu ştiu cum reacţionează alţii când realizează că ce au vrut să facă a fost un eşec total, eu obişnuiesc să revizualizez proiectele reuşite că să uit de micul eşec care l-am avut.
De aici rezultă că am prea multa încredere în mine şi probabil mă cred prea stăpân pe ceea ce fac.
Ca sa dezvălui misterul … am picat examenul de la Zend.
Cam ruşine nu?
Proiectul la care lucrez de ceva timp în sfârşit este live. Nu 100% gata dar este live (mai sunt destul de multe tweak-uri şi optimizări).
De ce sunt mândru de proiect? Păi că este scris numai de mine (programarea) şi foloseşte Smarty şi jQuery.
CMS-ul din spatele site-ului este un monstru
.
Ca statistici:
~ 10.000 de linii de cod scrise
~ 50 de tabele în baza de date
~ 4 luni de muncă (proiectul a început în ianuarie, dar a fost stopat temporar cam în fiecare lună câte puţin)
Este unul dintre cele mai mari proiecte realizate complet de mine (d.p.d.v. tehnic) şi mă bucur că eu cu întreaga echipă de la Marketing am reuşit să îi dăm bice.
Acum aştept concediul!
Cum găsim câmpurile care se repetă într-o tabelă MySQL?
1 2 | "SELECT `id`, count(`row`) AS `dup` FROM `table` GROUP BY `row` HAVING `dup` > 1"; |
sau PHP
1 2 3 4 5 6 7 8 9 10 | $query = "SELECT `id`, count(`row`) AS `dup` FROM `table` GROUP BY `row` HAVING `dup` > 1"; /* unde `id` este cheia primară,`row` este câmpul din tabelă, iar `dup` rezultatul numărării câmpurilor `row` care au id=`id`, => selectăm id-urile şi numărăm câmpurile `row` din tabel, le grupăm după `row` având rezultatul numărării `row` mai mare ca 1 */ $result = mysql_query($query); // interogarea :) |
et voilà!
F5 Solutions cauta un Front-End Web Developer care sa raspunda afirmativ la cel putin 5 din urmatoarele 8 intrebari:
Cunostintele si conditiile obligatorii sunt urmatoarele:
Esti avantajat daca:
Beneficii:
Locatie:
Bucuresti (Cartierul Primaverii)
Program:
Full-Time
Dupa cum probabil ti-ai dat seama, NU cautam script-kiddies si in nici un caz NU suntem adeptii conceptului “struto-camila” / “one man show”.
Acestea fiind spuse, asteptam CV-ul tau insotit de 3 link-uri catre cele mai reprezentative proiecte realizate de tine (in cazul in care un proiect nu a fost realizat integral de tine te rugam sa specifici care au fost contributiile tale) pe adresa jobs [at] f5solutions [dot] ro (vor fi contactati numai cei care vor fi selectati pentru interviu). Studentii sunt bine-veniti.