Giter Site home page Giter Site logo

isucon / isucon12-qualify Goto Github PK

View Code? Open in Web Editor NEW
81.0 81.0 52.0 19.67 MB

License: MIT License

Go 37.10% Makefile 0.50% Dockerfile 1.70% Shell 0.38% HCL 0.43% JavaScript 0.21% HTML 0.23% Vue 6.28% TypeScript 7.04% CSS 0.07% Ruby 5.04% Perl 5.83% PHP 10.12% Python 4.62% Rust 7.39% Java 13.07%

isucon12-qualify's Introduction

CAUTION: this project is open for only #isucon administrators

/webapp
/webapp/perl
/webapp/ruby
/webapp/nodejs

/tools
/tools/benchmark
/tools/domchecker
/tools/scoreboard

** Webアプリの基本方針
-処理はすべてリクエストを受け取ってから実施する
--DBへのクエリ
--テンプレートからのレンダリング
-全てのコンテンツをアプリケーションから渡す
--js/css/画像も含めて
-キャッシュ等はとりあえず全て無し

** 実装するリクエストハンドラ
- /
-- GET
-- articleのリスト(投稿順(id順) 最新10個)
--- SELECT id,title,body,created_at FROM article ORDER BY id DESC LIMIT 10

- /article/:articleid
-- GET
-- articleページの表示 (article + comments)
--- SELECT id,title,body,created_at FROM article WHERE id=?
--- SELECT name,body,created_at FROM comment WHERE article=? ORDER BY id

なお全ページ、左側のサイドバーに「新しいコメントがついた順に記事10件」を表示
--- SELECT article FROM comment GROUP BY article ORDER BY created_at DESC LIMIT 10

- /post
-- GET
-- 記事投稿用HTML ただしベンチ対象外のURLとする

- /post
-- POST
-- 記事投稿
-- パラメータはform形式で title, body
--- INSERT INTO article SET ...
-- レスポンスは / へのリダイレクト(成功)、もしくは適当なエラー用のHTTPステータス

- /comment/:articleid
-- POST
-- コメント投稿 (投稿フォームは /article/:articleid の末尾)
-- パラメータはform形式で name, body
--- INSERT INTO comment SET ...
-- レスポンスは /article/:articleid へのリダイレクト(成功)、もしくは適当なエラー用のHTTPステータス

** 添付するstaticファイル

- 画像
-- isuconロゴを適当なサイズにして流用、ページトップのバナー画像にする

- js
-- jquery 最新版の minify 済みファイル
-- jquery-ui 最新版の minify 済みファイル
-- isucon.js デザイン調整用

- css
-- jquery-ui の適当なスタイル用のもの一式
-- isucon.css デザイン調整用

isucon12-qualify's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

isucon12-qualify's Issues

JWTのテナント名とHostのテナント名の一致を検証する

  • parseViewer ではJWTの aud[0] (テナント名が入っている)の中身は見ていない
  • getTenantName ではテナント名をHostヘッダから取り出して、中身は見ていない

tenant.name=foo, role=organizer のJWTを bar.t.isucon.dev (tenant.name=bar) に送ると、テナント bar に対してて操作ができてしまう脆弱性がある。

Ranking 同一スコアの場合の順位をどうするか

現状

  • ORDER BY score DESC, player_id DESC なので同一スコアの場合は player_id の降順 (ただしこれは文字列!)
  • 同一スコアでも rank は1ずつ変わる(同rankではない)

ISUCONの場合

  • 同一スコアの場合はスコアが登録された時刻が早いほうが上

世間一般のランキングの場合

  • 同一スコアの場合は同順位が一般的?

[bench] OrganizerJobでニルポ

https://portal.xii.isucon.dev/admin/benchmark_jobs/351


[ADMIN] 16:34:34.011965 workerを増やします [PlayerScenarioWorker](981)
[ADMIN] 16:34:34.011972 workerを増やします [PlayerScenarioWorker](982)
[ADMIN] 16:34:34.011977 workerを増やします [PlayerScenarioWorker](983)
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x83045f]

goroutine 16420 [running]:
github.com/isucon/isucon12-qualify/bench.(*Scenario).OrganizerJob.func4()
	/opt/isucon12-qualify/bench/job_organizer.go:159 +0x83f
golang.org/x/sync/errgroup.(*Group).Go.func1()
	/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
	/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5

ログはここで途切れている…

キャッシュ関連ヘッダ

今のレスポンスヘッダ

HTTP/1.1 200 OK.
Server: nginx/1.18.0 (Ubuntu).
Date: Thu, 16 Jun 2022 06:48:37 GMT.
Content-Type: application/json; charset=UTF-8.
Content-Length: 201.
Connection: keep-alive.
.

とくにCache関連のヘッダが何も付いてないので、適切に付ける必要がある.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.