Am aflat de curand de un site destul de awesome si am zis ca sa spun mai departe despre el. Site-ul este www.daily5.tv si este facut de o firma la care am lucrat eu in trecut si anume 648.
Ce face daily5.tv?
Pai principalul feature e ca iti da zilnic 5 video-uri interesante/amuzante de pe internet.
Cum face asta?
Bineinteles ca programator am inceput sa ma stresez. Cum face asta? Are ceva crawler pe youtube, se uita la numarul de view-uri, la numarul de like-uri, care e treaba? Asa ca i-am trimis un mesaj managerului general de la 648, Lucian Balanescu, sa il intreb. Aparent cele 5 video-uri sunt selectate personal de catre Lucian de pe diferite site-uri folosite de el (reddit, wimp, youtube etc.).
E adevarat ca din cauza manierei subiective in care sunt selectate video-urile ati putea crede ca poate nu ar fi interesant si pentru voi. Poate nu, insa merita o incercare. Mie chiar imi place. E un site care intra in lista mea de site-uri pe care sa intru atunci cand as vrea sa ma apuc de invatat dar decid sa o las pe mai incolo :).
luni, 28 februarie 2011
marți, 18 ianuarie 2011
Despre Fingo - Cum sa nu faci
Pentru cine nu stie, acum cateva luni, s-a lansat Fingo. Un site unde elevi in mare pot intra sa posteze barfe (adica cine cu cine si-a mai tras-o in baia liceului). Intamplator acest site a facut ceva buzz pe facebook in cercul meu de prieteni (site-ul e lansat de un tip care a participat la evenimentul GoodToGo unde am fost si eu prezent) si asa am ajuns sa intru si eu pe acest site. Primul lucru notabil e felul in care arata. Am vazut site-uri in frontpage care aratau mult mai bine. Proiectele colegilor mei de la facultate de la tehnici web arata infinit mai bine. Dar ma rog, am trimis destul feedback celor de la fingo pe tema asta :-".
M-am uitat pe acolo, m-au amuzat barfele elevilor, si la un moment dat am vrut sa vad comentariile de la o barfa. Aparent trebuie sa te logezi ca sa poti vedea commenturile. Zic ok hai ca ma logez, ca am vazut ca avea login cu facebook, deci nu ar fi trebuit sa fie decat 2-3 clickuri si pac. Apas pe butonul de "Allow" si imi apare o pagina foarte interesanta :). Ma asteptam sa vad lista de comment-uri. In schimb site-ul aparent a dat o eroare. Eh, in mod normal in astfel de cazuri ar trebui sa vezi o pagina de 404 (Page not found) sau 500 (Internal Server Error). Am vazut o pagina de 500 intr-adevar, insa nu pagina care ar trebui sa apara. In general se poate seta ca in productie sa apara o pagina frumos cu "Ne pare rau, am intampinat o problema bla bla bla". Se para insa ca baietii de la fingo nu au stiut sa faca chestia asta pentru ca eu am vazut urmatoarea pagina.

Ce e aceasta pagina ? Sunt informatiile de debug pe care le arata django-ul developer-ului. Aceasta nu ar trebui sa ii apara decat unui developer, care are site-ul pe local, si are configuratia sa apara in acest mod. Pe site-ul live in schimb ar trebui sa iti configurezi site-ul de asa natura incat sa nu apara aceasta pagina, si eventual sa setezi un template special (o pagina cu "ne pare rau blablabla"). De ce nu e bine sa apara pagina asta? Pai pentru contine o tona de informatii vulnerabile, care in maini nepotrivite pot fi fatale (sunt informatii referitoare la baza de date de exemplu, usernameul, parola din pacate e afisata cu *, dar oricum poti sa iti dai seama de lungimea parolei din asta etc). Ca sa nu mai zic ca apar si linii de cod pe acolo cu valorile pe care le au variabilele in acel moment. In principiu cam tot ce i-ar trebui unui developer ca sa poata rezolva eroarea.
Acuma probabil o sa zica lumea ca de ce nu le-am dat lor un mail sa le zic despre chestia asta fara sa anunt intreaga lume. Pai pentru ca nu am gasit nici un link de contact. Nu am gasit decat un formular de feedback care ma duce catre un forum public pe care se discuta despre fingo. Asa ca am decis ca daca singura metoda de ii notifica pe owneri despre acest lucru e un loc public, atunci macar sa o fac cu stil :D.
Pentru Alexandru Palade (administratorul site-ului, sau cel putin asa zice configuratia din django): Nu am stat sa ma documentez prea mult despre cum se rezolva chestia asta deoarece eu nu am lucrat cu django mai deloc la viata mea, dar din ce am inteles de la un bun prieten de-al meu (Bogdan Tataroiu) ai undeva un fisier settings.py unde ai o variabila DEBUG=true. Schimba in loc de true si pune false. De asemenea daca vrei sa investighezi eroarea care mi-a aparut mie din cauza careia nu am putut sa ma loghez, lasa-mi un comment si o sa iti trimit un mail cu traceback-u (adresa ta de mail e in configuratia de la django deci nu va fi nevoie sa iti lasi adresa de mail aici).
M-am uitat pe acolo, m-au amuzat barfele elevilor, si la un moment dat am vrut sa vad comentariile de la o barfa. Aparent trebuie sa te logezi ca sa poti vedea commenturile. Zic ok hai ca ma logez, ca am vazut ca avea login cu facebook, deci nu ar fi trebuit sa fie decat 2-3 clickuri si pac. Apas pe butonul de "Allow" si imi apare o pagina foarte interesanta :). Ma asteptam sa vad lista de comment-uri. In schimb site-ul aparent a dat o eroare. Eh, in mod normal in astfel de cazuri ar trebui sa vezi o pagina de 404 (Page not found) sau 500 (Internal Server Error). Am vazut o pagina de 500 intr-adevar, insa nu pagina care ar trebui sa apara. In general se poate seta ca in productie sa apara o pagina frumos cu "Ne pare rau, am intampinat o problema bla bla bla". Se para insa ca baietii de la fingo nu au stiut sa faca chestia asta pentru ca eu am vazut urmatoarea pagina.

Ce e aceasta pagina ? Sunt informatiile de debug pe care le arata django-ul developer-ului. Aceasta nu ar trebui sa ii apara decat unui developer, care are site-ul pe local, si are configuratia sa apara in acest mod. Pe site-ul live in schimb ar trebui sa iti configurezi site-ul de asa natura incat sa nu apara aceasta pagina, si eventual sa setezi un template special (o pagina cu "ne pare rau blablabla"). De ce nu e bine sa apara pagina asta? Pai pentru contine o tona de informatii vulnerabile, care in maini nepotrivite pot fi fatale (sunt informatii referitoare la baza de date de exemplu, usernameul, parola din pacate e afisata cu *, dar oricum poti sa iti dai seama de lungimea parolei din asta etc). Ca sa nu mai zic ca apar si linii de cod pe acolo cu valorile pe care le au variabilele in acel moment. In principiu cam tot ce i-ar trebui unui developer ca sa poata rezolva eroarea.
Acuma probabil o sa zica lumea ca de ce nu le-am dat lor un mail sa le zic despre chestia asta fara sa anunt intreaga lume. Pai pentru ca nu am gasit nici un link de contact. Nu am gasit decat un formular de feedback care ma duce catre un forum public pe care se discuta despre fingo. Asa ca am decis ca daca singura metoda de ii notifica pe owneri despre acest lucru e un loc public, atunci macar sa o fac cu stil :D.
Pentru Alexandru Palade (administratorul site-ului, sau cel putin asa zice configuratia din django): Nu am stat sa ma documentez prea mult despre cum se rezolva chestia asta deoarece eu nu am lucrat cu django mai deloc la viata mea, dar din ce am inteles de la un bun prieten de-al meu (Bogdan Tataroiu) ai undeva un fisier settings.py unde ai o variabila DEBUG=true. Schimba in loc de true si pune false. De asemenea daca vrei sa investighezi eroarea care mi-a aparut mie din cauza careia nu am putut sa ma loghez, lasa-mi un comment si o sa iti trimit un mail cu traceback-u (adresa ta de mail e in configuratia de la django deci nu va fi nevoie sa iti lasi adresa de mail aici).
joi, 28 octombrie 2010
American dream...
... or at least half of it, since I am still here.
Nu am mai scris de multa vreme vreo ceva aici, de fapt mai mult din cauza ca nu se intampla nimic interesant :P, insa, dupa cum stiti multi dintre voi, eu acuma sunt in California, in mijlocul unui internship la Facebook, iar daca asta nu e destul de interesant incat sa bag un post mic aici probabil ca ar trebui sa inchid de tot blogul.
Deci... cum e viata la facebook? Multa lume mi-a pus intrebarea asta pe mess, gmail etc. si de fiecare data eram surprins si nu reuseam sa dau un raspuns clar. Fiind o chestie atat de mare nu puteam sa zic doar "super tare", intotdeauna am avut impresia ca ar trebui sa dau mai multe detalii si nu prea gaseam (sau nu aveam voie sa zic). Ei bine... chiar e super tare. E super tare sa lucrezi alaturi de oamenii astia cot la cot, sa ii vezi cum lucreaza non-stop, sa ii vezi ca vin si in weekend la birou si mai codeaza oleaca. E greu sa nu fii motivant in jurul acestor persoane. Si asta cred ca e primul punct pe care ar trebui sa il ating in descrierea vietii la facebook, motivatia. E absolut incredibil motivatia care iti intra in sange cand esti aici, intri pe usa in fiecare zi si iti dai seama ca munca ta de aici intr-o zi va schimba modul in care interactioneaza 500+ milioane de oameni, daca acest lucru nu te face sa stai sa codezi until you drop dead sa iti lansezi proiectul ca sa iti vezi toti prietenii interactionand cu munca ta, atunci nu stiu ce te-ar putea motiva.
Un alt lucru interesant despre care as vrea sa povestesc este libertatea pe care o ai aici, lucru la care mi-a fost foarte greu sa ma adaptez. Stiti cum e in Romania cand te duci la munca si nu ai absolut nici un chef sa lucrezi, esti obosit, sictirit, your having a really bad day, si totusi tre sa stai la munca 8 ore sa lucrezi sa faci ce tre sa faci intr-o sila totala? E nashpa nu? Mda cam e. Ei bine aici nu tre sa faci asta. Vii la birou cand vrei, pleci cand vrei, o sa il citez in continuare pe managerul meu "As long as you can finish your project, I don't care if you take a whole week off". Mi s-a intamplat intr-o zi sa fiu pur si simplu lipsit de chef. Nu vroiam sa lucrez, codam intr-o sila totala. Pana cand mi-am amintit ca pot sa plec cand vreau. Era vreo 3 ceasu (ajunsesem la birou pe la 11 la birou iar de la 12 la 1 fusesem la masa) deci de abia daca lucrasem vreo 3 ore, si pur si simplu mi-am pus laptopu in ghiozdan si am plecat. Atunci am observat ceva ce nu vezi in fiecare zi, sa pleci la ora aia de la birou si sa nu se uite nimeni dubios la tine, zicandu-si in minte "Ia uite si la asta, de abia a venit si a si plecat". Nu, toata lumea isi vedea de treaba, nimeni nu a avut nici o problema cu asta. Poti sa iei oricand o pauza, sa te duci sa joci un ping pong, sa te duci intr-una din salile unde avem instalate niste xbox-uri / playstation-uri sa te joci, sau pur si simplu sa te dai cu placa prin birou (intr-o zi mi s-a intamplat ca in timp ce codam sa treaca pe langa mine un tip cu bicicleta iar la parter am vazut intr-o zi un tip plimbandu-se printre birouri cu un monociclu).
O alta chestie tare sunt sedintele saptamanale numite "Q&A with Mark Zuckerberg" (stiu ca e o chestie care e si la google si e posibil sa fie furata de acolo, dar e o chestie care mie mi se pare cool, si o chestie cool e cool chiar daca e furata sau nu). O sedinta in care ne adunam toti angajati, zuck vine in fata si putem sa il intrebam absolut orice, de la "de ce nu putem veni cu caini la birou?" pana la strategia de viitor a companiei (in case anybody wants to know nu putem veni cu caini la birou pentru ca anumite persoane au zis ca sunt alergice). Tot in tema asta am apucat sa vad aici o groaza de personalitati mari venind si tinand astfel de q&a-uri la facebook (azi de exemplu a fost Bill Gates iar acum vreo 2 saptamani a venit primarul din New York).
Si acuma sa trecem direct la ceea ce e interesant si sa va zic la ce lucrez... ah crap... just remembered I am not supposed to tell. Well ce pot sa va zic insa e ca e un proiect frontend. La inceput am fost destul de dezamagit cu chestia asta, ca tre sa scriu o groaza de markup si css ca sa construiesc user interface-ul which sucks, plus ca nu prea imi place din principiu frontendu. Intotdeauna mi s-a parut mai tare si mai cool backendu, sa faci chestii hot acolo, sa vii cu idei care sa aduca improvement-uri enorme la website. Cu timpul insa am realizat ca si faptul ca lucrez frontend are niste avantaje, si anume faptul ca o sa fie un produs vizibil pe site, un produs cu care useri o sa interactioneze zilnic, I'll have something to show my friends :D. Cum zicea un prieten aici care lucreaza pe backend "My project is going to be visible to the users only if it crashes" lucru care nu prea vrei sa se intample. Asa ca astept cu nerabdare sa imi lansez proiectul sa vad feedbacku userilor, sa vad ce o sa creada lumea despre munca mea (promit sa am grija la privacy settings).
Sunt o groaza de chestii tari pe aici, nu am scris decat cateva care mi-au venit acuma in minte, probabil ca mai sunt o groaza de chestii despre care ar trebui sa scriu si nu imi aduc aminte acuma, asa ca o sa rog persoanele cu care am mai vorbit pe mess sa imi lase un comment de genu "Ah povesteste de faza aia ... ca e super tare", sau puteti sa imi ziceti pe mess in caz ca nu sunteti sigur despre cat de confidentiala era chestia aia.
Nu am mai scris de multa vreme vreo ceva aici, de fapt mai mult din cauza ca nu se intampla nimic interesant :P, insa, dupa cum stiti multi dintre voi, eu acuma sunt in California, in mijlocul unui internship la Facebook, iar daca asta nu e destul de interesant incat sa bag un post mic aici probabil ca ar trebui sa inchid de tot blogul.
Deci... cum e viata la facebook? Multa lume mi-a pus intrebarea asta pe mess, gmail etc. si de fiecare data eram surprins si nu reuseam sa dau un raspuns clar. Fiind o chestie atat de mare nu puteam sa zic doar "super tare", intotdeauna am avut impresia ca ar trebui sa dau mai multe detalii si nu prea gaseam (sau nu aveam voie sa zic). Ei bine... chiar e super tare. E super tare sa lucrezi alaturi de oamenii astia cot la cot, sa ii vezi cum lucreaza non-stop, sa ii vezi ca vin si in weekend la birou si mai codeaza oleaca. E greu sa nu fii motivant in jurul acestor persoane. Si asta cred ca e primul punct pe care ar trebui sa il ating in descrierea vietii la facebook, motivatia. E absolut incredibil motivatia care iti intra in sange cand esti aici, intri pe usa in fiecare zi si iti dai seama ca munca ta de aici intr-o zi va schimba modul in care interactioneaza 500+ milioane de oameni, daca acest lucru nu te face sa stai sa codezi until you drop dead sa iti lansezi proiectul ca sa iti vezi toti prietenii interactionand cu munca ta, atunci nu stiu ce te-ar putea motiva.
Un alt lucru interesant despre care as vrea sa povestesc este libertatea pe care o ai aici, lucru la care mi-a fost foarte greu sa ma adaptez. Stiti cum e in Romania cand te duci la munca si nu ai absolut nici un chef sa lucrezi, esti obosit, sictirit, your having a really bad day, si totusi tre sa stai la munca 8 ore sa lucrezi sa faci ce tre sa faci intr-o sila totala? E nashpa nu? Mda cam e. Ei bine aici nu tre sa faci asta. Vii la birou cand vrei, pleci cand vrei, o sa il citez in continuare pe managerul meu "As long as you can finish your project, I don't care if you take a whole week off". Mi s-a intamplat intr-o zi sa fiu pur si simplu lipsit de chef. Nu vroiam sa lucrez, codam intr-o sila totala. Pana cand mi-am amintit ca pot sa plec cand vreau. Era vreo 3 ceasu (ajunsesem la birou pe la 11 la birou iar de la 12 la 1 fusesem la masa) deci de abia daca lucrasem vreo 3 ore, si pur si simplu mi-am pus laptopu in ghiozdan si am plecat. Atunci am observat ceva ce nu vezi in fiecare zi, sa pleci la ora aia de la birou si sa nu se uite nimeni dubios la tine, zicandu-si in minte "Ia uite si la asta, de abia a venit si a si plecat". Nu, toata lumea isi vedea de treaba, nimeni nu a avut nici o problema cu asta. Poti sa iei oricand o pauza, sa te duci sa joci un ping pong, sa te duci intr-una din salile unde avem instalate niste xbox-uri / playstation-uri sa te joci, sau pur si simplu sa te dai cu placa prin birou (intr-o zi mi s-a intamplat ca in timp ce codam sa treaca pe langa mine un tip cu bicicleta iar la parter am vazut intr-o zi un tip plimbandu-se printre birouri cu un monociclu).
O alta chestie tare sunt sedintele saptamanale numite "Q&A with Mark Zuckerberg" (stiu ca e o chestie care e si la google si e posibil sa fie furata de acolo, dar e o chestie care mie mi se pare cool, si o chestie cool e cool chiar daca e furata sau nu). O sedinta in care ne adunam toti angajati, zuck vine in fata si putem sa il intrebam absolut orice, de la "de ce nu putem veni cu caini la birou?" pana la strategia de viitor a companiei (in case anybody wants to know nu putem veni cu caini la birou pentru ca anumite persoane au zis ca sunt alergice). Tot in tema asta am apucat sa vad aici o groaza de personalitati mari venind si tinand astfel de q&a-uri la facebook (azi de exemplu a fost Bill Gates iar acum vreo 2 saptamani a venit primarul din New York).
Si acuma sa trecem direct la ceea ce e interesant si sa va zic la ce lucrez... ah crap... just remembered I am not supposed to tell. Well ce pot sa va zic insa e ca e un proiect frontend. La inceput am fost destul de dezamagit cu chestia asta, ca tre sa scriu o groaza de markup si css ca sa construiesc user interface-ul which sucks, plus ca nu prea imi place din principiu frontendu. Intotdeauna mi s-a parut mai tare si mai cool backendu, sa faci chestii hot acolo, sa vii cu idei care sa aduca improvement-uri enorme la website. Cu timpul insa am realizat ca si faptul ca lucrez frontend are niste avantaje, si anume faptul ca o sa fie un produs vizibil pe site, un produs cu care useri o sa interactioneze zilnic, I'll have something to show my friends :D. Cum zicea un prieten aici care lucreaza pe backend "My project is going to be visible to the users only if it crashes" lucru care nu prea vrei sa se intample. Asa ca astept cu nerabdare sa imi lansez proiectul sa vad feedbacku userilor, sa vad ce o sa creada lumea despre munca mea (promit sa am grija la privacy settings).
Sunt o groaza de chestii tari pe aici, nu am scris decat cateva care mi-au venit acuma in minte, probabil ca mai sunt o groaza de chestii despre care ar trebui sa scriu si nu imi aduc aminte acuma, asa ca o sa rog persoanele cu care am mai vorbit pe mess sa imi lase un comment de genu "Ah povesteste de faza aia ... ca e super tare", sau puteti sa imi ziceti pe mess in caz ca nu sunteti sigur despre cat de confidentiala era chestia aia.
joi, 10 iunie 2010
Solutie Problema
In primul rand imi cer scuze pentru intarziere cu care scriu acest post (am fost prins cu diferite chestii nesemnificative cum ar fi sesiunea - care nu merge f bine btw).
Problema era asa:
Dandu-se o lista simplu inlatuita de lungime necunoscuta sa se gaseasca un algoritm care returneaza un element random din aceasta lista printr-o singura parcurgere. Problema se rezolva in felul urmator.
La pasul 1 alegem elementul de pe pozitia 1.
La pasul i alegem elementul de pe pozitia i cu o probabilitate de 1 / i.
Voi scrie algoritmul intr-un pseudocod pentru a fi mai clar.
ret = 0
pointer = baza listei
for (i = 1; pointer != null; i++, p = p->next) {
if (rand(i) == 0) {
ret = p->valoare;
}
}
Practic la fiecare pas inlocuiesc elementul returnat cu elementul aflat pe pozitia aceea cu o probabilitate de 1 / i, iar la sfarsit returnez elementul din ret.
De ce toate elementele au aceeasi probabilitate?
Demonstratia se face cu o inductie simpla.
pasul 1.
Lista are lungime 1, elementul returnat este chiar primul din lista -> evident.
pasul i.
Sa zicem ca am ajuns la elementul i si am ales deja un element din primele i-1 elemente cu probabilitatea 1 / (i - 1). Acum avem probabilitate (i - 1) / i ca elementul dinainte sa ramana si 1 / i ca acesta sa fie inlocuit.
Avand in vedere ca elementul de dinainte avea deja probabilitatea 1 / (i - 1) probabilitatea ca acesta sa fie continuare e (1 / (i - 1)) * ((i - 1) / i) = 1 / i.
Evident probabilitatea elementul ales sa fie cel din casuta i e 1 / i deci elementul ales va avea probabilitatea 1 / i.
Daca aveti nelamuriri puteti sa imi trimite-ti si sper sa va raspund cat de curand cu lamuriri :).
Problema a fost rezolvata de:
- Cosmin Gheorge
- Andrei Dragus
- Tudor Muresan & Cristi Urlea (au lucrat la comun)
- Dan Sanduleac
Am mai auzit o idee care mie nu mi se pare ok insa o sa postez aici argumentele mele impotriva ei.
La fiecare pas generam un numar random si la sfarsit alegem elementul cu cheia minima. In practica aceasta idee merge insa ce te faci in cazuri de egalitate? Cineva a zis ca in cazul in care ai egalitate intre 2 elemente dai cu banu pe care sa il iei (adica fifty - fifty chance) insa nu vad cum ai putea argumenta corectitudinea acestei solutii. Din aceasta cauza am respins aceasta solutie (oricum toti cei care au venit cu solutia asta au revenit ulterior cu solutia buna). Nestiind insa lungimea listei nu prea stii in ce interval sa generezi acele numere riscand astfel sa ai multe egalitati ceea ce ar duce la dubiosenii :D. Daca reuseste cineva sa demonstreze ca merge sa dai cu banul in caz de egalitate il invit sa posteze aici comment sau sa imi trimita un mail.
Problema era asa:
Dandu-se o lista simplu inlatuita de lungime necunoscuta sa se gaseasca un algoritm care returneaza un element random din aceasta lista printr-o singura parcurgere. Problema se rezolva in felul urmator.
La pasul 1 alegem elementul de pe pozitia 1.
La pasul i alegem elementul de pe pozitia i cu o probabilitate de 1 / i.
Voi scrie algoritmul intr-un pseudocod pentru a fi mai clar.
ret = 0
pointer = baza listei
for (i = 1; pointer != null; i++, p = p->next) {
if (rand(i) == 0) {
ret = p->valoare;
}
}
Practic la fiecare pas inlocuiesc elementul returnat cu elementul aflat pe pozitia aceea cu o probabilitate de 1 / i, iar la sfarsit returnez elementul din ret.
De ce toate elementele au aceeasi probabilitate?
Demonstratia se face cu o inductie simpla.
pasul 1.
Lista are lungime 1, elementul returnat este chiar primul din lista -> evident.
pasul i.
Sa zicem ca am ajuns la elementul i si am ales deja un element din primele i-1 elemente cu probabilitatea 1 / (i - 1). Acum avem probabilitate (i - 1) / i ca elementul dinainte sa ramana si 1 / i ca acesta sa fie inlocuit.
Avand in vedere ca elementul de dinainte avea deja probabilitatea 1 / (i - 1) probabilitatea ca acesta sa fie continuare e (1 / (i - 1)) * ((i - 1) / i) = 1 / i.
Evident probabilitatea elementul ales sa fie cel din casuta i e 1 / i deci elementul ales va avea probabilitatea 1 / i.
Daca aveti nelamuriri puteti sa imi trimite-ti si sper sa va raspund cat de curand cu lamuriri :).
Problema a fost rezolvata de:
- Cosmin Gheorge
- Andrei Dragus
- Tudor Muresan & Cristi Urlea (au lucrat la comun)
- Dan Sanduleac
Am mai auzit o idee care mie nu mi se pare ok insa o sa postez aici argumentele mele impotriva ei.
La fiecare pas generam un numar random si la sfarsit alegem elementul cu cheia minima. In practica aceasta idee merge insa ce te faci in cazuri de egalitate? Cineva a zis ca in cazul in care ai egalitate intre 2 elemente dai cu banu pe care sa il iei (adica fifty - fifty chance) insa nu vad cum ai putea argumenta corectitudinea acestei solutii. Din aceasta cauza am respins aceasta solutie (oricum toti cei care au venit cu solutia asta au revenit ulterior cu solutia buna). Nestiind insa lungimea listei nu prea stii in ce interval sa generezi acele numere riscand astfel sa ai multe egalitati ceea ce ar duce la dubiosenii :D. Daca reuseste cineva sa demonstreze ca merge sa dai cu banul in caz de egalitate il invit sa posteze aici comment sau sa imi trimita un mail.
vineri, 30 aprilie 2010
Problema
Am mai postat acum ceva vreme o problema care mi s-a parut interesanta, iar zilele trecute am mai dat peste una.
Se da o lista simplu inlatuita a carei lungime nu este cunoscuta. Se cere sa se construiasca o functie care sa returneze un numar random din aceasta lista si sa respecte urmatoarele conditii:
- nu se poate parcurge lista de mai multe ori
- fiecare element al listei trebuie sa aibe aceeasi probabilitate de a fi selectat.
O sa postez si solutia peste ceva vreme, pana atunci daca aveti solutii trimiteti-le la tiberiu.savin@gmail.com.
Pana acum problema a fost rezolvata de:
- Cosmin Gheorghe
- Andrei Dragus
Se da o lista simplu inlatuita a carei lungime nu este cunoscuta. Se cere sa se construiasca o functie care sa returneze un numar random din aceasta lista si sa respecte urmatoarele conditii:
- nu se poate parcurge lista de mai multe ori
- fiecare element al listei trebuie sa aibe aceeasi probabilitate de a fi selectat.
O sa postez si solutia peste ceva vreme, pana atunci daca aveti solutii trimiteti-le la tiberiu.savin@gmail.com.
Pana acum problema a fost rezolvata de:
- Cosmin Gheorghe
- Andrei Dragus
duminică, 28 martie 2010
Good To Go
Saptamana aceasta a avut loc un eveniment organizat de catre Business Club intitulat Good to go. In fiecare zi de la 9 jumatate dimineata pana seara la 6 veneau diferiti oameni de afaceri si ne impartaseau despre experientele lor si cum au reusit ei sa isi duca afacerile pe culmile succesului. Temele alese de organizatori au fost:
- Managementul Strategic
- Construirea unei echipe competitive
- Managementul lantului de valori
Am participat si eu la acest eveniment si trebuie sa spun ca a fost super tare. Majoritatea oamenilor carora le-am zis ca e cool si ca am invatat o gramada ma intrebau precis ce am invatat de acolo. Nu cred ca pot sa fac o lista clara de lucruri pe care le-am invatat, ceea ce pot sa zic e ca mi-a schimbat foarte mult viziunea pe care o aveam pana acuma asupra lucrurilor. Am invatat sa gandesc din postura unui antreprenor si asta cred ca e cel mai important lucru pe care il puteam dobandi.
Am cunoscut foarte multi oameni tari pe acolo, atat speakeri cat si participanti. Dintre speakeri singurul cu care am avut curajul sa interactionez a fost Daniel Enache care avea afaceri deschise pe nisa mea (omul investise mult in online). Am fost foarte mirat sa aflu si ca prima lui afacere a fost Sixty-four Eights Group firma la care am lucrat acum cateva luni (ce mica e lumea :D). De asemenea multi dintre participanti erau oameni care vroiau sa isi intemeieze o afacere, oameni super tari, a caror contacte e posibil sa imi foloseasca in viitor.
Tot evenimentul s-a incheiat cu o simulare de real-business in care am avut ocazia sa venim cu idei proprii de strategie pentru a creste o companie. Trebuie sa precizez cu mandrie ca am facut parte din echipa castigatoare :D.
Una peste alta, trebuie sa felicitam organizatorii pentru munca depusa si pentru faptul ca au reusit sa convinga niste oameni destul de importanti (ex: George Copos) sa isi dea 2 ore din viata, 2 ore in care cine stie cati bani faceau, sa vina sa ne vorbeasca cu noi. Congrats.
- Managementul Strategic
- Construirea unei echipe competitive
- Managementul lantului de valori
Am participat si eu la acest eveniment si trebuie sa spun ca a fost super tare. Majoritatea oamenilor carora le-am zis ca e cool si ca am invatat o gramada ma intrebau precis ce am invatat de acolo. Nu cred ca pot sa fac o lista clara de lucruri pe care le-am invatat, ceea ce pot sa zic e ca mi-a schimbat foarte mult viziunea pe care o aveam pana acuma asupra lucrurilor. Am invatat sa gandesc din postura unui antreprenor si asta cred ca e cel mai important lucru pe care il puteam dobandi.
Am cunoscut foarte multi oameni tari pe acolo, atat speakeri cat si participanti. Dintre speakeri singurul cu care am avut curajul sa interactionez a fost Daniel Enache care avea afaceri deschise pe nisa mea (omul investise mult in online). Am fost foarte mirat sa aflu si ca prima lui afacere a fost Sixty-four Eights Group firma la care am lucrat acum cateva luni (ce mica e lumea :D). De asemenea multi dintre participanti erau oameni care vroiau sa isi intemeieze o afacere, oameni super tari, a caror contacte e posibil sa imi foloseasca in viitor.
Tot evenimentul s-a incheiat cu o simulare de real-business in care am avut ocazia sa venim cu idei proprii de strategie pentru a creste o companie. Trebuie sa precizez cu mandrie ca am facut parte din echipa castigatoare :D.
Una peste alta, trebuie sa felicitam organizatorii pentru munca depusa si pentru faptul ca au reusit sa convinga niste oameni destul de importanti (ex: George Copos) sa isi dea 2 ore din viata, 2 ore in care cine stie cati bani faceau, sa vina sa ne vorbeasca cu noi. Congrats.
duminică, 7 februarie 2010
Sesiunea
S-a terminaaat :D. It is finally over. Gata cu noptile alea plictisitoare si linistite din camin cand toata lumea invata si nu se intampla nimic. Si daca tot s-a terminat e cazul sa ma laud si eu cu reusitele mele. Deci iata cum arata situatia:
Programarea procedurala - 10 \:D/
Arhitectura sistemelor de cacul - nu ne-a dat inca notele (sau cel putin nu stiu eu) dar cel mai probabil nu il trec
Algoritmica - 9 :)
Algebra - picat
Logica - picat
Analiza - 5 \:D/
In concluzie am luat 3 examene din 6 deci as zice ca e ok :-".
Update: Aparent am trecut la arhitectura \:D/. Deci numai 2 restante :D (notele nu sunt inca finale deci e posibil sa mai existe inca un update in care sa zic ca am picat - stay tuned)
Programarea procedurala - 10 \:D/
Arhitectura sistemelor de cacul - nu ne-a dat inca notele (sau cel putin nu stiu eu) dar cel mai probabil nu il trec
Algoritmica - 9 :)
Algebra - picat
Logica - picat
Analiza - 5 \:D/
In concluzie am luat 3 examene din 6 deci as zice ca e ok :-".
Update: Aparent am trecut la arhitectura \:D/. Deci numai 2 restante :D (notele nu sunt inca finale deci e posibil sa mai existe inca un update in care sa zic ca am picat - stay tuned)
Abonaţi-vă la:
Postări (Atom)