zen0wu / topcoder-greed

greedy editor for topcoder arena
Apache License 2.0
229 stars 48 forks source link

Use new ProblemCustomSettings class. Update TC jars. Fixes #139. #141

Closed vexorian closed 10 years ago

vexorian commented 10 years ago

After contacting the arena maintainer, I found out that the time limit method was moved to a new API class. This fixed #139 in the correct way.

The new API class has some interesting-sounding method names. Apparently it is possible to fetch the gcc build line, for example. Wonder if that's important to add later as a field.

zen0wu commented 10 years ago

Thank you very much for this. I'm afraid API breaking change without any documentation or notification to the plugin developer was, and will be a big problem of the TC arena platform. They should not do things like this.

I'll update the release jar and also I think we need to specify the arena version in the release.

ashashwat commented 10 years ago

Got bitten by this during live SRM. I wonder if there is a way to knowing issues like this apart from checking github ?

zen0wu commented 10 years ago

Does topcoder still require contestants to use the latest version of arena?

ashashwat commented 10 years ago

I use the following script to log in to topcoder. It always download the recent version of arena.

→ cat ../run_arena.sh 
#!/bin/sh
javaws "http://www.topcoder.com/contest/arena/ContestAppletProd.jnlp"
zen0wu commented 10 years ago

That's very hard to detect. Because the API breaking change may not be passed to the developer in an effective way. I myself also have a update script only doing more things, it will warn me when the content of the jnlp is changed.

The plugin may be able to warn you about the incompatibility when you open a problem (that's when the plugin is instantiated), but that's basically the same thing as throwing exceptions when something broke. To the users, these two are both not usable.

On Fri, Feb 28, 2014 at 4:06 AM, Shashwat Anand notifications@github.comwrote:

I use the following script to log in to topcoder. It always download the recent version of arena.

→ cat ../run_arena.sh

!/bin/sh

javaws "http://www.topcoder.com/contest/arena/ContestAppletProd.jnlp"

— Reply to this email directly or view it on GitHubhttps://github.com/shivawu/topcoder-greed/pull/141#issuecomment-36285124 .

Chenyang WU Shanghai Jiao Tong University Address: No. 800 Dong Chuan Rd, Minhang District, Shanghai

vexorian commented 10 years ago

Could try to wrap the non-critical API calls under blocks that detect the MissingMethodException (like in #140) and replace the value we tried to read with placeholder information and report the user that something went terribly bad trying to read problem info and that the plugin is trying its best to adapt.

A more effective solution would be to gather other plugin devs and go to that thread and make the arena maintainers know something like this really shouldn't happen without notice.

Also maybe (maybe) Greed could use something like a blog where announcements about critical hot fixes could be hosted.