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, здесь я приведу лишь скрины и ключевые моменты, что же такого можно сделать.
- Смотреть положение контеста(друзья, официальные, неофициальные, комната)
Раскрашиваются только те, кто явно указан в настройках. Полная раскраска в следующих версиях.
- Смотреть условие задачи
. Не показываются только формулы-картинки
- Загружать последнюю посылку по задаче из положения (как ctrl-клик в положении в браузере). Например, посылка qwerty787788 по последней задаче с последнего раунда:
Все возражения/пожелания/комментарии/критику писать на почту/здесь/гитхаб
Только взлома из консоли не хватает:)
понятно, что это шутка, и никто не даст страничку с текстом сабмита во время контеста, будет слишком просто скопировать и прогнать через стресс :)
а так да, получился относительно полный консольный вариант..
Да ладно, как будто флеш-плагин текст сабмита в виде картинки получает. Можно его декомпилировать и получить формат, в котором клиенту приходит сабмит. Это типичный security through obscurity, в конечном итоге надежда на честность участников.
Не говоря уж о том, что распарсить картинку в текст используя современные инструменты — довольно просто.
Да конечно распарсить не проблема, если есть желание. Но я же честный :)
So cool!!!
Вот это круто!!!
I have some issues with the plugin:
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 :)
Здорово, спасибо! А можно поклянчить еще и vimrc? Просто сам только недавно стал юзать vim, теперь вот ищу, кто как себе упрощает жизнь. Понятно, что каждому свое, но так хотя бы начинаешь понимать, что реально, а что не очень.
Вот мой vimrc для контестов. Только самое необходимое: строка компиляции и несколько шорткатов для запуска кода или дебага )) http://paste.ubuntu.com/10448607/
.vimrc
Разумеется, я использую не все, а бОльшая часть написана вообще не мной. В основном, мной написано то, что в конце, нужное для компиляции/кф/опции и т д и т п
сейчас подумал и удалю плагины, которые я не использую, но "да ставь, не помешает"
UPD: в новой ссылке я пометил звездочкой плагины, которые не использую
Ух. Круто, спасибо =)
А от себя могу вот такую строчку порекомендовать:
map <c-a> mcggvG"+y`c
Иногда бывает удобно, если быстро скопировать код проще, чем загружать его файлом (ну или для TC арены, например).
Для TC Aren'ы я бы посоветовал что-то типа mojmoj, который еще и обвязку для теста сгенерит, и копировать ничего не надо(только сохранить файл)
Для topcoder aren'ы есть крутой плагин http://www.vim.org/scripts/script.php?script_id=3321
о, спасибо, это замечательно!
а то приходилось писать свои костыли с дефайнами..
спасибо, пересобрал вим с поддержкой +clipboard, а то руки не доходили :)
чтобы в ubuntu в vim появилась поддержка clipboard, надо просто поставить пакет
vim-gui-common
От ubuntu отказался после выхода 14.10, кажется. сейчас у меня arch
да и пересобрать не проблема :)
да кстати, по поводу входа по логину с паролем. На сайте стоит базовая защита от подобных скриптов. Обойти ее конечно можно, но тогда админы могут разочароваться. А я не хочу иметь дело с разочарованными админами :)
хм, вообще логично было ее сделать. Так что решение через куки самое логичное и правильное, это радует
кстати раз уж на то пошло, лучше биндить как
map <C-A> mcggvG$"+y'c
а то если последняя строка не пустая, что должно быть так, будет грустно без нее
а еще можно не переписывать метку с и написать
map <C-A> ggvG$"+y' '
в последней строчке 2 ' вместо одной, плохо видно
UPD: o, мои < и > сожрало, оказывается
На каком-то сайте проверяющая система не принимала исходники, если в конце не было пустой строки... Уже и не помню, что это за сайт был, но привычка осталась =) Но спасибо, так действительно лучше.
я решил проверить на вимрц как работает, а там почему-то нет пустой строки в конце. Ну я и получил "s" вместо "set foldmethod=marker" и расстроился :)
Для топкодера есть отдельный плагин с помощью которого ничего копировать не нужно: https://github.com/chazmcgarvey/vimcoder
Можно достаточно быстро (хотя клавиши далековато друг от друга, да) и без маппингов:
:%y+
Is there any way to try it without competing at the same moment (lets say on virtual competition)?
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.
One awesome plugin :)
Now it's worth learning how to use vim.
I'm new to vim. Where should I write let
g:CodeForcesContestId = 518
?Upd : Resolved.