AGNOCPEED
Agnocpeed is an OS agnostic desktop app created using Electron + React. User can configure it with their favourite editors, languages (Currently supports C++ and Python) and templates. It is designed such that a competitive programmer can fully focus on problem solving and tries to reduce the barriers such as copying testcases, constantly opening standings page, worrying about the verdict of your latest submissions.
Build steps
Git, NodeJS and NPM must be installed. Then type the following in a terminal to generate a build for your OS.
git clone https://github.com/anujdhillxn/agnocpeed.git
cd agnocpeed
npm install
npm run electron:build
A Build will be generated in the dist folder. The dist folder will contain an installable as well as the installed app.
Usage
- Run the executable generated by the build.
- Read the settings section below.
- Select a platform (Codeforces or Atcoder) or choose the practice mode.
- Logging in or not logging in is upto you and some features won't work accordingly.
- Enter a contest id. Future contest IDs are displayed in the table.
Settings
- Change the editor to the one that you currently have.
- Make sure you have a template present for all the languages in the resources/extraResources/settings directory.
- Make sure your system can support the run and compile commands that are mentioned.
- Switch the headless property and you will understand what it means :P.
Actions
- All actions have a hotkey combination which can be changed. Must be a valid list of hotkeys separated by '+'.
Statement
- Only available in headless mode.
Test Cases
- The verdict is judged by string comparison and treating all whitespaces as a single space, then trimming the string.
- All run commands will be executed upto 'Time Limit' seconds property in settings.
Log
- stdout or stderr of every command run by agnocpeed is displayed in the log.
Submissions
- resources/extraResources/win.mp3 will be played when a new successful submission with a positive verdict is detected.
- resources/extraResources/lose.mp3 will be played when a new successful submission with a negative verdict is detected.
Following features will be added if the app gains popularity.
- Support for any other languages.
- Support for Codechef.
- Stress testing.
- Interactive mode.
If really want this app to be actually useful to the competitive programming community and would love to answer any doubts. Please star the repo if you like my work. :)
me using the played audio feature after a positive verdict.
HAHA maybe you'll get used to it. If it feels distracting, removing .mp3 files from resources/extraResources/settings folder should work :)
Looks nice! Since you mentioned users can configure it with their favourite editors, how does it work with vim (as I can understand, there are some hotkeys)? Also, it seems like the npm installer also installs Chromium, so it'd be great if there is an estimate for the time and space required by the installation.
Edit: also facing weird issues while installation:
So the files are opened by spawning child process with a command
$$$editor$$$ $$$filename$$$
. So far I have tried it with VSCode (code), Sublime (subl) and notepad. Maybe you can try changing the editor and see how it works in the case of vim.The app indeed becomes quite heavy after installation thanks to Electron, Puppeteer and PDFtron. The final installed app turns out to be around 1 GB on windows 10. The entire installation starting from cloning the repo might take around 8-10 mins.
EDIT — Well the log says low on disk space. During installation lots of node modules are downloaded which take up around 1.7 GB (which are not needed after the build). Looks like you might need an SSD upgrade :P
Honestly wasn't expecting the build to take this much space (maybe some other alternatives can reduce resource consumption a bit?). Managed to install, but got the following error instead:
Maybe it is messing up some permissions somewhere.
The app is trying to create the folder where contest files are stored. Maybe running the app with administrator privileges can work. Sorry my linux tester bailed out on me and I assumed if it is working for Mac then it should be working for linux as well.
I generally avoid running anything with administrator privileges unless I understand what exactly it needs to do, will wait for a fix instead.
anujdhillxn orz
magga orz