BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A single, merit-ranked list of the greatest players ever to play — hitters and
pitchers together, no position quotas, no reference to the actual Cooperstown
Hall. Every player is scored with the RHOF Custom Score, a formula built
entirely from career stats benchmarked against the league averages and
positional norms of the exact years and position that player played — no WAR
involved, and no single fixed "replacement level" applied blindly across
every era.檢視完整 README ↗A single, merit-ranked list of the greatest players ever to play — hitters and pitchers together, no position quotas, no reference to the actual Cooperstown Hall. Every player is scored with the RHOF Custom Score, a formula built entirely from career stats benchmarked against the league averages and positional norms of the exact years and position that player played — no WAR involved, and no single fixed "replacement level" applied blindly across every era.
Pitchers = 0.25 × eraScore + 0.25 × whipScore + 0.20 × k9Score
+ 0.20 × winsIndex + 0.10 × savesIndex
Hitters = 0.35 × hitScore + 0.35 × powerScore
+ 0.15 × fieldScore + 0.15 × runScore
Each component is a ratio (or, for stolen-base value, a difference) against a league baseline for that player's specific years and position — a dead-ball-era line is judged against dead-ball-era competition, not a modern one. League and positional-fielding baselines are blended across whichever era buckets overlap a player's career, so someone who played across two regimes gets a proportional blend instead of one arbitrary constant.
See data/players.json's formula._schema_notes for the exact per-stat
formulas, weights, and the caveats behind them (including why stolen-base
value is scored as a difference from league rather than a ratio).
Browsers block fetch() on file:// URLs, so don't just double-click
index.html. From this folder, run:
python3 -m http.server 8000
Then open http://localhost:8000.
index.html # page markup
css/style.css # all styling (design tokens at the top)
js/app.js # loads data, computes scores, renders plaque cards, filter/sort logic
data/players.json # the roster and formula — edit by hand or regenerate
README.md
(This folder also hosts a separate, unrelated data-analysis project — see
ANALYSIS.md — that isn't part of the website itself.)
data/players.json){
"formula": {
"name": "RHOF Custom Score",
"hitterWeights": { "hit": 0.35, "power": 0.35, "field": 0.15, "run": 0.15 },
"pitcherWeights": { "era": 0.25, "whip": 0.25, "k9": 0.2, "wins": 0.2, "saves": 0.1 },
"sbRunValues": { "sb": 0.2, "cs": -0.4 },
"sbValueScale": 15000,
"eraBaselines": [ { "start": 1876, "end": 1899, "era": 4.1, "whip": 1.45, "...": "..." } ],
"fieldingBaselines": [ { "position": "1B", "start": 1876, "end": 1919, "fieldingPct": 0.973 } ]
},
"capacity": 500,
"players": [
{
"id": "unique-slug",
"name": "Player Name",
"role": "hitter" | "pitcher",
"position": "2B" | "P" | etc,
"years": "1977–1995",
"team": "Team Name",
"stats": { "avg": 0.276, "hits": 2369, "hr": 244, "obp": 0.360, "slg": 0.433, "sb": 22, "cs": 9, "pa": 9967, "fieldingPct": 0.984 }
// or, for role: "pitcher" -> { "wins": 417, "losses": 279, "era": 2.17, "so": 3509, "ip": 5914.1, "bb": 1363, "hitsAllowed": 4913, "saves": 34 }
}
]
}
The front end computes each player's RHOF Custom Score and rank at load time
from stats and the era/position baselines — nothing is pre-baked, so
re-tuning the formula only requires editing formula in the JSON.
To regenerate this file from the Lahman database: pull each player's
career avg/hits/hr/obp/slg/sb/cs/pa/fieldingPct (hitters) or
wins/losses/era/so/ip/bb/hitsAllowed/saves (pitchers), keeping
these exact field names. As long as the field names match, the front end
needs no changes.
players array with role, position, and
a stats object shaped for their role. No code changes needed.formula (weights or baselines) in the JSON.
The site recomputes every score and re-ranks automatically.This is a fully static site — no build step, no server-side code. It will run as-is on:
main
branch (or a /docs folder), done.A custom domain can be attached later on either platform for ~$10-15/yr through any registrar (Namecheap, Cloudflare, etc.) — it's independent of where you host.