Szoftver fejlesztoi es C++ halado technikak II.

Udv mindekinek!

Multkor emlitettem a verzio koveto renszereket mennyire hasznos meg egy programozo tanonc szamara is. Ajanlok par szajbaragos step by step linket, annak aki most kezd ismerkedni a Git-tel.

http://git-scm.com/documentation
http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html

De rakeresve a “Git cheat sheet” illetve a “Git tutorial” -ra a google-ban sok hasznos talalatot kapunk.

Letolteni Windows ala innen: https://code.google.com/p/msysgit/downloads/list?q=full+installer+offic… Ez tartalmazza a GUI osszetevot, igy aki nem akar parancssorban irkalni akar intezo alol is lehetseges egy helyi repository menedzselese.

Linux alatt pedig valamelyik szoftver/csomagkezelovel lehetseges. Utobbi esetben telepithetjuk a gui csomagot is hozza!

Hogyan hasznaljunk egy ilyen verzio koveto rendszert?
Eloszor inicializalni kell a repository-t, majd felvenni a fontos fajlokat. Kivetel listat lehet irni a .gitignore-fajlban h pl a kepeket tartalmazo konyvtarat ne vegye bele a verziokovetesbe. (Mindez lehetseges GUI alatt is. Nem irom le a parancsokat – a tutorialokban benne van. Erdemes minden kesz kisebb funkcio elkeszulese (es tesztelese) utan “commit”-olni. Igy megjegyeztetjuk a git-tel az egyes “checkpoint”-okat. Ha barmi problema van, es egy korabban jol mukodo funkcio a nem mukodik, ossze lehet hasonlitani a korabbi commitokkal megjegyeztetett forras fajlokat.

Lehet un. Branch-okat azaz agakat letrehozni. Tobb osszetartozo-feladat implementalasa utan lehetseges uj agat letrehozni. Az a jo h szabadon lehet valtani az egyes agak kozott. Erre utaltam multkor is.

Nem irom le a konkret parancsokat, mert szerintem a tutorialokban minden reszletesen benne van. Viszont ha valaki igenyli -szivesen segitek.

Vigyazat! A Git Windows-os verzioja tartalmaz nem kompatibilis elemet a Qt sdk-val! Konkretan az sh.exe (a git bin konyvtaraban) forditasi hibat okoz a Qt 5.0 -s program forditasakor. En egyelore atneveztem sh2.exe-re Windows alatt de nem elemeztem hogyan lehet elkerulni a dolgot es milyen kovetkezmenye lehet a git-re nezve :) mivel linuxot hasznalok fejlesztesre elsosorban.

A masik dolog – amire nemregen dobbentem ra – hogy remekul tesztelt programokat lehet kiadni a kezunk kozul, ugy hogy nem hasznaltunk debuggert. Korabban 1-1 uj funkcio elkeszultekor debugger hasznalataval bizonyosodtam meg hogy azt csinalja amit kell, viszont egy komplexebb program fejlesztesekor egyre nehezebb bebizonyosodni hogy az uj funkcio nem okoz valamilyen “negativ mellekhatast”, azaz nem rontott-e el valamit.

Kepzeljuk el hogy a felteteleket – amivel megbizonyosodunk hogy a programunk megfeleloen mukodik – be tudjuk irni egy programba, amelyet lefuttatva barmikor, meg egy uj funkcio beepitese utan is leellenorizhetjuk a programunk korabbi es uj funkcioit. Erre valo a Unit Test es a Test Driven Development modszer. En a Boost-ban es a Qt-ban levo Unit Test-et tanulom/hasznalom. Utobbit akkor ajanlom ha Qt-s szoftvert fejlesztunk, hiszen lehet szimulalni GUI esemenyeket, vagy signal-okat tesztelni.
Linux alatt telepiteni a libboost-all-dev csomaggal mindent telepithetunk a Boost framework-bol, sajnos Windows alatt magunknak kell forditanunk ha mingw-s Qt-t hasznalunk, ami nem nagy ordongosseg, csak par lepes.
A forditas maga ez:
bjam --toolset=gcc --build_type=complete -a --link=static –runtime-link=static
de elotte a bjam-et konfiguralni kell, amit most nem tudok leirni es ellenorizni mert nincs Windows-os gep a kozelben. Majd holnap szerkesztem.
Szerk: lepj be a boost forras konyvtaraba es add ki a kovetkezo parancsot:
bootstrap.bat mingw
Ez legeneralja a bjam-et

Doksi addig is: Qt dokumentacioban keress ra a Qt test-re vagy:
http://qt-project.org/doc/qt-5.0/qttestlib/qtest-tutorial.html

(Boost-rol remek doksi sajnos a Unit Test nelkul: http://en.highscore.de/cpp/boost/frontpage.html)
Boost Unit Test rovid osszefoglalo: http://legalizeadulthood.wordpress.com/2009/07/04/c-unit-tests-with-boo…
Sajnos komolyabb irast nem talaltam rola (csak hello world komolysagut.)
Test Driven Develpment: http://www.agiledata.org/essays/tdd.html

Legkozlebb ezekrol szeretnek irni.
Udv addig is!

Hozzászólások

Ssot, ha atternetek CMake-re, akkor csinalhatnatok tesztprogramokat is, es lehetne a nem-Qt-s cuccokat is tesztelni!

A dolog maga rem egyszeru, csinalni kell 0/1 -gyel kilepo tesztelo binarisokat, es azokat add_test-tel betolni. Bovebben a CMake-rol es a CTest-rol itt: http://www.cmake.org/cmake/help/cmake_tutorial.html

A CMake amugy kepes kivaltani a QMake-t is, egy picit tobb gepelest igenyelnek innentol a projektek, de en atalltam ra, mert
1) keves Qt/C++ projektem van
2) az a plusz gepeles boven megeri

QTest with CMake: http://stackoverflow.com/questions/4753845/build-qt-tests-with-cmake

Es a CMake szerintem hatekonyan valtja ki a komplett autotools rendszert. Boost-hoz peldaul alapbol van asszem tamogatasa.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Nekem az, hogy szazalekosan kiirja, hol tart a forditas, musthave/awesome feature. Sokszor vagyodva gondolok arra, hogy a kernel meg a gcc is hasznalhatna, es akkor tudnam, hogy kb. hanyadan all a forditas/telepites. Mert igy, hogy csak a sorokat irja ki egymas utan, az minden, csak nem segitseg.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Ez kb. akkor érdekes, ha Gentoót használ az ember. Fejlesztésnél úgyis inkrementális buildek vannak, amik jobb esetben szinte azonnal kész vannak. Jobb eset = ha van esze az embernek, akkor úgy írja meg a programot, hogy gyorsan forduljon. Ez mondjuk a template mágusoknak ritkán sikerül.

Nem csak a template magusoknak gond ez. A Qt cuccoknal egy csomo mindent ujra kell generalni, mar viszonylag kis valtoztatasnal is, mert vagy 3 fajta preprocesszoron at megy minden.

A kernelforditas amugy nem csak Gentoonal jon elo. Lattam en mar embereket a Debian jo kis kernelet is lecserelni sajatra...
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

a qmake es a cmake ket totalisan kulonbozo dolog, nem erdemes oket osszehasonlitani ill. egy kalap ala venni

a qmake zsenialis eszkoz qt-s projectekhez (egy bizonyos bonyolultsagi szint alatt), lenyegeben egyetlen sornyi build infot sem kell legepelned, csak "qmake -project" es megcsinal mindent

a cmake nagyon okos, sokat tud, de kib@szott sokat kell gepelni, es helyenkent eleg fajdalmas a szintaktikaja es a megkovetelet modszerek. olyankor szoktam hasznalni mikor a qmake mar keves egy projecthez (vagy nem qt projectekhez)

Azert egy qt-s project boven megvan tiz sorbol, ennyibol meg egy ertelmes makefile sincs meg, ehhez kepest rengeteg feature-t ad.

Nekem nem idegen a szintaxis, mert en VB.NET vilagbol jovok, ott az ilyen if/end if teljesen megszokott dolog.

Szerk: most kiprobaltam egy QtCore + QtXML projekten, az QtXML include-okat nem ismerte fel, kezzel kellett a projectet megherkesztenem. Egyetlen forrasfajlbol allo projekten. Van meg hova fejlodni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Kösz.
____
Semmi sem biztos. Még az sem biztos, hogy semmi sem biztos.