Трохи про Єолімп
Всім привіт! Мене звати Колодяжний Сергій і я один з засновників сайту Eolymp. Сьогодні я хотів би поділитися з Вами історією про те, як мій вчитель інформатики Жуковський Сергій Станіславович (@zss) і я створили один з найбільших українських сайтів для вивчення інформатики та підготовки до олімпіад. Звісно, за роки існування безліч небайдужих людей допомогли сайту. Ця публікація згадує лише про декого з них, але я безмежно вдячний кожному, хто зробив свій внесок.
В школі мені завжди подобалися точні науки і я завжди з радістю відвідував уроки математики та фізики. У 2004 році я вступив до Житомирського міського ліцею №1 і відкрив для себе новий предмет — інформатику. Я відразу полюбив нову науку і почав частенько засиджуватися за комп'ютером у класі інформатики після уроків. Я досі пам'ятаю синій екран QBasic і мою першу власну програму, яка малювала інтерфейс подібний до екрана форматування жорсткого диска. Не знаю, чи вдалося мені налякати цим мого вчителя Сергія Станіславовича, але він точно помітив мій хист до предмета і запропонував мені долучитися до команди з підготовки до олімпіад з інформатики. Так почалося моє знайомство з олімпіадами, алгоритмами та спортивним програмуванням.
Наступні декілька років я старанно вивчав алгоритми, розв'язував олімпіадні задачі, брав участь у олімпіадах з інформатики і потроху вивчав нові мови програмування та технології. В процесі я створював ігри та програми для всього підряд. Я навіть створив програму для вивчення неправильних дієслів в англійській мові. З англійською в мене не дуже cкладалося і моя вчителька сказала, що я не отримаю залік, якщо не вивчу неправильні дієслова. Завдяки моїй простенькій програмі неправильні дієслова я все ж вивчив і залік склав.
В той час ще не було HackerRank чи Codechef. Ми розв'язували олімпіадні задачі на додаткових уроках з інформатики, а в кінці уроку отримували дискету з тестами та відповідями до них, щоб перевірити, чи розв'язки правильні. Так один за одним ми копіювали тести на комп'ютер, а потім запускали кожен і порівнювали відповіді.
Ще була Житомирська Інтернет-олімпіада, яку проводив Дідковський Володимир Леонідович з Новоград-Волинського. Учасники олімпіади відправляли свої розв'язки електронною поштою, а організатори перевіряли їх вручну. Також була Вінницька Всеукраїнська Інтернет-олімпіада NetOI. На сайті олімпіади розміщували задачі та невелику форму, через яку можна було завантажити розв'язок. Результати ми дізнавалися після завершення кожного туру.
2007
Влітку 2007-го року я почав працювати над веб-сторінкою, яка б поліпшила процес перевірки розв'язків на додаткових уроках. Все почалося з простої форми, через яку користувач міг завантажити розв'язок. Коли сервер отримував запит, він відразу ж компілював його і проводив тестування. Звісно, цей процес займав якийсь час, а користувачу доводилося чекати, поки сторінка завантажиться. Знадобився час, щоб відшліфувати та налагодити процес перевірки, але до кінця літа в мене вже була готова система.
Восени 2007 ми почали активно використовувати систему на уроках і вона отримала назву E-Olimp. Olimp, бо ми використовували систему для підготовки до олімпіад, а E за аналогією з E-Mail, адже тепер тестування виконувалося онлайн.
Трохи пізніше ми створили сайт в інтернеті та розмістили тестуючу систему на одному з комп'ютерів в класі інформатики. Сайт викликав інтерес у вчителів з інших шкіл, і потроху до нас почали приєднуватися нові користувачі.
Одним з них був Присяжнюк Анатолій Васильович (awpris), вчитель інформатики з Бердичівської ЗОШ №17. Анатолій Васильович просто загорівся ідеєю сайту, він створював десятки, а то і сотні задач, активно відповідав на питання користувачів, допомагав розв'язувати задачі, писав статті та організовував змагання. Неможливо переоцінити вклад, який Анатолій Васильович зробив у розвиток сайту. На жаль, його вже немає з нами.
2009
У 2009 році на сайті вже було зареєстровано понад 1600 користувачів з різних шкіл та міст. Невеличкий сайт переріс у складну і заплутану систему, яка вже не витримувала навантаження. Тому сайт був повністю перероблений з нуля. Новий дизайн, нові можливості й нова тестуюча система.
Сайт продовжував існувати та набирати популярність в Україні. З'являлося все більше і більше задач, змагань і користувачів. Нами зацікавилась кафедра прикладної математики та інформатики Житомирського державного університету імені Івана Франка і почала всіляко сприяти розвитку сайту.
Згодом до нашої команди долучився викладач з Київського національного університету Медвєдєв Михайло Геннадійович (medv), нині професор АДА університету в Баку. Михайло Геннадійович почав активно підтримувати сайт, публікувати задачі та організовувати змагання. Завдяки йому про український сайт дізнались у Туреччині та Азербайджані. Ми додали азербайджанську мову до інтерфейсу сайту, а завдяки зусиллям викладачів з Азербайджану нам вдалося перекласти безліч задач. Сьогодні Азербайджан є третьою за кількістю користувачів країною на сайті.
2014
У 2014 році сайт зазнав чергового оновлення, система була знову переписана з нуля, використовуючи сучасний, в той час, фреймворк Symfony 2. Тестуюча система була значно оновлена і почала використовувати технології контейнеризації Docker. Веб-сервери та тестуюча система були перенесені в хмарний хостинг, тобто замість фізичних серверів ми почали використовувати віртуальні. А тестуюча система нарешті отримала сервер у дата-центрі, замість невеличкого персонального комп'ютера у куточку кафедри інформатики.
Сайт було перейменовано в Eolymp і він переїхав на нову адресу www.Eolymp.com, адже англійську я все ж підтягнув і дізнався, що правильно писати Olympic, а не Olimpic. Хоча стара адреса www.e-olimp.com і досі доступна.
Ми почали використовувати нову систему для проведення міських, районних та обласних олімпіад з інформатики в деяких районах та областях України. Для того, щоб олімпіади проходили якомога краще, ми почали створювати окремі, пусті та повністю ізольовані копії Eolymp, доступні тільки учасникам олімпіад.
2020
На початку цього року я знову повністю оновив тестуючу систему і переписав її ядро на Go новій, сучасній та потужній мові програмування. Також я почав використовувати Linux контейнери для того, щоб запускати розв'язки у різних середовищах. Це такий спеціальний метод ізоляції процесів в операційній системі. Це дозволило додати нові мови програмування, поліпшило зусилля, необхідні для підтримки та оновлення системи і значно зменшило витрати на утримання серверів.
Сайт теж зазнав значних, хоча може і не дуже помітних змін. Було оновлено версію PHP та Symfony. Я переписав та оптимізував багато внутрішніх процесів, таких як підрахунок рейтингу, індексація задач для пошуку і т.д. Також на сайті з'явились деякі нові можливості, наприклад, можливість перегляду коду вчителями.
Ми також перенесли сайт і тестуючі системи в AWS. Це один з найбільших і найпотужніших постачальників послуг з хостингу у світі. Завдяки AWS ми змогли значно підвищити безпеку сайту і даних наших користувачів та перейти на принципово новий рівень мережевої безпеки.
А цього місяця, ми почали активно використовувати технології автоматичного масштабування в AWS. Тепер при збільшенні кількості користувачів на сайті ми автоматично додаємо нові сервери до системи, а при зменшенні ці сервери видаляються. Таким чином наша інфраструктура автоматично адаптується під навантаження, підвищуючи надійність роботи сайту в години пік і мінімізуючи витрати в інший час.
В нас є безліч ідей на майбутнє, ми дуже хочемо якомога більше допомогти вчителям та їхнім учням у навчанні, створити інструменти для проведення уроків і додаткових занять з інформатики. Тому, якщо у Вас є ідеї, будь ласка, поділіться з нами, розкажіть, як Ви використовуєте сайт, що вам подобається і чого не вистачає. Цей зворотний зв'язок дуже важливий для нас.