joi, 19 ianuarie 2012

Cochetând cu C++ şi gtkmm

De voie, de nevoie, ieri am fost nevoit să-mi termin proiectul la POO (Programare Orientată pe Obiecte) iar acolo - pentru că asta studiem în acest frumos şi minunat semestru I al anului 2 - a trebuit să lucrez în C++, limbaj de programare de care nu pot să spun neapărat că mi-e drag mai mult decât o durere de măsea.

Proiectul meu a fost un generator CNP (de fapt, de fiecare dată când am vrut să învăţ bazele unui limbaj de programare am portat generatorul meu de CNP-uri pe acesta) care în primă instanţă nu a fost prea dificil de creeat, partea cu generarea şi informaţiile despre CNP-uri luându-mi în jur de 4 - 6 ore (ţineţi seama că cu C++ nu cochetez decât pe la facultate - acasă sunt străin de acest limbaj de programare). Partea cu adevărat dificilă a venit când am vrut să îi pun la punct o interfaţă grafică folosind gtkmm. Funcţii care se apelează diferit pe C++ faţă de Python, joaca de-a "uite pointeru', nu e pointeru'", Glib::ustring-uri - oh my, ce bătaie de cap.

Şi nu mai puţină bătaie de cap mi-a dat compilarea aplicaţiei pe Windows. Gosh, reuşisem să fac năpârca de aplicaţie să se compileze pe Windows, dar la următoarea încercare compilatorul n-a mai vrut în ruptul capului să se ocupe de sursele mele. Mi-a luat cam trei ore nocturne să rezolv şi acest mic impediment.

Acum totul e gata - am o versiune a aplicaţiei pe Windows şi una pe Linux. Mă gândesc să fac o versiune doar pentru consolă dar mi-e că o să dureze mai mult decât mă aştept şi n-o să mai apuc să scriu documentaţia (termenul-limită e mâine - yay!). O împart aici, cu voi, dar pentru început fără surse (deşi aplicaţia o voi publica sub GPL, ca de obicei) deoarece doar ochii profesorului de POO trebuie să fie primii care să vadă codul sursei al aplicaţiei (eu programez cu ochii închişi, deci nu am văzut codul sursă :P).

Ţineţi cont că, spre deosebire de versiunea PHP, această versiune nu generează CNP-uri aferente unor persoane ce au între 14 şi 24 de ani, ci chiar generează CNP-uri ale unor persoane moarte de mult! Dacă vreţi CNP-uri pentru Orange Young folosiţi funcţia de generare personalizată.

Versiunea pentru LinuxVersiunea pentru Windows
SURSE
(librăriile GTK+ pentru Windows sunt incluse în arhivă)


5 comentarii :

Lupin spunea...

cand ne lasi si sursa? :)

Ovidiu Niţan spunea...

De îndată ce prezint proiectul (adică săptămâna asta).

Ovidiu Niţan spunea...

Ia că au venit şi sursele :P

Lupin spunea...

de ce ai folosit gtk?
de ce nu qt?

Ovidiu Niţan spunea...

În principiu, din cauza experienţei pe care o am cu GTK