個人頁不再對別人顯示為零
開啟另一位玩家的個人頁,無論他玩了多少,都看不到對局、勝場、卡牌或連勝。這些數字每一個都在錯誤的資料行上統計。

通俗版
個人頁是 opolyx 上唯一為展示給別人而存在的頁面,而它一直在悄悄地騙人。等級和經驗是真實的,因為它們本就公開——但對局數、勝場、勝率和連勝對除你以外的所有人都顯示為零,下方的卡牌收藏也一片空白。一個身後有兩百場對局的玩家,在整個站點其他人眼裡就像從沒坐上過牌桌。
現在這四個數字對任何觀看者都是真實的,收藏也會顯示該玩家真正擁有的卡牌。這些計數還與排行榜一致——排行榜在同一周裡因為同樣的原因被修好。
卡牌收藏是隱形時間最久的部分。卡牌在獲勝時以及到達里程碑等級時掉落,是 opolyx 上最接近可以炫耀之物的東西,而這個架子自上線之日起對任何訪客都是空的——於是收藏存在的唯一意義,恰恰是它唯一做不到的事。
技術細節
這四個數字都來自在訪客自己的瀏覽器裡逐行統計。對公開資料來說這沒問題,對這裡的其他一切來說卻是錯的:對局相關的表只會返回你參與過的對局,庫存也只會返回你自己的物品。於是瀏覽器提了一個誠實的問題,得到了關於錯誤物件的誠實答案,又把它當作關於另一個人的事實打印出來。對陌生人而言,「你的對局裡我參與過幾場」的正確答案確實是零。
連勝是最後被發現的,有用的教訓也在這裡。此前的一次排查已經注意到訪客看到的對局列表被截斷了——卻停在了那裡,沒有繼續追到那個由該列表算出來的數字。連勝正是在這些被截斷的行上做的迴圈,所以它在站點每一個個人頁上都讀作零,包括那些正處於長連勝中的玩家。一次返回不全的讀取會毒害它下游的一切,而不只是它直接顯示的東西。
| 一個真實個人頁,訪客視角 | 此前 | 現在 |
|---|---|---|
| 對局 / 勝場 / 勝率 | 0 / 0 / 0% | 15 / 8 / 53% |
| 連勝 | 0 | 3 |
| 卡牌收藏 | 空 | 7 張卡牌 |
總數現在來自在對局計分時維護的公開計數器,而卡牌和連勝各自來自一個只回答關於某一位玩家的某一個問題、別的什麼都不做的小函式。把底層資料表向所有人開放會更省事,也會糟糕得多:那會連帶暴露未來的每一件庫存物品,以及每一場私人對局的名單。對局列表本身仍然只屬於你——它只是不再聲稱你從未玩過。
