-
Acesta este un mic proiect destinat utilizatorilor de Microsoft Windows!
Este un utilitar pentru Text To Speech scris in HTML si JavaScript. Aplicatia ruleaza ca HTML Application.
Am scris aceasta aplicatie de 3 ori pana acum, pentru ca am pierdut primele variante. Intr-un final m-am gandit ca poate si altii pot profita de pe urma lui.
Pentru utlizatorii Linux o alternativa este: eSpeak.
Mai multe detalii pe pagina proiectului.
-
Colectia mea de elePHPanti tocmai s-a dublat, acum sunt 2!
Am vrut si un elePHPant roz sa-i tina companie elePHPantului meu.
Si de data asta tot la eBay am apelat, o cautare scurta a mai gasit un crescator de elePHPanti, de data asta: Herman J. Radtke III. L-am comandat direct de pe site-ul lui de data asta, fara ebay, din simplu motiv ca pe ebay erau calculat gresit transportul.
Chiar si cu transportul corect, elePHPantul cel nou nu a fost tocmai ieftin:
$ RON ElePHPant 16.16 55,51 Transport RO 16.95 58,23 Taxa posta (Vama) 0.6 1.95 Total: 33.71 115,69 O suma nu foarte mica, avand in vedere ca pretul unui elePHPant este de aproximativ 5 euro en-goss.
Acum am format o familie de elePHPanti fericita!
-
A devenit o traditie pentru mine sa incep retrospectiva anuala cu acest subiect.
PHP 6 este la fel de aproape de lansare cum era si anul precedent, sau acum doi ani, adica lipsit de perspectiva. In 2011, PHP 5.4 a ajuns la RC4 si probabil se va lansa in curand versiunea finala, lucru care inseamna ca inca nu se previzioneaza o data pentru lansarea PHP 6. Dar despre PHP 5.4 cu alta ocazie, este pe lista mea de “TODO” sa vad ce a ajuns in RC4.
Cum in PHP 5.3 cuvintele cheie pentru mine au fost namespaces, Anonymous functions, closures si garbage collector, in PHP 5.4 se pare ca aceste cuvinte cheie vor fi traits, din nou closures si scalar type hinting, alaturi de multe alte noutati.
Cand am scris primul meu blog anual despre PHP 6, lucram in principal la site-uri in romana, de acolo si dorinta mea pentru o versiune care sa suporte in mod nativ aceasta limba sau oricare alta fara nici o modificare. Pe atunci lucram in cea mai mare parte direct cu limbajul, de cele mai multe ori fara sa folosesc un framework . Dar de atunci a trecut mult timp si mutle lucruri s-au schimbat, acum folosesc aproape exclusiv framework-uri si platforme care m-au indepartat de limbaj oferindu-mi o noua perspectiva arhitecturala.
Dupa mai bine de un an in cadrul NCH, am decis ca este timpul pentru o schimbare. Si de data asta este vorba tot de o corporatie venita din state cu o sucursala in Romania. De data asta este vorba de Optaros. Desi nu intentionam sa-mi schimb locul de munca, am dat curs unei invitatii la interviu si pe scurt, am plecat. De mult simteam nevoia sa lucrez din nou pentru clienti externi, dupa experienta NCH unde toate proiectele erau interne, simteam nevoia de o schimbare.
Din nou proiectele sunt si mai mari, cu alte probleme de scalabilitate. Dar cred ca asta face web development-ul atat de interesant, cu cat ai probleme mai mari de scalabilitate, cu atat inseamna ca lucrezi la un proiect mai mare.
Anul trecut cuvintele cheie au fost Linux si Symfony framework. Pentru anul care tocmai s-a incheiat cuvintele cheie probabil au fost: Magento si Drupal.
Dupa o scurta perioada de lucru cu Magento, pot spune ca mi se pare incredibil cum o platforma atat de mare are atat de putina documentatie si de multe ori atat de multa inconsistenta. Este o plaforma foarte complexa cu care poti face foarte multe lucruri, dar cand vine vorba de documentatie, se pare ca abordarea se rezuma la a analiza core-ul. Venind din lumea Symfony, unde exista literalmente carti intregi de documentatie, puse la dispozitie in mod gratuit, mi se pare incredibil cat de putina si descentralizata documentatie este pentru Magento. Dar de asemenea este un subiect pentru un alt blog. Cred ca aici echipa Optaros m-a ajutat destul de mult ca sa inteleg cum sa abordez problemele.
Un alt eveniment important pentru mine acest anul trecut a fost Yahoo! Open Hack Day, eveniment tinut si in Romania in 2011. Nu stiu daca am mai vazut atata entuziasm si energie intr-un singur loc, intr-o singura zi. Pentru mine ca programator a fost o experienta de neuitat, unul din momentele care m-au facut sa-mi aduc aminte de ce am ales aceasta profesie.
In acest an am dat si examenul de certificare pentru PHP 5.3, chiar la inceptului anului. Examenul nu a fost atat de greu cum ma asteptam, desi se pare ca emotiile raman neschimbate. Faptul ca am mai sustinut un examen m-a ajutat mult, incredibil cat de multe lucruri iti aduci aminte cand le recitesti. Anul trecut mi-am propus sa sustin cel putin un examen de certificare pe an, deci trebuie sa incep pregatirile pentru urmatorul examen.
Concluzionand, 2011 a fost un an bun, plin de realizari si provocari, chiar daca nu am bifat foarte multe lucruri pe rezolutia de an, am realizat si multe lucruri care nu erau pe ea. Dar acum este timpul pentru o noua rezolutie de an.
Iar acum va urez un 2012 mai bun si mai plin de realizari! La multi ani!
-
A venit vremea sa mai public inca un joc facut in JavaScript, de data asta este vorba de Minesweeper.
Prima versiune a jocului a fost facuta initial acum aproximativ un an jumatate, dar intre timp l-am rescris total din pricina problemelor de performanta.
Acesta este cred si ultimul joc care nu il fac folosind canvas din motive de compatibilitate.
Fata de majoritatea jocurilor care au fost facute literalmente peste week-end (exceptia este Puzzle Gd) acesta s-a dovedit un joc putin mai complicat.
Pentru grafica vreau sa ii multumesc (din nou) Cătălinei Radu.
Enjoy!
-
Inca un motiv pentru care urasc Internet Explorer.
Toate browserele noi au tendinta sa faca cache la campurile de formular de pe o pagina. Pana aici nimic normal, usor enervant, dar nu anormal.
Se da urmatorul exemplu:
1<select id="select"> 2 <option value=a>a</option> 3 <option value=b>b</option> 4 <option value=c>c</option> 5</select> 6<script> 7 8var checkSelected = function () { 9 var element = document.getElementById('select'); 10 alert(element[element.selectedIndex].value); 11} 12 13// ruleaza dupa onload 14window.onload = checkSelected; 15 16// ruleaza inainte de onload 17checkSelected(); 18 19</script>
Se incarca pagina, se selecteaza a treia valoare si apoi se face refresh. Pentru ca nu s-a trimis nici un formular prima impresie este ca rezultatul va fi mereu “a”. Se pare ca nu este tocmai asa:
- FireFox: c c
- Google Chrome: a a
- Internet Explorer: a c
Pot sa inteleg de ce FireFox a ales sa faca cache la valori chiar si daca nu se trimite formularul.
Pot sa inteleg si ca in cazul Google Chrome nu face cache la pagina daca nu s-a trimis formularul.
Dar ca Internet Explorer face cache si il incarca de abea dupa ce a incarcat toata pagina? Asta mi se pare confuz! Adica nu ai varianta sa nu folosesti onload? De ce? Nici macar nu am trimis formularul?
Testul a fost facut pe Internet Explorer 9 si compatibility view la versiunile 7 si 8.