小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2012年12月24日 星期一

"視頻魔術"的爭議

最近 YIF 的許多魔術影片,引起了一些爭議。魔術師粘立人也召開了記者會表達了立場(如上面的Youtube)。魔術師羅賓雖然已在 facebook 上發表了對這個事件的看法,但是由於沒有參與記者會,加上相較於之前抵制破解魔術的積極,引起了一些議論。
這中間還牽扯了一堆是關聯的事件:
  1. 王偉忠拿國發基金1800萬元投資假魔術
  2. 美國的 Ellen 脫口秀嘲諷 YIF 的麵包魔術。
  3. 某魔術愛好者用變音的方式說劉謙, David Copperfield, Cyril 等知名魔術師也有用點視頻技巧。
用變聲的方式本質上就是不敢為自己的說法背書,就是黑函,動機可議,基本上可以不用理他。不過這篇文章本來就是要說明這個議題的,所以還是簡單說明一下,那就是用一點鏡頭技巧跟用很多影片後製是完全不一樣的事。
的確有很多電視魔術利用鏡頭的限制和剪接當成原理。但是鏡頭的限制是你本來就知道的事情。我舉個例子:
這個影片有很多地方用到了鏡頭的限制,但即使後來讓你知道他有在鏡頭後面做手腳,你還是會覺得很神奇。為什麼會這樣? 因為重點是即使去掉鏡頭的限制,你還是會覺得驚奇。
有一些魔術很巧妙的利用鏡頭,去掉鏡頭後神奇感會消失很多,不過你還是會讚嘆他巧妙地運用視角。這樣還稱得上合格,畢竟你本來知道攝影機有視角的限制。這有點像是敘述性詭計。只是魔術不像推理小說那樣有揭密過程。
剪接就比較灰色,特別是不按照時序的,已經背叛了觀眾的信任。很多魔術師也不喜歡 PSW,也有點這個意思。但每個魔術師接受的程度不同。
總之,是否會讓人覺得神奇就是魔術的判準(至於怎樣才算神奇,就屬於常識的範疇了,雖然 "There is only one problem with common sense; it's not very common." – Milt Bryce )。
上面的問題是很多人討論這個事件的重點,但我覺得實在太無聊了,所以我其實覺得稍微比較有趣是其他幾個點:
  1. 是否會劣幣驅逐良幣
  2. 是否濫用國發基金
首先 1 的問題,先決條件是 YIF 真的用後製。從麵包的魔術以及一些新聞看來,我覺得是有用後製(>80%),除非王偉忠集團有用黑暗兵法,但從以往的表現來看,他們不太可能這麼冰雪聰明。
後製魔術影片是否會驅逐"真正的魔術"?我覺得不會,我對於人類的好奇心相當有信心。
假使我錯了,真的如王偉忠所說的,跟不上潮流,大家都比較喜歡後製的魔術影片,那也無妨,就讓傳統魔術就像傳統戲曲一樣,從大眾轉向小眾,電影、電視劇變成大家主流的戲劇。
 不過我認為他的機會渺茫就是了。所以我基本上同意羅賓的觀點。但粘立人開記者會讓更多人了解這件事情我也是樂觀其成。
至於 2 跟 1 有關。假如真的後製魔術變成了新的魔術,那真的就如王偉忠說的達成目的了。 Ellen 也會從說笑變成被笑。
就算後製魔術影片沒有變成新魔術,而觀眾能夠接受用假影片打響知名度的方式,那也 OK。只是我不會是他的觀眾群。


光是上面這些東西,我不會打一篇文章的。我真正在意的是下面這件事情。在揭穿、踢爆 YIF 的同時,新聞上常常出現類似下面這樣一段話:

YIF隔空從手中抓出法國麵包、玫瑰、寶特瓶,以及從餐廳目錄中抓出飲料的影片,根本是「無中生有」,是以剪接方式操弄的「假魔術」,現實不可能完成。
也許是魔術師氣憤下無意說出,也許是新聞誤傳,但總之這段話強調了某些現象連魔術都不可能辦到。
魔術師無所謂不可能,雖然只是漫畫上說的,但我認為傳達了魔術最寶貴的價值。
魔術吸引人的地方就是神奇,就是製造可能性,就是讓人產生希望。
以前大學時去過兒童癌症病房變魔術給小朋友看,雖然那時候功力實在太差,但我覺得這是我學魔術最有價值的事情之一。
所以我覺得傳達出魔術辦不到的,所以一定是後製,有點違背了魔術師傳達希望的天職。
Las Vegas有一集是探員詢問 Lace Burton,想知道  Criss Angel 是怎麼讓人漂浮的, Lance Burton 先說用很細的線,探員堅持說沒有,然後 Lance Burton 告訴他, 那他是真的,真的讓那個女人飄浮起來了。
我覺得是挺好的答案。


最後補充一件事情,是其實有點擔心黑暗兵法,所以先打個消毒針(從我阿公、外公和我爸來看,我大概會有點遺傳性恐慌症,我大概也是陰謀論妄想症的高危險群)。
 YIF 的法國麵包魔術,是可能不用後製辦到的,至少可以達到極為類似的效果。
雖然事前就挖坑的可能性不大,但現在被逼急了,出這招然後現場表演的可能性也不是沒有。這樣對台灣魔術圈的影響就可怕了。
所以我先消毒一下,即使之後真的可以現場表演,也不代表當時影片不是後製的。如果真的沒有後製,應該第一時間就明說,不該挖坑讓人跳。

20121226 更新相關連結:
粘立人: 本人對於YIF個人沒有仇恨
羅賓: 大家姑且一看--再談「熱門話題」

20121227 更新:你會發現上面粘立人的 FB 連結失效了,也許是 YIF 粉絲,也許是惡意註冊大量帳號檢舉攻擊造成的。當然基於陰謀論者的天職,不排除自導自演的可能性,不過我覺得可能性很低。 我相當厭惡惡意檢舉的做法,特別是如果是雇工讀生惡意攻擊,這可能花的是我們的納稅錢。 可惜這種事情常常不會有實際證據。
(附帶一提,同樣的標準也適用於之前據說很多人檢舉行政院腦殘廣告詐騙的事情,不過這多多少少跟事實沾上邊,也因此至少有一點點好玩,而且是自發性的。)
更新:
粘立人帳號已回復

2012年12月23日 星期日

關於 checkio.org

checkio.org 是一個基於用寫程式來玩遊戲的網站,使用的語言是 python。剛開始,看起來就是一個有故事的 online judge 而已,只是加上一些類似遊戲的等級、成就的系統。
不過繼續玩下去,似乎會有一些變化、互動的題目(我只試了一下,所以還沒有真的碰到)。
但我的重點不是在介紹這個網站。
先介紹一個取巧的方式。一般來說,程式的題目會有點像是,下面這樣
# Withdraw without any incident 
# 120 - 10 - 0.5 - 1% = floor(109.4) = 109
# 109 - 20 - 0.5 - 1% = floor(88.3) = 88
# 88 - 30 - 0.5 - 1% = floor(57.2) = 57
from math import floor
def checkio(data):
    balance, withdrawal = data
    for a in (0.5+1.01*x for x in withdrawal if x%5==0):    
        balance = floor(balance-a) if balance >= a else balance            
    return balance

if __name__ == '__main__':
    assert checkio([120, [10 , 20, 30]]) == 57, 'First'

    # With one Insufficient Funds, and then withdraw 10 $
    assert checkio([120, [200 , 10]]) == 109, 'Second'

    #with one incorrect amount
    assert checkio([120, [3, 10]]) == 109, 'Third'

    assert checkio([120, [200, 119]]) == 120 , 'Fourth'

    assert checkio([120, [120, 10, 122, 2, 10, 10, 30, 1]]) == 56, "It's mixed all base tests"
    
    print('All Ok')

他會給你一個題目說明,你要寫個 checkio 函數來符合要求,除了上面給一些參考範例外,另外會用一堆資料來測試你的 checkio 函數。上面的程式碼是第一題 ATM 以及我的解答(雖然其實可以有公式解,但是花時間算公式沒意義)。
看出程式碼的問題了嗎?他讓你的 checkio 傳回一個東西來和標準答案比較。問題在於 python 有 operator overloading。所以下面這個寫法也可以通過。
class X(object):
    def __eq__(self,n):
        return True
    def __ne__(self,n):
        return False
def checkio(x):
    return X()

當然這很明顯是個作弊招數。之所以要 __ne__ 也 overload 的原因是,checkio 測試的程式碼其實和範例給的測試方式不同。而且實際上,上面這個作法只在少數的題目有效(ATM 有效,另外還有幾題也有效)。
原因是 checkio 檢查答案的方式有好幾種。有亂數或者固定測試,有類似範例但是用 != 的測試,也有用 json 傳回結果的測試。另外還有遊戲化的互動測試(僅供參考
,我不保證真實性)。
所以這只是一個有趣的小插曲,也不是我的重點。重點是, checkio 這個網站引起我的一些想法。
其中一個我覺得挺有趣的,是寫一個 python 的密室脫逃遊戲。什麼意思呢?可以把 restricted python shell 看成一個密室。有點像是古時候 python 的 rexec 或者 plone 等也有東西。總之,就是讓使用者在一個很有限制的 python 環境。熟悉 python 的人一定會說等等,rexec 不是因為有缺陷,所以被廢止移除了嗎?沒有錯,就是因為 python 太動態、靈活了,所以很多看起來限制重重的情形,其實都是逃脫的。當然我不是說一定沒辦法弄出完全安全 python 的限制環境,只是說當限制重重時,可以 python 玩家試著使用平常沒有發現的新玩法。
所以想像這樣,打開你的 idle ,然後 import puzzle, 會看到一段說明你被關在看似空無一物的 python 環境。然後你利用有限資源和  python 技巧逃出了這個 shell,卻又進入另外一個。然後你某些提示,解出一些問題,得到了 sin, cos, 以及 floor 函數,又利用這幾個函數,解決了令一個謎題,獲得了更多 module。
這樣想想,還挺有趣的。有點像是古時候的冒險類型遊戲,還要用文字輸入 open door 之類的指令,只不過現在你要用的語言是 python 而不是英文。
不過構思還不算完整,比方是否要有圖形?純 python 還是有一些謎題?
突然想到 checkio 本身不就是一個 restricted python 環境嗎,不如直接試試看手感,應該能更容易構思。於是上去試試看。結果發現可以奪回完整的 python 就算了,竟然還可以拿到 shell。這樣算是安全問題,所以就回報了 checkio。
目前感覺這個密室脫逃遊戲的構想是挺可行的。

更新:
checkio 方面有回應,有意更正安全漏洞。

2012年12月20日 星期四

Youtube 以及音樂版權

可能有人會發現我上一篇部落格文章(視覺衝擊:立法院法案審查 + gource)的 Youtbe 影片無法觀看,原因是被一個叫做 Pirames International Srl 的第三方宣稱使用了他們的音樂。詳細情形如下。
我想幫我的影片增加配樂,所以用了 GarageBand 隨便弄了一個配樂。因為我對配樂的要求差不多只是"不要沒有聲音"而已,不是一定要創作個什麼偉大作品。
所以拿 GarageBand 隨興把 loop 拉一拉,簡單的把 loop 排列組合一下,不用多久就收工搞定。
GarageBand 中的 loops 是 Royalty-free 的,簡單的說,就是除非你把這些 loops 原封不動單獨轉賣外,是可以自由當成素材使用,包含商業使用。
當然,如果我是一個有自尊心的專業音樂人,用這些內建的素材可能會自覺不夠專業。但我不是,我只是"不要沒聲音"而已。
放上 Youtube 後,Youtube 的尖端科技判斷我的配樂跟三個第三方配樂之間有侵權疑慮。
為什麼會有這麼多侵權疑慮呢,大概因為很多和我一樣沒有專業音樂人自尊的人,使用內建的陽春素材。
影片是可以放,但是廣告關不掉。我假定廣告的收入會分給這些第三方。雖然說這也沒多少錢,關不掉廣告也不是什麼大事,最重要的,要我嚴肅宣稱這種猴子都會做的音樂是本人原創作品,其實還挺丟臉的,但沒有侵權的事情就是沒有侵權,於是我按照程序申訴。

Youtube 本身並不介入仲裁和判斷,申訴程序只是一個和第三方溝通的管道。
其中 "AdRev for a 3rd Party"在第一次申訴後就撤銷了他的版權侵權指控,想來是碰多了,聽都沒聽就撤回了。"Dance all Day" 則在我第一次申訴後重申他的版權,第二次申訴後撤回她的侵權宣稱。想來也是太多這種案例,所以要確認一下你的意願是否堅決,在撤回。
不過 Pirames International Srl 則堅持不撤回。
對於多次申訴遭拒的申訴者, Youtube會給你一個羞辱性的版權教室,確認你不是一個盜版狂。而且還會強迫你影片下架,給你記一個小過,告訴你六個月內再犯的話,就會把你停權。

 我本來想要再上傳一次另一首我的腦殘創作,然後重蹈覆轍一番,讓 Youtube 將我的帳號停權,藉此凸顯這種制度不合理。但想想 PyConTW 的所有影片還在我的帳號內(因為 pycontw 的 youtube 帳號不能上傳超過十五分鐘的影片),就算了。
所以再次繼續申訴,不過這次申訴比較嚴肅,Youtube 還會警告你要負法律責任。 15 天內,如果 Pirames International Srl 沒有回應,才會重新上架。如果 Pirames International Srl 要告我,可能我就等著收傳票,還要買機票到美國的法院吧。
搜尋一下 Pirames International Srl,你可看到很多人說 Pirames International Srl 常常亂宣稱版權。
當然我絕對不是最扯的受害者。 NASA 的好奇號影片,也在 Youtube 上被宣稱是別家公司的版權物,實際上美國聯邦政府出版品是 public domain 的。根據下面這個 youtube,已經是 Public Domain 的 1913 年的老影片 The Bangville Police,也被認定侵犯七家公司的版權物。


上面的影片上傳者很憤怒自己之前上傳兩次都被下架,然後挖苦說這次我上傳無聲版本,你該不會又要宣稱沒有聲音也侵犯你們的版權吧?
很遺憾的,他可能還是侵犯了 John Cage 作品的版權

客觀而論,我認同 Youtube 的作法大體上是合理,雖然很多細節可能會讓被冤枉者感到憤怒,機器辨識的能力也不夠好。
但以使用者主觀角度來說,會造成我對這家公司的觀感下降,以及增加轉使用其他平台的意願。

2012年12月12日 星期三

視覺衝擊:立法院法案審查 + gource


昨天在 facebook 上看到立法院議程查詢資訊的分享,又在 G+ 上看到某個 project 利用 gource 將 git 歷史視覺化的影片。
由於有點孤陋寡聞,這兩個東西之前都沒注意過。想到如果把兩個東西結合在一起,不知道效果會如何?
因為一些業務軟體及文件的關係,在學校的桌機跑的是 windows,其實經過 windows 升級之後,那些用 ActiveX 行政系統也是得在虛擬機跑,不過有些(舊版的) office 文件還是只能在 windows 下面讀,相當詭異。這些是題外話,總之先抓了 gource 的可執行檔在 windows 跑。
簡單用 python 寫了個隨機生成的檔案餵給 gource,第一個碰到的問題是中文顯示。由於不想改程式碼,上網 google 了一下沒找到解答,不過觀察顯示不出來的中文字的方框數量,猜測其實只是 ttf 裡面的字不夠多, DroidSansFallback 把內附的 FreeSans ttf 檔蓋過去,果然就成功顯示中文了。
接下來想試試看顯示 User 的 Avatar 人頭圖,由於檔名要和 User 的名字一樣,但是 NTFS 檔名應該是用某種 UTF16 的編碼,而 gource 只吃 utf8 檔,所以不改 source 不行。所以切換到 linux 下來跑。
linux 下的檔名就沒有問題了。接下來要抓立法院的議程資料。我用的網址是立法院智庫下的「法律提案審議進度」。
不用砍站,稍微用瀏覽器的網頁開發工具修改一下,就能一次抓到最多 3000 筆資料。我抓了 100年1月到 101 年 11 月中的資料。
再來就是用 python 解析 html。由於 html 裡面有些 tag 其實沒有對稱,所以用很醜的方式,只處理 td tr 和 table,總之是解出資料了。提案人常常會很多,只列其中第一個。
接著需要大頭照。原來是想用 google 找大頭,不過已經有很多熱血的同志先弄好了,可以在零時政府中找到立委人頭 API。雖然網頁上提供的例子,裡面的 MD5 跟我用 python 跑的對不上,但是總之是可以抓得到(如附檔程式)。
最後,再用 Garage Band 隨手弄個背景音樂配上就完工了。


附檔:處理的資料以及抓人頭的範例。
用的參數如下:
gource --user-image-dir image -e 0.1 --camera-mode overview -i 30 -s 20 r2

2012年12月7日 星期五

媒體壟斷不可怕,可怕的是它居然有效

先說些題外話。
標題句型是套用之前說過的「黑函不可怕,可怕的是它居然有效」。這次所謂大學生怒罵質詢教育部長的新聞事件,與之前七朵花事件有些異曲同工之妙,許多人執著於所謂的態度問題。
原因很簡單,因為什麼黑函、鬥爭、媒體壟斷、官商勾結、兩岸問題一堆的太複雜了,很難說清楚誰是誰非,但是有沒有禮貌這種事情,連小孩都懂。就像大海中溺水的人一樣,慌張伸手都撲空,忽然抓住了一塊結實存在的物體,當然會緊抓不放。
這是人類的自然反應。教書時碰到一些英文不好的學生,讀英文書會讀錯、讀不懂意思。仔細詢問之下,原來是遇到一些的生字時,就自動跳過忽略,讀出來的意思當然不對。
這是人之常情,沒有什麼好苛責的,但要小心,溺水時緊裝住東西的本能反應,可能會把想救你的人一起拖下水。
言歸正傳,陳為廷對教育部長有沒有禮貌,那是他們兩人的私事。但整個事件至今,根本就是一場媒體鬧劇。
先從最開始的教育部公文說起,新聞如下:



新聞主播開頭就說
「沒想到教育居然了採取一個不可思議的動作,因為就在同一時間發了一封 email 給 37 所的大專院校,要求學校能夠蒐集提供參與活動的學生名單」
注意,主播不是說傳出、根據 xx 說之類的引述說法,而是直接當成事實在報。實際上根據鄭麗君立委臉書上提供的 email 圖片,內容並沒有要學校蒐集名單。

實際上新聞來源,應該如這則新聞所述,是誤傳(有興趣的人,可以自行前往新聞內容所提的臉書求證)。
當然很多人,包括準備向教育部長興師問罪的立委在內,後來其實都了解教育部並沒有真的要求蒐集學生名冊。但人性就是這樣,因為一開始已經認定教育部犯了不可饒恕的錯,即使後來發現不完全是這樣,但因為態度已經確定,所以自然會轉成認為即使沒有真的明文要求學生名冊,但光是關心就已經是一種暗示,是一種壓力了。

接下來是所謂學生怒罵教長。這個也是一個標題殺人法。
實際上的影片中,學生的態度也許不是每個人都能接受,但也沒有標題講得那麼誇張。


不過如前所述,假設你已經先入為主被媒體標題說服了,即使後來你看到影片不像新聞報導那麼誇張,你也會自己找理由說服自己。
不過媒體鬧劇還沒有結束。接著又出現清大發出道歉聲明的消息(抱歉我用這麼迂迴的文法,因為我沒有真的去找道歉聲明來看)。又出現了清大坦承誤判的新聞,說是
簡禎富坦言當時在國外看到《聯合報》的標題,認為校方應對此事做出回應,才會請秘書室擬稿,聲明是他和校長都看過後發出,但事後觀看陳為廷在教育部的發言完整內容,發現此事造成社會爭議,他會針對此事自請處分。
當然,名嘴們也不會置身事外,可以參考一下這則臉書
 「鄭重澄清」 今天三立新聞台徐國勇先生在新台灣加油節目中,指稱屏東教育大學教官約談助理教授(就是小弟我),質問我為什麼要帶學生去抗議,並要求我交出學生名單,這完全是無中生有的言論。 第一,我並沒有去參與抗議活動,是因為抗議活動的學生中有我的導師班學生,所以我要求學生請事假去抗議,教官曾打電話來問我好幾個學生請事假的原因。 第二,活動結束後,星期五教官室老師來電詢問學生是否都有安全回來學校,並無要我交出學生名單,我也曾詢問學校是否有什麼進一步處理,教官也明確回答就只是了解一下學生安全。 第三,學校目前並無約談任何學生,也無任何要處理學生的動作。 也請媒體朋友們無需加油添醋報導,特此聲明。
看完以上的鬧劇,以後看到媒體報導時,你的態度就應該像我天天跟我一歲半小孩所說的一樣:「慢慢、等等、小心」(還有「好煩、不要吵」)。
惡質媒體之所以可怕,是因為有人相信它。
以前媒體壟斷之所以可怕,是因為沒有能與大眾媒體抗衡的媒體。
但是現在有網路了,不但能方便參考國外消息,查證資料,更讓傳統的口耳相傳升級成能與大眾媒體抗衡。

抗議媒體壟斷當然還是要做的,但更美好的未來是,讓他們即使壟斷大眾媒體了,也沒有效果。



附錄:
糗爆!魔術師凸槌 火燒頭變一團火球
根據一些消息以及魔術師本人說法,其實是主持人惡意攻擊(因為認為魔術師使用巫毒)。
報導內容用詞其實尚稱中性,但是標題應該改成「糗爆,新聞標題將攻擊事件說成是凸槌」。