featured for Немного про Еолимп

Немного про Еолимп

Oct 12, 2020

Всем привет! Меня зовут Колодяжный Сергей и я один из основателей сайта E-Olymp. Сегодня я хотел бы поделиться с Вами историей того, как мой учитель информатики Жуковский Сергей Станиславович (zss) и я создали один из крупнейших украинских сайтов для изучения информатики и подготовки к олимпиадам. Конечно, за годы существования множество неравнодушных людей помогли сайту. Эта публикация упоминает лишь некоторых из них, но я бесконечно благодарен каждому, кто внес свой вклад.


В школе мне всегда нравились точные науки и я всегда с радостью ходил на уроки математики и физики. В 2004 году я поступил в Житомирский городской лицей №1 и открыл для себя новый предмет — информатику. Я сразу полюбил новую науку и начал частенько засиживаться за компьютером в классе информатики после уроков. Я до сих пор помню синий экран QBasic и мою первую собственную программу, которая рисовала интерфейс подобный к экрану форматирования жесткого диска. Не знаю, получилось у меня напугать этим моего учителя Сергея Станиславовича, но он точно подметил мой интерес к предмету и предложил мне присоединиться к команде по подготовке к олимпиадам по информатике. Так началось мое знакомство с олимпиадами, алгоритмами и спортивным программированием.

Следующие несколько лет я тщательно изучал алгоритмы, решал олимпиадные задачи, участвовал в олимпиадах по информатике и понемногу изучал новые языки программирования и технологии. В процессе я создавал игры и программы для всего подряд. Я даже создал программу для изучения неправильных глаголов в английском языке. С английским у меня было не очень и моя учительница сказала, что я не получу зачет, если не выучу неправильные глаголы. Благодаря моей простой программе неправильные глаголы я все же выучил и зачет получил.

В то время еще не было HackerRank или Codechef. Мы решали олимпиадные задачи на дополнительных уроках информатики, а в конце урока получали дискету с тестами и ответами к ним, чтобы проверить правильные ли решения. Так один за другим мы копировали тесты на компьютер, а затем запускали каждый и сравнивали ответы.

Еще была Житомирская Интернет-олимпиада, которую проводил Дидковский Владимир Леонидович из Новоград-Волынского. Участники олимпиады отправляли свои решения по электронной почте, а организатроы проверяли их вручную. Также была Винницкая Всеукраинская Интернет-олимпиада NetOI. На сайте олимпиады размещали задачи и небольшую форму, через которую можно было загрузить решение. Результаты мы узнавали после завершения каждого тура.

2007

Летом 2007 года я начал работать над сайтом, который улучшил бы процесс проверки решений на дополнительных уроках. Все началось с простой формы, через которую пользователь мог загрузить решение. Когда сервер получал запрос, он сразу же компилировал его и проводил тестирование. Конечно, этот процесс занимал некоторое время, а пользователю приходилось ждать пока страница загрузится. Понадобилось время, чтобы отшлифовать и наладить процесс проверки, но к концу лета у меня уже была готовая система.

Осенью 2007 мы начали активно использовать систему на уроках и она получила название E-Olimp. Olimp, потому что мы использовали систему для подготовки к олимпиадам, а E по аналогии с E-Mail, ведь теперь тестирование выполнялось онлайн.

Чуть позже мы создали сайт в интернете и разместили тестирующую систему на одном из компьютеров в классе информатики. Сайт вызвал интерес у учителей из других школ и понемногу к нам начали присоединяться новые пользователи.

Одним из них был Присяжнюк Анатолий Васильевич (awpris), учитель информатики из Бердичевской СШ №17. Анатолий Васильевич просто загорелся идеей сайта, он создавал десятки, а то и сотни задач, активно отвечал на вопросы пользователей, помогал решать задачи, писал статьи и организовывал соревнования. Невозможно переоценить вклад, который Анатолий Васильевич сделал в развитие сайта. К сожалению, его уже нет с нами.

2009

В 2009 году на сайте уже было зарегистрировано более 1600 пользователей из разных школ и городов. Небольшой сайт перерос в сложную и запутанную систему, которая уже не выдерживала нагрузки. Поэтому сайт был полностью переработан с нуля. Новый дизайн, новые возможности и новая тестирующая система.

Сайт продолжал существовать и набирать популярность в Украине. Появлялось все больше и больше задач, соревнований и пользователей. Нами заинтересовалась кафедра прикладной математики и информатики Житомирского государственного университета имени Ивана Франка и начала всячески содействовать развитию сайта.

К нашей команде присоединился преподаватель Киевского национального университета Медведев Михаил Геннадиевич (medv), ныне профессор АДА университета в Баку. Михаил Геннадиевич начал активно поддерживать сайт, публиковать задачи и организовывать соревнования. Благодаря ему об украинском сайте узнали в Турции и Азербайджане. Мы добавили азербайджанский язык к интерфейсу сайта, а благодаря усилиям преподавателей из Азербайджана нам удалось перевести множество задач. Сегодня Азербайджан является третьей по количеству пользователей страной на сайте.

2014

В 2014 году сайт получил очередное обновление, система была вновь переписана с нуля с использованием современного, в то время, фреймворка Symfony 2. Тестирующая система была значительно обновлена и начала использовать технологии контейнеризации Docker. Веб-сервера и тестирующая система были перенесены в облачный хостинг, то есть вместо физических серверов мы начали использовать виртуальные. А тестирующая система наконец получила сервер в дата-центре, вместо небольшого персонального компьютера в уголке кафедры информатики.

Сайт был переименован в E-Olymp и переехал на новый адрес www.e-olymp.com, ведь английский я все же подтянул и узнал, что правильно писать Olympic, а не Olimpic. Хотя старый адрес www.e-olimp.com до сих пор доступен.

Мы начали использовать новую систему для проведения городских, районных и областных олимпиад по информатике в некоторых районах и областях Украины. Для того, чтобы олимпиады проходили как можно лучше, мы начали создавать отдельные, пустые и полностью изолированные копии E-Olymp, доступные только участникам олимпиад.

2020

В начале этого года я снова полностью обновил тестирующую систему и переписал ее ядро на Go - новом, современном и мощном языке программирования. Также я начал использовать Linux контейнеры для того, чтобы запускать решения в разных средах. Это такой специальный метод изоляции процессов в операционной системе. Это позволило добавить новые языки программирования, упростило поддержку и обновление системы и значительно уменьшило расходы на содержание серверов.

Сайт тоже претерпел значительные, хотя может и не очень заметные изменения. Были обновлены версии PHP и Symfony. Я переписал и оптимизировал много внутренних процессов, таких как подсчет рейтинга, индексация задач для поиска и т.д. Также на сайте появились некоторые новые возможности, например, возможность просмотра кода учителями.

Мы также перенесли сайт и тестирующие системы в AWS. Это один из крупнейших и самых мощных поставщиков услуг по хостингу в мире. Благодаря AWS мы смогли значительно повысить безопасность сайта и данных наших пользователей и перейти на принципиально новый уровень сетевой безопасности.

А в этом месяце, мы начали активно использовать технологии автоматического масштабирования в AWS. Теперь при увеличении количества пользователей на сайте мы автоматически добавляем новые сервера к системе, а при уменьшении эти сервера удаляются. Таким образом наша инфраструктура автоматически адаптируется под нагрузку, повышая надежность работы сайта в часы пик и минимизируя расходы в другое время.

Но кроме технических обновлений, в этом году мы наконец стали официальной организацией, зарегистрированной в Украине согласно действующему законодательству. Мы наконец получили статус, который де-факто имели все эти годы - неприбыльная организация. С самого начала сайт был бесплатным и поддерживался благодаря людям, которым было не безразлично, кому хотелось сделать свой вклад в развитие науки в Украине. Поэтому Сергей Станиславович и я создали некоммерческую организацию “Благотворительный фонд ЕОЛИМП”, целью которой является поддержка работы сайта и развитие науки в Украине и мире. Вы можете узнать больше о целях и задачах организации на сайте фонда.

Поддержка сайта, такого размера как E-Olymp, задача из непростых, ведь это множество всевозможных обязанностей, от разработки новых функций и установки обновлений на сервера, до оказания поддержки и помощи пользователям. И все это в свободное от основной работы время.

Конечно кроме усилий и времени, сайт также требует финансовой поддержки, ведь размещение сайта в интернете и поддержка его работы требует денег. Последние 13 лет, Михаил Геннадиевич, Сергей Станиславович и я лично платили все счета связанные с работой сайта.

Именно поэтому любая помощь имеет значение. Самый простой способ помочь - сделать ежемесячный взнос в фонд сайта. Не обязательно делать большой взнос, лучше сделать небольшой, но ежемесячный взнос. Таким образом мы получим постоянный источник поступлений в фонд.

Но если у Вас нет возможности сделать вклад, Вы все равно можете помочь сайту. Есть множество способов, например вы можете создать и опубликовать интересную задачу, помочь перевести задачу или опубликовать интересную статью в нашем блоге. Это просто несколько примеров, на самом деле Вы можете придумать свой собственный способ помочь. Просто свяжитесь с нами через форму обратной связи на сайте и поделитесь своими идеями и предложениями.

Вы также можете принять участие в разработке сайта, для этого вам необходимы навыки работы с такими технологиями: JavaScript, React, PHP (Symfony 4+), Go, AWS, Kubernetes и Docker. Если вы имеете опыт работы хотя бы с некоторыми из этих технологий и хотите принять участие в разработке сайта в свободное время, напишите мне.

Мы очень благодарны всем, кто уже сделал вклад в наш фонд. Для нас это не просто возможность оплачивать счета, но и показатель того, что наша работа является нужной. Это вдохновляет и мотивирует продолжать работать и совершенствовать сайт.

У нас есть множество идей на будущее, мы очень хотим как можно больше помочь учителям и их ученикам в учебе, создать инструменты для проведения уроков и дополнительных занятий по информатике. Поэтому если у Вас есть идеи, пожалуйста, поделитесь с нами, расскажите, как Вы используете сайт, что вам нравится и чего не хватает. Эта обратная связь очень важна для нас.


Я надеюсь вам понравилась эта статья и я очень хотел бы поделиться с вами еще чем-то. Если вам интересна какая-то тема или у вас есть вопросы об этой статье, Вы можете связаться со мной через форму обратной связи.