這是漫畫獵人裡又強又變態的殺手西索的絕招
也是現在社會極為奇怪的一個現象
GUI為電腦拉近與使用者的距離
但電腦的本質仍脫離不了計算機
簡單的來說,GUI就是現代電腦專屬的輕薄假象
故事,得從上禮拜的大紅人 iPhoneTracker 開始講起
說實話,這個軟體所展現的第一印象相當驚人
大量數據的累積,將使用者過去的行蹤呈現在畫面上
非常有震撼力
我這種對自己的隱私龜毛到即便是我的好朋友也不講情面的人
我如何能忍受這件事
當天看到新聞回家第一件事就是下載iPhone Tracker
當然,謹慎為妙
還是先搜尋了一下一些心臟夠大顆的前輩衝下去的結果
也先看了看影片,和FAQ
東西下載來順便下載source code
開始了這一段事後想起來僅剩下悲歎的過程
看影片的時候除了只覺得那些點的分部似乎有規律可循以外
其他都沒特別發現什麼
但真的開始執行後,才發現,這些點的排列真的有規律
不管怎樣,整個完整的Play之後,我確實不爽
這間公司也太誇張了點
我很介意,我非常介意,我說幾次介意都不足以表現我的不舒服
但就因為很介意,我決定好好對一下我的行程表,以便確認資料庫的完整性
將來或許哪天真的法庭上用得上
這一比對,才開始發現,數據好像不太對的上
有些很合理,有些不太合理
我對到過年,以及三月回老家的那個禮拜,因為那時畢竟有出門,資料比較好找
我對這個數據庫的不安轉成懷疑更進一步轉成覺得這個資料庫好像不太像是我的行蹤
很像,但不是
尤其是有兩個族群的點,可以算得上是在那個時間點之前我完全沒去過的的地方
如果他是紀錄我的行蹤,那我沒去過的地方記錄怎麼來的
放大地圖看後,那些一顆一顆的點排列的像棋盤狀
我總不可能跳格子吧,說是基地台的位置
別傻了,我們的政府怎麼可能有這種規劃力,基地台排得這麼整齊
我下了一個結論,不對,這資料庫跟我的位置有關聯沒錯,但它不是我的行蹤,不可能
如此以來,那些靠這個軟體大肆批評Apple的,一定沒像我這樣仔細對應自己的資料就大放厥詞
爛死了,我最討厭這種人
我發了篇不算很中看的文章在mobile01上
發表我的發現,順便嫶一下那些啥都不看或是搞不好根本沒這隻手機的傢伙
想當然爾,這粉絲的帽子就這麼戴上了
本想多回個幾篇,但想想給個台階下也比較不會碰到哪天有人人肉搜尋來砍我
你們就儘管再去覺得這就是證據吧,去告吧,反正錢不是我出
當時覺得算了,反正丟臉的不是我
而那篇文章之後,確實也壓了壓一下一些人發文批評Apple的意願
廢話,手頭上沒數據,講話氣勢當然就小了
眼看文章沈下去了,可是呢,好死不死過個兩天又有人把文章挖了出來
在揶揄了一下這些人,爭端再啟
我本來沒打算管了,don't care 就don't care吧
但是看看這混亂的媒體記者,每天都有人好幾爆的
來作個對照組吧,我對自己說
看看真正的對照組可不可以讓人閉嘴
對照組的資料,就從我發現有問題的那一兩週,從照片取實際位置和時間出來
看看到底和傳說中的資料庫,有多接近,就讓我來證明,有多不接近
由於照片的時間都很精準
下載下來的iPhone Tracker這種七天一次的算法,太攏統,找不到適合的資料
我開始修改下載下來的source code,並直接存取資料庫
改啊改的,邊改邊tracing,你看你看,這差太遠了吧
我明明還在某區域,你就給我回頭抓其他縣市的資料
最好是有人可以拿這份資料找到我,這時間根本對不上
好了,當這個念頭掃過,我突然反問我自己,阿如果這時間算錯的話咧
可能就是兩天熬夜tracing資料多到忽然發現,好像時間都錯的有點規律
回頭看了一下時間那邊的code,似乎又沒什麼問題
第二天工作時,越想越覺得不對,用mysql的function測試了一下
不得了,這下子,真相大白了
底下是原始的code及作者的註解
// The timestamps seem to be based off 2001-01-01 strangely, so convert to the
// standard unix form using this offset
const float iOSToUnixOffset = (31*365.25*24.60*60);
const float unixTimestamp = (timestamp+iOSToUnixOffset);
問題在哪?
就在那個iOSToUnixOffset
註解裡面說明了實際上從資料庫讀出來的時間似乎不是一般常用的unix timestamp
也就是從1970/1/1 00:00:00 UTC開始算的秒數
而是從2001/1/1 00:00:00 UTC開始算
作者怎麼知道的?
第一,猜的
第二,預期應該是這兩年的資料,兜出來的(就是湊答案啦)
1970年到2001年共31年,每四年一個閏年多一天,就是每年多0.25天
所以就31*365.25
對嗎?
剛開始我還沒感覺
後來發現,這根本是植樹問題沒學好
31*365.25閏年算起來只多7.75天
實際上呢?1970到2001有八個閏年,要多八天
所以所有的timestamp全部少算0.25天,也就是六個小時
使得ui上顯示的時間,往過去的方向位移了六個小時
去檢視ui上第一個時間戳記,也就是手機開通的時間
果然沒錯,買手機的時候,當時iPhone搶的兇
所以是店員先確定晚上會到貨,我們下午先付訂金晚上來拿貨並開通
弄好都半夜了,可是iPhone Tracker的第一個時間卻是下午,而且正好差六個小時
這什麼鬼,我過去這一個禮拜的努力證明,所有的疑惑,全是這個bug引起的
更鬼的是,哇靠,連作者自己都沒作對照組喔
然後一群人指證歷歷的基礎就是這個有問題的軟體資料喔
如果今天真的拿自己的真實資料來對應
等同於證明了iPhone紀錄的是你六個小時後的位置,而非現在
六個小時後的世界還沒發生,所以iPhone不是紀錄,是會算命
我知道這有點詭辯
但如果所有人都是下載這個有bug的軟體,卻沒人像我一樣感覺這個軟體的資料有誤差
這代表什麼?代表什麼?
這至少證明了三件事:
1. 人,真的很容易被搧動,即便是所謂的事實被發現錯誤,依舊可以完全無視,這年頭,建立在事實上的討論和發現,沒有市場,對立和衝突才是王道
2. 小學自然與科學老師說得對,作實驗要有實驗組和對照組,不然數據就沒有意義,連實驗做錯都不知道。
其實我真正想說的是:媽的,你們兩個是小學沒畢業喔,連這種高度敏感的數據都不驗證,一群人就這麼超high的搞革命運動
3. 這證明了開放原始碼的價值,也證明的開放原始碼的沒有價值,作者沒開放原始碼的話,我大概會在可預期的未來如跳針般的跟著一群建立在想像中的事實的人們爭論在一個漩渦裡面出不來,但也因此證明了這種缺乏人力財力的開發程式方式,其軟體的可靠度,不高。重點是,開放跟自由,其實只是一句口號,對多數使用者而言,沒有意義,因為他們根本就不會花時間看你的code
真正覺得可悲的,我發現了事實,證明了其他人的事實是想像的,但事實背後的那個事實,卻讓那些人的想像變得不是那麼像想像的了
我們都困在iPhone Tracker那輕薄的假象裡了