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

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

UPD5: обновите плагин! Формат Codeforces несколько изменился

UPD4: новая версия:

TopCoder fix for UNIX

RCC support

Better non-English characters support

UPD3: новая версия:

TopCoder alternative protocol

Force locale setting to include Locale.setDefault(Locale.US) in generated file

UPD2: в ближайшее время новые бета версии будут распространятся только через plugin repository. При перезапуске Idea, насколько я знаю, плагины обновляются автоматически. Если это по какой-то причине не работает можно скачать свежую версию плагина здесь. Поставить можно либо старым способом (копированием в папку config/plugins), либо Settings -> Plugins -> Install plugin from disk...

Внимание! Это beta версия, которую не очень много тестировали. Используйте на свой страх и риск!

Скачать можно здесь updated

Основные изменения:

  • настройки теперь можно изменить через специальный диалог. При нажатии ОК в этом диалоге так же в classpath добавляются нужная библиотека. Надобность скачивать chelper.properties с сервера пропала (этот файл будет создан автоматически)

  • таска теперь имеет много дополнительных полей, таких как имя контеста и дата. Архивироваться таска будет во вложенную в archiveDirectory папку в зависимости от этих полей. Кроме того, чекер теперь по умолчанию не создается, но его можно выбрать. Поставляются 2 стандартных чекера (потокенный и посимвольный), в потокенном чекере можно через параметры задать максимальную разрешенную ошибку у даблов (пустые параметры — ошибка запрещена, один параметр — ошибка абсолютная или относительная не больше данного числа, два параметра через пробел — первые комбинация букв a и r — соответственно разрешение абсолютной или относительной ошибки, а второй параметр — собственно ограничение). Можно создавать свои чекеры (они должны имплементить интерфейс Checker и иметь конструктор от String, если ввести в соотвествующее поле валидное имя класса он предложит создать "рыбу" кнопкой Create), аналогично к каждой задаче можно добавлять неограниченное число генераторов тестов (должны имплементить интерфейс TestProvider). В тестах теперь можно не указывать ответ (в этом случае стандартные чекеры будут возвращать вердикт Unknown). Старые таски при переезде потеряются к сожалению, но юнит тесты продолжать работать. Рекомендую заархивировать все текущие таски перед установкой

  • таску теперь можно восcтановить из архива

  • переработано меню парсинга контестов. EOlimp пока не работает

  • TopCoder Arena теперь надо запускать прямо из идеи, дополнительных плагинов (moj) более устанавливать не надо

Ищется человек, который напишет ко всему этому инструкцию на 2х языках (ну, или хотя бы на одном), так же интересна видеоинструкция. Если кто-то хочет поконтрибьютить (особенно парсеры для разных сайтов) — you are welcome, у меня для контрибьюторов есть ключ для IntelliJ Idea Ultimate

UPD: загрузил в репозиторий, теперь плагин можно поставить прямо из Idea

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

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

Что-то качать все боятся :) Нет, я правда все функции протестил, просто не очень много на это потратил времени. Вряд ли какие-то day0 баги остались

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

Багрепорт: Не появляется список контестов в окне при парсинге, даже при нажатии кнопки рефрэш. ОС: Opensuse 12.1. Тестер работает корректно. P.S: парсер работал в предыдущей версии.

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

    Ни Codeforces, ни Codechef, ни Timus?

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

      Codeforces отображает список контестов, остальные нет. Но кодфорсез все-равно не парсит таски. Вот логи:

      77073] ERROR — com.intellij.ide.IdeEventQueue — Error during dispatching of java.awt.event.MouseEvent[MOUSE_RELEASED,(343,518),absolute(765,641),button=1,modifiers=Button1,clickCount=1] on dialog0 java.lang.NullPointerException at net.egork.chelper.ui.ParseDialog$1.onOk(ParseDialog.java:61) at net.egork.chelper.ui.OkCancelPanel$1.actionPerformed(OkCancelPanel.java:16) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6290) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6055) at java.awt.Container.processEvent(Container.java:2039) at java.awt.Component.dispatchEventImpl(Component.java:4653) at java.awt.Container.dispatchEventImpl(Container.java:2097) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166) at java.awt.Container.dispatchEventImpl(Container.java:2083) at java.awt.Window.dispatchEventImpl(Window.java:2489) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:607) at java.awt.EventQueue$1.run(EventQueue.java:605) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:621) at java.awt.EventQueue$2.run(EventQueue.java:619) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:618) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:699) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:534) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:420) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:378) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1044) at java.awt.Dialog$3.run(Dialog.java:1096) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1094) at java.awt.Component.show(Component.java:1584) at java.awt.Component.setVisible(Component.java:1536) at java.awt.Window.setVisible(Window.java:843) at java.awt.Dialog.setVisible(Dialog.java:984) at net.egork.chelper.ui.ParseDialog.(ParseDialog.java:215) at net.egork.chelper.ui.ParseDialog.parseContest(ParseDialog.java:260) at net.egork.chelper.actions.ParseContestAction.actionPerformed(ParseContestAction.java:22) at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:169) at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:133) at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:310) at java.awt.Component.processEvent(Component.java:6055) at java.awt.Container.processEvent(Container.java:2039) at java.awt.Component.dispatchEventImpl(Component.java:4653) at java.awt.Container.dispatchEventImpl(Container.java:2097) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166) at java.awt.Container.dispatchEventImpl(Container.java:2083) at java.awt.Window.dispatchEventImpl(Window.java:2489) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:607) at java.awt.EventQueue$1.run(EventQueue.java:605) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:621) at java.awt.EventQueue$2.run(EventQueue.java:619) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:618) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:699) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:534) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:420) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:378) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) [ 77076] ERROR — com.intellij.ide.IdeEventQueue — IntelliJ IDEA 11.1.3 Build #IC-117.798 [ 77076] ERROR — com.intellij.ide.IdeEventQueue — JDK: 1.6.0_34 [ 77076] ERROR — com.intellij.ide.IdeEventQueue — VM: Java HotSpot(TM) 64-Bit Server VM [ 77076] ERROR — com.intellij.ide.IdeEventQueue — Vendor: Sun Microsystems Inc. [ 77076] ERROR — com.intellij.ide.IdeEventQueue — OS: Linux [ 77076] ERROR — com.intellij.ide.IdeEventQueue — Last Action: codeforces

      upd1: Сори за формат. Отступы съехали.

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

        Факт эксепшна — бага, поправил. А соединение с Интернетом точно стабильное?

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

          С интернетом со 100%й уверенностью сказать не могу в связи с плохими погодными условиями в Украине. Отправил багрепорт не заглянув на гисметео :). Но на качество соединения раньше никогда не жаловался. Наверное зря вас дернул по-поводу списка контестов. Он все-таки грузится, но очень долго. После 5 минут ожидания спарсил тимусовский контест. Эксепшна на тимусе нет. Если к вечеру догрузится кодшеф, чекну и его. Еще раз сори по-поводу лжерепорта) P.S: когда будет версия с исправлениями? upd: кодшеф при выборе контеста не открывает список задач.

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

            Ну, я денек подожду — процесс загрузки во все места довольно напряжный чтобы делать раз в 5 минут, а так, глядишь, еще кто-то что-то найдет

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

            Он открывает, но очень медленно. По какой-то причине в очень большом проценте случаев кодчиф возвращает 500 ошибку на страницу с контестом. Я написал им в пятницу, но ответа пока нету

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

        Как показала практика там таки был баг для кодфорса

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

It raise a NullPointerException when I try to Parse a codeforces contest, but it's OK to prase codechef and timus(I'm using Intellij IDEA 11.2 CE)

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

удаление unused кода же должно быть? не работает :( пути такие: Default directory: src/myPackage. Output directory: output. и Task.java лежит в src/myPackage

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

    А код, собственно?

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

      методы lib.aminusb и unused не удалились (см. правку)

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

        Загадочно. У меня не повторяется. Версия Idea? Java?

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

          всё нормально, как и думал, проблема в путях. изменил Output directory с output на src и всё работает.

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

            Попробовал с директорией output — у меня все еще работает. Странно все это

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

            Аналогичная проблема. Вылечил точно так-же.

             PsiFile file = PsiManager.getInstance(project).findFile(virtualFile);
                            if (file == null)
                                    return;
                            PsiDirectory parent = file.getParent();
                            PsiPackage aPackage = parent == null ? null : JavaDirectoryService.getInstance().getPackage(parent);
                            if (aPackage == null || aPackage.getName() != null) {
                                    JOptionPane.showMessageDialog(null, "outputDirectory should be under source and in default package");
                                    return;
                            }
            

            Есть подозрения, что ошибка в этом куске кода.

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

              А именно? Если бы мы зашли в if, то было бы соответствующий message box. Мы в него не зашли, aPackage дальше никак не участвует

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

              да, возможно, так как когда не работало, выводило вот это окно с сообщением.

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

              Именно так. Если выводится месседж бокс, то анюсед код не удаляется.

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

                А, ну тогда понятно. Без этих строк был бы страшный бесконечный цикл в алгоритме удаления unused кода, так как ничто из этого не считается кодом. В общем, сообщения в мессадж боксах стоит читать ;)

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

                  Я прочитал :) Но месседж бокс не соответствует действительности. При попытке подсунуть любую дирректорию, кроме src в качестве output, вылезает месседж бокс. То есть даже при src/mypackage в качестве output будет вылезать message box.

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

                  Очень соответствует — надо же еще и чтобы бы был дефолтный пекедж. Если директорию output в свойствах модуля пометить как source — все будет работать

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

                  default dir = src/mypackage output dir = src/mypackage/output

                  При таком конфиге вылезает мессадж

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

                  Еще раз — "... and in default package"

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

Можно как-то запретить умное архивирование? Ну или настроить его. Мне, например, не интересны даты. Куда интереснее делить сразу по контестам(ie Codeforces/135 (Div.2))

При разархивировании задание остается и в архиве. Это так и задумано?

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    1. Я подумаю как хорошо это сделать. Пока сделаю так, что с пустой датой таска будет архивироваться напрямую в папку с названием контеста, и прямые следы в названии будут давать вложенные папки

    2. Да

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

      Может что-нибудь в духе проперти-настройки archivePath с поддержкой подстановок типа $y year/$m.$d/$contest/LOL? Можно, видимо даже объединить с имеющейся archiveDirectory

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

        Реализовал то, что написано в пункте 1. Ан нет — уже заапрувили

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

Екзепшн при поптыке открыть арену

в первой правке

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

    Хм, не похоже на "при попытке открыть арену" — нету AbstractButton'а в стек трейсе. Это "нормальный" эксепшн при первом запуске — таски старые, он не может прочитать. Арена при этом не запускается?

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

      Не открывается.

      Теперь кажется другой екзепшн

      ~~~~~ в правке

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

        Хм, по каким-то причинам запрещается биндить сокеты. Какая операционная система/версия Idea?

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

          Версия IDEA 12 EAP. OS Kubuntu 12.04.

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

            Либо какой-то файрвол, либо что-то еще непонятное. Permission denied

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

            Добавил альтернативный способ общения через файлы, попробуй

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

              Хорошо, как доберусь до нормального интернета, потещу.

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

                Оно не раньше понедельника будет доступно

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

              Idea 122.264 (EAP 12)
              CHelper 3.0beta7
              OC Kubuntu 12.04

              При первом запуске Арены окошко о том, что сокет не работают, далее арена запускается. В арене при откртии задачи "probably socket was not opened, trying file method", в IDEA вижу созданный файл, запускаю его. В output directory появляется файл ИмяЗадачи.java

              При попытке компиляции в арене: "Both socket and file methods failed to retrieve the source" и ошибка от арены о том, что нельзя компилить пустой код.

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

                А в домашней директории появляется файл .java?

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

                  В домашней директории вроде нету.

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

                  А, ты хоть раз запускал таску то?

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

                  Да, подогнал под семплы, запустил, получил сгенеренный файл в outputDirectory (с вставлеными использованными классами из своей библиотеки). и пачку ОКеев В homedir'е нету

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

                  Очень странно. Даже .chelper в хоуме нету?

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

                  UPD: наврал, есть .chelper

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

                  И арена запущена из идеи?

                  И эксепшенов никаких не упало?

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

                  Да, из идеи.

                  Кстати, из идеи нужно запускать каждый раз? Или достаточно того, что она в первый раз положила корректный chelper и прописалась в плагин едитора в ареене?

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

                  Каждый — идея инитит сокет/понимает, что надо общаться через файлы. Идея точно не была перезапущена после запуска арены?

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

                  Попробовал еще раз: Закрыл и то, и другое, запустил IDEA, из нее арену(Кстати, снова получил сообщение, о том что переходим на файлы). Все точно также.

                  В .chelper путь до корня проекта в IDEA.

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

                  А .java при этом не создалось?очень странно, не понимаю как такое может быть без эксепшнов

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

                  Кроме того, что красным написано в арене “Both socket and file methods failed to retrieve source” и окошка о компиляции пустого кода — никаких ошибок нет. Думаешь екзепшены должн в идее лететь?

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

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

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

                  О, слушай, я правильно понимаю, что порт 239 вбран рандомно и все это же можно делать и на другом?

                  В большинстве UNIX-подобных операционных систем прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы) требует особых привилегий. Каждый из остальных портов может быть захвачен первым запросившим его процессом. (c) wikipedia

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

                  О, не знал. Да, поставлю другой порт

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

                  Залил версию с другим портом — сейчас заапрувят и можно будет скачивать

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

                  Работает?

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

                  Да, заработало, спасибо

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

    Пофиксил эксепшн

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

I noticed some issues with the new plugin.

  1. On topcoder when Div2-medium = Div1-easy, after you open one of them it gives an error ("Something went wrong :(") when you open the other one.
  2. On topcoder I seem to be having some problems when debugging tasks which have to return an array. The array isn't displayed properly.
  3. On codeforces, when I finish a task and move to another, when I press Shift+F9 the IDE(IntelliJ IDEA) debugs the old task. I believe in the old plugin it would change automatically.

Keep up the good work!

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

It doesn't work well when I click on "Launch TopCoder Arena" on my mac computer(but it can work on my windows one), it throw a BindException: Error during dispatching of java.awt.event.MouseEvent[MOUSE_RELEASED,(773,36),absolute(773,36),button=1,modifiers=Button1,clickCount=1] on frame1: java.net.BindException: Permission denied java.lang.RuntimeException: java.net.BindException: Permission denied at net.egork.chelper.actions.TopCoderAction.startServerIfNeeded(TopCoderAction.java:155) at net.egork.chelper.actions.TopCoderAction.actionPerformed(TopCoderAction.java:39) at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:169) at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:133) at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:310) at java.awt.Component.processEvent(Component.java:6140) at java.awt.Container.processEvent(Container.java:2083) at java.awt.Component.dispatchEventImpl(Component.java:4737) at java.awt.Container.dispatchEventImpl(Container.java:2141) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210) at java.awt.Container.dispatchEventImpl(Container.java:2127) at java.awt.Window.dispatchEventImpl(Window.java:2482) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:643) at java.awt.EventQueue$1.run(EventQueue.java:641) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:657) at java.awt.EventQueue$2.run(EventQueue.java:655) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:654) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:699) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:534) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:420) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:378) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: java.net.BindException: Permission denied at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383) at java.net.ServerSocket.bind(ServerSocket.java:328) at java.net.ServerSocket.(ServerSocket.java:194) at java.net.ServerSocket.(ServerSocket.java:106) at net.egork.chelper.actions.TopCoderAction.startServerIfNeeded(TopCoderAction.java:90) ... 37 more

java.net.BindException: Permission denied at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383) at java.net.ServerSocket.bind(ServerSocket.java:328) at java.net.ServerSocket.(ServerSocket.java:194) at java.net.ServerSocket.(ServerSocket.java:106) at net.egork.chelper.actions.TopCoderAction.startServerIfNeeded(TopCoderAction.java:90) at net.egork.chelper.actions.TopCoderAction.actionPerformed(TopCoderAction.java:39) at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:169) at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:133) at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:310) at java.awt.Component.processEvent(Component.java:6140) at java.awt.Container.processEvent(Container.java:2083) at java.awt.Component.dispatchEventImpl(Component.java:4737) at java.awt.Container.dispatchEventImpl(Container.java:2141) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210) at java.awt.Container.dispatchEventImpl(Container.java:2127) at java.awt.Window.dispatchEventImpl(Window.java:2482) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:643) at java.awt.EventQueue$1.run(EventQueue.java:641) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:657) at java.awt.EventQueue$2.run(EventQueue.java:655) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:654) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:699) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:534) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:420) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:378) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

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

а почему плагин не удаляет unused конструкторы?

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

    Выше уже описывалось, но я повторюсь. Дословно прочитай и переведи всплывающий message box, и потом поставь в качестве аутпута твой src.

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

      ты не понял, ничего у меня не всплывает. unused методы удаляются, а конструкторы нет, вот я и спрашиваю почему.

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

        Я не помню исторической причины этого, что-то глючило. Посмотрю, можно ли сейчас это сделать

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

Hi Egor, I need your help!!! I have updated the CHelper plugin but it now fails to load Topcoder code to IntelliJ IDEA :( Do I need to reset sth after update?? Would you like to help me on this issue?? Many thanks!!!

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

    You now need to start TopCoder through Idea. New button is added (you need to add it on toolbar)

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

      After adding the new button and clicking it, an exception raises. RuntimeException: Error during dispatching of java.awt.event.MouseEvent[MOUSE_RELEASED,(724,47),absolute(724,69),button=1,modifiers=Button1,clickCount=1] on frame1: java.net.BindException: Permission denied

      Do I need to set sth?? Also, there is a CHelper editor on my editor lists in TopCoder arena.

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

When achieveing or deleting a TopCoder Task, it didn't delete the java file produced.

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

    Will investigate. Any specific TC problem or for any?

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

      Normally it produce Main.java, so it's OK. But when using TC it produce (problemname).java, so it's a little inconvenient not to delete it

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

On topcoder if you solve a task during the contest then the task isn't created (nor is it recognised) in the practice room. (again the "Something went wrong :(" error)

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

    Is task still in default directory or is it archived/deleted?

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

      It's in the default directory. It's working only after I close the problem from topcoder, I debug it (shift-f9) and then it works. If then I debug another task then it doesn't work again. Is this normal?

      P.S.: And by works I mean that it compiles in the arena.

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

        Can you please specify steps to reproduce one by one?

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

        Oh, I think I got it. You opens problem in arena and tries to compile it. Only the last runned problem in idea is "built" — i. e. ready for compiling/submitting to server, so yes — you need to either run or debug problem locally before submiting

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
 - Task
------------------------------------------------------------------
Test #0:
Exception in thread "main" java.lang.IllegalAccessException: Class net.egork.chelper.tester.NewTester can not access a member of class InputReader with modifiers "public"
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
	at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261)
	at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:516)
	at net.egork.chelper.tester.NewTester.test(NewTester.java:66)
	at net.egork.chelper.tester.NewTester.main(NewTester.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

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

    Вопрос снимается.

    ПС А теперь в Хелпере не будет возможности парсить таски с КФ по айди и букве? very sad

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

      Пока да. Возможно, потом добавлю, но так как это не уменьшает функциональность (задачу всегда можно выбрать), то это low priority