
10:00 Un proiect mic (Tema 5 la SO), dar interesant: client + server de fisere implementati cu metode avansate: IO Completion Ports, socketi asincroni, thread pools etc.
Vreau sa incerc guerilla programming: un plan foarte agresiv de lucru, concentrare care elimina neesentialul, care sa ma ajute sa termin in cateva ore.
Ca apoi sa am timp sa duc pisica in curte la joaca :)
O sa postez aici progresul, pas cu pas. Sunt si eu curios… Tineti aproape :P
10:08 Deja am pierdut prea mult timp setand wordpressul. Incepem!
10:14 Cicluri:
- dummy de server si de client
- server care deschide socket si accepta conexiuni, client care se conecteaza
- IO completion ports si thread pool pentru handling de conexiuni noi
- client care trimite comenzi
- server: implementare List files
- server: implementare read file
- server: implementare write file
- testare cu mai multi clienti concomitent
- debugging
- bere!
Nota: fireste ca dupa fiecare din etape testez ce am facut pana atunci si rezolv problemele care au aparut. Asta era de la sine inteles :)
10:18 Timpi, in minute:
- 15 dummy de server si de client
- 20 server care deschide socket si accepta conexiuni, client care se conecteaza
- 20 IO completion ports si thread pool pentru handling de conexiuni noi
- 20 client care trimite comenzi
- 20 server: implementare List files
- 20 server: implementare read file
- 10 server: implementare write file
- 30 testare cu mai multi clienti concomitent
- 60 debugging
- bere!
In total, 215 minute, adica 3 ore jumate. Cu pauze de 10 minute la fiecare ora, inseamna 4 ore. Deci pe la 14:30 o sa fiu gata!
10:27 Avem dummy de server si de client. In 20 de minute de acum trebuie sa vorbeasca intre ei pe socketi, versiunea primara.
10:35 Chin cu wsa_32. Rezolvat. WSA startup merge.
10:49 URA! Avem client si server care vorbesc intre ei!
Avem 5 minute in avans, dar am descoperit ca e mai greu decat credeam. Mai adaug, ACUM, 20 de minute pentru citit documentatie.
11:20 Inca citesc despre operatii asincrone cu completion ports. Dupa ce am incercat sa fac de capul meu si nu merge, trebuie sa citesc documentatia :)
Amanam orice planificare pana nu inteleg despre ce e vorba.
11:50 Sunt la fel de derutat ca acum o ora! Nu inteleg daca trebuie sa si accept conexiuni in mod asincron, sau doar sa le handlez. Documentatia nu e beginner-friendly. Singurele tutoriale sunt pe code project si sunt enorme. Tot ce am incercat sa scriu nu merge si nu inteleg de ce. Nu am inca nicun model mintal.
12:10 Lucrul cu IO Completion Ports + Socketi asincroni pe Windows pare un fel de iad: e derutant, inconsecvent, plictisitor si incomplet documentat. Pentru mine sunt concepte noi.
Nu spun ca n-as fi in stare sa inteleg. Doar ca nu am inteles suficient in doar 2 ore. Estimez ca mi-ar lua prea mult timp pana invat tot ce am nevoie.
Decizia cea mai inteleapta: sa investesc timpul asta vanand alte teme (oportunitati) cu acelasi potential de castig (tot atatea puncte), dar cu timp estimat mai mic de terminare (pentru ca sunt tehnologii pe care le cunosc). Noroc ca am optiunea asta!
UNELE LUCRURI SUNT GRELE, si imi face bine la infatuare sa accept ca n-am fost in stare sa invat in 2 ore suficient despre notiunile astea noi incat sa le pot folosi. “20 de minute pentru citit documentatie“! Ha!
Guerilla programming: FAIL, din cauza proastei estimari initiale (“imi ia putin sa invat conceptele XYZ”)
Modesty: WIN – e bine sa inveti ca n-ai scula chiar asa de mare :)
Time: WIN, pentru ca m-am oprit la timp in loc sa pierd o zi cu asta.