Apr 04 2008

Wallpaper pentru pasionati

Category: TechnicalIuliana @ 17:12

Am gasit un wallpaper super dragut si care se potriveste cat de cat domeniului in care lucrez si de care sunt pasionata. Si mi-am zis sa il impart cu cei care ar putea fi interesati. (Pe mine privirea pinguinului ma amuza tare :) )
eclipsewallpaper.jpg


Apr 04 2008

Problema cu furnicile

Category: TechnicalIuliana @ 9:41

Problema: Se da un triunghi. In fiecare colt al triunghiului se afla o furnica. Daca se considera ca aceste furnici se pot misca doar pe laturile triunghiului, care este probabilitatea unei coliziuni in timpul deplasarii lor?

Rezolvarea matematica: Probabilitatea ca o furnica sa se miste in oricare din cele doua directii este de 1/2. Fiind vorba de trei furnici, fiecare cu cate 1/2 probabilitate de a urmari oricare din cele doua directii, probabilitatea se calculeaza in felul urmator: [(combinari de 3 luate cate 1) + (combinari de 3 luate cate 2)] * (1/2)*(1/2)*(1/2) = 6/8 = 3/4.

(Pentru generalizare: cosiderand un poligon cu n laturi, probabilitatea de coliziune va fi: [(combinari de n luate cate 1) +…+(combinari de n luate cate n-1)]*[(1/2) la puterea n])

Rezolvare inginereasca: Putem considera furnicile ca fiind variabile cu doua stari, (0,1), reprezentand cele doua directii posibile in care se pot deplasa furnicile. In cazul asta triunghiul cu cele trei furnici poate fi considerat un automat cu 8 stari determinate de cele trei intrari(000,001,010, 011, 100, 101, 110, 111). Avand in vedere ca cele trei furnici nu se vor intalni daca toate aleg aceeasi directie de deplasare din start doua stari nu ne intereseaza (000,111) si atunci raman 6 cazuri in opt, in care macar doua furnici isi aleg directii opuse de deplasare. => Probabilitatea de coliziuneeste 6/8 = 3/4.

(Pentru generalizare: daca o sa avem un poligon cu n laturi si n furnici stiind ca fiecare furnica are doua posibilitati de deplasare, vom avea intodeauna 2 la puterea n stari, din care doua vor caracteriza intotdeauna cazurile in care furnicile nu se intalnesc, deci probabilitatea de coliziune va fi [(2 la n) -2]/(2 la n)).


Mar 31 2008

Principiile Poo

Category: TechnicalIuliana @ 7:48

Acum ceva vreme am decis din anumite motive sa imi schimb jobul. Zis si facut. Am trimis cv-uri peste tot si am asteptat invitatii le teste. Primii pe lista au fost Continental, nu de alta, dar colegul meu de apartament lucreaza acolo si mi-a facut un forward la cv cu recomandare. M-am dus la test. 19 intrebari , 30 de minute. Floare la ureche, la prima vedere interviul mi s-a parut banal, pentru cineva care stie chestiile fundamentale C++. Eu nu le stiam chiar pe toate. O intrebare in schimb mi-a pus piedici. Aceasta intrebare se referea la principiile POO. Imi cerea sa selectez varianta care continea principiile POO. Erau trei variante: prima si a treia enuntau numai doua, iar a doua era constintuita din: abstraction, extension and polymorphism.

Acum ca sa va spun de ce m-a bagat in ceata. In facultate am invatat ca principiile POO fundamentale sunt: polimorfismul, incapsularea si mostenirea. Acum ceva vreme cautand pe net am gasit ca de fapt principiile POO sunt de fapt 4, la cele de mai sus adaugandu-se abstractizarea. Dupa interviul ala am cautat pe google sa vad de fapt cate variante sunt si wikipedia m-a bagat si mai tare in ceata, sustinand ca sunt alea trei de mai sus plus modularitatea.

Cum vad eu lucrurile: abstractizarea si modularitatea nu sunt doua principii fundamentale ale POO pentru ca pot fi considerate implementari/consecinte ale incapsularii si mostenirii. Asa ca daca pe la vreun interviu nimeriti alte prostii, nu va ganditi la ultimele carti scrise si la modul in care a tradus secretara. Enumerati-le pe alea pe care le stiti si care vi se par logice si daca asta o sa fie motivul pentru care nu veti fi angajat inseamna ca oricum firma respectiva nu merita efortul.

Bafta!

[later edit]: Apropos’, polimorfism il mai puteti intalni si ca “reusability” sau reutilizabilitatea, in traducere autohtona.


Mar 27 2008

Minuni in paragina

Category: English posts,MiscellaneousIuliana @ 10:58

Tot pe englishrussia.com am gasit niste poze cu case parasite. Dar ce case si ce arhitectura! Unele din camere mai au si mobilier. Tipul spune ca motivul pentru care s-au pastrat aproape intacte, asupra lor actionand doar timpul, este faptul ca sunt bine ascunse in padurile Rusiei. Poate mai aveam si noi de astea daca nu defrisau astia tot. Asa au defrisat, le-au scos la aer si daca n-au fost revendicate s-au mutat tigani in ele. O sa preiau si eu o poza dar restul le puteti gasi aici.

[English: Abandoned miracles]

On englishrussia.com I also found pictures with some abandoned houses. But omg what houses and what architecture! Some of the rooms even have furniture mobilier. The guy sais that the reason they look so fine, the only thing affecting them being time, is that they are well hidden in the Russian forests. Maybe we would have had these kind of houses too if the authorities wouldn’t have cut down so many forests. Cutting the trees they exposed them. If they weren’t reventicated, gypsies moved in. I’ll take one of the pictures and post it here but the rest can be found here.


Mar 19 2008

Reangajat

Category: Miscellaneous,TechnicalRpx @ 18:48

Spuneam aici ca am fost la BitDefender pentru un test in vederea angajarii.

Ieri am avut si interviul face-to-face, si se pare ca incepand de pe 31 martie voi fi din nou angajat cu norma intreaga :D

Interviul a fost relaxat iar intrebarile au fost relativ simple si de bun simt. Sincer, ma asteptam sa fie ceva mai dramatic, dar din fericire asteptarile m-au inselat. Am mai aflat ca la departamentul unde voi lucra, departament nou infiintat in Iasi, voi lucra cu un coleg ce are 39 de ani. Va fi interesant sa lucrez cu o persoana trecuta prin viata si cu ceva experienta in spate. Chiar eram ingrijorat de faptul ca voi primi drept coleg un gigel proaspat iesit de pe portile facultatii care sa-mi fluture cu aroganta bucata de hartie in fata de fiecare data cand ar trebui luata o decizie sau cand ar exista o discutie pe plan profesional. Sper sa nu ma insel in privinta lui si sa ne intelegem bine.

In rest… ma bucur de ultimele 2 saptamani de “concediu” :)

Tags:


Mar 18 2008

Am fost mintita

Category: TechnicalIuliana @ 17:29

Cand eram studenta obisnuiam sa cred ca atunci cand un profesor spune ceva, trebuie sa fie adevarat. Din pacate naivitatea mea m-a facut sa cred ca exista o varianta semi-recursiva a lui Quick Search si ca cel mai rapid algoritm de cautare intr-o colectie sortata este Binary Search. De chestia cu semi-recursiva m-am lamurit imediat ce m-am angajat(nu exista termenul de semi-recursiv :D), cu BinarySearch-ul m-am lamurit anul asta. Exista un algoritm care in anumite cazuri este mai rapid decat BinarySeach si se numeste Interpolation Search. Wikipedia spune mai multe.

De ceva vreme incerc sa tot prind timp sa fac un test. Si astazi mi-am indeplinit dorinta. In ce a constat testul asta? Am facut o comparatie intre eficacitatea Interpolation si Binary search. Am generat un tablou cu 1000 de elemente generate aleator cu valori inte 0 si 1 milion. Am facut 100.000 de cautari, obiectul cautat fiind de asemenea selectat in mod aleator. Rezultatele au fost intr-adevar multumitoare. Interpolation poate fi si de zece ori mai rapid decat Binary Search, asta excluzand cazurile in care raspunsul cautarii este returnat instant pentru ca primul element ales coincide cu cel cautat :). Complexitatea acestui algoritm este estimata la log(log(n)). Modelul implementat de acest algoritm este cel al cautarii unui nume in cartea de telefon. Ei bine in cazul lucrului cu numere acest algoritm returneaza rezultatele acelea de care ma minunam eu mai sus, dar in cazul lucrului cu siruri de caractere, calculele implicate in determinarea elementului mid, cel pe baza caruia se face reducerea intervalului de valori in care se face cautarea, fac ca performantele acestuia sa coboare pana la cele ale fratelului lui mai depasit, Binary Search.

N-o sa postez pseudocodul sau codul java pentru ca eu zic ca wikipedia spune cam tot ce e nevoie pentru implementarea lui. Sunt curioasa cu cat ar creste performantele daca pentru comparatia stringurilor as folosi Levenshtein?

[revin]


Mar 17 2008

Surpriza

Category: TechnicalIuliana @ 21:54

Prin octombrie 2007 am inceput sa predau niste laboratoare in C#. A fost o noutate pentru mine, am acceptat poate si pentru ca voiam sa invat ceea ce trecuse pe langa mine in facultate. Am urat obiectul asta, numit Sisteme Distribuite. Cum pana mea sa ceri unui studet care abia stia ce-i aia clasa sa faca din laboratorul doi delegati asincroni? Deja prin laboratorul 4 faceam remoting, iar eu nu stiam nici sintaxa limbajului si nici nu stiam sa lucrez cu Visual Studio 2003. In ala se faceau laboratoarele pe atunci. Poate as fi invatat, dar k6-2-ul meu cu 500 Mhz proc si 256 SRam chiar nu avea cum sa compileze si sa execute cel mai simplu proiect in mai putin de 3 minute. Asa ca imposibilitatea de a lucra acasa + un asistent care nu spunea mare lucru nu m-au ajutat deloc. Am avut noroc cu un coleg care s-a angajat si mi-a lasat calculatorul lui si am reusit sa recuperez la timp incat sa fac un amarat de proiect in Asp.Net si sa iau si eu o nota frumusica. Am urat obiectul asta si m-am ofticat ca nu am priceput mai nimic din el. Dar s-a nimerit sa pot sa scot parleala. Colegul meu care tinea laboratoarele a plecat pe neve si cineva trebuia sa le tina, iar alti oameni disponibili nu pareau sa apara. M-am riscat si am zis da. Putea fi inceputul meu ca profesor sau inceputul sfarsitului meu.

Am avut noroc ca prima generatie sa fie una de studenti buni, de fapt nu buni, foarte buni. Silitori si isteti nevoie mare, mai mare dragul sa tii ore cu ei. Nu stiu cate au invatat ei de la mine,(sper ca destul cat sa-i ajute pe viitor) dar eu pot spune ca am invatat multe de la ei. Am facut greseli, dar m-am corectat si acum nu o sa mai fac aceleasi greseli cu astia mai mici.

Cu toate acestea astia mai mici sunt mai inventivi si mai cu chef sa scape fara munca prea multa. Ce au facut baietii? Au cautat pe odc probabil rezolvarile problemelor de anii trecuti. Asta nu ar fi o problema, dar laboratoarele pe care le predau eu sunt in sistem doar de vreun an, poate s-a mai pastrat ceva din celelalte vechi, dar nu mult. Asa ca azi cand mi-au venit doi oameni cu doua probleme cu interfata grafica identica mi-am dat seama ca trebuie sa iau masuri. Unul dintre ei reusise sa o faca sa functioneze pe noua platforma .net, deci am trecut cu vederea, dar celalalt se chinuia in draci sa o faca sa mearga si nu intelegea de ce nu merge. Pai cum sa mearga puiut daca tu ai chiulit la laboratorul anterior unde am explicat ce inseamna Cross-threading-ul? Asa ca maine, ii voi intampina pe restul dintre ei cu o noua versiune de laborator:D. Surpriza!!!