-
Inca de la primele bucati de cod scrise de programatori au aparut si primele probleme. De cand au aparut primii programatori a aparut si codul scris urat.
Cred ca fiecare carte respectabila de programare care explica de la inceput un limbaj se afla doua elemente importante, comentariile si reguli generale de scriere.
Eu la inceputurile mele de programare evident nu puneam nici un comentariu si nici nu ma omoram sa aranjez codul, toate astea pentru ca ma interesa sa mearga si… cam atat (mai ales ca nuprea mergeau din prima). Cu cat incepi sa lucrezi mai mult pe bucati de cod scrise de altii, incepi sa intelegi de ce sunt o inventie atat de buna comentarile si aranjarea in pagina.
De ce sa pierzi vremea ca sa aranjezi codul si sa-l comentezi? Hmmm, din perspectiva mea, pentru ca nu-mi place sa pierd vremea cautand bug-uri si incercand sa-mi dau seama ce am facut acum o gramada de vreme, sau chiar saptamana trecuta, orice programator prefera sa scrie cod nu sa-l repare. Munca pe care o depui acum o sa-ti fie rasplatita in timp.
Sa luam un exemplu:
1while($row= mysql_fetch_array($rez)) 2 { 3 $dump=$row["ceva"]; 4 $$dump =$row["altceva"]; 5 } 6 $name=basename($_SERVER["PHP_SELF"]); 7 $query = 'select t.ceva, sum(a.altceva) as REZ from tabela t, altatab a WHERE 8adresa="'.$name.'" and t.val1=a.val2'; 9$result = mysql_query($query);Se intelege repede din codul de mai sus care este rezultatul. Dar daca acest cod este ascuns printre alte cateva sute/mii de linii de cod, deja nu se mai intelege nimic.
Cateva probleme:
- codul nu este ordonat, macar daca nu il comentezi ARANJEAZA-L!!! Nu te gandi niciodata ca o faci pentru altcineva, de cele mai multe ori tot eu fac debuging pe un script facut de mine, dar cand trebuie sa urmaresc logica altcuiva… ganduri necurate imi strabat mintea.
- fii consistent, in general atunci cand lucrez pe un script care nu e facut de mine incerc sa pastrez consistenta modului de scriere (daca exista) a celui care a scris bucata de cod, asa nu o sa trebuiasca sa urmaresti doua moduri de scriere iar totul o sa fie mult mai vizual.
- scrierea conform standardului, chiar ieri aveam o discutie despre diferenta intre JOIN si conditie in WHERE in Oracle, concluzia a fost ca nu reduc performanta. Trebuie sa recunosc, nici eu nu foloseam aceasta tehnica pana nu de mult, dar o interogare scrisa aranjat o sa fie mult mai usor de inteles ulterior. Chiar daca nu o faci conform standardului, macar sa fie aranjata, cand sari de doua tabele si ai gresit ceva o sa fie mult mai usor sa urmaresti ce ai facut.
- scrie interogarile pe mai multe linii. MySQL nu intoarce erori explicite de multe ori, spune doar zona in care a gasit o eroare, atunci cand sunt pe mai multe linii vei afla si linia cu probleme. Un alt mare avantaj este ca poti sa comentezi cu usurinta o linie.
Varianta “frumoasa” a codului de mai sus ar fi ceva de genul:
1while($row = mysql_fetch_array($rez)) { 2 $dump = $row["ceva"]; 3 $$dump = $row["altceva"]; 4} 5 6$name = basename($_SERVER["PHP_SELF"]); 7 8$query = "SELECT t.ceva, SUM(a.altceva) AS rez 9 FROM tabela AS t, altatab AS a 10 WHERE adresa='".$name."' 11 AND t.val1=a.val2"; 12$result = mysql_query($query);Parca arata altfel nu? Evident se poate aranja si mai mult dar eu unul sunt multumit daca gasesc asa ceva in codul altcuiva.
Un blog interesant despre Lazy Ones (lenesi) este aici.
-
Dupa prima prelungire a perioadei de disponibilitate pentru sistemul de operare windows XP parea ca acesta va iesi usor usor din scena. Dar la scurt timp dupa ce anuntul ca Win XP va fi retras de la vanzare (iar), a aparut Service Pack 3.
Nu este ceva iesit din comun sa lansezi un ultim SP cand te pregatesti sa abandonezi un sistem de operare. Totusi de aceasta data lucrurile nu au stat tocmai asa, o rata scazuta de adoptie a noului OS Win Vista, a determinat prelungirea datei pana cand “batranul” XP va disparea din rafturi.
Acum ca perioada de gratie expira, o noua stire apare, Microsoft prelungeste (iar) termenul pana cand OS-ul va mai fi disponibil. Se pare ca o sa mai putem cumpara Win XP pana in vara anului viitor.
O veste buna, in special pentru cei care vor sa acizitioneze sisteme ultra-portabile care nu dispun de o putere de calcul suficient de mare pentru Win Vista.
-
-
Pe cat de ridicol suna pe atat de adevarat este.
Cateva tehnici de supravietuire pentru laptopuri:
- Nu lovi tastatura, tastatura de laptop nu este o tastatura normala, de fapt o tastatura normal este cam cat un laptop. Sistemul de prindere al tastelor se bazeaza pe cleme, in cazul desktopurilor se bazeaza in general pe niste mici ventuze. Deci incearca sa folosesti degetele pentru a tasta, nu pumnii, si incearca sa tastezi de la nivelul tastelor, CALCULATORUL NU ESTE O MASINA DE SCRIS!
- Nu dormi cu laptopul in priza! Bateria de la laptop este facuta sa functioneze ca… o baterie, asa cum nu e bine sa stai tot timpul cu telefonul la incarcat asa nu e bine sa stai cu bateria la incarcat! Principiul folosit este o celula galvanica, mai pe scurt niste particule trec intr-o parte, iar cand bateria se incarca se intorc de unde au plecat. In momentul cand ciclurile de descarcare-incarcare nu se executa complet in mod repetat, bateria pierde atat capacitatea de a se incarca cat si capacitatea de a se descarca la maxim.
- Un laptop este portabil dar nu este recomandabil sa-l scoti la plimbare cat timp functioneaza! HDD-urile SSD au o proprietate foarte importanta, sunt compacte si nu au elemente mecanice. HDD-urile clasice insa nu, ele se bazeaza pe componente mecanice, respectiv niste platane (discuri) si niste capete de citire si scriere magnetice, ca la un pickup, dar fara sa atinga discul. In momentul in care acesta este oprit, capetele se retrag intr-un locas special care le impiedica sa se miste, insa cand acestea functioneaza acestea stau foarte aproape de platane. Cand survine un soc in timpul functionarii exista posiblitatea ca acestea sa atinga platanul, moment in care apar defectiunile fizice (bad-uri), si pierderea irecuperabila a acelor sectoare.
- Nu face server din laptop! Un laptop nu este facut sa fie server! Un laptop este facut sa lucrezi cat lucrezi pe el apoi sa-l opresti, nu sa-l lasi zi si noapte sa stea sa lucreze. Un laptop se va incinge mult mai mult decat un desktop pentru ca acesta nu are loc sa se ventileze corespunzator iar in timp va genera din ce in ce mai multe probleme plecand de la aceasta aparent simpla problema.
- Nu brusca laptop-ul! Doar pentru ca este portabil asta nu inseamna ca este facut sa-l folosesti pe post de minge de fotbal. Desi un laptop este mult mai “inchegat” decat un desktop, acesta are parti care cedeaza la socuri, precum: CD-ROM, HDD-uri non SSD, ventiloatoare, monitor si chiar carcasa, evident lista poate continua, depinde de soc. Folositi genti si rucsace pentru laptopuri, acestea au staturi suplimentare de protectie pentru a disipa energia.
Si cateva tehnici generale de supravituire:
- Un calculator cool are o viata mai buna. Nu, nu ma refer la iMac, ma refer la racire, daca un ventilator da semne ca moare, schimba-l! In general e mult mai ieftin sa schimbi un ventilator decat o sursa, un procesor, o placa video sau un HDD, pastreaza calculatorul la rece(dar nu in frigider)! Daca nu poti sa inlocuiesti din varii motive un ventilator, cauta o solutie, exista o sumedienie de dispozitive pentru racire pe piata care pot sa-ti inghete calculatorul.
- Impamanteaza-l! Am spus-o de prea multe ori, prea multor oameni si totusi tot mai aud pe cate unul cum se plange ca la un fulger a ramas fara jumatate de calculator. Calculatorul produce oricum energie statica, un mic experiment, lasa calculatorul sa functioneze cateva minute, apoi incearca sa atingi carcasa si un fier cu impamantare, se va forma un arc si vei simti cam cata energie ar trebui sa se descarce de fapt (probabil vei spravietui, dar eu nu garantez). Componentele de baza din calculator sunt facute in asa fel incat supratensiunile sa fie directionate cate exterior, adica carcasa. Cu alte cuvinte daca ai supratensiuni in calculator, nu neaparat ca a fulgerat afara pe cablul tau de net, se poate sa ai un scurt de orice fel in calculator, tensiunea suplimentara va fi directionata spre carcasa iar calculatorul se va inchide automat. Daca nu exista un mod ca energia statica sa fie eliminata din carcasa aceasta nu o sa aiba unde sa mearga si… se va descarca un componentele legate de carcasa. Nu o data a fost cazul cand o mica sarma legata de calculator putea reduce costul reparatiei de la jumatate de calculator la cel al unei placi de retea, sunet etc. E valabil si pentru monitoare.
- Nu forta mufele! Mufele nu sunt facute sa scoti si sa bagi o zi intreaga dispozitive in ele, sau… sunt, dar nu cu ciocanul. Am vazut de multe ori mufe USB rupte, placi de retea sticate si chiar mufe de tastaturi. Daca a intrat dar nu merge din prima, daca o sa impingi a doua oare mai tare tot nu o sa mearga.
- Nu trage de cabluri si folositi cabluri corespunzatoare! Daca un cablu este prea intins poate sa strice mufa. Daca un cablu este stricat poate sa stice si dispozitivul. In general cablurile sunt relativ ieftine, de multe ori merita sa iei un cablu bun de la magazin decat sa folosesti cablul vechi al unui vecin care il tinea aruncat prin camara.
- Flositi suruburi! Toate gaurile alea care sunt in calculator au fost facute cu un scop! Inteleg, poate nu vrei sa pui toate cele 4 suruburi la CD-ROM, dar nici sa pui 1 nu e tocmai ok. Daca o placa nu este bine fixata, aceasta se poate misca din tot felul de motive, gen bagi un cablu in ea, il scoti, il intinzi, etc. Toate aceste mici ajustari pot sa strice iremediabil componenta, de asta sloturile AGP mai noi vin cu un conector de siguranta, este semnul de neincredere al producatorului. Plus ca vei constata ca un HDD sau un CD-ROM fixat este mai silentios.
- Nu te grabi cand schimbi ceva sau adaugi ceva! E mai bine sa o iei incet de la inceput decat sa stai apoi sa cauti de ce nu mai porneste calculatorul.
- Nu inlocuiti componente fara sa fiti siguri ca sunt compatibile! Daca ti se pare ca o componenta nu se potriveste, nu o forta! Manuale se gasesc relativ usor, iar acestea pot sa arate daca o componenta este compatibila sau nu.
- Citeste manualul! Manualele sunt facute cu un scop! Daca nu sti unde intra un jumper sau un led nu il baga in primii pini care-ti ies in cale, in acest mod pot sa strici iremediabil alte componente! Daca nu ai manual cauta pe net! Internet-ul este plin de tot felul de manuale si tutoriale, de multe ori e mai ieftin sa cauti un manual decat sa cauti o componenta de schimb.
Urmand aceste mici reguli, calculatorul o sa aiba sanse mai mari sa mai supravietuiasca inca o zi!
-
To hack or not to hack, that is the question!
Toti am auzit de termen, fie din ziare, tv, carti sau prieteni, fie de la pustiul din bloc care te mai ajuta cu calculatorul cand ai probleme.
Marea majoritate traiesc cu certitudinea ca un hacker este un personaj negativ care nu vrea decat sa atace calculatoare din diverse motive. De fapt si cei care studiaza problemele de securitate fac acelasi lucru. Exista chiar si un fel de cod de conduita in acest sector, o data ce a fost descoperita o gaura de securitate intr-un sistem, hackerul ar trebui sa-l anunte pe cel care detine sistemul de vulnerabilitate inainte de a face publica descoperirea.
Chiar si statele dezvoltate isi construiesct o armata de astfel de hackeri pentru a exploata vulnerabilitatile oponentilor.
Orice studiu de securitate serios se bazeaza practic pe munca unor hackeri, lucru care il face pe cel care studiaza securitatea si implicit cauta vulnerabilitati un hacker.
Dar mai exista si alte feluri de hackeri, de fapt un hacker cauta solutii, studiaza probleme in amanunt pentru a gasi noi oportunitati si de ce nu, pentru a inova. Calculatorul Apple I produs de Steve Wozniak s-a nascut dintr-un club de hackeri care de fapt in loc sa descopere vulnerabilitati nu faceau decat sa… descopere. Multi au incercat sa creeze lucruri noi folosind unelte disponibile, incepand de la programare in limbaje low-level si unelte hardware, pana la limbaje de mackup.
Yahoo! a avut de curand Open Hack Day 2008, acest eveniment pune in evidenta importanta pe care o poate avea un hacker intr-o astfel de companie. Un astfel de eveniment poate oferi atat o oportunitate pentru hackeri de a intelege mai bine servicile Yahoo!, cat si o oportunitate interesanta pentru companie de a vedea perspectiva si nevoile comunitatii de hackeri (da, o comunitate de hackeri se naste de multe ori din nevoi).
Din aceste doua imagini diferite pentru un hacker s-au nascut si doua viziuni diferite, daca in industrie un hacker cauta solutii in presa acesta cauta probleme.
Pana la urma fiecare programator are tendinta sa fie un hacker, fiecare dintre noi cauta la un moment dat solutii pentru probleme care nu au fost solutionate inca sau nu prezinta o solutie optima pentru o anumita problema.
Sa nu urati hackeri, din munca lor suntem azi unde suntem, iar din munca celor de azi se va construi viitorul. Nu trebuie sa discreditati o intreaga comunitate pentru problemele aduse de o mica parte din ei.
