pythonでvisual studioを操作して、Topcoderを楽にする

秀丸エディタから VisualStudio を制御するマクロ - とりあえず日記 を参考にさせていただきました。

eclipseには、SRM用のプラグインがあると聞いたのですが、visual stadioにはプラグインがないので、自分で作ってしまおうというお話

また、topcoderへのプラグインの入れ方は TopCoderでCodeProcessor+TZTester+FileEdit - Gulfweed を参考にさせて頂きました。

このプラグインは、

  • SRMで問題を選択した後、vsにcppファイルを登録するのめんどくさい…
  • 英文読めねえ!

な人が作ったものなので、英語が普通に読める方には不要かと思われます。

機能

  • SRMで問題を選択すると、visual studioのprojectに追加されているcppファイルを自動的にremove(削除はしない)します。
  • 問題と同時に出力されるhtmlで書かれた問題を、googleさんに自動翻訳してもらい、その後ブラウザで開きます。

ちなみに自分用のスクリプトなので、何が起こっても責任は負えません、一応。
現在テスト中なので、時々アリーナが固まるという致命的な欠陥を持っています、pythonのプロセスが終わらない時が時折発生して…

なぜわざわざpython

  • pythonの練習
  • javaSRM用にプラグイン書きたくなかった…(結局書いてしまいましたが)
  • VB.netでVSのマクロでもよかったけど、導入はpythonの方が楽そうだった
  • google翻訳にhtmlを投げて翻訳してもらう機能をpythonで作ってもらったので、それも一緒に使いたかった

環境

pywin32を入れないと動かないので注意
また、java 6でもpluginが動かない可能性があるので、動かなかった場合はjava7を公式http://java.com/からインストールして下さい。

ソース

ソースはgithubで公開しています。 https://github.com/math314/srm_helper

導入手順

既にSRMプラグイン、FileEditとTZtester,CodeProcessorが入っている前提で話をします。

まず、pythonスクリプトを好きなディレクトリにダウンロードして下さい。
https://github.com/math314/srm_helper/tree/master/helper ここに置いてあります。

ここにあるmain.pyに、cppファイルの絶対パスを渡すと、visual studioにファイルが追加されて、htmlファイルが自動翻訳されます。


次に、FileEditを https://github.com/math314/srm_helper/blob/master/FileEdit/FileEdit.jar こちらにあるファイルと入れ替えます。
その後アリーナを起動して、Editor Preferences > CodeProcessor Configuration > FileEdit Configurationに行くと以下のような画面が表示されていると思います。


Enter directory to read/write problem to: は各々設定があると思うのでスルーします。

この画面が表示されていたら成功です、下の方に"Enter execute Script:"というのがあると思います。
そこに以下のように入力します。

私の場合C:\math\Projects\competition\topcoder\helperに、pythonスクリプトを置いてあるので、「python C:\math\Projects\competition\topcoder\helper\main.py」と入力しました。

動作を確認するために何かSRMの問題を選択すると、
既に起動していたvsの、ソースファイルがいつの間にか変わっていて、ブラウザでは自動翻訳された問題文が開いている…はずです!

これでread phaseの短縮 & vsにcppファイルを追加する手間が省けるかなと思います。

ちなみにスクリプトは例外処理などをしていないという中々ひどい状態なので、どなたかpythonがわかる方に書き直していただきたい…