From 7ce06a9fd904a96c92d6383a09cad2ad99f4053d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 17 Aug 2025 16:04:36 +0900 Subject: feat: update "PHPerKaigi" to "iOSDC Japan" --- .env.example | 2 +- README.md | 8 ++++---- backend/account/icon.go | 4 ++-- backend/admin/handler.go | 8 ++++---- backend/admin/templates/base.html | 2 +- backend/api/handler.go | 4 ++-- backend/api/handler_wrapper.go | 4 ++-- backend/auth/auth.go | 6 +++--- backend/auth/jwt.go | 2 +- backend/game/hub.go | 4 ++-- backend/gen/api/handler_wrapper_gen.go | 4 ++-- backend/go.mod | 2 +- backend/main.go | 12 ++++++------ compose.local.yaml | 2 +- compose.prod.yaml | 2 +- docs/DEV.md | 2 +- frontend/app/api/client.ts | 2 +- frontend/app/components/UserIcon.tsx | 2 +- frontend/app/routes/_index.tsx | 15 ++++++++------- frontend/app/routes/dashboard.tsx | 4 ++-- frontend/app/routes/golf.$gameId.play.tsx | 4 ++-- frontend/app/routes/golf.$gameId.watch.tsx | 4 ++-- frontend/app/routes/login.tsx | 2 +- frontend/package-lock.json | 4 ++-- frontend/package.json | 2 +- frontend/public/favicon.svg | 2 +- frontend/public/logo.svg | 2 +- nginx.conf | 8 ++++---- worker/package-lock.json | 4 ++-- worker/package.json | 2 +- 30 files changed, 63 insertions(+), 62 deletions(-) diff --git a/.env.example b/.env.example index c249872..216818e 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,3 @@ -ALBATROSS_BASE_PATH=/phperkaigi/2025/code-battle/ +ALBATROSS_BASE_PATH=/iosdc-japan/2025/code-battle/ ALBATROSS_JWT_SECRET=[your_secret_key] ALBATROSS_COOKIE_SECRET=[your_secret_key] diff --git a/README.md b/README.md index 083906b..0366e93 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@ -# PHPerKaigi 2025 Albatross +# iOSDC Japan 2025 Albatross # これは何? -2025-03-21 から 2025-03-23 にかけて開催された [PHPerKaigi 2025](https://phperkaigi.jp/2025/) の中の企画、PHPer コードバトルのシステムです。 +2025-09-19 から 2025-09-21 にかけて開催された [iOSDC Japan 2025](https://iosdc.jp/2025/) の中の企画、Swift コードバトルのシステムです。 -[サイトはこちら (現在は新規にプレイすることはできません)](https://t.nil.ninja/phperkaigi/2025/code-battle/) +[サイトはこちら (現在は新規にプレイすることはできません)](https://t.nil.ninja/iosdc-japan/2025/code-battle/) # サンドボックス化の仕組み ユーザから任意のコードを受け付ける関係上、何も対策をしないと深刻な脆弱性を抱えてしまいます。 -このシステムでは、送信されたコードを WebAssembly へ変換された PHP 処理系で実行することで、サンドボックス化を実現しています。 +このシステムでは、送信された Swift コードを WebAssembly へとコンパイルして実行することで、サンドボックス化を実現しています。 # License diff --git a/backend/account/icon.go b/backend/account/icon.go index 116ee20..4f195c6 100644 --- a/backend/account/icon.go +++ b/backend/account/icon.go @@ -11,8 +11,8 @@ import ( "path/filepath" "time" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/fortee" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/fortee" ) func FetchIcon( diff --git a/backend/admin/handler.go b/backend/admin/handler.go index f7fd63e..aec7b37 100644 --- a/backend/admin/handler.go +++ b/backend/admin/handler.go @@ -12,10 +12,10 @@ import ( "github.com/jackc/pgx/v5/pgtype" "github.com/labstack/echo/v4" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/account" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/auth" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/config" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/account" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/auth" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/config" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" ) var jst = time.FixedZone("Asia/Tokyo", 9*60*60) diff --git a/backend/admin/templates/base.html b/backend/admin/templates/base.html index 653acc6..4397574 100644 --- a/backend/admin/templates/base.html +++ b/backend/admin/templates/base.html @@ -1,7 +1,7 @@ - ADMIN {{ .Title }} | PHPerKaigi 2025 Albatross + ADMIN {{ .Title }} | iOSDC Japan 2025 Albatross diff --git a/backend/api/handler.go b/backend/api/handler.go index 6561151..67f859c 100644 --- a/backend/api/handler.go +++ b/backend/api/handler.go @@ -11,8 +11,8 @@ import ( "github.com/labstack/echo/v4" "github.com/oapi-codegen/nullable" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/auth" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/auth" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" ) type Handler struct { diff --git a/backend/api/handler_wrapper.go b/backend/api/handler_wrapper.go index 95e6d2b..9c6c41a 100644 --- a/backend/api/handler_wrapper.go +++ b/backend/api/handler_wrapper.go @@ -7,8 +7,8 @@ import ( "errors" "strings" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/auth" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/auth" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" ) var _ StrictServerInterface = (*HandlerWrapper)(nil) diff --git a/backend/auth/auth.go b/backend/auth/auth.go index f4c5931..ddad46e 100644 --- a/backend/auth/auth.go +++ b/backend/auth/auth.go @@ -9,9 +9,9 @@ import ( "github.com/jackc/pgx/v5" "golang.org/x/crypto/bcrypt" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/account" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/fortee" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/account" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/fortee" ) var ( diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go index 88006a3..9718247 100644 --- a/backend/auth/jwt.go +++ b/backend/auth/jwt.go @@ -7,7 +7,7 @@ import ( "github.com/golang-jwt/jwt/v5" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" ) var ( diff --git a/backend/game/hub.go b/backend/game/hub.go index 46cd321..3697b4a 100644 --- a/backend/game/hub.go +++ b/backend/game/hub.go @@ -6,8 +6,8 @@ import ( "regexp" "strings" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/taskqueue" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/taskqueue" ) type Hub struct { diff --git a/backend/gen/api/handler_wrapper_gen.go b/backend/gen/api/handler_wrapper_gen.go index 6437f36..9a7a786 100644 --- a/backend/gen/api/handler_wrapper_gen.go +++ b/backend/gen/api/handler_wrapper_gen.go @@ -107,8 +107,8 @@ import ( "errors" "strings" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/auth" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/auth" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" ) var _ StrictServerInterface = (*HandlerWrapper)(nil) diff --git a/backend/go.mod b/backend/go.mod index 96f5a23..7da9d69 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -1,4 +1,4 @@ -module github.com/nsfisis/phperkaigi-2025-albatross/backend +module github.com/nsfisis/iosdc-japan-2025-albatross/backend go 1.23.6 diff --git a/backend/main.go b/backend/main.go index c13dea4..86dba0c 100644 --- a/backend/main.go +++ b/backend/main.go @@ -11,12 +11,12 @@ import ( "github.com/labstack/echo/v4/middleware" oapimiddleware "github.com/oapi-codegen/echo-middleware" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/admin" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/api" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/config" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/db" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/game" - "github.com/nsfisis/phperkaigi-2025-albatross/backend/taskqueue" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/admin" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/api" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/config" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/db" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/game" + "github.com/nsfisis/iosdc-japan-2025-albatross/backend/taskqueue" ) func connectDB(ctx context.Context, dsn string) (*pgxpool.Pool, error) { diff --git a/compose.local.yaml b/compose.local.yaml index def7c4a..ed7be03 100644 --- a/compose.local.yaml +++ b/compose.local.yaml @@ -3,7 +3,7 @@ services: build: context: ./backend ports: - - '127.0.0.1:8003:80' + - '127.0.0.1:8004:80' volumes: - files-data:/data/files:rw depends_on: diff --git a/compose.prod.yaml b/compose.prod.yaml index 5e12083..86d4c1c 100644 --- a/compose.prod.yaml +++ b/compose.prod.yaml @@ -2,7 +2,7 @@ services: reverse-proxy: image: nginx:1.27 ports: - - '127.0.0.1:8003:80' + - '127.0.0.1:8004:80' volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - files-data:/var/www/files:ro diff --git a/docs/DEV.md b/docs/DEV.md index b051353..b2cd6de 100644 --- a/docs/DEV.md +++ b/docs/DEV.md @@ -24,7 +24,7 @@ 1. `direnv allow .` (optional) 1. `make init` 1. `make up` -1. Access to http://localhost:5173/phperkaigi/2025/code-battle/. +1. Access to http://localhost:5173/iosdc-japan/2025/code-battle/. * User `a`, `b` and `c` can log in with `pass` password. * User `a` and `b` are players. * User `c` is an administrator. diff --git a/frontend/app/api/client.ts b/frontend/app/api/client.ts index 6fa784f..10dc7ef 100644 --- a/frontend/app/api/client.ts +++ b/frontend/app/api/client.ts @@ -6,7 +6,7 @@ import type { paths } from "./schema"; const client = createClient({ baseUrl: process.env.NODE_ENV === "development" - ? `http://localhost:8003${API_BASE_PATH}` + ? `http://localhost:8004${API_BASE_PATH}` : `https://t.nil.ninja${API_BASE_PATH}`, }); diff --git a/frontend/app/components/UserIcon.tsx b/frontend/app/components/UserIcon.tsx index 8002c6f..2d17560 100644 --- a/frontend/app/components/UserIcon.tsx +++ b/frontend/app/components/UserIcon.tsx @@ -11,7 +11,7 @@ export default function UserIcon({ iconPath, displayName, className }: Props) { {`${displayName} [ - { title: "PHPerKaigi 2025 Albatross" }, + { title: "iOSDC Japan 2025 Albatross" }, ]; export async function loader({ request }: LoaderFunctionArgs) { @@ -18,22 +18,23 @@ export default function Index() {
PHPerKaigi 2025
-
PHPER CODE BATTLE
+
SWIFT CODE BATTLE

- PHPer コードバトルは指示された動作をする PHP + Swift コードバトルは指示された動作をする Swift コードをより短く書けた方が勝ち、という 1 対 1 - の対戦コンテンツです。3/21(金)day0 前夜祭では 3/8 - に実施されたオフライン予選と、当日まで開催しているオンライン予選を勝ち抜いたプレイヤーによるトーナメント形式での - PHPer コードバトルを実施します。ここでは短いコードが正義です! + の対戦コンテンツです。9/6 + に実施された予選を勝ち抜いたプレイヤーによるトーナメント形式での + コードバトルを 9/19 (金) day0 + に実施します。ここでは短いコードが正義です! 可読性も保守性も放り投げた、イベントならではのコードをお楽しみください!

diff --git a/frontend/app/routes/dashboard.tsx b/frontend/app/routes/dashboard.tsx index 75e809b..56cc106 100644 --- a/frontend/app/routes/dashboard.tsx +++ b/frontend/app/routes/dashboard.tsx @@ -8,7 +8,7 @@ import UserIcon from "../components/UserIcon"; import { BASE_PATH } from "../config"; export const meta: MetaFunction = () => [ - { title: "Dashboard | PHPerKaigi 2025 Albatross" }, + { title: "Dashboard | iOSDC Japan 2025 Albatross" }, ]; export async function loader({ request }: LoaderFunctionArgs) { @@ -77,7 +77,7 @@ export default function Dashboard() { = ({ data }) => [ { title: data - ? `Golf Playing ${data.game.display_name} | PHPerKaigi 2025 Albatross` - : "Golf Playing | PHPerKaigi 2025 Albatross", + ? `Golf Playing ${data.game.display_name} | iOSDC Japan 2025 Albatross` + : "Golf Playing | iOSDC Japan 2025 Albatross", }, ]; diff --git a/frontend/app/routes/golf.$gameId.watch.tsx b/frontend/app/routes/golf.$gameId.watch.tsx index 556eb03..9eab29b 100644 --- a/frontend/app/routes/golf.$gameId.watch.tsx +++ b/frontend/app/routes/golf.$gameId.watch.tsx @@ -9,8 +9,8 @@ import GolfWatchApp from "../components/GolfWatchApp"; export const meta: MetaFunction = ({ data }) => [ { title: data - ? `Golf Watching ${data.game.display_name} | PHPerKaigi 2025 Albatross` - : "Golf Watching | PHPerKaigi 2025 Albatross", + ? `Golf Watching ${data.game.display_name} | iOSDC Japan 2025 Albatross` + : "Golf Watching | iOSDC Japan 2025 Albatross", }, ]; diff --git a/frontend/app/routes/login.tsx b/frontend/app/routes/login.tsx index dc5a631..0229729 100644 --- a/frontend/app/routes/login.tsx +++ b/frontend/app/routes/login.tsx @@ -10,7 +10,7 @@ import InputText from "../components/InputText"; import SubmitButton from "../components/SubmitButton"; export const meta: MetaFunction = () => [ - { title: "Login | PHPerKaigi 2025 Albatross" }, + { title: "Login | iOSDC Japan 2025 Albatross" }, ]; export async function loader({ request }: LoaderFunctionArgs) { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9bcfa0a..d9f37a4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,10 +1,10 @@ { - "name": "phperkaigi-2025-albatross-frontend", + "name": "iosdc-japan-2025-albatross-frontend", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "phperkaigi-2025-albatross-frontend", + "name": "iosdc-japan-2025-albatross-frontend", "dependencies": { "@base-ui-components/react": "^1.0.0-alpha.7", "@fortawesome/fontawesome-svg-core": "^6.7.2", diff --git a/frontend/package.json b/frontend/package.json index d692339..52c6f04 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "phperkaigi-2025-albatross-frontend", + "name": "iosdc-japan-2025-albatross-frontend", "private": true, "sideEffects": false, "type": "module", diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg index 682d390..64bcbbf 100644 --- a/frontend/public/favicon.svg +++ b/frontend/public/favicon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/public/logo.svg b/frontend/public/logo.svg index b123f96..643bcff 100644 --- a/frontend/public/logo.svg +++ b/frontend/public/logo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/nginx.conf b/nginx.conf index 08c9abf..e2a3dd3 100644 --- a/nginx.conf +++ b/nginx.conf @@ -6,11 +6,11 @@ http { server { listen 80; - location /phperkaigi/2025/code-battle/files/ { + location /iosdc-japan/2025/code-battle/files/ { alias /var/www/files/; } - location /phperkaigi/2025/code-battle/api/ { + location /iosdc-japan/2025/code-battle/api/ { proxy_pass http://api-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -18,7 +18,7 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } - location /phperkaigi/2025/code-battle/admin/ { + location /iosdc-japan/2025/code-battle/admin/ { proxy_pass http://api-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -26,7 +26,7 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } - location /phperkaigi/2025/code-battle/ { + location /iosdc-japan/2025/code-battle/ { proxy_pass http://app-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/worker/package-lock.json b/worker/package-lock.json index 1bf22eb..d682e43 100644 --- a/worker/package-lock.json +++ b/worker/package-lock.json @@ -1,10 +1,10 @@ { - "name": "phperkaigi-2025-albatross-worker", + "name": "iosdc-japan-2025-albatross-worker", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "phperkaigi-2025-albatross-worker", + "name": "iosdc-japan-2025-albatross-worker", "dependencies": { "@hono/node-server": "^1.13.8", "hono": "^4.7.4" diff --git a/worker/package.json b/worker/package.json index 2aaa417..c1b0569 100644 --- a/worker/package.json +++ b/worker/package.json @@ -1,5 +1,5 @@ { - "name": "phperkaigi-2025-albatross-worker", + "name": "iosdc-japan-2025-albatross-worker", "private": true, "type": "module", "main": "index.mjs", -- cgit v1.3-1-g0d28