2010-11-28

Wii: Super Mario Bros. 25th Anniversary 超級瑪利歐25週年之紅色限定版 開箱

四年前,Wii 在日本發行之後,體感操作的遊戲風靡了全世界,帶領了 PS3 和 Xbox360 跟著推出各種體感裝置與遊戲。不能免俗地,我也在三年前從日本買了一台 Wii 讓家中長輩使用。然而,我一直缺少一臺屬於自己的 Wii,其中最大的原因是:Wii 只有黑色白色機體,卻沒有我喜歡的紅色

在今年11月初時,我的同事與其女友去日本旅遊,將他們的寶貝貓咪託我代養一週(工商服務時間,新竹/竹東貓咪代養,每週新臺幣 $500)。他們在日本碰巧看到了紅色限定版的 Wii 和 NDSiLL,也知道我喜歡紅色的東西,很貼心的詢問我有沒有需要。這是我夢寐以求的款式啊!二話不說就請同事幫我帶回來了,實在很感謝他們的幫忙。

超級瑪利歐25週年紀念版,2010-11-07 發售,共發行 NDSiXL 與 Wii 兩種限定版主機,活動官方網站。以下,就是 Super Mario Bros. 25th Anniversary 之 Wii 紅色限定版,開箱照。

這臺 Wii 剛下飛機
這臺 Wii 剛下飛機

外盒正面
外盒正面

外盒背面
外盒背面

內建超級馬利歐
主機內建超級馬利歐遊戲(遊戲中?方塊的字會變成25)

外盒側面
外盒側面,說明內容物以及注意事項
「Color aka」

打開盒子
打開盒子側面,發現盒內印刷也有巧思
「THANKS TO YOU ALL!」

第一層內容物
第一層的內容物,那張白色的小紙片是零售店的保證書

第二層內容物
第二層的內容物,在主機機身上方的是原廠贈送的拭鏡布

組裝後
組裝起來的照片

主機+主副手
主機和主副手一起入鏡

主手手把
主手手把,內建動感強化器
「Wii MotionPlus INSIDE」

NDSi和PSP
無關主題的照片

2010-11-04

Ruby 驅動外部程式的方法: %x, exec, system, IO.popen

以下外部程式名稱以「external_cmd」為範例
Linux 前景執行外部程式指令:
# external_cmd
或以背景執行外部程式:
# external_cmd &

1. %x 是最普遍的方法,用在想要取得外部程式的標準輸出結果,但該外部程式不需要標準輸入時。另外,無論是否以背景執行該外部程式,呼叫 %x 的 ruby 程式皆會等待外部程式結束,才會繼續執行。
Ruby 範例程式碼如下,執行外部程式的輸出會儲存在 external_cmd_output 變數內。注意{}裡面並不需要再用雙引號來框住指令。另外,%x 方法和 `` 語法相同。
external_cmd_output = %x{external_cmd}
external_cmd_output = %x{external_cmd &}
external_cmd_output = `external_cmd`
external_cmd_output = `external_cmd &`


2. exec 方法會在執行外部程式完畢以後,終止呼叫 exec 的 ruby 程式,不傳回任何值。
Ruby 範例程式碼如下。
exec "external_cmd"
puts "never get here." # 這一行的 ruby 程式不會被執行


3. system 方法會在執行外部程式完畢以後,傳回執行的結果,成功則傳回 true,失敗則傳回 false。system 和 %x 方法的不同之處,除了傳回值不一樣,我認為使用的時機最大的不同點在於執行背景程式的時刻。以 %x 背景執行外部程式時,會等待該外部程式結束後,再執行下一行 ruby 程式;然而以 system 背景執行外部程式時,在傳回執行結果後,無須等待外部程式結束即執行下一行 ruby 程式。
Ruby 範例程式碼如下,執行外部程式的結果(成功與否)會儲存在 external_cmd_result 變數內。
external_cmd_result = system "external_cmd"
external_cmd_result = system "external_cmd &"


4. IO.popen 方法適用於外部程式需要標準輸入的時候,如互動式的外部程式。若 IO.popen 執行的外部程式需要標準輸入時,在標準輸入串流被關閉後才會開始執行。
Ruby 範例程式碼如下,其中「text of output」這段文字會被輸入到 external_cmd 的標準輸入,另外 external_cmd 的標準輸出會被 puts 印出。
IO.popen( "external_cmd", 'r+' ) do |pipe|
    pipe.puts "text of output"
    pipe.close_write
    puts pipe.read
end