Проекти
от Съзтезателно програмиране
Правя тази страница, тъй като има много неща които е хубаво да се направят, но изискват някаква координиранност, и трудно ще станат сами. Това са неща които биха били полезни за клуба и състезателите (ученици и студенти). Използвайте беседата за предложения е коментари.
Съдържание |
Мета
Много хора не са работили в ўикита до сега, и се страхуват да допринасят. Работата с такова ўики е доста лесна, но все пак специфична и е необходимо някакво обяснение. Преди написах Уикито с идеята това да е бързо въведение за работа с това ўики. Целите му са:
- Малък обем, за да може бързо да се прочете.
- Запознаване с това как се редактира.
- Запознаване с това как се комуникира в беседи.
- Запознаване с конвенциите тук за да се повиши качеството.
- Структури на документите.
- Как да се форматира.
- Как да се подреждат страниците.
За съжаление липсват много неща а други могат да се подобрят:
- Не са изградени конвенции за подредбата/именуването на страниците.
- Няма обяснение за това как да се комуникира между участниците.
- Няма добро представяне на Graphviz езика.
- Липсва кратко въведение във форматирането, вместо това има препратка към доста по-голяма страница.
- Предлагам, предвид че никой не е тръгнал да превежда/пише tutorial, поне да има две връзки (да речем в help-а):
- http://en.wikipedia.org/wiki/Wikipedia:Tutorial - официалния (basic) wiki tutorial
- http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet - приятно изглеждащ wiki cheat sheet
- Пиша това тук, понеже не знам дали някой е предвидил и създал wiki-образователна страница и прочие.
- - Kazhar 10:05, 22 яну 2007 (EET)
- Предлагам, предвид че никой не е тръгнал да превежда/пише tutorial, поне да има две връзки (да речем в help-а):
- Други?
Ще се радвам ако има желание да се свършат/подобрят тези неща. Желаещи:
- (напишете се тук)
Online Judge
Тази седмица се хванах и написах нещо такова. За повече инфо вижте spoj.
Идея
Мисля, че всички ще се съгласят, че би било много добре състезанията на клуба да имат и online версия. За това има следните възможности:
- Пускане на PC^2 на видима отвън машина. Но:
- PC^2 е доста тежък.
- PC^2 изисква клиентските машини да са видими от сървъра (да имат външни IP-та).
- Пускане на "корейската" система всеки път:
- Това животно е прекалено голямо и омазано
- Не знам колко лесно ще се адаптира за студентски правила.
- Правене на просто web приложение + тествачка.
Това за което говоря е последното. Лично аз мисля, че минималистична по възможности система не би изисквала толкова много труд. Аз мога да помогна с проектиране, както и насоки по реализацията. За да покажа за какво говоря прилагам примерен high level design.
Анализ
Необходими функционалности:
- Потербителите да могат да влизат с име и парола.
- Да има задачи, теми и потребители.
- Да могат да се изпращат решения, които системата автоматично тества.
- Да може да се извежда класиране/статистика за дадена тема.
Следните неща трябва да могат да се правят ръчно:
- Добавяне на тема/задача - ръчно описване в базата данни или файловата система.
- Регистриране на потребител - отново ръчно добавяне.
Дизайн
Entity класове (такива чийто обекти ще се запазват)
- Потребител (потребителско име, име/имена, парола (хеш), email, информация (може да се уточни каква)).
- Задача (име, тема, линк към условието, къде се намират тестовете и)
- Тема (име, начален час, краен час)
- Submit (потребител, тема/задача, час, език (може и да e вътре в решението), код на решението, статус)
Модули:
- База данни (в която се пазят горните неща).
- Предлагам MySQL
- Файлова система (в която се пазят тестовите данни).
- Web интерфейс
- Логин страница
- Начална страница
- Страница за изпращане на задача
- Страница за гледане на статистиките/класиране за тема.
- Страница за гледане на статуса на собствените решения.
- Предлагам PHP за реализация
- Тестващ скрипт - взема сорс код, тестове, ограничения, изпълнява кода и връща резултат.
- Предлагам perl.
- Тестващ демон - непрекъснато следи за непроверени submit-и, взема някой, извиква тестващия скрипт за него и записва в базата резултата.
- Предлагам perl или PHP.
Аз лично (milo) имам уменията да реализирам всичко това, но нямам времето. Желаещите да се включат могат освен удовлетворението, че са направили нещо готино и полезно могат да понаучат интересни неща.
Желаещи
- Борис - Имам желание да се включа в проекта но си нямам никаква идея от PHP и perl. Моето предложение е тестера и демона да се напишат на Python или Boo/(mono). Последното е .НЕТ така че ще можем да имаме и windows версия на judge-а. Може съшо да напишем няколко алтернативни интерфеиса към системата.Примерно WEB базиран за интернет състезания и конзолен и GUI за локално тестване на задачи.
- Може тестващия скрип и демон да са на Python - няма никакъв проблем, дори може да стане по-чисто. За другите - първо трябва да се направи минимална версия която работи и след това да помислим за разширения на системата. --Milo 22:27, 27 ное 2006 (EET)
- (напишете се тук)
Reverse engineering PC^2
Би било полезно да знаем повече за PC^2. Така ще можем да избягваме проблеми като тези на Купата-на-Декана-3 и също да напишем собствени програми за rejudge и генериране на класиране.
PC^2 не е с отворен код, но е написан на Java и не е obfuscate-ван така че при декомпилация кода излиза в доста четим вид. Прегледах го на бързо и според мен базата данни е сериализирана java хеш таблица. Предполагам че с малко четене на код ще може да се напишем програма която да чете базата и да генерира класиране и да rejudge-ва.
- Горния проект ми се вижда приблизително пак толкова работа... --85.91.150.207 20:55, 4 дек 2006 (EET)
Java Проект
Не съм сигурен какво заглавие да сложа, за това го оставям така за сега. Търсят се желаещи да работят по проект на Java. Не съм сигурен какво точно мога да разкрия публично, но е свързано с e-learning и ако се работи добре, се плаща здраво. Ако има желаещи, свържете се с мен. --85.91.150.207 20:55, 4 дек 2006 (EET).
Би било добре да споменеш кой си ти. --Lostsoul 15:09, 5 дек 2006 (EET)
Иии... да.. сега видях че не съм бил логнат --Milo 21:37, 5 дек 2006 (EET)
