Среда 20. 11.
У среду неће бити часова:
- [РС] Студенти који долазе у другу групу нека дођу на час у уторак -- имаћете гостујуће предавање на тему агилног развоја софтвера
- [АЗРС] Одгледати https://tubedu.org/videos/watch/2a035efd-ddbd-4096-8604-c641f6758b39
GMail
Ako pišete na fakultetske adrese sa svojih ličnih gmail adresa, računajte da vam odgovori verovatno neće biti isporučeni jer GMail često odbija poruke sa MATF servera poincare.
Алати за развој софтвера
Налози на студентском сервису алас
Проверите да су вам налози на сервису алас исправни:- да можете да се улогујете користећи свој актуелни број индекса;
- да вам је коректно подешено име и презиме (по логовању на систем преко ssh,
покрените команду `finger`). Ако вам име и презуме нису подешени,
промените их следећом командом:
chfn -f "Ime Prezime" $USER
(ставите, наравно, своје име и презиме) - ако вам актуелни број индекса не одговара корисничком имену са аласа,
поред имена и презимена ставите корисничко име са аласа
које би одговарало новом броју индекса:
chfn -f "Ime Prezime (mi12345)" $USER
Снимци предавања
Снимци предавања ранијих година:Час 1: | Увод у курс, GCC, BASH, Vim (није сниман) Факултативно: Crazy code, crazy coders (W. E. Brown) |
Час 2: | Увод у Git |
Час 3: | Git - наставак |
Час 4: | Git From the Bits Up (T. Berglund) |
Час 5: | GDB Није потребно све памтити из наредних предавања о интеграцији GDB-а и Python-а, али је потребно оквирно знати шта је могуће: Python integration with GDB GDB User Defined Commands - Part 1 GDB User Defined Commands - Part 2 GDB User Defined Commands - Part 3 |
Час 6: | Git и GitLab |
Час 7: | Пакети |
Час 8: | Санитајзери |
Час 9: | LCov, Hotspot, Git hooks, ... |
Асистенти
Прагови
Праг на испиту је 30 поена, а на пројекту је 15.
Испит
Пример задатака какве можете очекивати на испиту видите овде.
Напомена: На испиту пакете који вам затребају за задатак ћете моћи да инсталишете преко конана. За овај пример изнад користите нормалан пакет менаджер који имате на систему (apt, yum...).
Пројекти
Пројекти се раде у тиму, али се оцењују појединачно -- свакоме се бодују они задаци које је урадио/ла. Максималан број поена који је путем пројекта могуће освојити је 30. Оцењује се примена алата који се обрађују на предавањима и вежбама, али и других алата које сте користили.
Рок за предају пројеката
Пројекте ће бити могуће предавати у свком испитном року преко наредног линка:
Биће накнадно постављеноПоследњи дан за предају пројекта за сваки испитни рок је термин испита.
Студенти који су претходне године радили пројекат, нека се пријаве преко истог овог формулара и нека ставе "од претходне године, XX poena" уместо линка ка канбан табли (замените XX бројем поена који сте имали на пројекту).
Резултати ће бити објављивани заједно са резултатима испита.
Информације о изради пројеката
Можете да радите следеће:
- Студенти који у овом семестру раде пројекат из РС или РГ, могу да демонстрирају знања "алата" на истом. Дозвољено је радити и на туђем пројекту из РС-а.
- Студенти који су претходне године радили пројекат из РС, могу да наставе са развојем тог пројекта и при томе да демонстрирају знања "алата" на истом.
- Студенти који желе, могу уместо рада на факултетском пројекту да изаберу неки активни пројекат отвореног кода писан у језику C++ и да раде на њему.
Задаци
На личном GitLab налогу направити пројекат који ће се звати azrs-tracking и у њему направити канбан таблу и картице за сваки од задатака које планирате да урадите. Овде ћете водити евиденцију о прогресу задатка и описивати начин употребе алата који су у том задатку коришћени.
Дакле, направите канбан картице за сваки задатак, и док радите на задатку додајете коментаре у самој картици шта сте и како урадили. Додајте и снике екрана алата током употребе.
Додатак: На сваки задатак ставите таг на који се алат односи. Тагови треба да буду написани малим словима, речи унутар тага раздвојене цртицама. На пример, за Git, таг би био git, за Clang Format би био clang-format, и слично.
Битно: Сврха алата је да унапреде квалитет неког софтвера. Тако да, кад алатом детектујете неки проблем и направите измене над изворним кодом пројекта над којим сте применили алат, пошаљите merge захтев, и линк ка захтеву такође додате као коментар на картици.
Сам репозиторијум azrs-tracking не мора да садржи ништа, -- код пројекта држите у репозиторијуму у ком радите, а извештаји су унутар канбан табеле. Отварате репозиторијум да бисте могли да направите канбан таблу.
У сваком испитном року ће бити објављиван формулар преко ког предајете завршен пројекат (линк ка канбан табели).
- Git (таг git)
- Користити неки познати модел гранања, писати уредне commit поруке, користити merge захтеве приликом прављења измена на пројекту.
- GDB (таг gdb)
- Користити дибагер приликом налажења неке грешке у пројекту на коме радите и исправити ту грешку.
- GDB (таг gdb-command)
- Направити неку корисну команду за GDB (Python додатак).
- CI (таг ci)
- Осмислити и имплементирати неколико неуобичајених CI задатака који ће се извршавати кад год се нова ревизија кода пошаље на сервер.
- git hook (таг git-hook)
- Осмислити и имплементирати бар 3 неуобичајена git hook-a.
- CMake (таг cmake)
- Направити или унапредити CMakeLists.txt за пројекат (ако је други члан тима направио CMakeLists.txt, додајте неке новине у исти).
- Valgrind (таг valgrind)
- истражити функције које троше више времена него што би требало и решити проблем.
- Gammaray (таг gammaray)
- У случају да пројекат користи Qt, испитати апликацију -- кориснички интерфејс и да ли има проблема у истом.
- ClangTidy (таг clang-tidy)
- Аутоматски рефакторисати код изабраним clang-tody проверама. Објаснити због чега сте укључили баш те провере.
- ClangFormat (таг clang-format)
- Направити свој формат заснован на неком већ постојећем. Обезбедити да је цео пројекат форматиран тим стилом.
- Статичка анализа кода (тагови cppcheck, clang-tidy, clazy, clang-analyzer)
- Преко неког од алата за статичку анализу кода наћи 2-3 проблема у пројекту на коме радите. Исправите проблем и пошаљите закрпу путем merge захтева.
- Docker (таг docker)
- Припремити апликацију да се може покренути као Docker контејнер (докеризовати). Бонус: комбиновати са CI.
- GCov (таг gcov)
- Генерисати coverage извештај за пројекат.
- Остали алати
- На пројектима ће бити урачунато и ако сте испробали и документовали употребу и неких алата који нису предавани на курсу.
- пре предаје пројеката, проверите сва правила везана за пројекте на овој страници;
- многи погрешно покрећу clang-tidy (без компилационе базе, без скрипте run-clang-tidy) и добијају грешке да, на пример, <vector> или QObject не постоје из чега некако закључе да clang-tidy нема замерке на љихов код;
- изворни код не треба да се налази у репозиторијуму azrs-tracking, пројекат на коме радите има свој репозиторијум;
- ако остављате линкове ка туђим изменама, наведите аутора и објасните зашто остављате линкове ка туђим изменама;
- ако остављате линкове ка изменама, те измене траба да буду везане за тај конкретан задатак;
- сам снимак екрана да сте покренули неки алат не говори ништа о томе како сте га користили;
- ако после употребе неког алата нисте због резултата које сте добили изменили код (и поставили линк ка тим изменама), или бар нешто конкретно закључили о свом пројекту (што сте детаљно описали), пробајте поново;
- Git репозиторијум пројекта не треба да садржи производе компилације, html фајлове које генеришу разни алати (gcov, clang-analyzer)... Ако желите да их поставите негде, њих још и можете да поставите у репозиторијум azrs-tracking.