adenohitu / hisui Goto Github PK
View Code? Open in Web Editor NEW競技プログラミングサポートツール Support tool for Competitive programming (AtCoder GUI)
Home Page: https://adenohitu.github.io/Hisui-introduce/
License: GNU Affero General Public License v3.0
競技プログラミングサポートツール Support tool for Competitive programming (AtCoder GUI)
Home Page: https://adenohitu.github.io/Hisui-introduce/
License: GNU Affero General Public License v3.0
何らかの原因で小さくなってしまった時、最低サイズに変更する
また位置についても同様画面外にある場合強制変更する
この機能を実装する
{ "window": { "height": 813, "width": 1, "x": 0, "y": 100000, "isMax": false }, "SetContestID": "typical90", "saveDefaultFolder": "/Users/ikuta/Documents/hisui/hisui" }
macにおいてウィンドウを閉じた後再び開いてもViewが出てこない
Atcoder classのAxios instanceを分ける
・リクエスト間隔を設定できるようにする
・キューを作るのもアリ
ファイル名のところに"../../"などといった物を入れればどこでも操作できてしまう
bffef62
TaskVIewWindowはフレームレスWindowとして設定している
ただ、フレームレスにすると通常のWindowと信号ボタンがずれる問題がある
ユーザーが自分で機能を作ってアプリ内で使えるようにする機能の追加
作った機能を公開できるマーケットの作成
全て一つになっている
使わないReduxが初期化されてしまうーメモリの無駄遣い
全て分けると、開発時のサーバがめんどくさいことになる
アイコンのデザインを考える
順位表情報を並べ替えたり絞り込みしながら見れる便利な順位表を作成する
現在の課題
Next.jsに移行した方が今後のためにも良いと思う
(node:63895) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 LISTENER_CODETEST_STATUS_EVENT listeners added to [EventEmitter]. Use emitter.setMaxListeners() to increase limit
原因不明
コードテストを複数回高速に連続で実行するとたまに出る
インスタンスを作れる
ファイルの読み込み中のmonacoのEditorModelが変更されてしまうと
syncEditorで別ファイルの結果が送られてしまう時がある
仕様の検討
win.addBrowserView(browserView)
でウィンドウを追加
追加されたものは
win.getBrowserViews()
で取得可能
ただ区別できないので方法を考える
エラーメッセージ:
Electron Helper (Renderer)[62621:1891496] CoreText note: Client requested name ".NewYork-Regular", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].
electronPathがWindowsとMacで違うのが原医ぽい
例:https://atcoder.jp/contests/arc117/submit
ソースを見ると問題ごとに提出可能言語を指定できるようになっている模様
提出言語をコンテストごとにスクレイピングする方が良さそう
設定ウィンドウや初期設定に関わるシステムが完成していないので、
Alpha版はDocumentで固定する
ファイル名はhisui-alpha
コンテスト名にスラッシュが入っていてもエラーが出ず、そのままアプリケーションが動かなくなる
日本語と英語が混合している
とりあえず日本語で作っているがのちに他の言語にも対応できるようにする予定
contestID/submitにpostリクエストで提出
提出のリクエストが成功するとsubmission/meにリダイレクトされる
サイトではJudgeが完了するまで更新される
SubmissionIDを指定することでそのテーブルColのHTMLを取得可能
ジャッジ中の場合Intervalがレスポンスに指定されている
参考
https://atcoder.jp/contests/abc205/submissions/me/status/json?reload=true&sids[]=24225126
https://atcoder.jp/contests/typical90/submissions/status/json?reload=true&sids[]=24225747&sids[]=24225738
スニペットを追加するためのAPiに代入するデータのdocs
https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html
vscodeのIntelliSenseではregisterCompletionItemProviderを使ってスニペット等を追加しているらしい
参考
Cppでスニペットを追加するサンプル
https://stackoverflow.com/questions/48212023/how-to-insert-snippet-in-monaco-editor
MonacoEditorのplaygroundにあるregisterCompletionItemProviderのサンプル
https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-completion-provider-example
問題を裏に透過する
制約見ながらコード書いたりできるという利点
URIをモデル作成後に変更することは不可能なので、IModelを作り直すことにする
とりあえず一つだけ拡大表示する機能をつける
MosaicWindowが一つだけの時はStateは”ViewId”になる
Windowを選んで追加する機能はのちにつける
Error: Objects are not valid as a React child (found: object with keys {Id, SourceCode, Input, Output, Error, TimeConsumption, MemoryConsumption, ExitCode, Status, Created, LanguageId, LanguageName}). If you meant to render a collection of children, use an array instead.
ipadで使えたりするとさらに幅が広がる
cookiesのセッションデータを保存することでAtCoderのログイン状態を保持するようにしているが
セッション情報がパスワードを変更しても破棄されない可能性がある
更新を必要とするデータ
spectronのアップデート状況を受け、モジュールテストを採用する方がいいという結果
問題点
submissionが20件以上になると2ページ目ができる.
これにスクレイピングが対応できていない
これをスクレイピングできるようにする。
ただし典型90のようなコンテストの場合、全てを取得すると毎回大量のリクエストが発生してしまうので、キャッシュするなどの対策が必要
2回目の起動時、Viewが表示されない。
Devtoolを起動すると表示される
設定ファイルを消すとまた出てくる
61671d7 で確認
f4d7919
ここのContextMenuを被らないようにするためにしたZindexの設定のせいで、Editorの下の仕切りにフォーカスを当てずらい
hisui/src/component/case/logic/samplecreate.ts
Lines 20 to 89 in 356da25
今の仕様
1×1のマスの座標情報からランダムでサンプルを生成
前提
https://qiita.com/jamjamjam/items/e066b8c7bc85487c0785
ここにあるやつ全部作れるようにしたい
・負の数にも対応
0 < x < 20 の範囲で生成して + (-10)とか
・1×2のマスの時の時
A1 A2 A3...AN
みたいなもの作れるようにしたい
1×2っていうのはh=1,w=2みたいな時(下のサンプルに当てはめて)
・変数を使いまわしできるように
N
A1 A2 A3...AN
とかの時Nをうまいこと使い回す
https://mathjs.org/docs/expressions/parsing.html#evaluate
これのscopeってやつ使ったら上手くできそう
あとこれにと一緒に変数一覧とか出せるようにしたい
0 < x < 20
0 < y < 20
0 < z < 20
0 < q < 20
みたいな感じで出すやつ作る
・文字列の生成
競プロで頻出する文字列のパターンを収集
どう生成したらいいか
・テンプレートの作成(これは後々)
よく出るケースをテンプレートとして選択できるように
const Data = [
{
"w": 1,
"h": 1,
"x": 0,
"y": 0,
"i": "a",
},
{
"w": 1,
"h": 1,
"x": 0,
"y": 2,
"i": "b",
},
]
const elementStatus = {
"a": {
"min": "0",
"leftsign": "<=",
"rightsign": "<=",
"max": "10"
},
"b": {
"min": "0",
"leftsign": "<=",
"rightsign": "<=",
"max": "10^8"
}
}
const seed = 0
Dataの部分については
https://react-grid-layout.github.io/react-grid-layout/examples/6-dynamic-add-remove.html
を参考にすること
生成の時間
Modを使ったところの正確性 floor
コンパイル後もdevServerにアクセスしようとするため
エラーで何も出なくなる
windows(wsl2) macosでコンパイル・実行ようの仮想マシンを作成できるようにする
#206 wsl2によるローカルジャッジ
今のところはDockerを使う方向で計画
ただしDockerの導入のハードルが高いため、コードテストでも実行できるような仕組みも提供する
コードテストを使う場合リクエスト数が多くなるため、ある程度の規制をかける必要があると思う
electronのメインプロセスにジャッジAPIを作りdockerode等を使いDocker内で実行する
問題
リクエストのテストとかを気にせず実行するために、AtCoderのモックを作成したい
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.