Асен обнови решението на 21.04.2015 15:33 (преди над 9 години)
Интересна идея, но помисли как ще го sandbox-неш цялото това нещо. Не е яко някой да затрие всички файлове и директории, до които има достъп, рестартира машината и т.н. Все пак ще е на C. С него си твърде близо до hardware-а и можеш да нанесеш покъртителен брой щети за отрицателно време.
- Какво да разгледам за да си имплементирам добър парсър за кода?
Нямам добър отговор на това. Не съм си играл с парсване на код в python
- Как и къде мога да използвам според вас паралелизъм и дали ще е добра идея?
Ами можеш паралелно да компилираш и изпълняваш няколко решения, но това бих го направил като optional аргумент, тъй като би било полезно, само ако в домашните не се създават нови процеси. Дори и да разпалелиш компилацията е сложно, тъй като могат да се правят магарии в C по това време. В най-лошия случай можеш да разпапелиш само статичния анализ. Пускаш го върху всички решения на толкова нишки, колкото имаш.
- Да го направя ли уеб или да се придържам към command line utility? За уеб мисля да ползвам Django
За нас по-важното е ядрото на проекта да не е обвързано с UI-а. Т.е. ок сме да минеш само с един UI, но той да бъде заместваем. Аз бих почнал с command line utility. Иначе Django е overkill за нещо такова. Flask би ти бил далеч по-полезен.
- Какво мога да използвам за фина конфигурация на всяко домашно? (filename pattern, reports output dir etc.., някакви броячи като 'домашно {counter}' и подобни)
Ами избери си формат за дефиниране на домашните. Примерно yaml или toml. Там можеш да конфигурираш тези неща плюс: максимална сложност, брой if-а на функция/решения, максимален брой редове код във функция и т.н. Виж как ние си дефинираме лекциите, които публикуваме в `python-lectures хранилището. Ползваме един yaml, където посочваме дата, име и файл на лекцията.
Между другото като иде реч за C, аз не бих използвал много идеята за максимален брой редове във функция. Има безброй примери за неща, които са далеч по-четими на 100 от колкото на 20 реда. Просто бих го ползвал за някаква абсурдна горна граница като 500 реда код за quick sort примерно. Все пак го смятам за интересна задача.
Здравей,
Възможно ли е да изменя малко идеята си за проекта?
Искам вместо да се концентрирам за статичния код анализ, защото се забатачих с някакви абстрактни синтактични дървета с pycparser и стандартната библиотека, а все пак знания по питон ще демонстрираме...Та дали ще може да се фокусирам върху цялата организация на процеса по предаване и проверяване на домашни, от самото записване за даден курс например.
Записване чрез Google Forms, парсване и създаване на списъци с потребители и техните хранилича. Сваляне на хранилища, проверяване дали последния комит е направен в срок на домашното. Компилация на кода, извеждане на резултата от clang компилацията (тя прави някакъв статичен анализ) нещо в тази насока?
Благодаря!