2014年12月29日 星期一

亞洲的範圍到哪裡?

Hao Chuang:

中國屬於亞洲?或者說亞洲的範圍到哪裡?這實在是一個有趣的事情。

當 asia 這個概念剛剛形成的時候,拉丁人的世界觀是圍繞著地中海的。海北岸稱為 europe,南岸稱為africa,東岸稱為asia,西邊則是大西洋。但其實這些詞都來自於希臘而不是羅馬人發明的。

對拉丁人來說,europe 的範圍就是羅馬帝國的範圍,不在帝國領域內的土地應該叫做「蠻荒」而不是歐洲的一部份。而非洲的邊界是撒哈拉沙漠,沙漠以南?抱歉那不具有意義。

所以說,那時候的asia,頂多包括兩河流域,連亞歷山大(非拉丁人)曾經征服的印度都不見得算是「asia」的一部份,更不用說當時是否知道中國的存在?

歷史上第一次的東西交流,大概是中國漢朝,也就是羅馬帝國成立以後的事情。在那之前,asia的居民也許聽過東方的東方的東方的故事,但直到絲綢之路打通前,東方終究只是個二手的傳說,沒有任何實質的證據(像是絲)。

直到中國漢朝、羅馬帝國這兩個穩固、長久的帝國同時成立之後,東西方的交流才成為一種常態,而不再只是少少少數冒險家口中的傳說世界。(對雙方來說都是這樣。)

原網址:https://www.facebook.com/tzyhao/posts/10203487205605759

2014年12月27日 星期六

台灣歷史相關影片

台灣史望春風


李筱峰 - 唱台灣歌.說台灣史


20140508 歌曲與台灣史-李筱峰教授主講

平埔族相關的資料

文章:

留下原住民地名的平埔人漢人部落
漸漸消迭的內門平埔族
FAVORLANG,消失在濁水溪口的神祕獵鹿人

【沒有名字的人】系列 粉絲專頁
【沒有名字的人】我媽問我:你是這麼想當原住民喔?
【沒有名字的人】如果有一天,我們拒絕在歷史裡流浪
【沒有名字的人】小時候,阿爸臥房的木門掛了支獵槍喔
【沒有名字的人】04 陳以箴

來看一個漢化的平埔公廨~高雄內門大埔公廨

影片:

20100714獨立特派員第155集{以祖先之名} part 1/2


20100714獨立特派員第155集{以祖先之名} part 2/2


平埔族第一次大遷徙(共有四部,第一次到第四次)


商業相關的書單


  1. 給予:華頓商學院最啟發人心的一堂課
  2. 左派商學院:以人為本,勇於創新求異
  3. 長尾理論最新增訂版 : 打破80/20法則
  4. 免費! : 揭開零定價的獲利秘密
  5. 小眾,其實不小:中間市場陷落,小眾消費崛起
  6. 沃爾瑪傳奇

教育相關的書單

  1. 你的孩子不是你的孩子:被考試綁架的家庭故事 一位家教老師的見證
  2. 教育應該不一樣

中國相關的書單

  1. 沒有墓碑的草原:內蒙古的文革大屠殺實錄
  2. 野心時代:在新中國追求財富、真相和信仰

2014年12月26日 星期五

正確的英文縮寫

例如:「e.g.」是拉丁文exempli gratia的縮寫,意思是舉例來說、例如、譬如、比如,英文也就是for example或for instance。

等等:「etc.」是etcetera或 et cetera的縮寫,意思是...等等,意思相當於英文的and so on或 and so forth。

e.g. 和 etc. 不能出現在同一句話中,因為 e.g. 是表示泛泛的舉幾個例子,並沒有囊括所有的實例,其中就已經包含“等等”,如果再加一個 etc. 就畫蛇添足了。


換言之:「i.e.」是拉丁文id est的縮寫,意思是換句話說、換言之,用來進一步解釋前面說過的話,英文就是that is、in other words。
例句:
It happened in October, i.e., two months ago. →(O)
(i.e. = in other words)




原文網址: 3個誤用的英文縮寫,不要再用ex.啦! | 鍵盤大檸檬 『i.e.』『 e.g.』『etc.』的正確用法

2014年12月21日 星期日

Protocol 協定

介紹

在 Objective-C 裡,每一個類別是單繼承的,一個類別只會有一個父類別,而這個父類別也只會有一個父類別,這樣一直往上追朔直到根類別 NSObject,但如果你需要呼叫一個不在這整個繼承鏈裡的方法,protocol 協定就是一個可以幫你解決這個問題的方法(註一)。

製作 protocol


解說:
  • protocol 本身不會實作,只會宣告 method,實作的部分由使用這個 protocol 的 class 來實作。
  • 在Objective-C 2.0 之後,加了 @required 跟 @optional 的語法,你可以設定某些method是optional,也就是這些 method 沒有一定要實作出來。預設是 @required,要注意的是@required跟 @optional 這兩個語法的影響範圍,是從它以下所有的 method 都會被影響,直到另一個 directive 或是 @end 為止。
  • 就像 class 可以繼承另一個 class 裏所有的 method 一樣,protocol 也可以繼承自另一個 protocol,大多數的 protocol 都是繼承自 <NSObject> 這個根 protocol(註二),但我們並不需要實作 <NSObject> 裡的 method,因為不管是我們自定或是系統提供的 class 都會繼承自 NSObject 這個 class,自然也就有 <NSObject> 的實作了(註三)。

為了讓程式模組化,會建議把 protocol獨立寫在一個標頭檔(Header File)裡。


    使用 protocol

    方法如下,如果要一次使用多個 protocol 用逗號分開就可以了:

    定義變數

    protocol 也可以當作一種型別來定義變數。
    這段程式的意思是:delegate 這個變數,它可以是任意資料型態,但一定要遵循 protocolName 這個 protocol,也就是說,delegate 的實體必需要實作 protocolName 裡@required所有的  method。


    這種用 @protocol 來定義方法的稱做 formal protocol,從名字看大概猜得出來一定也有叫做 informal protocol 的東西,不過這個會在介紹 category 的時候再做說明。


    註一:另一種對於 protocol 使用的說法:對於繼承自不同父 class 的 class 來說,如果需要有共同的方法名稱,就需要使用 Protocol。我還沒完全搞清楚@@
    註二:每次要建立新的 protocol 時,Xcode都會自訂幫我們繼承 <NSObject>,但我發現這個可有可無,我把 <NSObject> 刪掉也沒有出現編譯錯誤,我現在還不知道什麼時候要繼承 <NSObject> 什麼時候不用。
    註三:這句其實我沒有完全看懂,因為我沒有看到哪裡有繼承 NSObject class 我也不懂為什麼他說繼承了 NSObject class, 裏的 method 就會自動幫你實作,但確實我沒有實作 NSObject class 裏的 method 也沒出現編譯警告。


    資料整理自:
    Objective-C: Protocols
    http://shenfive.pixnet.net/blog/post/49325290-protocol-語法

    Protocol in Objective-C 高見龍
    Protocol 協定的使用方式 Furnace iOS 程式設計中文學習網站
    http://iosdevelopersnote.blogspot.tw/2010/11/protocol-delegate.html




    蘋果官方文件:Programming with Objective-C:Working with Protocols

    2014年12月13日 星期六

    NSDate 相關的 method

    下面這些是關於NSDate所有的整理自蘋果官方的文件,推薦看網頁版,網頁版的現在設計得互動性非常高,一開始會把每個method列出來,如果想要細看哪個method的話,再點下去所有的細節就會通通展開來,包括:
    1定義(Declaration)
    2參數(Parameters)
    3回傳值(Return Value)
    4Import Statement
    5可使用版本(Availability)
    6探討(Discussion)
    7相關(See Also)
    另外也可以選擇要顯示的語言,Objective-C還是Switf或是兩個都顯示。

    關於NSDate背後的架構(是這樣說嗎!?找不到一個適當的詞@@)可以去看官方文件,因為我自己也還沒有完全看懂,所以就不在這裡做翻譯了Orz

    大部份的method都可以望文生義,如果有不懂得再去看官方文件就可以了,我這裡只是整理了所有的mehtod,讓我們可以看得更一目了然。前半段是我目前最常用的method。

    Creating and Initializing Date Objects


    Comparing Dates


    Getting Time Intervals


    Adding a Time Interval


    Getting Temporal Boundaries


    + dateWithTimeIntervalSinceReferenceDate:
    + dateWithTimeIntervalSince1970:
    - initWithTimeIntervalSinceReferenceDate:
    - initWithTimeIntervalSince1970:
    + timeIntervalSinceReferenceDate
      timeIntervalSinceReferenceDate
      timeIntervalSince1970
    
    其中這幾個函數我還不是很搞得清楚到底是做什麼用途的,以initWithTimeIntervalSinceReferenceDate:為例,官方文件是這樣說明的:Returns an NSDate object initialized relative the first instant of 1 January 2001, GMT by a given number of seconds.,翻成中文就是:會得到一個以西元兩千年一月一號零分零秒為開始,(由使用者輸入)往後推幾秒的時間點,我實際使用了一下,如果輸入下列這行程式
    NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:10];
    
    顯示結果如下:
    確實照著文件的說明實現了,可是我的問題是這可以幹嘛??我現在還不知道這個函數存在的意義,如果我以後知道了,我會在這裡更新。2014/12/14



    後面這幾個是我比較不常用的

    Representing Dates as Strings


    Constants


    Notification





    蘋果官方文件:NSDate Class Reference


    NSDate Manipulation Made Easy in iOS 8

    2014年12月7日 星期日

    2014年12月6日 星期六

    NSDate, NSTimeInterval, NSCalendar, NSDateComponents, NSDateFormatter基本教學

    下面是一些跟時間相關的class,以及其簡單的使用方法,而每個class背後的原理,我會另外分幾篇網誌來寫。

    NSDate

    NSDate儲存的是世界標準時間(UTC),是絕對時間,當要輸出時間的時候會(註一)根據當地時區轉換成當地的時間。
    下面這段程式是讀取現在時間的程式碼。

    NSDateFormatter

    說到NSDateFormatter,就不得不提關於NSDateFormatter 的二三事這篇網誌,這篇網誌把很多(註二)參數都整理出來了。
    下面是NSDateFormatter的使用方式。

    設定NSDateFormatter也可以使用Xcode提供的幾種制式化格式


    NSTimeInterval

    特別要注意NSTimeInterval的資料型態是double。


    NSCalendar, NSDateComponents

    下面三種方法得出來的結果都一樣,只是取用的方式不同。(註三)



    註一:我現在還不完全清楚它的原理,不知道是「會」根據當地時區作轉換,還是「需要」知道當地的時區來作轉換。2014/12/7
    註二:我不知道是不是全部,一時沒時間去查,但我要用的話幾乎都在那篇裡找得到。2014/12/7
    註三:我還搞不清楚差在哪,我查到後這裡會更新。2014/12/7