Mostenire claselor in JavaScript

ianuarie 29, 2007

Articolul este scris acum ceva timp pe un forum de programare. Un articol complet www.yuiblog.com

O metoda de a folosi derivarea claselor in JavaScript. Desi este un pic cam ciudata in raport cu celelalte limbaje care suporta clase este totusi o metoda de a obtine clase care sa poata fii mostenite in JavaScript

/*****
* Person constructor
*****/
// Constructorul unei clase. Pentru a putea deriva aceasta clasa constructorul nu trebuie sa seteze nici o
// proprietate a clasei. Pentru a seta proprietatile constructorul va apela o alta functie care va face initializarile
function Person(first, last)
{
if ( arguments.length > 0 )
this.init(first, last);
}
/*****
* Person init
*****/
// Functia care seteaza proprietatile clasei si care va fi apelata de catre clasele derivate
Person.prototype.init = function(first, last)
{
this.first = first;
this.last = last;
};
/*****
* Person toString
*****/
// O alta functie a clasei care va fi suprascrisa de clasele derivate dar va putea fi apelata din aceste
Person.prototype.toString = function()
{
return this.first + "," + this.last;
};
/*****
* Setup Employee inheritance
*****/
// Deriveaza Employee din clasa Person
//Defineste prototipul clasei Employee specificand ca este o sub clasa a clasei Person
Employee.prototype = new Person();
// Defineste constructorul clasei Employee
Employee.prototype.constructor = Employee;
// Defineste clasa Person ca super-clasa (clasa parinte) a clasei Employee si permite astfel accesul la metodele // din clasa parinte
Employee.superclass = Person.prototype;
/*****
* Employee constructor
*****/
// Constructorul clasei. Cheama functia init pentru a initializa proprietatile
function Employee(first, last, id)
{
if ( arguments.length > 0 )
this.init(first, last, id);
}
/*****
* Employee init
*****/
Employee.prototype.init = function(first, last, id)
{
// Apeleaza metoda init din clasa parinte accesand-o prin prototipul acesteia si specificand ce parametri va primi. // metoda call() este folosita pentru a apela o functie si primeste ca parametri obiectul asupra careia este // apelata si parametri cu care functia va fii apelata
Employee.superclass.init.call(this, first, last);

// init properties
//Dupa ce functiile din clasele superioare seteaza parametri se seteaza parametri proprii ai clasei
this.id = id;
}
/*****
* Employee toString
*****/
Employee.prototype.toString = function()
{
// Este apelata functia toString din clasa parinte
var name = Employee.superclass.toString.call(this);
// Apoi se executa codul specific clasei
// Se pare ca la apelarea parintelui informatiile setate de functia din care se face apelul sunt sterse. Acest lucru // poate fi evitat prin salvarea valorilor in niste variabile care nu sunt implicate in apelarea funcitei din clasa // parinte iar apoi realizand o combinatie intre valorile salvate si cele returnate de functia parinte
return this.id + “:” + name;
};
/*****
* Setup Manager inheritance Same as in the case of Employee only that it specifies Employee as parent class
*****/
Manager.prototype = new Employee;
Manager.prototype.constructor = Manager;
Manager.superclass = Employee.prototype;

/*****
* Manager constructor
*****/
function Manager(first, last, id, department)
{
if ( arguments.length > 0 )
this.init(first, last, id, department);
}
/*****
* Manager init
*****/
Manager.prototype.init = function(first, last, id, department)
{
// Call superclass method
Manager.superclass.init.call(this, first, last, id);

// init properties
this.department = department;
}
/*****
* Manager toString
*****/
Manager.prototype.toString = function()
{
var employee = Manager.superclass.toString.call(this);

return employee + ” manages ” + this.department;
}

Sper sa fie de folos cuiva, desi nu cred ca sunt multi cei care folosesc clase in JavaScript


Facultate IT in .ro si lipsa de specialisti calificati

ianuarie 9, 2007

Am tot vazut posturi vorbind despre viata de student in afara si despre cat de serios trateaza lumea facultatea acolo. Cineva zicea ca facultatea este ca o afacere in care trebuie sa ai grija de investitia ta (taxe + alte cheltuieli). La noi nu e asa.

Din ce imi aduc aminte din UPB (Automatica si Calculatoare) la noi facultatea este o frectie la piciorul de lemn. Adica un student care trecea pe la cursuri din an in pasti si pe la seminare si mai rar a reusit sa termine anul 1 cu o singura restanta (doar din citit cursuri si ceva copiat). De pomina a ramas un examen la Analiza Matematica (singurul profesor la care ma duceam la toate cursurile si la seminarii cat le-am facut cu dumnealui) cand cu 2 nopti inainte ne-am strans sa ‘invatam’. Ne-am adunat pe la 11 noapte ne-am ‘jucat’ cu niste servere Sun (multi le vedem prima data o minune) pana pe la 12-12:30 cand am plecat la un coleg din Brasov la un gratar.

Motivele pentru care nu ma duceam erau legate de programul de la primul job, un program infernal. Am renuntat pentru ca nu puteam face 2 lucruri bine (la standardele mele) si ca sa nu imi distrug nervii, dar asta e alta poveste. Oricum eram unul dintre studenti care nu ar fii trebuit sa treaca anul dupa un standard relativ normal, eu ma picam la peste 60% din materii in locul profesorilor. Si totusi am trecut. Eram student in anul 2 cand am decis sa schimb facultatea.

Am trecut azi pe la noua facultate si constatam ca pe langa UPB e si mai mare dezinteresul. M-am dus la un profesor care m-a vazut prima data mi-a pus 3 intrebari si mi-a dat un 10 care conteaza ca nota in examen. Ma vedea prima oara. Nici macar nu s-a deranjat sa ma intrebe de ce nu m-am dus la seminarul lui…

Si acum stau si ma intreb cum de cineva se mai asteapta sa avem oameni pregatiti in domeniu cand in facultatile de profil nimeni nu isi da interesul. Studenti nu se chinuie pentru ca merge si asa. Profesori nu sunt interesati sau sunt foarte slab pregatiti. Cele cateva exceptii care incearca sa faca ceva si care sunt destul de bine pregatiti nu au cum sa influenteze studentii care s-au obisnuit cu ‘merge si asa’.

Lumea da vina ori numai pe studenti ori numai pe profesori. Toti sunt de vina. Plus lipsa laboratoarelor. Plus faptul ca in A250 iarna era mai rece ca afara altfel spus conditii lipsa (politehnisti stiu la ce ma refer). Si cei mai vinovatii suntem noi cei care realizam ca nu ceva nu este in regula si totusi nu facem nimic… Si mai rau decat faptul ca nu facem nimic este ca incurajam fenomenul. Am o cunostinta care a absolvit AC-ul anul trecut si nu stie nimic, stiu io mai multe despre automatizari decat el. Si totusi s-a angajat ca inginer automatist si este foarte bine platit. De ce? Pentru ca mentalitatea cu ‘merge si asa’ este formata si la patroni. Lumea nu se asteapta sa angajeze un om care dupa 1-2 saptamani sa inceapa sa dea randament. In .ro lumea angajeaza programatori si automatisti la care trebuie sa le faca training-uri de 2-3 luni ca sa ii aduca la un nivel decent…

Discutam cu un coleg depsre absolventi de azi din facultatile de profil. Am avut ‘placerea’ sa ma ocup de interviuri de angajare luna asta la firma. Cel mai dur mi s-a parut un absolvent de cibernetica (medii destul de bune 8+) care cand l-am intrebat de la ce vine www a dat un raspuns evaziv. L-am intrebat ceva mai tehnic si mi-a spus senin ca el nu stie si ca se asteapta sa invete de la noi. Intrebarea era din ceva ce stiam cu siguranta ca este in programa cibernetici si nu era de detaliu.

Degeaba se vorbeste de programe prea incarcate si pline de materii nefolositoare. Este adevarat ca defectele de genul acesta exista. Dar in mod clar nu asta cauzeaza lipsa de pregatire a studentilor romani

Pana angajatorii nu vor incepe sa ceara calitate nimic nu se va schimba… Cand lumea va refuza sa angajeze oameni care au nevoie de training (ca sa invete lucruri ce ar fii trebuit invatate in facultate) poate ca si la noi facultatea va devenii ceva serios. Altfel ar trebui sa ne schimbam denumirea poporului din romani in ‘merge si asa’ :(

Pana atunci spor la copiat si bafta la examene ‘colegi’ studentii. Luati 10 in examen si sper sa picati la interviul de angajare…


Poveste cu prosti: openmind

decembrie 13, 2006

Actori:

  • Blueair (companie de trasport aviatic low cost)
  • openmind (aka indenium. companie care ofera site-uri web, vroiam sa zic de web-development dar veti vedea de ce ma abtin)
  • Clienti serviciilor de rezervare online ai blueair (picati la mijloc nevinovati)

Poveste pe scurt:

Companie aviatica cu serviciu de rezervari online angajeaza firma de amatori sa le faca siteul. Amatori (n-ai zice ca sunt amatori cand vezi ce site-uri au in portofoliu) dau cu bata in balta. Clienti se trezesc cu datele confidentiale pe net.

Azi dimineata imi pierdeam timp-ul citind niste blog-uri cand din post in post ajung pe zoso.ro si acolo dau peste surpriza zilei. Directorul /scripts de pe site-ul blueair nu era protejat nici macar cu un index.html gol. Pana aici mai nimic important. Daca erai curios sa arunci un ochii pe acolo gaseai un csv cu 1800 de clienti blueair. Date de la nume, email pana la serii partiale de carti de credit. Adica informatii confidentiale (asa am aflat numarul de mobil personal al colegei de birou ;) , ca de pe cel de servici il mai inchizi)

Morala povestii: Oameni buni cand angajazi o firma sa va faca un site documentativa. Rugati pe cineva care se pricepe sa se uite pe alte proiecte ale firmei respective. Dar mai ales nu lucrati cu openmind pentru ca sunt echivalenti cu prostia.

Cat despre baieti de la openmind. Lasati-va de meserie ca sunteti paraleli. De ce spun asta? Acum 20 de minute am verificat restul site-urilor facute de copii astia. Toate sufereau de aceeasi hibe. Adica si nici dupa ce ati ajuns de rasul targului nu v-ati apucat sa rezolvati problema pe toate site-urile pe care le aveti?

Incep sa inteleg de ce lumea spunea ca in .ro nu sunt specialisti bine pregatiti. Eu judecam treaba dupa standardele de la noi din firma. Uitasem ca lucram mai mult pentru Franta si Australia si prea putin pentru .ro. Poate ar trebui sa angajam niste indieni sa faca site-uri pentru .ro sa nu se mai chinuie amatorii gen openmind.


Some funny stuff about it-workers

decembrie 9, 2006

Gasit undeva pe net, nu mai stiu unde ca a trecut destul timp. Azi dimineata am gasit-o pe hard cand faceam curat… E ciudat cate tampeni poti gasi pe un hard de 200Gb. Poate mai public unele mai tarziu ;)

1. We work weird (night) shifts…

Just like prostitutes.

2. They pay you to make the client happy…

Just like a prostitute.

3. The client pays a lot of money, but your employer keeps almost every penny…

Just like a prostitute.

4. You are rewarded for fulfilling the client’s dreams…

Just like a prostitute.

5. Your friends fall apart and you end up hanging out with people in the same profession as you…

Just like a prostitute.

6. When you have to meet the client you always have to be perfectly groomed…

Just like a prostitute.

7. But when you go back home it seems like you are coming back from hell…

Just like a prostitute.

8. The client always wants to pay less but expects incredible things from you…

Just like a prostitute.

9. When people ask you about your job, you have difficulties to explain it…

Just like a prostitute.

10. Everyday when you wake up, you say: “I’m not going to spent the rest of my life doing this.”

Just like a prostitute. …

Except prostitutes make more money than IT.


pandora.com

decembrie 6, 2006

Pandora Nu o sa ajungeti pe un site despre legendele Olimpului ;) . Este site-ul unuia dintre cele mai interesante proiecte care leaga IT-ul de muzica.
Oameni de acolo lucreaza la impartirea muzici in categorii determinate de stil si proprietati muzicale. Partea vizibila a proiectului consta intr-un player web. O sa intrebati ce este atat de special, doar avem n+1 radiouri online plus cele din viata de zi cu zi. Partea de noutate este posibilitatea definiri unei statii care va reda numai muzica din aceeasi categorie cu artistul/melodia initiala.

Sa presupunem ca vreti sa ascultati melodii in genul ‘Kashmir’ al lui Led Zeppelin nimic mai simplu. Creati un nou post de radio bazat pe aceea melodie. S-ar putea sa nu ascultati ‘Kashmir’ in urmatoarele 2 ore dar veti descoperi multa muzica buna de acelasi gen.

In concluzie: Try Pandora.com it’s brilliant and it’s free

Ps: Aici gasiti blog-ul celui care se ocupa de Music Genome Project si automat si de Pandora.com


Prima insemnare

decembrie 6, 2006

     Ma tot gandesc ce ar putea confinge pe cineva sa citeasca un blog… Clar lucru nu stiu. Asa ca primul post o sa fie despre ce vreau sa fac din blog-ul asta

In primul rand cred ca va fii mai mult un blog tehnic. Dap inca un programator nu are ce face la munca si isi deschide blog ;)

Asta nu inseamna ca o sa vedetii prea multe articole tehnice aici. De fapt cred ca o sa fie destul de rare 1-2 pe luna si in general comentarii pe baza altor articole

Poate niste articole despre siteuri/apliicatii care imi ocupa timpul Sau poate doar niste aberatii.

De ce mi-am deschis blog? Simplu. Sunt deja la a treia incercare si se mai intampla sa am ceva de spus asa pot sa spun si poate cineva ajunge sa si auda ;)


Follow

Get every new post delivered to your Inbox.