on the verge of extinction... again

dino prost

debugging, hardcore version

Pentru ca sunt de-a dreptul retardata atunci cand vine vorba de anumite chestii. De obicei, cand zici ceva de "scris cod", lumea se asteapta sa te pricepi si la alte chestii - probabil pentru ca majoritatea programatorilor chiar se pricep si la chestiile respective?

Cum ar fi instalat diverse chestii. Eu nu ma pricep. La fiecare instalare de... orice! stau cu sufletul la gura sa nu se buseasca (a se remarca reflexivul) ceva, pentru ca, daca se intampla asta, n-am nici cea mai mica idee ce-as putea sa fac.

Cum ar fi folosit un calculator, pur si simplu. Eu nu ma pricep. Sunt incapabila sa inteleg scurtaturile de tastatura. Probabil pentru ca imi sunt necunoscute. Eu stiu de click dreapta si selectat de acolo si mi se pare ma rapid si mai comod decat sa caut taste pe tastatura. Ah, da, sunt absolut incapabila sa tastez cu mai multe degete (cu ambele maini mi se pare ceva de domeniul fantasticului) sau fara sa caut tastele cu ochii inainte. Oricum, chiar si asa se mai intampla sa nimeresc litera de langa...

BIOS? Linie de comanda? Fac asta doar cu instructiuni detaliate sub bot. Si, de cele mai multe ori, nici atunci nu merg lucrurile cum trebuie. Probabil pentru ca habar n-am ce fac, nimic de acolo nu-mi spune nimic si pur si simplu copiez chestii mecanic.

Configurat chestii? Dupa sapte ani, inca stau cu biletelele pe frigider. Biletelele alea sunt cele pe care mi-am notat cum se configureaza diferitele IDE-uri pe care le-am folosit sau inca le mai folosesc (desi in cazul NetBeans, nici macar cu biletele sau urmat instructiunile de pe site nu merge de fiecare data). Si am nevoie disperata sa le folosesc, ca eu habar n-am cum sa rulez ceva facut in C sau Java altfel decat dand click pe un buton de Run - singura chestie de acolo care mi-e clar ce face. Ma rog, mai exista Save si Close/ Exit. Nici macar New nu mi-e clar, ca sunt atatea optiuni si de fiecare data cand creez un nou proiect am nevoie de trei- cinci incercari sa nimeresc ceva care sa mearga...

Probabil asta m-a atras la programarea web. Este suficient un Notepad++ in care sa scriu codul, dupa care vad imediat rezultatul in browser. Ma simt mai putin retardata cand lucrurile sunt atat de clare. Desigur, a fost de-a dreptul imposibil sa ma apuc de PHP inainte sa aflu de XAMPP - n-am fost niciodata in stare sa instalez Apache si restu' separat. Probabil pentru ca nici macar nu stiu ce-i cu "Apache si restu'" stiu doar ca trebuie sa fie acolo ca sa pot testa ceva ce-am scris in PHP.

Sunt incapabila sa inteleg cum se face debugging altfel decat se vede in poza de sus sau modificand linie cu linie codul (si asta devine putin complicat atunci cand imi intra bucle sau functii recursive in peisaj). Desi la capitolul asta am progresat, cel putin in ceea ce priveste JavaScript si PHP. Macar am invatat ca exista console.log()/ var_dump() - inainte stiam doar de alert()/ echo.

Acum o saptamana m-a scarpinat sa ma apuc sa ma joc putin cu tumblr. Pentru ca... am spus si aici ca as vrea sa scriu despre chestiuni mai tehnice si as prefera s-o fac in engleza, dar evident nu sunt la un nivel care sa imi permita sa scriu altundeva decat in ograda proprie si sa scriu in engleza pe blogul asta nu este ceva ce mi-as dori sa se intample prea des.

Stiu, spuneam ceva de un CMS propriu si n-am renuntat inca la ideea aia. Insa... ma roade o chestie. Am fost intrebata la un interviu daca am lucrat cu WordPress (chestii de genul instalat plug-in-uri) si am zis nu, dar as putea sa fac de la zero in PHP ceva de genul WordPress. Si evident ca n-au considerat ca asta ar fi mai important decat cunoasterea unui CMS deja existent.

Asa ca... hai sa fac ceva pe tumblr. Evident, daca am de gand sa fie ceva tehnic, nu pot folosi o tema facuta de altcineva. Trebuie sa fie facuta de mine. Cum se face... asta pare destul de simplu si destul de bine explicat. Cum se testeaza... asta este o alta problema. In cazul Blogger este foarte simplu - trebuie sa incarc un singur xml (ma rog, si imaginile de care poate am nevoie), pot sa modific tema oricand. In cazul tumblr... daca urc un fisier .css/ .js nu il mai pot sterge sau modifica.

Uhhh... deci eu cum imi testez "opera"? Caut pe net, se pare ca nu-s singura care a avut problema asta, multi oameni sunt incantati de TumblrThemr. Doar ca... dupa o zi in care mi-am facut draci, sunt incapabila sa inteleg cum dracu' se foloseste.

So much for tumblr & writing about tech stuff. Add one more to long list of failures.

8 pareri

cine
Cristi
cand
joi, 3 mai 2012 la 16:31:00 EEST
Programarea web pare simpla, dar este cea mai complicata si frustranta. Aplicatiile nu arata niciodata la fel in 2 browsere diferite, trebuie sa scrii de cel putin 2 ori mai mult cod JavaScript ca sa iei in considerare toate variantele de browser si in general apar tot felul de probleme. Mi s-a intamplat chiar sa am probleme cu un simplu form de login in Safari.

In schimb, un debugger pare complicat, dar este usor de folosit. Sunt cam 4 functii de baza care se folosesc cam in 80% din cazuri:
- breakpoint: il pui pe o linie si iti va opri programul cand executia ajunge la linia respectiva
- fereastra watch: aici adaugi variabilele pe care vrei sa le examinezi
- step in/step over/step out: controlul executiei - avansezi programul cu 1 instructiune fie intrand in functia apelata la linia curenta (step in) ori cu 1 instructiune dar sarind peste functia de la linia curenta (step over) sau pana cand iese din functia curenta (step out)
- call stack: iti arata stiva, adica functiile apelate pana s-a ajuns la functia curenta. Iti da posibilitatea sa "urci" in functia care a apelat functia curenta ca sa examinezi variabilele de acolo.

Interviul unde te-au intrebat de WordPress era pentru un post de programator? Nu cred ca instalarea de plug-in-uri are vreo legatura cu progamarea.
cine
brontozaurel
cand
joi, 3 mai 2012 la 17:52:00 EEST
Aplicatiile web nici nu au de ce sa arate la fel in doua browsere diferite. Daca e sa iei la puricat, nici macar chestiile care par ca ar fi la fel nu sunt la fel (imagini, fonturi - sunt randate diferit). Dar nu conteaza. Ideea e sa arate cam tot pe acolo.

Daca CSS-ul si HTML-ul (scris manual sau generat din PHP) sunt bine gandite, se poate realiza o aplicatie perfect functionala si care sa arate curat (nu spun frumos, pentru ca e greu sa mi se para ca arata frumos in IE7 ceva ce m-am obisnuit sa vad in Chrome) in toate browserele (nu garantez pentru IE6 sau Opera 9, dar totusi, mi-ar placea sa cred ca am evoluat suficient incat sa le lasam macar pe alea in urma) cu zero JavaScript.

Nu sunt in nici un caz impotriva JavaScript, insa sunt chestii pe care prefer sa le stiu functionale si fara.

Stiu chestiile astea despre cum functioneaza un debugger, mi s-a explicat de prea multe ori ca sa nu se lipeasca de mine poezia. Problema e ca doar atat e, o poezie invatata pe de rost. Nu are o logica pentru mine...

Da, era pentru backend/PHP. Probabil ca isi doreau ceva experienta cu instalat/ configurat/ "tunat" plug-in-uri...
cine
Cristi
cand
joi, 3 mai 2012 la 21:19:00 EEST
Pai sunt 2 tipuri de erori: unde ai o exceptie si debuggerul iti indica exact locul si se opreste automat si tot ce iti ramane sa faci este sa verifici variabilele ca sa vezi de ce s-a intamplat si celalalt tip, mai greu de identificat, unde nu ai o exceptie dar programul produce valori eronate. In acest caz, mergi mai mult pe intuitie. Pui un breakpoint cam pe unde ai fi pus un print(). Inspectezi variabilele pe care le-ai fi afisat cu print() si urmaresti executia in continuare sa vezi ce zone de cod se executa.
cine
brontozaurel
cand
vineri, 4 mai 2012 la 00:24:00 EEST
Argh... stiu chestiile astea, dar nu le inteleg. Nu se fac sinapsele.
cine
pinkISH
cand
sâmbătă, 5 mai 2012 la 02:27:00 EEST
Wordpress e o platforma care s-a ridicat enorm in ultimii 2 ani si a lasat in urma concurenta (Joomla, Drupal etc.). Foarte multe firme servesc clientilor site-uri cu interfata de administrare la pret ieftin, prin metoda:

1. design layout in Photoshop + modificari - 4-10 ore
2. transformare layout in tema de Wordpress - 4-6 ore
3. implementare cu minim de pluginuri - 2 ore

Total: 20 de ore (am rotunjit, maxim). Iar clientului i se pot cere de la 3-400 de euro pana la 2-3000 :))

Sa faci un site cu interfata de administrare acum 5-6 ani era criminal. Intai trebuia sa-ti dezvolti propriul CMS (jdemii de ore de programare neplatite), pe care apoi sa incerci sa-l vinzi clientilor ca sa ajungi sa-ti scoti banii in 2-3 ani :)

Nu-ti mai zic ca se merge si pe principiul de a vinde teme gata facute, luate de pe net. Si te intrebi cum fac unii bani si altii stau ca prostii sa-i faca SEO unui client care nici nu stie ce-i aia...
cine
brontozaurel
cand
sâmbătă, 5 mai 2012 la 09:47:00 EEST
Prima parte n-o pot intelege. Probably 'cause I'm a coder, not an artist :P Mi se pare mult mai simplu sa faci o schita pe hartie in cateva minute si sa realizezi partea de design direct in browser.
cine
pinkISH
cand
sâmbătă, 5 mai 2012 la 13:59:00 EEST
Nu e vorba de artist, e vorba de faptul ca trebuie sa-i arati clientului grafica inainte sa te apuci, altfel n-ai cum sa obtii aprobarea pe ea. Nu poti sa-i arati un A4 cu niste linii pe el :)
cine
brontozaurel
cand
sâmbătă, 5 mai 2012 la 14:45:00 EEST
De ce ai nevoie de aprobare pentru grafica inainte de a te apuca de scris cod? Ce faci daca nu aproba grafica? Cum stii ca o sa o aprobe? Nu din cauza ca ati discutat anumite concepte inainte de a te apuca de lucru in Photoshop? Nu sunt conceptele alea suficiente pentru a te apuca de design direct in browser?

Daca faci designul direct in browser, ii oferi sansa sa vada partea grafica "pe viu" pe masura ce prinde contur. Ii oferi sansa sa vada cum se comporta site-ul atunci cand interactionezi cu el, cand misti cursorul peste o chestie, cand dai click peste o chestie. Nici un .psd nu poate sa "prinda" niste chestii de "feeling". Cat de fin e un scroll, cat de rapide sau lente sunt niste tranzitii...

Da-ti si tu cu parerea!

Mai jos se pot scrie tampenii. Nu mai mari ca alea de mai sus...
Insa inainte de orice altceva, vezi cum se comenteaza: indrumar tehnic si reguli!
HTML acceptat: <b>, <i>, <a href=""> (fara alte atribute)