VândPupăză

Icon

Bine o zis cine o zis cand o zis ce o zis

1 miliard cand vrea muschiul lui Apple

Pe homepage la Apple.com e un counter care iti atrage atentia ca App Store (magazinul de aplicatii pentru produse Apple) va atinge 1 miliard de download-uri.

apple_store_2_billion_downloads

E adorabil pentru ca Apple va atinge acest numar (pe homepage) cand isi doreste, conform lui downloadcounter.js. Scriptul de JS nu face call-uri asincrone la server, nici macar ocazionale, ci ruleaza un algoritm simplu de incrementare. Singurul punct in care scriptul vorbeste cu serverul mama este la incarcarea paginii cand isi ia cea mai mare valoare atinsa dintr-un fisier text sincronizand data serverului cu cea a localelor de unde ruleaza counterul.

Apple ruleaza scriptul de incrementare pe baza unor predictii obtinute din deja aproape 1 miliard de downloads deci nu face mult rau. Totusi mi-ar fi placut sa vad din cand in cand un call de sincronizare cu numarul oficial de download-uri de la server – de dragul corectitudinii si calitatii cu care Apple isi obisnuieste audienta.

Daca lucrezi cu Prototype.js si ai nevoie de o idee pentru un algoritm de incrementare + counter sa te uiti in cel de la Apple. Daca poti citi cod JS obfuscat o sa il gasesti interesant :)

Show me your Error!

Nicholas Zakas scrie despre cum aruncatul de erori in JS este benefic developerilor.

Si nu doar actiunea de throw a erorilor ci mai degraba mesajul util care sa te ajute sa identifici mult mai usor de unde vine problema.

Nicholas sustine ca ar trebui sa arunci erori in consola atunci cand metoda este susceptibila de a primi argumente neasteptate. Este impractic sa faci error checking si error throwing pe orice metoda, mai ales cand ai control asupra argumentelor pasate acesteia (vezi metode private in JS).

E un articol sanatos de citit si recomand sa urmezi sfaturile.

Recent am avut de implementat o componenta JS ceva mai complexa si din experienta stiu ca cei ce o vor implementa tind sa nu citeasca specificatiile. E ok, nici eu nu RTFM.

Este mult mai rezonabil sa arunci errori in consola browserului care descriu problema decat sa primesti email-uri si telefoane de la oameni confuzi care nu inteleg de ce nu le merge jucaria.