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

Автор Igorjan94, 10 лет назад, По-русски

UPD0: Спасибо огромное всем за такую оценку моего скромного творения! Это вдохновило меня продолжить заниматься улучшением, и теперь плагин научился парсить контест, создавать файловую структуру контеста, примитивно тестить программу на скаченных тестах, показывать список контестов (спасибо I_love_Hoang_Yen), а условие задачи парсится без ошибок. На гитхабе ведется changelog, думаю, что дублировать его здесь нет смысла, ибо тот кто заинтересован, обновит плагин и так.

С Днем Рождения, CodeForces! Этот сайт я посещаю чаще всего, ибо тут совмещается очень много полезных и интересных вещей, а главное, что все делается с юмором и постоянно улучшается. Вот и я решил улучшить жизнь некоторых пользователей :)

Не так давно я начал использовать vim как основную IDE. Сначала, как и предполагалось, я не оценил всех прелестей и продолжал писать в Code::Blocks'е и QtCreator'e, в зависимости от задач. Но, "наставив" кучу плагинов научившись им пользоваться чуть больше чем "как отсюда выйти" и "как собирать программу", я уже достаточно сильно ругаюсь на другие среды разработки. Стоит отметить, что данное высказывание верно лишь для С++ и, наверно, python'а (хотя тут ни в чем другом не писал, не могу сравнивать). Что касается Java, тут безусловно лидирует IDEA, хотя я не против писать и в Eclipse. Можно здесь расписать кучу преимуществ, которые есть у vim'a, но я остановлюсь на одном, которое родилось на днях, основанное на идеях (J|C)Helper'a.

Собственно плагин. Полная информация на странице github'a, здесь я приведу лишь скрины и ключевые моменты, что же такого можно сделать.

  • Смотреть положение контеста(друзья, официальные, неофициальные, комната)

Раскрашиваются только те, кто явно указан в настройках. Полная раскраска в следующих версиях.

  • Смотреть условие задачи

 . Не показываются только формулы-картинки

  • Посылать решение и видеть результат (благодаря CountZero, пост)

  • Загружать последнюю посылку по задаче из положения (как ctrl-клик в положении в браузере). Например, посылка qwerty787788 по последней задаче с последнего раунда:

Все возражения/пожелания/комментарии/критику писать на почту/здесь/гитхаб

  • Проголосовать: нравится
  • +292
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Только взлома из консоли не хватает:)

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

    понятно, что это шутка, и никто не даст страничку с текстом сабмита во время контеста, будет слишком просто скопировать и прогнать через стресс :)
    а так да, получился относительно полный консольный вариант..

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

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

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

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

        Да конечно распарсить не проблема, если есть желание. Но я же честный :)

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

So cool!!!

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Вот это круто!!!

»
10 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

I have some issues with the plugin:

  • It does not show my friend, it shows your friend. Edit: Fixed. It was mentioned on github page, which I did not read carefully ^_^
  • The standings has wrong indentation. Edit: I fixed it. Did not notice the dependencies earlier :D
  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    I have no idea how to get friends from site, because api doesn't contain this info :(
    g:CodeForcesUsername is used for showing last submits, and you should add your friends in file path/to/plugin/codeforces.vim/CF/codeforces.friends by hands, copying from site

    UPD: maybe I will do automatic parsing, using X-User and JSession, but it isn't so trivial like parsing txt file with split(' ') and I will be some time later :)

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

Здорово, спасибо! А можно поклянчить еще и vimrc? Просто сам только недавно стал юзать vim, теперь вот ищу, кто как себе упрощает жизнь. Понятно, что каждому свое, но так хотя бы начинаешь понимать, что реально, а что не очень.

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

    Вот мой vimrc для контестов. Только самое необходимое: строка компиляции и несколько шорткатов для запуска кода или дебага )) http://paste.ubuntu.com/10448607/

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    .vimrc
    Разумеется, я использую не все, а бОльшая часть написана вообще не мной. В основном, мной написано то, что в конце, нужное для компиляции/кф/опции и т д и т п
    сейчас подумал и удалю плагины, которые я не использую, но "да ставь, не помешает"

    UPD: в новой ссылке я пометил звездочкой плагины, которые не использую

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

      Ух. Круто, спасибо =)

      А от себя могу вот такую строчку порекомендовать:

      map <c-a> mcggvG"+y`c

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

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

        Для TC Aren'ы я бы посоветовал что-то типа mojmoj, который еще и обвязку для теста сгенерит, и копировать ничего не надо(только сохранить файл)

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится

        спасибо, пересобрал вим с поддержкой +clipboard, а то руки не доходили :)

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

          чтобы в ubuntu в vim появилась поддержка clipboard, надо просто поставить пакет vim-gui-common

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

            От ubuntu отказался после выхода 14.10, кажется. сейчас у меня arch
            да и пересобрать не проблема :)

            • »
              »
              »
              »
              »
              »
              »
              10 лет назад, # ^ |
                Проголосовать: нравится +5 Проголосовать: не нравится

              да кстати, по поводу входа по логину с паролем. На сайте стоит базовая защита от подобных скриптов. Обойти ее конечно можно, но тогда админы могут разочароваться. А я не хочу иметь дело с разочарованными админами :)

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

                хм, вообще логично было ее сделать. Так что решение через куки самое логичное и правильное, это радует

      • »
        »
        »
        »
        10 лет назад, # ^ |
        Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

        кстати раз уж на то пошло, лучше биндить как
        map <C-A> mcggvG$"+y'c
        а то если последняя строка не пустая, что должно быть так, будет грустно без нее
        а еще можно не переписывать метку с и написать
        map <C-A> ggvG$"+y' '

        в последней строчке 2 ' вместо одной, плохо видно

        UPD: o, мои < и > сожрало, оказывается

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится

          На каком-то сайте проверяющая система не принимала исходники, если в конце не было пустой строки... Уже и не помню, что это за сайт был, но привычка осталась =) Но спасибо, так действительно лучше.

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

            я решил проверить на вимрц как работает, а там почему-то нет пустой строки в конце. Ну я и получил "s" вместо "set foldmethod=marker" и расстроился :)

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

        Для топкодера есть отдельный плагин с помощью которого ничего копировать не нужно: https://github.com/chazmcgarvey/vimcoder

      • »
        »
        »
        »
        10 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Можно достаточно быстро (хотя клавиши далековато друг от друга, да) и без маппингов: :%y+

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Is there any way to try it without competing at the same moment (lets say on virtual competition)?

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

    Yes, of course it works without competing. You can submit/watch standings/do everything/... whenever you want
    I didn't tested it on virtual contest, but after your comment I've added cookies to request of standings, so it should work as expected.
    About gym : now you can only submit to gym (contest with id > 100000). I suppose I'll add gym support next week.

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

One awesome plugin :)

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

Now it's worth learning how to use vim.

»
7 лет назад, # |
Rev. 3   Проголосовать: нравится -10 Проголосовать: не нравится

I'm new to vim. Where should I write let g:CodeForcesContestId = 518 ?

Upd : Resolved.