Tu cum îți testezi codul?

În ultimele zile am devenit din ce în ce mai interesant de unit testing (UT) și de test driven development (TDD). În principiu, pentru că mă încântă ideea de a scrie cod fără să trebuiască să dau ctrl+r în browser după care cinci click-uri, după care mai știu eu ce minune ce trebuie să-mi intre în reflex. Am început să sap după resurse de TDD în JavaScript, am început să înțeleg cum se face (momentan parțial), am înțeles beneficiile șamd. Încă învăț, dar în momentul în care înțeleg totul cum trebuie, voi scrie un articol pe blog :)

Am vorbit cu mai mulți programatori care nu au făcut niciodată UT iar majoritatea nu au făcut pentru că au auzit ei (sau au dedus) că UT presupune a scrie și mai mult cod. Unul mi-a zis că nu face UT pentru că a auzit că se face doar la proiectele mari și că oricum nu știe nici un alt programator care face. Yup, motive bune :) Read the rest of this entry »

Probabil mulți au încercat să învețe sa programeze.

Multora nu le-a ieșit nimic în prima zi. Sau în a doua. Sau în a treia. Și au renunțat.

Înveți așa:

Just because I can’t do it today, doesn’t mean i’m not gonna be able to do it someday.

Te perfecționezi așa:

If you keep on doing what you’ve always done, you’ll keep on being what you’ve always been.

Read the rest of this entry »

Recently I had to build a combined CSS animation: when first animation is at 5%, the next animation should start. Well, the problem is that the current JS API doesn’t have any events to track css animation keyframe progress (other than start, end and iteration/loop). So, with the newly discovered – by me – requestAnimationFrame, I started to fool around. This is what I’ve got (and tested ONLY on Chrome): Read the rest of this entry »

QR Code autentic

Azi am luat noul rom cu firimituri de biscuiți. Dar nu despre asta vreau să povestesc ci despre QR code-ul de pe ambalaj. Care duce la un site. Care pe telefon arată așa: Read the rest of this entry »

Link-urile lunii Aprilie

A trecut o grămadă de timp de la ultimul post din categoria „Link-urile săptămânii”. Motive? Suficiente. Probleme de sănătate, probleme în familie, proiecte multe și înghesuite, per total timp prea puțin. Ori sunt praf la time management. Sau puțin din amândouă.

În fine, începând cu 1 mai voi încerca o nouă șmecherie: link-urile săptămânii vor exista în continuare doar că vor fi mai puține. Și ceva mai… comentate :)

Acestea fiind spuse, acest post e ultimul din categoria „grămada de link-uri” cu care ești obișnuit.

  1. Fully customise WordPress edit screens with powerful fields
  2. Writing Unit Tests For WordPress Plugins
  3. Extending JavaScript – The Right Way
  4. Object-orientation and inheritance in JavaScript: a comprehensive explanation
  5. JavaScript design patterns – Part 1: Singleton, composite, and façade
  6. An Ajax-Include Pattern for Modular Content
  7. requestAnimationFrame – The secret to silky smooth JavaScript animation!
  8. Better JavaScript animations with requestAnimationFrame
  9. Closures: Front to Back
  10. JavaScript debugging for beginners
  11. Chrome Developer Tools: Breakpoints
  12. Using event capturing to improve Basecamp page load times
  13. pep.jquery.js
  14. Hammer.js – A javascript library for multi-touch gestures
  15. Simple html placeholder functionality with javascript and prototype
  16. jQuery MiniColors (a color selector for input controls)
  17. CSS3D Clouds – Cel mai bine merge în Chrome
  18. About HTML semantics and front-end architecture
  19. Linear Gradient Keywords
  20. Performance Profiler for Node.js
  21. Writing a Node Module
  22. OSX For Hackers
  23. Vagrant Virtualised Dev Environments

Cunoaște-ți uneltele!

Cred că unul dintre cele mai nasoale lucruri ce ți se pot întâmpla în cariera de programator este să nu cunoști uneltele cu care lucrezi. Fie că este vorba de editorul de cod, de VCS, de framework sau de limbajul în care lucrezi, cunoaște-l. Stăpânește-l.

Să-ți povestesc o întâmplare

Zilele trecute asistam un amic prin teamviewer să facă o chestie iar imediat după ce a adăugat fișierele în git (git a) și a scris mesajul de commit (git ci -m "mesaj"1), înainte să apese enter și-a dat seama că a făcut mici greșeli. Typos. Să fi văzut atunci acrobații cu copy/paste la mesaj, pentru a putea da iar comanda git a fără a rescrie mesajul și toate cele!

Sigur, norocul lui este că stă la dracu’n praznic, că altfel mă duceam și îi dădeam cu tastatura în cap!

Greșeala

Dacă faci parte din cei care se întreabă „ok, dar unde a greșit?” înseamnă că nu folosești git. Sau dacă îl folosești, îl folosești mecanic. Read the rest of this entry »

Ghilimelele din PHP

De mai bine de cinci ani (de când am trecut de hello world în PHP) am fost enervat la culme de… ghilimele. Și de inconsistența numelor de funcții, dar despre asta poate cu altă ocazie.

Așadar, să zicem că avem un string, să-i zicem $hello="World!"; și vrem să afișăm Hello World folosind acest string. O soluție ar fi:
Read the rest of this entry »

Dell ST2220T – Monitor multi touch. Preț accesibil, funcționalitate ok. Din păcate, nu este touch în adevăratul sens al cuvântului (cu suprafața ecranului sensibilă) ci are pe margine o șmecherie (probabil IR) ce detectează degetele. Partea bună este că e multi touch. Partea rea este că este doar bi-touch (detectează doar două degete) iar pe margini este mai puțin precis. Merge rezonabil cu Win7 și Win8 dar are nevoie de un driver special pentru OSX (care costă vreo 300$).

Evident, l-am luat pentru un proiect (la fel cum s-a întâmplat cu iPhone sau cu Nexus). Am avut surpriza să văd că Chrome nu detectează event-urile ca touch* (touchstart, touchend, touchmove etc) și că nu pot dezactiva pinch to zoom (ceea ce face treaba mai complicată decât ar trebui).

Overall, imaginea este bună, nu are probleme vizibile de culoare sau alte bucurii d’astea. Cea mai mare problemă – și zău că nu înțeleg de ce se încăpățânează producătorii! – este că atât ecranul cât și rama acestuia sunt.. glossy! Oameni buni, nu faceți glossy chestiile pe care dai cu degetul în continuu!

Windows 8

Dacă în urmă cu câteva luni, atunci când a apărut dev preview, am zis că Win8 este o porcărie din punct de vedere al usability, acum nu pot să zic decât că impresia a rămas aceeași. Voi reveni cu amănunte cu altă ocazie.

Mi s-a întâmplat de foarte multe ori să fie nevoie de un color picker într-o pagină care să ajusteze automat și culoarea textului, păstrând – cât de cât – un contrast. Poți face următoarea treabă în orice limbaj, fie că-i web sau nu. Este important să împarți culoarea în părțile de bază: roșu (R), verde (G) și albastru (B).

Dacă suma celor trei culori este sub 382 (teoretic; în practică am observat că e mai bine să se crească până pe la 400-450), culoarea este una întunecată. Dacă suma este peste 382, evident, este o culoare deschisă.

În PHP, de exemplu, poți extrage un array al celor trei culori de bază folosind funcția următoare:
Read the rest of this entry »

După o scurtă discuție privată cu un cunoscut blogger român, am ajuns la concluzia că unora pur și simplu le place să trăiască periculos. Editează fișierele temei WordPress direct din wp-admin, fără nici un back-up, fără nimic. Ce se întâmplă în situația în care crapă browserul? Sau cade curentul fix când se transferă cei 20kb? Sau se blochează sistemul de operare? Sau etc? Asta fără să pomenesc de controlul versiunilor!

Așadar, sunt curios ce workflow folosești când lucrezi la un site online. Ai un mediu de test? Lucrezi direct „pe ftp”? Folosești controlul versiunilor? Etc etc.

De exemplu, pentru site-urile la care lucrez constant am xammp configurat destul de aproape de serverele pe care dau cu sapa, țin fișierele sub Git și folosesc Sublime Text împreună cu Sublime SFTP pentru a edita, respectiv pentru a sincroniza diverse foldere (în principiu wp-content/themes/tema și, dacă e nevoie, wp-content/plugins.

Pentru modificări super rapide, la site-urile la care nu lucrez decât ocazional, folosesc Flash FXP.

Întreb asta pentru că am o vagă bănuială că este nevoie de un ghid pentru astfel de treburi…

Deci?