Блог пользователя nekto

Автор nekto, 14 лет назад, По-русски
Наше сообщество уникальное в своем роде – каждый здесь разработчик!!! Пусть кто-то с большими знаниями, кто-то с меньшими, но современные средства разработки и технологии позволяют организовать разработку новых модулей сайта сообществом при этом обеспечивая безопасность системы. Организаторам часто не хватает времени на реализацию предложений сообщества по улучшению сайта, хотя они нужны, а порой необходимы.

Более конкретно предлагаю:

1)    организаторы предоставляют сообществу совокупность API сайта (при необходимости API дорабатывается или создается новое).
2)    при поступлении новых предложений они проходят
этап обсуждения, где выясняется, нужно ли это усовершенствование воплощать в жизнь, выдвигаются предложения и т.д.
3)    Разрешение организаторов на данное усовершенствование (возможно можно будет отказаться).
4)    Создание программного кода силами сообщества и загрузка через систему контроля версий. Возможно конкурирующее программирование - выигрывает реализация с меньшим расходом ресурсов. Также возможны две стратегии разделения исходных фалов
а) любой участник сообщества может вносить изменения в код
б) только один участник, или группа друзей создает какой-то компонент.
5)    Разработка тестов также силами сообщества.
6)    Организаторы утверждают обновление и подсоединяют к codeforces.

Преимущества: не только наполнение, но и создание функционала портала ведется руками сообщества, что по идее приведет к увеличению скорости доработки и улучшения codeforces.

Недостатки:
1)    не до конца понятно как можно справиться с проблемой безопасности (предлагается предоставление интерфейсов системы с валидацией в реализации всех аргументов на корректность и проверка на отсутствие «запрещенных» функций, как во время проведения контестов).
2)    возможно не будет хватать производительности серверов codeforces на все желания сообщества.
  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
OpenSource сайт?
Мне нравится. Действительно (говорю про интернет вообще), иногда попадается какая-нибудь мелкая неправильность, допилить которую - две минуты.
Только меня смущает пункт 5. Мне кажется, что всё-таки лучше, когда тесты/задачи делает очень ограниченный круг людей (не вообще, а для конкретного контеста).
  • 14 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Ну можно сделать официальный рейтинг (только на официальных контестах) и неофициальный (на всех). Можно сделать рейтинг контеста и рейтинг составителя и учитывать это при пересчете рейтинга. Это как раз решается.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вроде как изначально Codeforces задумывался как площадка для проведения контестов именно силами сообщества. Т.е. каждый может загрузить условия, чекеры, решения, что-нибудь настроить и провести контест. Либо для всех, либо для кого-нибудь конкретного.
      Вроде это и планируется после выхода из беты.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Если ты, уважаемый Кодефорсоюзер, прочитав первый пост, ошибочно подумал о тестах для задач, то тебе надо срочно прекратить писать контесты, потому что твой мозг уже не способен думать о разработке ПО, где слово "тест" имеет совершенно другое значение.

    • 14 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится
      Скажем так - я про это просто ничего не знаю, к моему глубокому сожалению.
      Единственная ассоциация, всплывшая сейчас - test cases. Что это такое, я не знаю, но хочу узнать. Можете просветить?
      • 14 лет назад, # ^ |
          Проголосовать: нравится +10 Проголосовать: не нравится
        Я написал не на твой пост, а вообще :О) Я уверен, что огромное количество людей прочитав первый пост подумали о тестах для задач. Я тоже сначала так подумал. Потому что контекст обязывает.

        test cases - это в задачах, Case #1: :о)

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

        var q = new Queue( );
        Assert.IsTrue( q.Empty );
        Assert.AreEqual( q.Length, 0 );
        try
        {
            var z = q[0];
            Assert.Fail( ); // эта строка не должна быть достигнута, потому что предыдущая должна выбросить исключение
        }
        catch( OutOfBoundsException )
        {
            ; // это ожидаемое поведение
        }
        q.Add( 5 );
        Assert.IsFalse( q.Empty );
        Assert.AreEqual( q.Length, 1 );
        Assert.AreEqual( q[0], 5 ); 

        Еще есть стильная штука - Test Driven Development, когда сначала пишутся тесты, а потом код класса. Тогда можно быть уверны, что твои тесты не подгоняются под текущую реализацию.
        • 14 лет назад, # ^ |
            Проголосовать: нравится +11 Проголосовать: не нравится

          Спасибо, Alex за дополнения))

          Кстати возникщий вопрос показывает проблему образования и олимпиадного программирования в частности они имеют теоритическую направленность, без указания где это и для чего может быть применено. Вот пример обсуждения А что после ICPC? И в чем вообще смысл?.  Если усовершенствование сайта будет вестись руками сообщества, то у отличных программистов как yeputons будет возможность узнать о существующих технологиях разработки ПО, попробовать свои силы. Пусть в начале и получив кучу минусов от сообщества за нечитабельный код или несоответствие принципам ООП. Но зато после окончания вуза будет проще устроиться на работу.

          Codeforces - это ведь образовательный портал?? Или я может что-то не так понял???

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Выражу и я свое мнение:)
1) мне кажется что лучше всего будет если сам Михаил Расихович будет обновлять сайт(все-таки основатель и администратор сайта-он). Все конечно хорошо, и программисты в основном-люди хорошие, но на вкус и цвет товарищей нет, и вообще open source лично мне никогда не нравился в силу недоработанности по многим параметрам(те кто станут приводить линукс в качестве безукоризненной системы в этом плане съем с потрахами:)).
2) Контесты и так проводятся многими людьми, и не только саратовцами. Контесты проводились Александром Куприным, Владиславом Епифановым, Геннадием Короткевичем и Егором Малышевым, Ярославом Твердохлебом, Романом Едемским, даже участниками не из СНГ(Jakub Pachocki, Nedyalko Prisadnikov), братьями Соболевыми. Конечно, хотелось бы почаще, и команда CF этим совершенно точно занимается, но, думаю, всему свое время.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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

Но по-моему codeforces - это не только контесты и не столько!!! 
Здесь главное - это обсуждение, причем не обязательно задач, но и, например, сред программирования, что брать с собой в Питер на полуфинал и т.д. Плюс еще возможно объединение с обучающими материалами (я про обещанное слияние с   e-maxx.ru). Для меня codeforces - это место для обучения, тренировке и общения с единомышлениками, соратниками по профессии. 

Потребности сообщества по созданию инфраструктуры все время растут и этот процесс не остановить) Сколько постов было по улучшению codeforces причем не только касаемо проведения контестов и отображения рейтинга (например,   Ряд предложений по CodeForces). Организаторы при всей своей профессиональности, работоспособности и энтузиазме не смогут быстро воплощать пожелания в жизнь.
Лучше будет если они будут заниматься координацией процесса усовершенствования codeforces, а сам процесс разработки портала ляжет на плечи сообщества.

P. S. Коллектив codeforces профессионалы в деле проведения контестов и их организации. Сложившаяся стратегия создания и проведения контестов всех устраивает. А вот, например, навигация по сайту, поиск постов и т.д. нуждаются в улучшениях.

  • 14 лет назад, # ^ |
      Проголосовать: нравится +22 Проголосовать: не нравится
    не знаю даже, как правильно сформулировать своё несогласие

    во-первых, сайт создавался одним человеком и с определённой целью; сайт существует именно таким, каким его видит автор... если автор перестанет видеть то, что хочет видеть, то будет сложнее как-то правильно дополнить/исправить

    во-вторых... в случае багов сторонних разработчиков все будут винить Майка - опять таки, CF - его детище (а исправлять чужой код намного сложнее, чем писать свой)

    в-третьих, разные идеи по улучшению/дополнению не могут приниматься в духе: "а, это было бы неплохо, ну щас сделаем" и т.п., ибо одна идея может поставить крест на десятке других; нужно всё тщательно взвесить

    а вообще каждый видит этот мир по-своему

    я думаю, что если наберётся два десятка программистов с кучей свободного времени, то они могут создать свой опенсорс сайт и поэкспериментировать, а CF - это уже сформировавшийся проект и что-то переделывать другим программистам в нём не стоит
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      > я думаю, что если наберётся два десятка программистов с кучей свободного времени

       

      Человека три хватило бы для начала.

      Это может быть вообще неплохой идеей. Codeforces взорвал так потому, что кроме топкодера нет ни одного качественного ресурса. И с появлением кодефорса ресурсов стало два. То есть по прежнему конкуренции нет.

      Если кто-то хочет, я бы в принципе начал (одному не очень хочется). Не на Java только. На PHP фтонтенд и совсем простенький тестирующи на Java или С++ допустим.

       

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        отправилось раньше времени

         

        тесритующий сервер вида "select из базы, запустить, обновить, селект, запустить, обновить", а всю логику по распределению ресурсов между серверами уже положить на PHP - такого рода.

         

        если это кому-то интересно, пишите в личку :о)

         

        П.С. Майк, не бань меня :о

        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          разве что ради эксперимента, учёбы и работе в команде

          конкуренцию TC и CF создавать не нужно и, в принципе, бесполезно: везде регистрируются и участвуют одни и те же люди - никакой рекламой, бесплатной колой и стриптизом ты "других" людей не привлечёшь

          потолок - это тысяча регистраций в год, бабла никак не срубишь

          стоит ли лезть на ёлку?
          • 14 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

            Цель очевидно такая же как у (я полагаю) кодефорса - сделать web20 портал по спортивному программированию.

            Только OpenSource сможет быстрее развиваться, видимо, и лучше подстраиваться под нужды людей. Нет виртуальных контестов, но нужны? Нет проблем, сделай их :о) Плюс люди смогут его развенуть у себя локально для тренировок на своих задачах.

            Сегодня, вообще говоря, нет качественных решений для тренировки. Хорошая возможность сделать одно.

             

            Вообще ты не поверишь насколько можно развить идею подобного портала. Многие идею здесь витают, но с закрытой командой разработчиков они увидят свет очень не скоро. Многие из них имеют низкий приоритет, или вообще не запланированы.
            1. Архив задач с сложностью и тегами, оцененными сообществом. Надо подтянуть потоки? Их есть у нас.
            2. Форматы соревнований - не надо ничем ограничиваться (сообщество может добавить реализацию любого формата, который им нужен). Виртуальные контесты в паре с этим - и можно готовиться к топкодеру в режиме, близком к реальному. Собрались с ребятами, выбрали три задачи из архива (сложность указана), запустили - вам создало комнату, кодячим, взламываем, радуемся, повторяем на следующий день. Скоро Google Code Jam? Тренируемся в режиме GCJ. Готовишься к школьной олимпиаде - решай задачи с указанными баллами.
            3. Прикрутить что-то типа ACM Server (чтобы задачи из других архивов хаками можно было использовать). Теперь можно тренироваться в любом из существующих форматов, которые не требуют доступа к тестам/чекеру на любимом архиве (ну это и сейчас можно).
            4. Социальность проекта, не ограниченная блогами. Wiki с алгоритмами, wiki с разборами задач из других архивов.
            Я все это еще хотел (и даже начинал) делать в ВУЗе, но тогда не хватило усидчивости.. Почти все пункты показали себя как выполнимые. Конечно, требуется очень крутой дизайн всех решений, чтобы все было расширяемо. Но именно это и делает задачу challenging.

             

            • 14 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              ты готов всем этим заниматься? выделить 3-4 часа в день (а иногда и больше) в течение долгого времени в качестве неоплачиваемой работы?

              я понимаю, что все эти идеи, решения, wiki и т.п. - это очень круто, но если ты делаешь такой проект, то тебе придётся сильно связать свою жизнь с ним, иначе просто нет смысла браться

              на сколько хватит энтузиазма у желающих сделать такой сайт? я пессимист (а может и реалист) и думаю, что до запуска первого контеста дело не дойдёт
              • 14 лет назад, # ^ |
                Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

                Ну если четыре человека соберутся заняться этим, то первая рабочая версия будет готова уже за месяц.

                А дальше уже аудитория = комьюнити = более быстрое развитие.

                 

                Ну и я в принципе готов тратить адекватное время на это. Главное чтобы были еще желающие :о)

                 

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Фронтенд на PHP? Почему не на ASP.NET MVC?
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Мои аргументы:
          а)PHP кроссплатформен. Если потребуется, можно легко перенести на линь/фряху или же разрабатывать изначально там.
          б)PHP гораздо легче установить, настроить, и написать Hello World.
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ну потому что OpenSource - люди, которые пишут на ASP.NET MVС - они вообще говоря не часто занимаются OpenSource. Это как сразу отсечь любой вклад со стороны сообщества :о)
14 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Нужно ещё сделать кнопку Donate, чтобы автору понравившегося контеста приходили деньги от сообщества.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Даже если задача будет очень хорошей, вряд ли я буду так рад ей, что премирую автора рублем.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    хорошая идея, мне нравится

    во-первых, ни к чему не обязывает

    во-вторых, авторов нужно поощрять (останусь при своём мнении, что придумать интересные задачи - это самое сложное в процессе создания проблемсета)

    ну и из 500-1000 участников наверняка найдётся пара десятков человек, кто кинет хотя бы десятку