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

2013年12月27日 星期五

The Time of The Doctor 語錄


蒐集一些 Doctor who 2013 聖誕特輯的對白
Everybody's naked underneath.

Works two out of three times, guaranteed
Number ten once regenerated and kept the same face - I had vanity issues at the time.   
講實話的時候,總是比較好笑一點。
Boss of the psycho space nuns. So you!   
不曉得,總是覺得上面這句好像該收進來。
Oh, Doctor, fixing toys and fighting monsters.
如果不常常修理玩具,那怎麼打怪呢? 因為根本分不清誰才是怪物啊。
We all change... when you think about it. We're all different people all through our lives.
And that's OK, that's good, you've got to keep moving, so long as you remember all the people that you used to be.
沙烏地阿拉伯諺語說, 「若是在沙漠中迷路 就只能尋原路折返」。我們會不斷改變。像是學了很多魔術之後,往往會忘了當初還不了解魔術時的那種感覺,甚至會感覺過去的自己很陌生。當然不只魔術,學其他很多東西到了一個程度之後,都會有種重生(regenerated )成不一樣的人的感覺。但不要忘了最初的感動。
I saw him on a pier on a rainy day.
I'd seen him before, lots of times. But he just looked so beautiful standing there.
I wanted everything to stop. I wanted nothing to change ever again.
If he could just keep standing there, so beautiful...
每個人都有希望時間靜止的時候(......不是那一種),有那種希望感動的剎那能夠變成永恆的經驗(或者將會有這種經驗),有時在那個當下,有失去時間感的錯覺。這也就是很多人不知怎麼,就是喜歡拍照的原因。

I will not forget one line of this. Not one day. I swear. I will always remember when the Doctor was me.
Better than "I don't want to go".
對於 11th 的結局,不管是遺憾、不捨還是滿足,套句沙烏地阿拉伯的諺語總結:「無論如何旅行仍有得不到的財富」

2013年12月19日 星期四

松鼠博士的 2013 回顧


年終歲末,檢視一下【松鼠博士的魔法眼鏡】 2013 年的文章。
發現這兩年因為小松鼠出生的緣故,心態慢慢轉向思考要為小孩和年輕人準備一個怎麼樣的世界。


魔術相關:
就我而言,希望、夢想以及無窮的可能性是魔術最寶貴的價值。 --  不用後製的姨夫 Style 魔術 
上面這篇引起一些爭議,稍微延續了 YIF 事件的熱度,可惜不夠久。

後製魔術影片是否會驅逐"真正的魔術"?我覺得不會,我對於人類的好奇心相當有信心。假使我錯了,真的如王偉忠所說的,跟不上潮流,大家都比較喜歡後製的魔術影片,那也無妨,就讓傳統魔術就像傳統戲曲一樣,從大眾轉向小眾,電影、電視劇變成大家主流的戲劇。 不過我認為他的機會渺茫就是了。 -- "視頻魔術"的爭議

今年也請了粘立人老師和梅幻牌老師來東華大學演講和教魔術。

就在你拿出繩子後,突然聽見一位小朋友在台下大聲說:「我看過了耶...你是不是要學電視上大魔競的剪繩還原?」。
「天哪!我連剪刀都還沒拿出來啊。」 你心中跑出來這樣一句話。 -- 魔術師的小朋友問題
舊文重貼,不過也許該歸到故事類吧。

故事類:


會場的氣氛就好像打開窗戶一樣,馬上活了起來。
「是啊,哈哈!賣給猴子的話,一定大賣呢!」
「可以順便附送一隻 iMonkey 就好了啊。」  -- 發明多點觸控的故事(一)
史提夫其實也有一樣的想法,他無法否認,他記憶中的「正常」世界,隱藏著讓人不安的不合理。
事實上,在他還有十隻指頭的時候,就一直有這種違合感了。 -- 發明多點觸控的故事(二)
據說史提夫還沒被解雇的原因,是老闆覺得他上次的報告很逗趣。 -- 發明多點觸控的故事(三)
難得把 TODO list 中的故事真的寫出來。

電腦類:
學了 Go,

練習用 Blender 畫 Python Girl

弄了個可以當成 python, ruby, java, perl  來跑的圖檔


開始玩 Arduino, BeagleBone black, raspberryPi, Lego Mindstorm。

不過這類文章很多,就沒辦法一一列出了。


心靈雞湯類:

 糟糕,就像一開始說的,年紀大了,廢話變多了。
當你的目標是世俗所謂成功的時候,就像老梗笑話講的一樣,「我不需要跑得比老虎快,只要比你快就好了」。你自然會想卡位、攻擊對手。因為你的焦點本來就是擊敗對手。但是反過來,你的目標是提昇自我,成就偉大結果,那你的焦點會放在遠方的目標上,會放在自己身上,而不是對手身上。也只有這樣,你才有可能跑得比老虎快。  -- 追求卓越 成功就會隨之而來

「未來不僅僅是明天而已」。某種意義上來說,這個未來包含了父母對於理想的寄託。
如同 Jor-El 一樣,Jonathan 也將 Clark 視為未來,自己信念的延續。
Jonathan 問 Clark,難道種種田不也是幫助人嗎?為什麼一定要用超能力來救人?
他的意思並不是要 Clark 待在小鎮一輩子不出去。
他的問題就只是一個問題。
 如果 Clark 連這麼簡單的問題都無法很有信心、很清楚的回答,那他還沒有準備好。

同樣的,雖然
Jonathan 時常叮嚀 Clark 不要顯露他的能力,因為 the world is not ready.
但他的意思並不是要等世界準備好才顯露能力,而是
 世界還沒準備好沒錯,但世界永遠也不會準備好。 問題不在於世界是不是準備好了,而是你有沒有準備好面對這個不理想的世界。
以上是鋼鐵英雄觀後感,這部根本應該在每年父親節上演才對。
所以我完全同意如果媒體增加國際深度,就會增加整體國民的國際觀的這個因果關係。但全世界最沒用的就是這個「如果」。這樣的說法,就像說:你被曬傷,並非因為你沒擦防曬油就出門,而是因為太陽太大。如果太陽沒有那麼大,就不會被曬傷了。  -- 沒國際觀是因為媒體很爛,那然後呢?
雖然並非公認如此,但我覺得真夏方程式是加利略系列中,讓我感覺最深刻的一部。
一開始的文字,描述的是真夏方程式的故事,也是描述台灣這個夏天的故事。
在小說中,湯川學為了防止「某人的人生被扭曲」,決意揭開真相。
「任何問題一定會有答案。」
「但答案不見得能立刻導得出來。換成人生也是一樣。今後你會碰到很多無法立刻提出答案的問題。每一次煩惱都有價值,但沒有必要焦急想要找出答案,很多時候自己必須成長才找得到。所以人一定要學習要努力要不斷磨練自己。」
當你決定要開始追求答案時,答案不會自己跑出來找你。只有自己動手驗證、了解,答案才會是你的。
所以湯川學帶著小孩一起動手做實驗。但科學有極限,人也有極限。找到答案的過程也許很難,也許辦不到,但像是湯川學這樣的科學家會告訴你,你不是孤單一個人,有很多人都跟你抱著同樣的問題,一起煩惱下去,直到找到答案為止。 --  真相の方程式

當一個人可以帶給大家歡笑、讓人快樂時,我們會喜歡他。但喜歡他的原因並不是他有讓人快樂的這個貢獻與功能... 你喜歡他是因為你感到快樂 ...
不過,如果你是一個經紀人、秀場老闆,就會以他帶給人歡笑的能力來衡量他。因為你本來就不是把他當成人來衡量他。今天如果一隻猴子、甚至一顆石頭更受觀眾歡迎,你一定二話不說的一定選猴子和石頭。 -- 樹不當木材,人拒當人才

不過似乎最受歡迎的是當個興趣人。看來這似乎是不少人共通的生活經驗。

2013年12月15日 星期日

要當個興趣人

CC-BY-SA-NC Ben Rollman

前一陣子有篇「大學生應該避免的事」引起了一些討論。我大致上認同,不過我對於「不要當興趣人」這點倒是持相反的意見。

首先看其中碰到的症狀:
每次看到學生說「這不是我的興趣」、「和我想要的不一樣」,我雖然會細心引導其脫困,但其實也都覺得有點倒彈。
所以他要年輕人挑一些沒興趣的事情來做,然後鍛鍊意志力。而且,不試試,怎麼知道自己沒興趣呢?

乍看之下這樣的論點言之成理,沒有什麼問題。不過呢,請仔細聽一下上面學生說的話。注意到了嗎?他說的是自己「沒興趣」、「這不是我想要的」。
沒有錯,他很明白說了「沒有興趣」,那你怎麼會覺問題在於他是「興趣人」?
你請別人吃東西,別人說不想吃,你會要他別當貪吃人嗎?

問題反而在於他不是「興趣人」。

可能有人會覺得這根本是詭辯,況且,誰沒有幾個興趣呢?唱歌、跳舞、打球、看電影、看漫畫、玩玩神魔之塔、旅遊什麼的。

先讓我告訴你什麼才叫做興趣。很多人有的不是興趣,而是打發時間的消遣。

狂熱與挑戰是「興趣」的要素。

會讓你瘋狂、廢寢忘食的才叫做興趣。
有挑戰,會讓你想要不斷鍛鍊、鑽研、進步的才叫興趣。

我認識不少寫程式、玩魔術、下棋的瘋子。但不限這些領域,打牌、唱歌、跳舞、打球、衝浪也很多瘋子。當你對一件事情擁有狂熱興趣時,必然會被沒有狂熱經驗的人當成瘋子。

那些等我退休、等我有時間我就要來學跳舞、學日文什麼的,不叫興趣。有閑情逸致才做的事情,依照定義就是打發時間的消遣罷了。
興趣是你沒時間也要硬擠出時間來做的事。

挑戰跟難度不完全一樣。擲骰子等待四個六出現當然也很有難度,但除非你正在鍛鍊你控制骰子點數的能力,那也只是消遣。

拿神魔之塔當例子好了,這可以是一種興趣,也可以只是一種消遣。當你轉珠能力或者是遊戲中的相關知識、策略有在不斷進步時,那的確可以算是一種興趣。但絕大多數應該只是打發時間,轉移對現實的注意力。 星海就比較有競技以及進步的空間。

我認為大多數學生的問題在於沒有真正完整的「興趣」的經驗(或者說成年人也一樣)。

培養興趣這種事情是會成癮的。當你真正對一件事情產生過興趣,產生過狂熱之後,你會很難忘懷這種從無到有、從不會到會、改變人生的經驗。你很自然的會繼續嘗試其他的興趣,企圖重複這種過程。一次、兩次之後,慢慢就會養成習慣。
之前用  blender  來畫 python girl 是一個相當不理智的決定。因為找專業的畫師,絕對可以達到更好的效果。但是我無法抗拒學習、摸索新東西的那種感覺。

當你治好興趣缺乏症之後,你會對所有事情都充滿興趣。真正阻礙你,讓你沒有辦法從事某項興趣的唯一原因是(除了維持你的生命跡象和基本生活水準的時間外),就是你正在做一件你更有興趣的事情。

我沒有 DIY 四軸飛行器及 3D印表機的原因,不是沒興趣,而是我一直有更有興趣的事情在做。我最近練了 Freeline 飄移板,不是我突然對他產生興趣。我大概五六年前聽說這個東西後就有興趣了,只是我的興趣列表很長,我要靠機緣來決定要從事哪一項。

就像一個電玩迷,通常不會只迷一個遊戲。一個電影迷也很少只看一部電影。一個「興趣迷」自然會不斷尋求新興趣。一直反覆看同一本小說的,也難稱為小說迷。
有多次這種「興趣」的經驗後,你甚至可以刻意誘導自己,讓自己對特定事物產生興趣。

所以真正的興趣人是不會回答「這不是我的興趣」的(除非你太像是要來直銷或傳教的)。

也是有人對於某種興趣入迷後,就當成終身志向。很多大人會這樣擔心小朋友誤入歧途。
但通常一個事物越鑽研下去會越難,如果他能持之以恆,不斷破關,持續進步,有何不可? 怕只怕已經不是興趣,而是變成習慣和舒適圈了。

反而是因為太多大人過分強調什麼是正事(讀書),要小朋友把興趣當成是做好正事後,閒暇之餘行有餘力再做些「休閒嗜好」來陶冶性情。其實連大人們自己也是這樣對待自己的「興趣」。
因為這樣的觀念影響,才讓許多學生從來沒有完整的「興趣」經驗,也對於興趣帶有罪惡感,覺得好像得要很痛苦的做「正事」才是正途。 弄得有點像是興趣的厭食症。

沒有興趣,才需要刻苦的培養意志力。

就算再枯燥無味,只要有愛,就沒問題了。
但你能期待一個沒有愛過經驗的人,直接越級打怪嗎?



2013年11月1日 星期五

Great Python Challenge

就像長頸鹿問題一樣,我們也來個蟒蛇 Python 問題。
答案的程式碼很短,不過是個 one-liner,所以不用擔心花太多時間 。


失敗者請換上蟒蛇相關照片,直到想出來為止。
準備好了嗎?
題目在下面。

2013年9月22日 星期日

派特的幸福劇本 Silver Linings Playbook


雖然 MOD 上有不少我平常會選的影片,如鋼鐵人三、闇黑無界:星際爭霸戰,不過我最近選的影片是名魔生死鬥、派特的幸福劇本這類比較小品的東西,原因是不想讓小孩經過旁邊時,看到太多暴力場景(雖然看了才發現,其實這兩部的內容也不太適合小孩看,特別是名魔生死鬥)。
名魔生死鬥及派特的幸福劇本的故事結構還挺類似的,降到谷底的主角,最後又找回春天,老套到不行。所以情節大綱老套根本不是缺點,就像螢幕比例 16:9、棒球比九局、烤雞是拿雞來烤一樣,只是一種套路規則。重點在於如何處理及敘述這樣的故事。
名魔生死鬥不算太差,我不後悔花錢看,也得到一定的娛樂,但就算我沒看過,肯定也不會覺得遺憾。
相對來說,我比較喜歡派特的幸福劇本。嚴格來說,就算錯過這部影片,我大概也不會覺得太遺憾,但我很高興我選了這部電影,特別是這個片名對我的吸引力很低。
整體的調性來說,介於沒問題先生及充氣娃娃之戀中間。整部片的幽默與情感起伏,都很平淡,但是看起來很舒服。


以下有劇透,我覺得以這部影片來說,沒看過之前先不要看內容比較好。


主角剛從精神病院出來,被許多人視為避之惟恐不及的瘋子。主角的確在情緒及精神上有些障礙及困擾,但現實生活中,每個人多多少少都有類似的困擾,憑什麼來判定誰是瘋子而誰不是?這條線由誰決定?我想,每個人都有自己的一把尺,而且多少有點主觀。
結局的給分象徵了這回事情。5.0 以上是沒問題,不到 5.0 是壞的,即使多數人給了你低於 5.0 的分數,但真正重要的是有人給你超過 5.0 的分數。
主角一開始對很多事情感到憤怒與執著,最後發現了許多人都在用自己的方式在幫助與愛他,(雖然有些幫助的方式,看起有點討人厭),但轉念一想,就像主角跟他哥哥說的,我能給你的只有愛了。每個人都不完美,都有能力上的限制,只要能對不完美有所包容,就能接受與欣賞別人的這些舉動了。
這些舉動包含派特的父親找他看球賽、他母親一碰到家庭緊張氣氛就提供點心食物、女主角主動獻身,甚至他哥哥老是要用言語酸他。
主角最後接受了這些愛,而且反過來用自己的方式回饋這些關心他的人。事實上,有時候接受別人的愛與幫助本身就是一種回饋。
另外一個有趣的點,就是提醒我們「有策略的瘋狂」很重要,因為這就是你的特質。
片名的劇本或者 Playbook,就是指戰略、策略。女主角說:"there's always gonna be part of me that's dirty. But I like it"。每個人都有自己瘋狂的一部分,保持正面的態度來看問題,才能找到一線曙光(雖然有點多餘,還是強調一下,不只是正面,還要看問題)。


Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(下)


RPi

我只裝了以及跑了一下 RPi,安裝上面還算容易。儘管官方的版本跑的是 LXDE,感覺跑完整的圖形環境還是太吃力。連帶的,我也比較難利用零碎的時間測試一下原本想測試的 WIFI USB Adapter 和無線鍵盤滑鼠。
我想過利用 RPi 來在某種有限制的環境下做軟體/程式設計教學的可能性,不過主要的困難一個是上述圖形環境太慢的問題,二是要找個適合而且便宜的螢幕才行。

Beaglebone Black

BBB 在價格上不會比 RPi 貴多少,大致上 Arduino 和 RPi 能做的, BBB 也都能做。不過網路資源和社群比 RPi 和 Arduino 要小,不過也還算充足。
不過軟體穩定度還不夠成熟。除了一開始 ssh 的狀況外,完全按照網路上的說明來裝 usb wifi adapter 是無法成功的。我依照經驗,覺得是 kernel 版本的的問題,只是不知道是目前的 image 比文件新還是比文件舊。不過裝軟體沒有越裝越舊的道理,所以就往前追到最新的 image, upgrade 所有套件。不過還是失敗,因為文件上面用的版本在更舊的 image。最新版本的 image 裡面所附的 usb wifi driver 其實不管用,跟不上 kernel 更新的速度。得要另外抓最新的 driver 自己 compile 才行。
所以這裡面表示了兩個問題,一個是文件更新的速度不夠,另外一個是官方提供的 image 不夠成熟穩定。
再來就是我拿類比輸入做了些實驗,發現大多數的文件都只告訴你怎麼讀取一次資料。當然你可以重複一直讀取資料,不過這樣採樣的頻率只有 1~2khz ,遠遠不及硬體 ADC 規格能辦到的 24Mhz。新的 kernel 其實有人修正改寫,已經能連續讀取,我實際照樣操作,繞過一些小問題後,的確能辦到連續讀取。不過還無法控制採樣頻率。
所以雖然相較 Arduino 來說強了很多,但是也複雜很多,對 Linux 不熟或者沒有耐性的話,入門可能會碰到一些困難或限制。

Arduino 和結論

Arduino 前面已經說得很清楚,很適合外行而且自學的初學者。能與他相比的,只有 RPi,不過 RPi 的面向有點不同。
雖然長期以來,就已經有許多電子零件、套件、開發版、入門套件、教程,這一波起來的開源硬體,難道只是個噱頭嗎?
也許類似傳統武功傳授及精武體育會的差異吧。

2013年9月14日 星期六

Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(中)

這大概是這隻 AlphaRex 的遺照了

 

NXT 的心得

除了 Macbook Air 藍牙的問題外,官方軟體大致上沒有問題。Mindstorms 圖形化程式設計相當簡單直覺,很容易上手,至少簡單的程式碼是如此。我沒有也不打算嘗試用它來寫較大的程式碼。
有非常多的語言可以在 NXT 上寫程式,包含 C-like languages,甚至 Python 語言(參考 wikipedia)。
不過我一開始就打算用遠端控制的方式,最多綁一台手機或者 RPi 之類的小電腦上去就行了。
像是 nxt-python 就能讓你在電腦上用 python 寫程式,然後遠端控制 NXT。
我一開始在 mac 上安裝 nxt-python 碰到了一些困難,因為 nxt-python 告訴我找不到裝置,不管是 usb 還是 藍牙。

所以先在 Linux 上試試看(總要先確定 nxt-python 本身能跑)。Linux 完全沒有問題就能很簡單將 nxt-python 安裝成功,然後配合 USB 控制 NXT。
不過我的 Linux 是桌機,連著一條線不太方便,所以還是想辦法追蹤了一下程式碼,成功裝在 Macbook 上。
其實都是一些 python level 的 driver 問題。像是藍牙,因為 nxt-python 支援兩套 pybluez 和 lightblue,但是 lightblue 的支援是自己寫了個 wrapper 用 lightblue 來模擬 pybluez 的 API,所以有些問題。而 Mac 上只支援 lightblue。
這些 python-level 的問題解決之後,就順利能用 USB 及藍牙控制 NXT 了。
有趣的是,官方不支援 macbook 的藍牙,但這種第三方的方式,反而不用 hack 就能支援了。

NXT 本身有機械硬體上的限制,藍牙的反應和速度,較 USB 要差很多。
我一開始的構想,是實作真實版的 Tom Cat(就是那個會學人說話的貓)。不過第一個問題是 NXT 2.0 裡面沒有聲音感測器,而且由於 NXT 採樣頻率的限制,也不可能有類似電腦裡面的錄音功能(雖然還是有人用這樣有限的硬體做出了聲控),所以我決定用遠端的方式處理。
電腦端錄音什麼的沒太大問題,但問題是,怎麼讓將處理過的聲音檔放到 NXT 播放?
答案是你要將想播放的聲音存成一個特別格式的檔案,然後送到 NXT 上。這個格式不是普通的 WAV 或 MP3,而是一種專有格式。有點討厭,但資料都找得到,不難。
但即使是短短 10K 的檔案,透過藍牙傳送到 NXT,也需要令人難耐的延遲(嚴格來說,已經脫離了延遲的等級,應該叫做等待)。
USB 好一點,但仍有讓人能夠察覺的延遲。也許要用修改的 firmware 才能解決這點。

雖然其面寫的看起來像是缺點,但果不是存心自找麻煩,只要乖乖對硬體上的限制認命,其實網路上資源很多。
新的 EV3 在很多方面,也改善了硬體上的限制。

2013年9月6日 星期五

Arduino, Beaglebone, Raspberry Pi, Lego Mindstorms 心得比較(上)

我對電子以及機械認識只有高中物理的程度,而且還已經過了半衰期了,說是門外漢不為過。拜網際網路掀起的開放知識革命之賜,跟風了這一波的 Open hardware 以及 Maker 風潮。買了一些玩具來自學玩玩。
左起: Arduino Uno, Beaglebone Black, Raspberry Pi(Model B)
這一陣子先後買了 Arduino Uno, Beaglebone Black, 以及 Raspberry Pi。早一年多,還買了套 Mindstorms NXT。當時照著做了簡單的機器人,嚇得那時還只會扶著走的小松鼠到處亂爬。前一陣子,拿來自主研發了個畫圖機器人,用小松鼠的玩具畫板來作畫。後來也按圖索驥把人形機器人 Alpha Rex 組了起來,用藍牙配合 macbook air,做成聲控機器人。

Mindstorms 組的畫圖機器人
Arduino 做過
  • 手搖式 LED 視覺暫留顯示器,
  • 紅外線萬能遙控器(因為房間的冷氣晚上會結冰,找人修了幾次都沒修好,就用程式控制,每半小時送風休息一下,參考 Adafruit tutorial, IRremote, 及 IRLib),
  • 樂器(用軟 Soft Potentiometer 控制, buzzer 發聲),
  • PCM 語音 Player(把 Macbook 的語音傳到 arduino 上,用 buzzer 播放,一開始用 loop 硬幹,後來用 interrput
還有其他像 LED Matrix 、溫度感測、亮度感測之類的小實驗。

 
 手搖視覺暫留

BeagleBone Black(簡稱 BBB)弄過用巧虎手偶改裝的機器巧虎

Raspberry Pi(簡稱 RPi) 則...開過機。

以上大概是我目前淺薄的經驗,所以以下的心得就當成初學者的經驗參考。

比較表:


Arduino UnoRPiBBBNXT EV3
USD$ 定價29.953545279.99 (8457)349.99 (31313)
NT$ (市價)320130016001350014999
CPU/Microcontroller16Mhz ATmega328P700 MHz ARM111 GHz ARM Cortex-A848Mhz ARM7/8Mhz ATMega48300Mhz ARM9
Memory32 KB Flash
2 KB SRAM
1 KB EEPROM
512 MB
SD Slot
512 MB DDR3
2GB flash
MicroSD Slot
64 KB RAM
256 KB Flash
64 MB RAM
16 MB Flash
microSD Slot
Video HDMImicroHDMI單色 LCD 100 x 64 單色 LCD 178 x 128
AudioAudio Jack/HDMImicroHDMI內建揚聲器內建揚聲器
USB與 PC 通訊與 PC 通訊
2 USB Port
與 PC 通訊
1 USB Port
與 PC 通訊與 PC 通訊
有 USB Port
網路Ethernet 10/100, RJ45Ethernet 10/100, RJ45
藍牙
低階擴充性14 x GPIO (含 6 x PWM, 2 x serial, 4 x SPI, 1 x LED)
6 x 類比輸入 (10bit)
26 pin 腳位 含:
17 x GPIO (8 x free, 含 1 x PWM)
I²C, SPI, UART

92 腳位 含:
65 x GPIO
(32 x free, 含8 x PWM)
7 x 類比輸入
(12bit)
I²C, SPI, UART
4 個數位/類比感應
3 馬達(可感應位置)
4 個數位/類比感應
4 馬達(可感應位置)
系統無/可刷Linux
(可刷其他)
Linux
(可刷其他)
Lego系統
(可刷其他)
Linux
(可刷?)
台幣價格為露天拍賣查到的大約價格,一些會附額外配件。

 入手:

價格來說,Mindstorms 貴很多,但這個售價包含積木、齒輪、感應器、馬達還有軟體。比方 Mindstorms(NXT 2.0 家用版)裡面有三個能傳回位置的馬達,超音波距離、顏色、碰撞感知器。
積木本身是有一定價值的。不然像我用廢棄免洗筷、橡皮筋、紙盒等等組成機器巧虎骨架,材料費雖然是零,但很脆弱麻煩。
RPi 及 Arduino 應該很容易買到,BBB 則稍微少一點。Mindstorm 則有教育及家用兩種管道,拍賣上也不少。

由於我是外行,所以我一開始先買了 arduino 官方的 starter kit。 露天上的價格約 3600 台幣。

硬體/擴充性:

BBB, RPi 用的都是 Arm 系列的單核心 CPU,跑 Linux, 512M ram。BBB 可能要快一點,但都在同一等級(至少跟 NXT 及 Arduino 比起來)。

RPi 的優點是 HDMI 可以上 1920x1080,有 audio jack,兩個 USB 插槽可以外接週邊。
缺點是沒有 PWM,類比輸入,而且 GPIO 的頭是公端,比較難接,要有杜邦頭才行。
只有攝影機之類的少數專屬擴充設備,但有額外的擴充硬體能讓 RPi 使用 Arduino 的 Shield。

BBB 的有較多的 GPIO 接頭,還有 Analog input pins。
HDMI 沒有 full HD(BBB 2013.9.04 最新的 image 可以有限程度的支援 1920x1080@24,不過至今我沒有讓 BBB 連上 HDMI 過)
沒有獨立的聲音輸出入。
而類比輸入的電壓是 1.8V,這點要小心一點。
雖然沒有 Arduino 那麼多 Shield,但是也有不少專屬的擴充 Cape。

BBB 和 RPi 都很方便能接網路線,因為有 USB,也可以接上 USB 的無線網卡或藍牙卡,但前提是 Linux 能支援。

Arduino 也有一定數量的 GPIO 及 類比輸入,不過處理器速度較慢,而 ADC 的極限大約也只有 10Khz。
優點是社群大、資源及教學都多,各式各樣的擴充 Shield 都有。

Mindstorm 使用專屬的接頭,不過至少前兩代來說,已經有不少文件、教學、以及轉接版,可以皆額外的硬體。
NXT 用藍牙通訊速率以及感應器的採樣速率都不算快。

上手性:
Lego:
本質上是玩具,上手性方面沒話說,小朋友照著做都可以。
軟體方面還好安裝,Win/Mac 都行。不過在新版 OSX 下,與 MacBook Air 藍牙晶(broadcom)片不相容(解法是DYLD_LIBRARY_PATH 舊版的 IOBLUETOOTH)。除此之外,照著圖解,很容易上手。
圖形化的程式設計照著做,很容易就上手,也很有趣。
積木很容易 prototyping 自己的機械設計。
唯一的缺點是,即使接上 USB 線連上電腦,NXT 本身還要裝一大堆乾電池才行(有些版本有附充電電池)。對於手上沒有

Arduino:
下載安裝程式後,將 Arduino 用 USB 連上電腦即可寫程式,不用其他電源。
我一開始買的 arduino starter kit 非常好上手,手冊中很簡潔的把原理以及注意事項講得很清楚。不要說我這種高中物理程度的知識,即使是國中生甚至國小生應該都能上手,而且能學到東西(不過手冊是英文的)。
對我來說,有 kit 的好處是至少東西齊全。像我們這種門外漢,問題就是零件要從何買起都搞不清楚。一旦有個基本的電路出來,如果只是差個幾樣關鍵零件,就知道要怎麼買了。
(所以我又買了 BBB 和其他零件來玩)
標準的程式語言差不多就是 C,IDE 也堪用,能把正確的函式名稱標出顏色這點,對於初學者很有幫助。

BBB:
插上電腦的 USB 就能 SSH 進去或用 Web 介面了(不用其他電源線, ip 為 192.168.7.2)。至少,我的 ubuntu 是如此。從插入電源到真正能連進去感覺上約 30 秒。
Win 或者 Mac 則可能要裝驅動程式(如果你還沒有的話),但 BBB 的優點是,插上電腦號,會被電腦當成 USB 隨身碟,而隨身碟裡面就有驅動程式了!
所以假如剛好停電,所有網路都不通了,只要你有台筆電,你還是可以接上 BBB 馬上開始入門。
Web 介面有軟硬體介紹文件,有 Cloud9 IDE,還有範例程式碼和硬體電路圖。
以上是官方建議的開始方式。應該也可以如 RPi 一樣接上電源、USB 鍵盤、滑鼠,HDMI 後單獨開機使用。
(不過沒有附電源線、microHDMI 線,又只有一個 USB port)
不過我一開始用 Macbook 接的時候,碰到了 ssh 進不去的狀況,花了一點時間才解決。
官方文件裡面介紹的程式語言是 javascript 配合 bonescript lib 和 cloud9。不過反正是 linux, 用 C, C++, python, livescript 也很方便,而且也稱不上非官方。

RPi:
由於我有一台電腦本來就是接上 HDMI 電視,RJ45,USB 鍵盤及滑鼠的,所以將作業系統放入 SD 卡然後插入 RPi,接上電源,然後就能直接用 RPi 取代了那台電腦。
不過要注意, USB 或 5v Powersupply,SD 卡,還有各接線都要自備。雖然這些線材都很常見,有很大的可能性會跟我一樣,剛好都有。
安裝過程使用英文,很順利。安裝的是 Raspbian 系統,桌面上有一些 python 遊戲,還有圖形程式語言 Scratch。
Scratch 我完了一下,搞不懂怎麼跑 script。
整體執行速度感覺有點緩慢。

(待續)

2013年8月5日 星期一

真相の方程式

圖為真夏方程式劇照
這是事故,還是殺人? 真相究竟是——
被當成意外死亡的屍體,以他殺重啟偵查。與政府對抗的群眾,與過往案件的牽連,充滿悲傷的疑團。交錯著殺意、親情、守護、罪惡感……各種人性掙扎,最後,又該由誰付出代價? 在這個炎熱的夏天像煙火一樣的記憶
 前幾天在 COSCUP 結束後,集結前往凱道時,有年輕的朋友問我說,像我這樣的六年級這個世代,對於洪仲丘這個事件的看法。
 身為一個專業級的 outlier,我不太有自信能代表其他人的想法,所以我反問他原因。 原來是因為他父母(六十多歲)有與他不同的看法。
社會上的確有一些與泛二十五萬人不同的聲音,比方像是這隻烏鴉銀正雄的言論等等。這些想法讓多數年輕朋友覺得不可思議、甚至以為是反串。


 前一陣子看了真夏方程式 小說,其中有一句話
「你討厭理科沒關係。不過我希望你記住這件事,『不知道就沒辦法』這種態度,有一天會害你犯下大錯。」
這句話是湯川學跟小朋友說的話(圖中兩人)。
哪個地方不死人?
起訴太陽好了。 
這些態度其實就是所謂的「不知道就沒有辦法 」,或者說長期以來這種態度養成的結果。

因為調查真相太複雜了,就當成是意外好了。
因為怕得罪人,不想知道真相,就當成是事故好了。
因為怕負責、就當成沒這件事好了。
因為不知道不然要怎麼訓練,就當成是沒辦法的事情好了。

類似這樣的態度你一定也有過。
回想一下這樣的經驗,然後想像一下,假如你毫無自覺,然後把這種態度當成理所當然,二十年後,你會變成怎麼樣的人?
電影預告
你會覺得太陽底下無新鮮事,這種東西以前就有過了啊!
也許不是毫無同情心,但你更害怕「改變」。
沒有探究原因、真相的習慣,你已經盲目耳聾了幾十年了,生活在充滿迷霧的世界中,每天沿著固定的路線活動。
一旦知道有人要改變這個世界的樣貌、吹散迷霧,已經看不到、聽不清楚的你,會不會感到驚慌害怕,找不到路?

甚至, 你會害怕你過去的人生都被否定掉?
我的意思是,過去這種事情一直在發生,你沒有作為、默許,
甚至可以說是某種程度的共犯,今天有人跳出來,不就顯得你過去很沒用嗎? (推薦參考東野圭吾的惡意 。不好意思,剛好這兩年東野圭吾讀比較多本。)







希望這樣解釋,可以讓年輕人了解一些老人的思路(雖然他們不見得意識到自己意識形成的過程)。

其實這樣的事件屢見不鮮,比方這也可以解釋陳為廷的禮貌問題(「太複雜的事情不懂,所以也沒辦法,但禮貌這個東西我可是小有研究喔」這樣的心態)


電影預告截圖
 一開始的文字,描述的是真夏方程式的故事,也是描述台灣這個夏天的故事。
在小說中,湯川學為了防止「某人的人生被扭曲」,決意揭開真相。
「任何問題一定會有答案。」
「但答案不見得能立刻導得出來。換成人生也是一樣。今後你會碰到很多無法立刻提出答案的問題。每一次煩惱都有價值,但沒有必要焦急想要找出答案,很多時候自己必須成長才找得到。所以人一定要學習要努力要不斷磨練自己。」
當你決定要開始追求答案時,答案不會自己跑出來找你。只有自己動手驗證、了解,答案才會是你的。
所以湯川學帶著小孩一起動手做實驗。
但科學有極限,人也有極限。找到答案的過程也許很難,也許辦不到,但像是湯川學這樣的科學家會告訴你,你不是孤單一個人,有很多人都跟你抱著同樣的問題,一起煩惱下去,直到找到答案為止。


 (鄉民關心你)

[COSCUP2013] Python, F#, Golang and Friends 投影片


我這次在 COSCUP 演講的投影片。


[COSCUP2013] Python, F#, Golang and Friends from weijr

當天因為時間改變,差了十分鐘,所以沒有把重點表達完整。

我主要想說的是,大多數想在 Python 做的邏輯流程,你都能直接在 F# 裡面用類似的思考流完成(Scala 也是)。
例外是 F# 中迴圈沒有 break,沒有 return,也沒有多重繼承。但習慣後就知道如何轉換。
反過來, F# 有了一些思考單元,在 Python 中則要被迫展開。
Go 則完全不同,如果你用 Python 的思考方式常常會不容易實作。通常你也不應該這樣做(雖然我之前就這樣做,但能做不表示要做,hack 本來就是要嘗試不該做的事)。
Go 的思考流跟 C 比較像,而且拿 C 的想法來寫 Go 會很輕鬆,因為可以寫得更簡潔。當然原本就是用 C 的想法寫 Python 的人就沒差(用 C++ 想法的人有差,物件導向)。


所以當你只常用一種語言的時候,思考其實是被限制住的。更可怕的是,你根本不會察覺這一點、根本不知道你失去什麼。

就像我在演講中舉的例子, 那些語言中只有絕對方位(東南西北),而沒有相對方位(前後左右)的人,有著絕佳的方位感。
一般語言習慣用相對方位的人,根本不知道自己失去了什麼。
(又如馬戲團被圈住的大象那個故事,或者語言中顏色名稱的種類)
所以不只要追求好的語言,有時甚至要刻意嘗試一些看似無用、怪異語言。
 

2013年7月2日 星期二

追求卓越 成功就會隨之而來


標題這句話來自電影三個傻瓜,是該片主角的名言。
在 PTT 電影板看了一些討論,意外發現,不管喜歡或討厭這部電影,幾乎沒有人真的懂這句話在講什麼,有一些人大致上模模糊糊了解,但一些關鍵點說得不是很精確。
比方下面引用某討論
: 看一部電影我通常都會想一下他想表達的是什麼  
: 三個傻瓜很明顯就是在諷刺教育體制的問題  
: 諷刺社會刻板印象與填鴨式教育中所培養出來的人 
  再說一次,導演想表達什麼大家都知道
  問題在於他的表現手法相當糟糕
: 為了考試而讀書(無聲屁)
  讀書是手段,考試是中間過程,功成名就賺大錢是 他的目的 當他的志向是如此,又怎麼能說他的方向是錯的呢?
  到頭來只是回到表面高尚的問題而已
不管正反兩方都沒有搞清楚那句話的意思,甚至還有人記成類似「追求自己想要的,成功就會隨之而來」。
先不論這句話是否正確,電影是否過於浮面膚淺,總要先了解這句話在說什麼吧!
我用下面這個實驗來說明(很遺憾,我找不到資料來源,就當成是個故事好了)。

有心理學家找一些人來做實驗,讓受試者做一些測驗,讓受試者們來比賽。想當然爾,名次好的會有獎品。

這些受試者被分成兩種狀況。
第一種是完全不讓他們知道其他受試者的目前成績或者任何資訊,只讓他們埋頭苦幹。
第二種,則是給他們即時的敵手資訊,包含做了幾題,得到幾分等等。

顯然有了競爭對手的得分、排名資訊,可以幫忙調整策略。 比方如果時間快到了,分數還差很多,顯然就需要冒險挑戰分數較多的題目,才能擠進得獎圈。
現實生活中,有大型比賽經驗的人,多少都會看一下別人積分,然後調整自己的策略吧。

所以第二種的受試者,明顯有利,看來實驗結果只告訴我們這些資訊的幫助有多大而已。
結果很意外,第一種的受試者反而表現的比第二種要好。
最簡單的解釋就是,這些額外的資訊反而會干擾受試者的表現。專心提昇自己的分數,反而更有效果。

當你的目標是世俗所謂成功的時候,就像老梗笑話講的一樣,「我不需要跑得比老虎快,只要比你快就好了」。你自然會想卡位、攻擊對手。因為你的焦點本來就是擊敗對手。
但是反過來,你的目標是提昇自我,成就偉大結果,那你的焦點會放在遠方的目標上,會放在自己身上,而不是對手身上。也只有這樣,你才有可能跑得比老虎快。

所以電影中無聲屁為了追求第一名,不只是自己唸書,而且還想辦法讓別人考不好。最後還千方百計的想要證明自己過得比藍丘好。

不過,以上只是單純解釋一下這句話。
不要忘了,電影中的所有學生都是有天份又努力的人,現實生活跟實驗條件也不完全一樣。

2013年7月1日 星期一

超人:鋼鐵英雄觀後感

(可能內含電影以及東野圭吾小說「時生」的情節)
到了我這個年齡,周圍的朋友都有了孩子。問及生下孩子的原因時,所有人的回答都是「順其自然」之類。但我更想知道的,是他們能否在孩子面前自信地問:「作為我們的孩子,你覺得高興嗎?」孩子是否會回以「我非常慶幸有你們這樣的父母」,其實是永遠的謎。我一直想解開這一謎團,這便是《時生》的源頭。——東野圭吾
小孩出生後,就很少進電影院了。上一次進電影院看的是賽德克巴萊。
昨天難得的去看了一場電影。因為很難得進電影院,所以選了應該有很多特效的超人來看。
最後的打鬥的確符合期待。令我意外的是,前半段的情節能打動我,讓我感動。這種感動有種似曾相似的感覺。回家回想了一陣子後,發覺原來近似於閱讀東野圭吾小說「時生」時的感動。
時生這部小說講的是主角的小孩患有天生疾病,即將去世前,穿越時空回到了主角年輕時,與主角相。
年輕時的父親與兒子經歷了一段旅程後,更加了解對方,而且一同成長了。
主角本身無可避免的有自身的包袱。他是一個從小被遺棄的養子,對自己的生母不諒解。
故事主軸,圍繞著孩子是父母的未來這回事(包含生父母以及養父母)。
「未來不僅僅是明天而已」。
某種意義上來說,這個未來包含了父母對於理想的寄託。

有興趣的話,可以找小說來看,或者搜尋一下網路上的書評,因為我的描述過於精簡而且不精確。

從這個角度來看「超人:鋼鐵英雄」的劇情,就很容易了解了(我情節有可能記錯,不過以下是我的理解)。
開頭的一大段,說的就是超人父親 Jor-El 如何將未來寄託於超人(Kar-El) 的故事。
Jor-El 認為有希望、有不同的可能性才有未來。除了象徵極理論意義外,超人的母星也實際上因為超人種族採取僵化的制度而即將滅亡。
很多小朋友會吐 Jor-El 很腦殘的被 Zod 刺死。其實 Jor-El 的未來都已經寄託在隨著小艇出發前往地球的 Kar-El 身上了,他也認為自己和所有這個星球上的人早已死了,所以自己的生命根本不重要了。
打個比方就像是你跟對手下一盤很重要的棋,最後你贏了,把王吃掉,比賽結束。你會在意對手惱羞成怒,翻桌把棋盤砸爛嗎?
這是一個標準的別人笑我太腦殘,我笑他人看不穿的典型範例。
當然 Jor-El 大概沒料到電影為了曾增加緊張氣氛,讓 Zod 命令屬下攻擊小艇,所以其實他還沒有確定成功。不過就算他還活著,也沒有辦法改阻止 Zod 他們,他已經達到他能完成的最好結果了。
電影中多次強調 Jor-El 夫婦認定克里普頓星上的人都已經死了。不是因為星球即將爆炸(後來他跟實際上還活著的 Zod 說過同樣的話),星球爆炸只是一個「果」而已。而是因為他們因為僵化的社會、文化,而失去了希望與未來。
「未來不僅僅是明天而已」。用 Jor-El 的話來講,就是活著不僅僅是活著而已。

另外一個被狂吐的點就是超人的養父 Jonathan Kent 之死。

Jonathan 時常叮嚀 Clark 不要顯露他的能力,因為 the world is not ready.
很多人會覺得你就像正常的超人一樣不就好了?到處救救人,成為超級英雄,大家不就會相信你了?搞什麼悲情捨身救狗,簡直太腦殘了。
其實捨身這件事情,有點像是干將莫邪的捨身煉劍,有種藝術上的必須性。 Jonathan 心中的 Clark 就是將來必有大成的偉大寶劍一樣。原料是有了,但是靈魂還沒有完善。
如同 Jor-El 一樣,Jonathan 也將 Clark 視為未來,自己信念的延續。
Jonathan 問 Clark,難道種種田不也是幫助人嗎?為什麼一定要用超能力來救人?
他的意思並不是要 Clark 待在小鎮一輩子不出去。
他的問題就只是一個問題。 如果 Clark 連這麼簡單的問題都無法很有信心、很清楚的回答,那他還沒有準備好。
世界還沒準備好沒錯,但世界永遠也不會準備好。 問題不在於世界是不是準備好了,而是你有沒有準備好面對這個不理想的世界。
可能有人會說,能力那麼強,是要準備個什麼啊。
打個比方,每天能治好一個人的疾病,什麼病都能治好。這能力夠強了吧。但你要怎麼決定哪一個人該活?先不論到時候黑道特務什麼的把你抓走,脅迫你這回事。你先要面對的是自己的良心,我真的選擇了最該幫助的人了嗎?
好吧,你可能會說,這是能力不夠強的緣故。那讓我加強一下你的能力。你每天可以選擇跟以前一樣救一個人,或者救最多十個人,但之後三十天都不能救人。這時候當有人求你多再救一兩個人的時候,之前你可以攤手說抱歉,剛才用掉了,明天請早。現在要怎麼說?因為你還不夠慘,一個月內還會有比你更需要幫助的人的機率是 0.673。
要不要再讓你更強一點,可以選擇一天都不救人,把名額存起來,可以給你利息喔!
能力越強,煩惱會越多。心理如果不夠成熟,最簡單的作法就是完全把良心丟掉,很簡單的訂個價格,一千萬起跳下標,價高者得。 額外名額三億起跳。
對巴士見死不救,也許有點慘忍。但重點倒不是救或不救,而是他是否有辦法承擔自己的決定。


更何況,前面還只是自己內心部份。直到電影最後,軍方都還對他不完全信任。
所以小時候的 Clark 會害怕的把自己關起來,說世界太大了。他的養母給了他不錯的回答,後來牧師也給他不錯的回答。他的養父也以生命做例子,告訴他堅守自己的信念,可以到怎麼樣的地步。但養父不直接給他答案,因為只有他自己去找,才能找到自己的答案、自己的定位(而不是被指定的答案,被指定的角色。不然就像原克利普頓星人一樣了)。
當然很離譜的是, Clark 居然能遇到這種干將莫邪等級的養父母。也許就像時生一樣吧,父母其實也會與小孩一同成長。

雖然情節還是有許多不完美處,深度上,我也比較喜歡「時生」給我的感動,但看的時候,的確能趕受到電影中傳達的情感。

2013年6月24日 星期一

ㄈㄈ尺正夯

 男人對 CCR 的恩怨情仇不是一天兩天的事情,我老爸年輕的時候,就做過拿石頭丟路上散步的 CCR 情侶這種熱血愛國的事情。
不過還在用 LKK 這種詞的 LKK 可能不太了解這些新詞,所以下面做個解釋整理。

  • CAR: Cross Automobile Romance 的簡寫,以前叫做車震。少數人當成 Cross Age Romance,但現在通常用 Cross Generation Romance。
  • CBR: Cross Brotherhood Romance 的簡寫,超越兄弟情誼的羅曼史。可視為甲甲或 BL的通稱。
  • CCR: Cross Culture Romance 的簡寫,有些人堅持稱為 ㄈㄈ尺(因為平常沒有其他機會展現過人的機智與知識)。
  • CDR: Cross Dimension Romance 的簡寫。通常是指二次元及三次元之間的戀情。由於跨次元通訊技術相當困難,所以通常是單方向。
  • CER: Cross Evolution Romance 的簡寫。Ex: 新聞
當然 CFR - CZR 也都有,不過由上面的舉例,相信大家應該都能舉一反三。
由於 PTT 上只有 CAR 和 CCR 有板,顯然不公,所以常常引起其他族群嫉妒與攻擊。

2013年5月26日 星期日

我的 PyCon Taiwan 2013 投影片

2013年4月27日 星期六

用正常人的方式在 Go 裡面做大數運算

Go 裡面沒有 Operator Overloading 的功能,所以雖然內建 Big Integer,但長一點的計算會變得很醜,比方說你要算個 (5*2+3*6)%10 好了,樣子就會有點像是
a := big.NewInt(5)
a.Mul(a, big.NewInt(2))
b := big.NewInt(3)
b.Mul(a, big.NewInt(6))
a.Add(a, b)
a.Rem(a, big.NewInt(10))
更複雜一點的算式就更難懂了。其他像是矩陣、分數、向量、多項式或者任何自訂的計算 type,下場都一樣悲慘。
底下是利用內建的 parser,壤我們可以用正常人的語言在 Go 裡面計算。
雖然有人會說什麼失去了編譯時期靜態檢查的特性,但真要比除錯,寫個 E("(5*2+3*6)%10") 絕對比上面一串外星文出錯的機會比較小一點。
可以到 http://play.golang.org/p/Toqkc4XY2J玩玩看。

2013年4月25日 星期四

Go 1.1 達到類似 Python 的 map 及 list comprehension


Go 1.1 的 reflect 新增了 SliceOf, ChanOf,以及 MakeFunc。
SliceOf 及 ChanOf 可以達到類似於 Python 裡面的 list 及 iterator 的功能,MakeFunc 可以搭配 Call 使用,達到類似 decorator 的功能。
以下是簡單測試了一下 Python 的 map 及類似 list comprehension 的效果。


2013年4月15日 星期一

Google Jam 2013 資格賽題目的數學證明


這篇用英文打的,就不轉成中文了。原來的題目可以在這裡找到。

1 Problem A. Tic-Tac-Toe-Tomek

No math involved, but complex number is builtin in python and go, so I use to represent “ “, T, O, X. So if , then some one won.

2 Problem B. Lawnmower

Theorem. is a possible pattern if for every .
Proof.
Can be easily proved by induction on , where .
         
     

3 Problem C. Fair and Square

Let , where and . Denote by the -th digit of , then we have .
Assume is a palindrome, i.e., for every .
Let be the coefficient of of that is,

Theorem. is also a palindrome iff for all .
Proof.
( )
Trivial.
( )
Observe that for all . We prove the statement by mathematical induction on for .
Case :
Since and it is easy to see that . So .
Moreover, we also know that has digits and hence for all .
Case :
Suppose for all , we want to show .
By the induction hypothesis, we know that for all . So
On the other hand, Therefore, , hence
  
  
Corollary. is also a palindrome iff .
Proof.
.
( )
for every by Cauchy-Schwarz inequility.
( )
Trivial.
In particular, if , then .

4 Problem D. Treasure

Let be the set of all key types. Assume .
Construct a directed graph as following:
  • iff we starts with at least one key of type .
  • If , then iff there is a key of type in a box of type . for every palidrone by Cauchy-Schwarz inequility.
Denote by the number of boxes of type and the total number of keys of type (including the keys you start with and keys in boxes).

Theorem. All box can be opened iff for every , and there is a directed path from to in graph .
Proof.
( )
If , then we don’t have enough keys of type to open all boxes of type .
If there is no path from to , then it means we are unable to get any key of type .
( )
We prove this by induction on the number of boxes. Denote by the number of boxes.
Assume for every , and there is a directed path from to in graph .
Case :
Then all vertices in are leaves except and the type of the only box. So there must be an edge from 0 to the type of the box.
Case :
Suppose the theorem holds for the case with boxes.
There are at least one . Consider we open a box of type (that contains a key of type if possible). Assume we destroy the key and the box just opened, then we have a setting of boxes. In this setting, we still have for all . Let be the directed graph of this -box setting.
If , then all children of in become children of , can still reach all other types in .
Assume .
If , then we can open a box of type that contains a key of type .
Otherwise, because , we still hold at least one key of type after we open a box of type (and destroy the key).
Either way, . Therefore, for every child of in , either
1. (if a key of type is in the box we just opened), or
2. and so there is a path from to and then to .
So can still reach very vertex in .
By induction hypothesis, the remaining can also be opened.
  
  
By the proof of the theorem, there is a simple algorithm to open all boxes: open any box unless you have just one key of that type and box does not contain a key that can open itself.
However, this algorithm may not yield a "lexicographically smallest" way to open the boxes.
The solve the problem, you should open the box with smallest number such that either this box is the last one of type or there is still a way to get a type key.

2013年4月13日 星期六

悖論的演講投影片


這是今天在 IMO 第二階段選訓營的投影片內容,簡報內容改自以前通識課的演講。但聽眾不同,所以內容還是差異不少。一些東西有講,沒有在簡報裡。許多圖取自 wikipedia 的 CC 圖片,投影片裡沒有註明,但是演講時都會口頭提到。



2013年4月7日 星期日

魔術師的小朋友問題

(圖由 seanmcgrath CC-BY 授權)

緊接著 Party 魔術的互動表演後,你拿出繩子準備表演「剪繩還原」。

預想著熟悉到不能再熟悉的程序,你的嘴角不禁微微上揚。
如果說有什麼讓你得意的表演,那這套「剪繩還原」就是。
在幾個精心設計的橋段和對白之後,繩子將被觀眾剪成幾段。
然後,你會對繩子吹口氣,將早已由觀眾剪斷的繩子回復原狀。現場的氣氛將達到最高潮。
這不是連一般業餘魔術師也會一點的剪繩還原效果。
你手中的這條繩子,在配合獨門技法和心理鋪陳後,將會充滿不可思議的魔法。
這不是普通的剪繩還原,這是你的剪繩還原。
繩子是貨真價實的被剪斷了,而最後,繩子也紮紮實實的還原了。過程絕對透明,完全沒有任何作弊的可能。

你還記得上次表演後,觀眾驚奇的表情,不可置信的反覆檢查繩子,企圖找到一點蛛絲馬跡。

當然,他們沒有找到。

在確定沒有任何作弊的可能後,像數學證明一樣的必然,觀眾們只能承認事實只有一種可能性,那就是繩子真的還原了。

這樣,他們心滿意足的做出結論(或更貼切的說,再度確認):這個世界上確實存在著超越人類理解的神秘事物。

晚上,他們將伴著好夢入睡,以愉快的心情面對未來生活中的挑戰,懷抱希望!
你並沒有花太多力氣,就能記住了這些細節。因為每次表演後都是一樣的情形!沒有例外。
即使是最疑心頑固的觀眾,也一樣。就算是剛才那幾個小搗蛋鬼也一樣。
因為這是你的責任,你身為魔術師的責任。所以你希望能讓觀眾感受到驚奇帶來的愉悅感。

而「剪繩還原」從來沒有讓你失望過!

就在你拿出繩子後,突然聽見一位小朋友在台下大聲說:「我看過了耶...你是不是要學電視上大魔競的剪繩還原?」。

「天哪!我連剪刀都還沒拿出來啊。」你心中跑出來這樣一句話。

這麼直接的把梗破掉,那還怎麼變?好好的魔術就這樣被浪費了?我的剪繩還原就這樣被糟蹋掉了?

不過,那不是你心中跑出來的第一句話。雖然很容易就被忽略掉,但你腦海浮現的第一句話是:「我想拿個榔頭把釘子鎚下去」

一般人大概只會把它當成腦中那種不經意出現的靈光。因為和現在遇到的危機毫無關聯,所以很容易就一閃而過。
但這句話並沒有在你腦中一閃而過。你不是一般人。事實上,你非常清楚它是怎麼跑出來的。

「如果榔頭是你唯一的工具,那你會習慣把問題當成是釘子。」這是心理學家 Abraham Maslow 的名句。
其實你並不清楚 Abraham Maslow 和他的需求層次理論是什麼,又或者他在什麼場合下說過這句話名言。

你也不想知道。

你是在「如何處理搗蛋者」這本書的介紹裡看到這句話的。
也許在潛意識裡,你把小朋友當成了釘子。
不過,不需要什麼人本主義理論,也知道在這裡拿榔頭打小孩,似乎不太適當。這還真是個難題啊。

相當然爾,書裡應該有提到處理這種狀況的方法。

問題是你沒看過。

這次,你要靠你自己解決這個問題。

他為什麼會講這句話?他想說些什麼?
也許他完全沒有惡意。也許只是像「蔡依林,我在電視上看過耶。你是我電視上看過的同一個蔡依林嗎?」或者「搓牌我知道耶,你要學電影上賭聖的特異功能搓牌嗎?」。
你想,大概只要回答說「半對半不對,你等下耐心看看就知道我的意思了」
當然,你不用解釋半對指的是「剪繩還原」,而半不對則是說你不是學電視的,你的程序和梗更高級,更有趣。但只要這樣利用話語的模糊性,就能繼續保持懸疑性。
但問題的不光是他想說什麼。觀眾不只一人。更重要的可能是其他人怎麼解讀他的意思。

所以,你想好要怎麼回答了。

「小朋友,你好厲害喔,你一定了看很多電視吧」明褒暗貶,說不定等下回去,他一個星期就只能看一個小時電視了。算是給搗蛋者小小的懲罰吧。
不過小朋友顯然只能看到光明的,高興的點了點頭。

「所以,有多少人曾經在電視上看過用繩子魔術的?沒有關係,舉手給大家看看。」
當然,你注意到說的是「繩子魔術」,沒有必要把「剪繩還原」的效果一直重複先講。你也可以舉例說,像是綁人、打結這類的,提醒大家繩子的魔術有很多種。
但是現在,你覺得光是這樣說應該就夠了。你很小心,你很確定你還沒有真的承認你要變「剪繩還原」。當然你也絕對沒有否認。
也許跟一般人的常識相反,但魔術師其實是不能說謊的。至少不應該在表演時說。
你也注意到你說的是「繩子魔術」而不是「魔術」。因為你也不想有太多人舉手。雖然那不會是太大的問題。

「好的,那有多少人在現場看過呢?不只是在電視上而已喔!請舉手。」
其實這本來就不是什麼大問題。你的表演本來就有價值,你根本不需要誇大。現場看到的本來就比電視上看到要好得多。
籃球轉播跟現場看哪個好?
演唱會轉播跟參與現場演唱會哪個好?
在電視上看美國跟去美國哪個好?
這些是每個人都知道的常識,你只要提醒他們而已。
還是有好幾個人舉手,現在魔術的風氣挺不錯的,比十幾年前好太多了。但是你也不排除其中有幾個是想表現自己見多識廣的那種類型。

「那有多少人不只在現場看過,而且還上台當助手幫忙?」
剛才殘餘的幾隻手也放下了。不過即使還有一兩個人舉手也無妨。
因為很快就會被一堆手淹沒。
「現在,」你停頓了一下,「有誰想要上台來,不但能當助手幫忙,近距離看,而且還有機會施展魔法喔!想要上來幫忙的朋友,請舉起手來。」
經過你的提醒,觀眾意識到你表演的價值,瞭解到這個機會有多難得,也瞭解到拿電視上的表演跟現場表演比有多蠢。
你不用花太大力氣,因為這些是大家本來就知道的事實。
在許多擺動的手之中,你挑了一個適合當助手的觀眾上台。當然,你聽得到許多落選者帶點失望的聲音,但當你要他們為上台來幫忙的觀眾鼓掌時,掌聲依然非常熱烈。
你知道他們已經把自我移情到上台來的觀眾身上,一個因為這個難得機會能現場、即時參與神秘魔術表演而變得不平凡的平凡人。

接下來,修改一下程序吧,你想。改成讓觀眾吹口氣,讓繩子還原比較好。
因為你剛才說過,不但讓他上台當助手,還有機會施展魔法。也許跟一般人的常識相反,但魔術師其實是不能說謊的。至少不應該在表演時說。
咦,還是只能在表演時說謊?
你也搞不太清楚了。

──
2008年的舊文修改重貼

2013年4月2日 星期二

沒國際觀是因為媒體很爛,那然後呢?

最近你可能看到不少人在轉這篇清大彭明輝教授部落格的文章:台灣有一種病,很深,深到…………。內容大致上是說,台灣人欠缺國際觀,並非因為英文很差,而是因為媒體太爛。

我並非不同意他觀察到的現象。如果媒體增加國際新聞以及有深度的報導,的確會提升整體民眾的國際知識。

當然很多人會開始轉台,轉去看新聞龍捲風、台灣龍捲風或者狂愛龍捲風之類的東西。
但至少,看新聞鬼扯節目可以增加星際觀,還能訓練資訊過濾的能力。
本土長壽劇裡早晚會有跨國企業鬥爭,然後牽扯到國際政治軍事角力的劇情。順帶還可以介紹一些醫療科技,比方電子義肢、電子眼、換臉、複製人之類的,對劇情鋪陳應該很有幫助。
偶像劇也可以有像是與 CIA 情報頭子的浪漫邂逅,相知相遇、進而定情的故事。當然中間會穿插許多跟國際情勢息息相關的劇情,比方男主角有一筆征討利比亞的私人軍費無法兌換的落難情節,獲得女主角援助後,主角擊敗格達費,然後駕著直升機前來求婚。

所以我完全同意如果媒體增加國際深度,就會增加整體國民的國際觀的這個因果關係。
但全世界最沒用的就是這個「如果」。
這樣的說法,就像說:你被曬傷,並非因為你沒擦防曬油就出門,而是因為太陽太大。如果太陽沒有那麼大,就不會被曬傷了。

有用的是,要怎麼讓如果不再是如果。

媒體太爛已經是常識了。但原因呢?要怎麼改善?
媒體中並非沒有外國新聞的資訊,如文茜世界週報、公視新聞、還有一些時段比較少的國際新聞。但為什麼這麼少?是財團控制?還是民眾口味的問題?還是市場太小?
我不知道,但有很大的機會是,暫時很難改變這個情況。

就像我們知道地球與太陽的關係並非宇宙中星球的常態,但我們就是生活在地球上啊。

就是因為台灣媒體很爛,才要加強英文或其他外文能力,特別是聽讀能力。這樣,才能突破限制,得到需要的資訊。

當然我們也許會希望很多人來翻譯資訊,但我們真的願意讓這麼多有用人力來做這些事嗎?還是讓他們做些更有創造力的事情?這是需要計算的。

要改變媒體,並非不可能,而且是持續要做的事。但對個人來說,加強英文能力是現階段就可行,可以突破媒體限制的作法。

在你還沒想到怎麼讓太陽不要發出紫外線之前,看到別人宣導擦防曬油或著撐傘,其實不用憂慮別人不知道真正的原因是太陽太熱。
畢竟,如果不知道太陽太熱,為什麼要擦防曬油或撐傘?

2013年3月23日 星期六

台灣議事格鬥規則草案

舊文重貼。最近由於 Google Reader 要廢止,所以回頭看了一下之前的一些文章。Google Reader 裡面會保有一些刪掉的文章,這是其中一篇,原始日期是 2007/11/10。
現在看來,似乎一段時間沒有國會打架的新聞了?



影片是以前弄的 TNND (Tjw's Numa Numa Dance) 不過沒保存,所以連到別人的 youtube。
這部影片當初引起了一些迴響,部份的人覺得這樣「有損台灣形象」。我覺得我們的國會議員都是敢作敢當的好漢子、女英雄。他們既然敢做,就不怕別人看。所以各位就不用替他們擔心了
附帶一提,片頭那些有點蠢又突兀的動畫效果,原意是為了「支持台灣軟體」(不過後來不那麼確定這是台灣軟體了)。
事隔多時,國會亂象沒有什麼明顯改變,現在又開始了烏煙瘴氣的立委選舉活動了。
趁著這個機會,我在此提出一項建議,我們需要一個議事格鬥規則
我們在生活倫理和公民道德裡面學過,從小也都知道有所謂的議事規則,小時候也都開過班會。
但是議會裡面的議事怎麼跟我們從小學到的不一樣?難道議員們開班會的時候都翹課出校考察嗎?大家也都有這個疑惑,所以才有真立院無雙立院格鬥技聯盟
為什麼?為什麼?為什麼?就是因為跟現實不一樣,才要寫在課本裡啊!覺悟吧,這就是現實社會。
不過各位不要誤會,議會很亂、議員很忙這件事情不是我們獨有的,只要有人議事,都有機會擦槍走火,多少都有類似非理性的衝突(所以 to 在 Youtube 留言的一些祖國同胞:你覺得像猴子嗎?那是因為連猴子都擁有議事的自由!)。況且我們的議員體力也不是那麼好,鏡頭前面打架,鏡頭後面還是要喘氣喝茶的。他們那麼拼命上鏡頭為什麼?因為這是人類天性,很多人就像某些偏激的極限傻蛋,崇拜很的人。殊不知衝到一個境界就是腦殘(運氣好的話,外加身殘)。

好吧,講這些沒有建設性,所以回到原題目,我希望哪個立委哪個黨,能夠幫我們提出適當的議會格鬥規則,因為:
  • 補完議事規則:之前的院長一直不願意在暴亂時,動用警察權,那什麼時候該用?不要誤會了,我同意他們的判斷。佔據議事台、拿水潑人,這些絕對是合理的議事策略。但是明顯的,現在的議事規則不夠完整,沒有規範這些動作,所以我們應該補完它。
  • 這樣我們才知道誰贏了:每次打完之後,都是一團混亂,實在辜負了議員們的努力,至少要讓我們知道誰贏了。
  • 這樣才知道要選誰:承上,知道怎樣才算贏,我們才容易根據戰績,知道要選誰,各黨的初選也可以改成初賽,提倡全民運動。
  • 讓議員們無後顧之憂:現在議員們雖然有一些言論免責權什麼的保護,但是我想如果在打群架的時候打死人,可能還是有法律上的疑慮。有了正式的格鬥規則保護,再簽下生死狀,生死兩不追究,後果概不負責,議員們才能更加發揮所長、盡情揮灑。
  • 保留歷史的回憶:過往立院諸公,經由媒體轉播,伴隨我們成長,已經是我們共同的文化遺產了,我們很怕他們哪天說不打就不打了。經由格鬥規則,一來可以鼓勵議員們繼續延續傳統,另一方面,也可以將這項傳統運動從業餘邁向職業化做準備。
  • 規範武器:現在格鬥時,沒有規範哪些武器可用,所以有歧視窮人的嫌疑。國民黨黨產那麼多,萬一他們買了一堆高價武器怎麼辦?會造成格鬥上面的不公。所以應該規定比方說哪些種類的茶杯、麥克風可以用,順便還可以出紀念款,讓民眾購買,增加國庫收入。
我相信我們一旦完成這像首開先例的創舉,一舉解決這項自有民主制度以來,困擾世界各國的問題,必然能得到世界各國的尊敬。到時候像聯合國這樣不公不義的廢物組織也可以廢掉了,就像以前的國聯一樣。由世界格鬥聯盟來領導地球吧。

2013年3月21日 星期四

Py Girl 第三圖 及 PyCon Taiwan 議程即將公布

可至 PyCon Taiwan 官方部落格查看關於議程投稿最新狀況的公告。
http://tw.pycon.org/2013/zh/blog/2013/03/21/pycontw-2013-cfp-report-zh/

這張圖如之前,也是用 blender 畫的,不過背景是用 Gimp,一些小瑕疵也用 Gimp 修掉。



Py Girl  模仿 (或者可以算是 cosplay?) 涼宮春日


黑白漫畫風格,不過鼻子不見了

Blender renderd and edited in gimp




對白改寫自漫畫第十三集,開頭的前幾頁。該情節發生在「戴著總編輯臂章的魔鬼」篇(日文漢字:編輯長一直線)。
這篇中,涼宮春日積極邀稿,結果意想不到的,因為到處邀稿,等於變相宣傳,使得社刊出刊後一掃而空。

涼宮春日「將想像現實化的能力」,一直是我和許多人的理想,不管是身為魔術師還是其他。社會中充滿著「既定事項」和「禁止事項」,「大多數人都是安於現實的」,但「有趣的事情是不會自己從天而降的」,所以,「改變自己」,「普通的日子讓普通人去過就好了」。

Change the future 就是 PyCon US 2013 的主題。
與我原本提議 PyCon Taiwan 的 from future import everyone (然後 2014 -> from everyone import future) 不謀而合(現在是 from future import everything )。

官方公告最後所說的未來人、外星人、超能力者,除了是涼宮梗外,也是有所本的,
  • 未來人:能看到未來、有遠見的人,年輕人、有潛力的人,不被未來淘汰、創造未來的人。當然長得像朝比奈實玖瑠的人不在此限。
  • 外星人:能跳脫常規的人(Heroes 梗,其實之前這個部落格有一篇「外星人與機器人」討論這個主題)
  • 異世界人:外國人,不同文化的交流是有必要的。不過我寫那篇公告的時候漏掉了。
  • 超能力者:這點就不用說了吧!
不過公告中解釋那麼多就太囉唆了,所以記在這裡。

2013年3月20日 星期三

為什麼 Google 不該關掉 Google Reader

圖片來源: graveyard of dead google products

Google 將 Google Reader 關掉,是一個極為愚蠢,並且將會長期傷害 Google 自己的舉動。

表面上看起來,是使用者在依賴 Google Reader,是 Google 在主導。當 Reader 關閉時,哀號、抱怨的是使用者。
而且,使用者的哀號是無理取鬧。 Google 又沒收你錢,他又沒欠你,你憑什麼對他頤指氣使的要求?

實際上正好相反。
請注意, Google Reader 的確沒有跟使用者收錢。但同樣的,使用者也沒跟 Google 收錢。

你說,什麼什麼,使用者跟 Google 收什麼錢啊。

Google Reader 提供的是資訊整合的服務,本身是種無形的東西,甚至連資訊也不是 Google 自己本身生產的。同樣的,使用者也提供給 Google 一個無形的東西,那就是信任,或者說忠誠度、習慣性。

在使用 Google Reader 的同時,你不會覺得上面那條 "+xxx 搜尋 圖片 ..."黑棒子礙眼。甚至還會順手的使用上面的連結前往相關網頁。因為你不討厭 Google。

仔細想想,隨隨便便我們就能找到一堆 Reader 替代方案。就算沒有替代方案,也一定有人會填補這個空缺。我看到這個消息的第一個想法就是想要自己寫一個替代方案。

所以事實上不是使用者依賴 Google Reader,而是反過來。

你說,沒那麼嚴重吧? Google 還有很多更受歡迎的產品。

不,就是那麼嚴重。
想想,以後 Google 推出任何新產品時,比方說最近傳說的 Keep (Goolge 版的 Evernote )好了,你的第一個想法一定是"這會不會是另外一個 Reader?"。會不會把其他產品打掛後,自己又不做了?

那 Google 也不是第一次關掉產品了,為什麼這次才會有影響?

原因之一是,這次 Google 沒有好的替代方案,而且 Reader 從 2004 到現在,時間很久。

不過更重要的是,Goole Reader 的使用族群偏向習慣吸收大量資訊的人。這些人傾向自己主動追蹤吸收並處理第一手資訊,而不是別人消化、過濾後的資訊或感想。這群人中的一大部分也是資訊散布、製造者,會將資訊過濾處理後統整分析後,加上自己的意見散布出去。

簡單的說,他們有影響力。不見得會直接發表對 Google 不信任的看法,不過一旦不信任的種子在心理種下,這個不信任感會有意無意的隱藏在往後他們所有的論述、報導之中。

這正好和原本當他們在使用 Google Reader 時,潛意識中有著對 Google Reader 信任時相反。

所以我說,是 Google 該感謝使用者免費使用 Google Reader ,是 Google 依賴使用者使用 Google Reader,是 Google 應該或者將要哀號,而不是反過來。