飲水計數器是一個私人的杯子計數工具,不會建議你應該喝多少水。它裡面沒有預設量、沒有依體重的公式,也沒有隱藏的醫療預設值。反之,你輸入一個符合自己計畫的整數每日目標(以杯為單位),然後每當你想記錄一杯時,就按下一個按鈕。畫面會顯示今天的計數、你選擇的目標,以及目前已達目標的純粹百分比。如果你跳過輸入目標,計數器仍會累計杯數,並清楚標示目前沒有個人進度目標可顯示。這種在「建議」與「計數」之間的刻意區隔,是這個工具的決定性特色,也塑造了從輸入到匯出的每一項行為。想要應用程式替你決定數字的使用者找錯了工具;心中已有數字的使用者則可以使用 飲水計數器 來追蹤那個數字,無需重新輸入、無需重複計算,也無需信任伺服器。

does water intake counter recommend how much water i should drink
does water intake counter recommend how much water i should drink

為什麼這個工具不提供建議

大多數的補水計算器要嘛在頁面上印出一個公式,要嘛在體重提示背後藏著一個公式。它們替你決定一個適用於大多數讀者的量,然後要求你確認。飲水計數器採取相反的做法。它的產品說明書白紙黑字寫著:它不會計算建議量、不會推估身體需求、不使用預設的醫療目標,也不會診斷水分狀態。它也明確不是一種健康承諾。這個工具實際上是一個計數器,只多加了一項實用功能:針對一個由讀者自行設定的每日目標所繪製的進度條。

這個區別不只是品牌定位。建議伴隨著注意義務,而計數則伴隨著準確義務。藉由停留在「計數」這一側,這個工具能誠實地說明它知道什麼、不知道什麼。如果你帶著一個來自自己閱讀、你的醫師、教練或昨日習慣的數字,計數器就能忠實地為你顯示那個數字。如果你沒有帶著數字,計數器就單純地記錄杯數,並清楚告訴你目前沒有個人進度目標可顯示。沒有任何東西被偽造、預設或用一個聽起來很有把握的範圍來填充。

計數器實際記錄了什麼

一旦你決定使用這個工具,每天由三項使用者輸入的內容所定義。第一,一個可選的簡短標籤,如果你想讓一個名稱與計數並列,工具會接受它。第二,一個可選的整數每日目標(以杯為單位),範圍從 1 到 9,999。第三,你點擊輸入的杯數。每按一次「新增一杯」就會把今日的總數加一,畫面會回報目前累計的數量、你選擇的目標,以及該目標已達成的百分比。這些數字沒有一個來自這個工具,全部來自你,並儲存在你的裝置上。

這個目標會被視為一個個人標籤,而非由製造商提供的建議。這樣的措辭很重要,因為它能避免兩個常見的陷阱:如果工具在你提高目標時悄悄覆寫舊的日子,歷史紀錄就會跟著撒謊;如果工具預設為一個「正確」的量,任何讀到舊紀錄的人都會以為那個數字具有它實際上從未擁有的根據。這份產品合約透過在儲存第一杯時一併記住那一天所使用的目標,來保留每一天儲存時的意義,因此之後的偏好變更並不會重寫較早的歷史。

如何使用飲水計數器

  1. 在打算持續使用的裝置上,用瀏覽器開啟飲水計數器。
  2. 如果你想讓一個友善的名稱與計數一起顯示,請在可選的標籤欄位中輸入一個簡短標籤。如果你偏好純粹的計數,請留白。
  3. 輸入符合你自身計畫的整數每日目標(以杯為單位),範圍從 1 到 9,999。如果你還不想要進度顯示,請將目標留白,計數器仍會記錄杯數。
  4. 每當你想記錄一杯已喝完的水時,按下「新增一杯」。累計總數、目標以及已達成的百分比會在同一個畫面上更新。
  5. 如果是誤觸,請按下「復原一杯」。只會移除最近的一杯,因此單次復原只修正一次錯誤,而不會影響整個連續紀錄。
  6. 捲動每日歷史紀錄列表,以檢視每個已儲存的日期、該日期的杯數,以及那一天所保留的目標。
  7. 當你想要瀏覽器以外的檔案時,請選擇「匯出 PNG」或「匯出 CSV」。兩者都在本機產生,絕不會上傳到任何服務。

本地日期、已儲存的目標與復原按鈕

每一筆已儲存的杯子都會附加到你的裝置所回報的本地行事曆日期。這個工具會透過 Intl.DateTimeFormat 機制,依據裝置本身的時區推導出該日期,這代表你在晚上 11:50 記錄的一杯,會留在你實際飲用它的當天,而不會因為 UTC 時鐘剛好跨日而被算到別天。當一個新的本地日期開始時,今日的杯數總計會歸零,前一天則會帶著自己的數量與目標移入歷史列表。因此這份列表讀起來像一份真正的日期行事曆,而非單一滾動的總計。

你在任何指定日期儲存的第一杯,也會一併儲存該日期的目標。從那之後,之後更改你的偏好並不會改變那一天在歷史列表或 CSV 匯出中所呈現的樣子。這份產品合約明確指出:某一天的目標會在儲存其第一杯時被記住,這能防止一個較早的日子看起來像是達成了你之後才選定的目標。如果你想了解這個行為在多次變更偏好時的詳細運作方式,可參考在飲水計數器中稍後變更你的目標這篇指南,它透過具體的日期範例說明相同的行為。復原按鈕也秉持著同樣的「完整性」理念:它只會撤銷最新的一杯,因此一個刻意留下的紀錄不會因為一次誤觸而被悄悄縮短。

匯出選項一覽

計數器會產生兩種檔案格式,兩者都透過瀏覽器的 canvas 與 Blob API 在本機產生,不會將任何內容傳送至伺服器。PNG 與 CSV 各有不同的用處,下表根據產品合約所描述的實際行為來比較它們。

功能匯出 PNG匯出 CSV
檔案尺寸或類型1080 x 1350 影像逗號分隔值檔案
包含的內容總計與近期日期的列每個已儲存的非零日期佔一列
欄或欄位僅影像日期、杯數、每日目標杯數、是否達標
是否包含自訂標籤
是否包含 URL
是否能在試算表中順利開啟非為此設計
所保留的個人脈絡較少(無標籤、無 URL)較少,但依日期結構化

如果你想要一個能快速貼進訊息或放入筆記本的視覺化摘要,PNG 就是合適的形狀。如果你想要一份可在試算表中開啟、讓你依日期排序、加總或繪製圖表的紀錄,CSV 就是合適的形狀。兩者都將原始資料保留在你的裝置上,因此刪除檔案並不會刪除計數。

你的數字存放在哪裡

計數器使用瀏覽器的本機儲存機制,具體來說,是在鍵 counter:water-intake-counter 之下的一筆有界 JSON 紀錄。該鍵的範圍僅限於你在所用裝置上對應本站來源(origin),這是 WHATWG HTML Web Storage 規範 所描述的網頁儲存基本隱私界線。你的標籤、目標與杯子歷史都存放在那筆本地紀錄中,不會被傳送到任何伺服器、不會同步到手機或電腦,也不會綁定任何帳號。

沒有帳號、沒有上傳、沒有伺服器端的檔案轉換,在匯出控制項中也沒有隱藏的分析請求。如果該裝置無法使用本機儲存或本機儲存已被停用,頁面在當前工作階段中仍可使用,並會顯示一則無法保留持久歷史的提示。清除此網站的瀏覽器資料會將該紀錄完全移除,這就像你撕掉私人紙本計數的那一頁一樣。如果你想要一份能撐過清除瀏覽器資料的備份,CSV 匯出就是這個工具最接近備份的做法。

為什麼由自己選定的目標才是合適的形狀

這個工具拒絕提供建議的原因,同時也是它在差異極大的讀者之間仍然有用的原因。一個正在調整新訓練計畫的人、一個正在從疾病中康復的人、一個在熱浪期間追蹤攝取量的人,以及一個單純想在平日比週末多喝一點的人,都可以打開同一個頁面,並開始一個符合自身情況的計數。他們輸入一個反映自己脈絡的數字,計數器以平實的方式回報進度,而不會把那個數字裝飾成通用的標準。

如果你偶爾想要一個完全沒有每日目標的中性計數,線上計數器 提供了可調整步進的計數功能,卻沒有目標比較。如果你想要一個帶有行事曆連續紀錄、以命名習慣呈現的工具,而非以杯子總數呈現,每日習慣計數器 則以預設的習慣標籤來組織相同的概念。對於一個具體想知道「飲水計數器是否會告訴我該喝多少水」的讀者來說,簡短的答案從第一句話就已經在螢幕上:它不會,而這正是重點。

延伸閱讀:啞鈴計數器是否透過你的相機來計算次數?