Sunday, February 23, 2014

山神交代, 有人放屁回家等待!

圖片引用自宋少卿官方粉絲團
山神交代, 非常厲害, 出門在外, 手腳要快, 捕魚打獵, 不可懈怠,
遇到山豬趕快閃開, 有人放屁回家等待.
這就是有名的嘎督吧咕嚕嘎啦經阿~
睡前有閱讀的習慣,
但有時候晚下班或是覺得眼睛太累, 看書反而是個負擔
這時我會聽相聲!

躲在棉被裡, 聽到有趣的段落會忍不住笑的滾來滾去(屢試不爽), 然後慢慢的睡著!

相聲瓦舍的作品裡頭我最喜歡的段子是台灣原人
上面的嘎督吧咕嚕嘎啦經是描述原住民打獵的禁忌
但我始終覺得這是瞎編的!

直到... 我看了串起莽口葛艾才發現這是真的(雖然段子中是阿美族在花蓮打獵)~
這本書是在講魯凱下三社族群(萬山多納茂林)的傳統習俗以及各種生活智慧.
在茂林的話, 獵人們較常依鳥占判斷, 若出發時遇到ido(繡眼畫眉)往右飛或是在獵人的右方鳴叫,
代表著獵獲吉兆; 相反的話, 是告誡獵人不宜出發,
...
此外出發當下, 若有同伴打了噴嚏, 或是放屁, 這也是不詳預兆, 表示應當折返.
真是聽相聲長知識啊!

Saturday, February 08, 2014

Scala筆記: implicit的奧秘

[1] implicit是什麼? 如何運作?
implicit具有型別轉換的功能, 但他的特殊之處在於, 他是由compiler觸發,
在compile階段若是發現型別相關的錯誤, complier會試圖利用宣告為implict的東西轉型藉此完成compile.

此種自動轉型有以下幾個規則:
1. Marking Rule: 只能使用被宣告為implicit的東西
- 可以是任何variable, function, 或object
2. Scope Rule: 只能利用在同一個scope中, 或是被宣告在companion object可見的scope中, 而且必須能用一層identifier呼叫(用以下例子說明比較清楚)
scala> object test2{
     | implicit def doubleToInt(x: Double) = x.toInt
     | }
defined module test2

scala> object test{
     | import test2._
     | }
defined module test

scala> import test._
import test._

scala> val i: Int = 3.5
<console>:12: error: type mismatch;
 found   : Double(3.5)
 required: Int
       val i: Int = 3.5
                    ^

scala> import test2._
import test2._

scala> val i: Int = 3.5
i: Int = 3
3. Non-Ambiguity Rule: 若是在scope中有超過一種implicit轉換的方式, complie會失敗.
4. One-at-a-time Rule: 一次只能套用一個implicit轉換, chaining(ex: A->B->C)是不行的!
5. Explicits-First Rule: 明確的型別指定具有絕對的優先權, 只有錯誤發生時, compiler才會透過implicit的方式修補.

[2] 甚麼情況會觸發implicit檢查?
1. conversions to an expected type: 型別不對時
scala> val i: Int = 3.5
<console>:7: error: type mismatch;
 found   : Double(3.5)
 required: Int
       val i: Int = 3.5
                    ^

scala> implicit def doubleToInt(x: Double) = x.toInt
doubleToInt: (x: Double)Int

scala> val i: Int = 3.5
i: Int = 3
2. conversions of the receiver of a selection: 找不到對應的函式
- 當沒有某個method時, 會利用implicit去轉型, 檢查是否有對應的method

3. implicit parameters: 找不到對應的參數
- 被宣告為implicit的參數, 在呼叫時沒有被傳入時, 會去尋找被宣告為implicit的東西(有點類似default值的感覺)

[3] 什麼時候適合使用implicit
當你的程式想要與一些現成的library整合時, 就例如你可能有一個購物網站, 系統定義了使用者各種屬性, 也有許多針對使用者資料的操作已經完成. 但現在你的網站希望能提供Facebook或Google帳號登入, 但他們的使用者屬性各不相同, 這時你可以加入implicit的方式自動把透過Facebook或Google api拉回來的型別轉成你的使用者型別, 也同時可以直接享用你已經寫好的各種method.

ref:
- Chapter 21 of Programming in Scala, First Edition Implicit Conversions and Parameters
- A Tour of Scala: Implicit Parameters
- Implicit Classes
- Scala Implicit Conversion

Tuesday, February 04, 2014

西班牙葡萄牙我們來惹 (5) Sevilla主教堂, 希拉達塔, 西班牙廣場

上篇說到驚嚇的事情即將發生~

西底! 話若抹講透支, 目屎是揮莫離啊~~~
當我睜開惺忪的雙眼, 小大仍默默的開著車, 我們已經到了Sevilla. 但歹誌並不是像憨人所想的那麼簡單(到底要用多少鐵獅玉玲瓏梗 囧)
我們的GPS圖資不完整(其實在Ronda就有徵兆了, 但當時沒放在心上), 雖然高速公路沿著指標到了Sevilla, 但我們並不清楚實際上的位置在哪(雷擊)
加上四周沒什麼路燈, 要看路牌對地圖找路幾乎是不可能.
但我們還是默默的前進, 到了一個很大足球場附近, 剛好有比賽所以周邊有些人群就連忙把車靠邊停下來問路.
(我感覺是在這裡, 離鬥牛場跟西班牙廣場超近搭~)


問了大致的方向, 勉強往預定想住的旅館開
感覺到四周越來越熱鬧, 餐廳擠滿了人路邊也充滿了喧譁聲. 本來還挺開心的.
不過路也越來越小, 時不時出現單行道讓我們有種鬼打牆的感覺,
這時我們心知大概沒辦法找到那間旅館了.
也沒關係, 反正沒有真的訂, 放棄反而有種稍微鬆口氣的感覺,
只需要另外找住的地方就好了嘛. 附近這麼多!
但歹誌又再度不是像憨人所想的那麼簡單(還要用幾次XDD)
我們到Sevilla這天是禮拜五, 是歡樂的週末夜來著!
問了大概快十間旅社, 不是房間都客滿了就是停車要付一個不可思議的價錢,
此刻真是覺得身心俱疲.
好不容易找到一個舊舊的hostal附近也有公共停車場, 當場都要落淚了
於是我們簡單的梳洗後就迅速的跳上床休息啦!

睡得飽飽才起床, 在附近悠閒的吃了早餐, 在開始遊覽這個城市之前還有些事情得要先處理.
謹慎的查地圖規劃路線, 先把行李寄放在今晚訂好的民宿之後得要先還車,

接著要買隔天前往葡萄牙的車票
在車站看到了這巨大的塗鴉, 沈睡了的娃娃

還有老皮, 在西班牙也很紅柳~

搞定一切之後就進入觀光模式啦!
路上看到生意好的冰淇淋店是一定要吃低
一手一支多開心啊哈哈哈


來到Sevilla主教堂(Catedral De Sevilla)排隊等著進去參觀
這可是世界最大的歌德式教堂, 同時也是世界第三大教堂哦! 相當厲害!

教堂裡面有哥倫布的墳墓

教堂的原址是清真寺, 因此在改建時沿用了一些回教建築的元素,
最特殊的就是希拉達塔(La Giralda)原本是喚拜塔後來被改為鐘樓.
我們沿著旋轉的斜坡往上走, 因為要讓人可以騎馬到塔頂, 所以採用斜坡而不是階梯, 真是挺酷的.
塔頂的風景超棒的啊!

在這邊狂拍照, 但是大鐘真的很難拍的好(汗)

離開希拉達塔之後到了教堂外面的橘子庭園(Patio de los Naranjos)
可惜沒辦法看到結實累累的橘子, 只在地上看到零星兩三顆


接著我們往西班牙廣場(Plaza de España), 路上碰到許多馬車.
馬車也是遊覽Sevilla的方式之一, 幾個大景點周邊都有馬車站, 就跟計程車排班一樣, 挺有趣的.
不過有一點無法掌控的就是馬兒想要排泄的時候你擋不住啊XD


西班牙廣場呈現半圓形, 中間有座噴水池, 建築周圍有小河可以划船, 感覺超愜意搭.

廣場與建築間有橋連接, 每座橋都有超美的彩繪


挑高的迴廊也超美的呀~


轉眼間也到了黃昏, 我們隨意找了間餐廳吃點小東西
感覺是主打精緻甜點所以對他們的鹹食沒有抱太大的期待
但店員推薦的炸魚搭配薄荷醬汁超好吃搭還喝了此行的第一杯Sangria(開心)
接著就是期待已久的佛朗明哥舞表演囉!

小大版: 西班牙佛朗明哥之最 Seville

西班牙葡萄牙我們來惹 (2) 太陽海岸 Costa del Sol: Nerja, Frigiliana, San Pedro
西班牙葡萄牙我們來惹 (3) 藍色小精靈村Juzcar以及鬥牛的故鄉Ronda
西班牙葡萄牙我們來惹 (4) 快閃直布羅陀Gibraltar以及雪莉酒的故鄉Jerez
西班牙葡萄牙我們來惹 (7) Sevilla城堡