2018年3月3日 星期六

一次弄懂台胞證、陸胞證、還有來台許可證的意義

在「一個中國、各自表述」的九二共識下,開啟了兩岸民間的交流。

台灣人要去大陸,需要
  1. 先申請「台灣居民來往大陸通行證」
  2. 申請入境許可證,類似簽證(現在已經不用了)
大陸人要來台灣,需要
  1. 先申請「大陸居民往來台灣通行證」
  2. 申請入境許可證(現在仍需要)
看起來很簡單,但是內部藏有一些大家不知道的事,尤其是沒有往來大陸的人。
就算有,也未必清楚。
  1. 我們的台胞證,是大陸核發的。從上述的對稱架構來看,我們會認為陸胞證是台灣發的。錯!這個想法就錯了!陸胞證也是大陸核發的。台灣這邊是用入境許可證來把關的。所以台胞證和陸胞證,不是那麼的對稱,因為不是兩岸相互核發。所以先前不是有卡式台胞證的爭議嗎?有人說,我們也來發卡式陸胞證來反制!很抱歉,陸胞證不是我們發的,所以政府都不敢講什麼。我們是可以發卡式入台許可證,但是我建議不要,原因在第2點。
  2. 基於九二共識的一中各表,大陸人要來台灣時申請的許可證上面,有著以下兩點。所以多讓他們來台灣,就是多幫他們洗腦說台灣是中國民國的,中華民國是存在的。
    1. 中華民國國旗
    2. 文字註明他們要來的是「中華民國台灣地區」 
至於兩岸的問題,台灣要作的,應該是不斷提升自己,提高被統一的難度。現在的政客,應該只有少數是真台獨,多數只是製造爭議來騙票的假台獨。而那些為了選票的爭議,表面上讓他們得勢,可以拿大家支持台獨反中國來說嘴;實際上是逐漸被追上,降低了被統一的難度。總之,大家加油吧,台灣離真正的文明還差很遠,一起努力吧。

2018年2月22日 星期四

學英文時有唸過狄克生片語嗎?

四五六年級生在國高中的時候,英文老師常會使用到狄克生片語當作補充教材。
學了狄克生片語之後,在國內考試好用,但是和美國人對談時似乎不太好用。
當時總有個感覺,那些片語是不是已經太舊了,很少人在講了?

後來,聽到去英國定居的人說,英國人仍使用大量的狄克生片語。

我們學的是偏美國的英語,
發音是美國腔(英國腔有不少差異,例如 er 不捲舌),
然後又學美國不常見的片語,
整個就是很混亂又不實用。
真的覺得自己現在英文不好,主因是整個教育體系的問題。

2018年1月20日 星期六

Python 3 的 class: instance method、class method、static method的區別

在Python 3當中,一個類別(class)的成員函式(member function/method),可以定義成instance method、class method、或是static method。instance method是物件層級的函式,而class method和static method是類別層級(無法存取物件層式的屬性)的函式(基本大觀念假設不細講)。以下大致比較一下這三者:
  • instance method
    • 物件層級
    • 定義前的修飾字:無
    • 定義語法: def method_name(self, ...): ... 
    • self 是該instance 的 reference
    • 呼叫方法: instance.method_name(...)
    • method當中使用物件/類別屬性的方式
      • self.AAA = 10 # 將物件層級屬性AAA設為 10
      • type(self).BBB = 20 # 將物件類別的類別層級屬性BBB設為 20
      • ClassC.CCC = 30 # 將ClassC的類別層級屬性CCC設為30,ClassC未必是自己的類別
  • class method 
    • 類別層級 (假設類別為 C)
    • 定義前的修飾字:@classmethod
    • 定義語法: def method_name(cls, ...): ...
    • cls 是該 class 的 reference
    • 呼叫方法:C.method_name(...)  或  instance_of_c.method_name(...)
    • method當中使用類別屬性的方式
      • cls.BBB = 20 # 將當下類別層級屬性BBB設為 20
      • C.BBB = 20 # 將C的類別層級屬性BBB設為 20
      • ClassC.CCC = 30 # 將ClassC的類別層級屬性CCC設為30,ClassC未必是自己的類別
  • static method
    • 類別層級 (假設類別為 C)
    • 定義前的修飾字:@staticmethod
    • 定義語法: def method_name(...): ...
    • 呼叫方法:C.method_name(...)  或  instance_of_c.method_name(...)
    • method當中使用類別屬性的方式
      • C.BBB = 20 # 將C的類別層級屬性BBB設為 20
      • ClassC.CCC = 30 # 將ClassC的類別層級屬性CCC設為30,ClassC未必是自己的類別
class method 和 static method 的觀念非常類似,主要差別只在於class method可以使用 cls.BBB的方式來使用自己的類別屬性。上例當中,使用 cls.BBB 和 C.BBB 看似一樣,實際上有一點小差別。當我們用 C1 繼承 C 的時候,cls.BBB 會是 C1 的類別屬性,但是 C.BBB 仍是 C的類別屬性,不會因為繼承而變成 C1 的屬性。最主要的差別就在這裡了。


Python讀寫utf-8的文字檔

Python開啟文字檔的時候,encoding這個參數是大家比較不常用的:
with open(f_name, 'w', encoding='utf-8') as f_out:
    ....
    ....
encoding是指文字檔的編碼。如果要讀寫utf-8的文字檔,編碼會是以下兩者之一:
  • encoding='utf-8':純utf-8文字檔 (常見於linux)
  • encoding='utf-8-sig':檔案開頭有加BOM (常見於Windows上的utf-8檔)
在讀檔時,如果用其中一者開啟失敗,可以換一個試看看。

encoding如果不指定,會是作業系統的預設選項 (使用者應該可以改,但我沒試過)。如果在linux系列,多半會是utf-8 (有不是的嗎?);如果在較舊的Windows,則是 big5/cp950 。當我們的程式碼可能在多個平台執行時,最好把encoding作明確的設定,免得在讀寫共用的文字檔案時,因為encoding而發生執行錯誤。

2018年1月2日 星期二

推背圖44象之精闢解釋



大家多半憑著雙羽四足,就猜測是指著習近平與馬英九。
「習」是小鳥白天學飛,所以雙羽指鳥、指習,是沒有問題的。
這個部份,在馬英九與習近平上任之前,就有人解開了。

去年,我再來看44象時,發現了更有意思的地方。
「雖非豪傑」四字,有不突出的意思,
所以「近平」二字也有解釋了。

真不知當年,李淳風是怎麼算出這些東西的。

推背圖原文:


【第四十四象丁未離上坎下未濟】
讖曰

日月麗天
群陰懾服
百靈來朝
雙羽四足

頌曰

中國而今有聖人
雖非豪傑也周成   <==近平
四夷重譯稱天子   <==任期無限延長
否極泰來九國春

2017年12月24日 星期日

自針經驗

  • 足三里
    • 時常會不小心扎太低。
    • 針剛進就會遇到阻力,會以為是刺到血管。再施點力即可通過,起針時沒有見血。阻力應是韌帶或肌肉。
  • 陰陵泉
    • 見到他人被兩吋針刺到底,會刺到脛神經而讓腿彈起。個人不喜歡這種感覺。
    • 自針一吋針下去約8分,似乎刺到血管外壁而停止。留針有針感。
  • 內關
    • 自針一吋半下去約一吋時,有即將刺到神經的感覺。
    • 刺入一吋之前,有兩次遇到阻力的感覺。刺過去之後無不適感,起針時沒有見血。
  • 中極
    • 第一次腹針。自針一吋下去約7分,遇到阻力。提起勇氣再推進,大約只有再進去1分,最後一小段不確定是什麼軟組織,刺了會進針往內推而沒刺穿。
    • 在7分以上有行針,腹部有不難受的針感。吸氣時感覺能更深入。
    • 看了資料,說針刺腹部時,會先刺入肌層(沉重,行針會酸脹),再刺入腹膜層(疼痛,行針會放射刺痛)。再穿過腹膜層就真正進入腹腔(鬆軟,非針灸老手不建議如此)。我上次7分,只是才剛到達肌肉層而已。今日狠下心,1.5寸刺入,有到達肌層,似乎快到達腹膜層(呼吸時有些微小刺痛)。腹部的感覺和上次不同,這回腹部有脹的感覺。
  • 關元
    • 扎了中極的隔天,想說關元也來扎一下吧。扎針時的情形和中極類似。
    • 扎了之後躺著睡著了,醒來之後覺得體內的氣有被擾動,不是十分舒服,有一點沒力,有輕微頭暈。過了一個多小時覺得好多了,到小腸經時段時,覺得胃的下口有熱感。
  • 氣海(2017/12/24)
    • 隨著實力的提升,扎腹針已經沒什麼恐懼感了。
    • 一寸半的針,完全扎入,應該有針到腹膜層(見中極解說)。有點痛,無法留針時順便作家事。
    • 右尺脈明顯變強。
  • 風市
    • 手臂下垂,中指所在之處,骼脛束後方凹陷。
    • 書上寫1~2寸,用1寸全下,下到3分左右有小阻力,刺穿就好了。
    • 行針一下放著,慢慢覺得足跟有感覺,再一會兒覺得大小腿外側也有感覺。那個感覺,就是不太一樣,但分不太清楚是涼感還是溫感。
  • 肩髃
    • 自針一寸,朝上臂的方向進針。無不適感。
  • 陽陵泉
    • 自針一寸,腓骨小頭前下方,骨肉之間進針。
    • 幫長輩處理腳部外側不適,一針陽陵泉即見效。
  • 合谷
    • 合谷看似簡單,不過我一直不太敢扎自己,因為常常會有不好的感覺,例如痛、刺到神經肌肉導致手指抽動、出針時常見血等等。
    • 目前的國際標準是第二掌骨中點外側,大陸常是立掌對著後谿方向刺,會直中第一背側骨間肌。
    • 個人喜歡儘量從肌肉縫中進針,那麼進針點會比較偏向傳統的合谷穴:一二指中間的廣大區域有兩塊骨間肌的縫隙。今日從該處進針,有澀感,出針時見血....不太滿意該進針點。
    • 教科書寫0.5~1寸,針0.7左右沒見血,針1.0有見血。
  • 養老
    • 養老穴"大概的位置",照一般針灸書上所述就可以找到(手部內轉)。
    • 但是,進針的那個點位,我個人試了很多次。進針的位置在手部內轉之後,尺側會有點塌陷而橈側會相對隆起。在隆起的那一邊,找肌肉縫進針,目前試過進針約1寸。

其它經驗
  • 聽到三位前輩說,心經是從尺側腕屈肌腱的「尺側端」進針,和現行的國際標準「橈側端」進針不同。而三位前輩也非泛泛之輩。用手指按壓時,會發現尺側端的針感似乎更強。
    • 由尺側端作順經與逆經斜刺。順經時,二頭肌會有溫的感覺;逆經時,二頭肌會有涼的感覺,而且頭會感覺到洩氣的感覺。這或許是「順經為補,逆經為瀉」,但我仍不敢果斷認定。
  • 處理足根痛,刺過患側丘墟、崑崙、照海,都有效。先刺丘墟留針兩分鐘,就好了大半;換個穴再刺,出針後幾乎全好,有那種隨便刺都有效的感覺。不過針了之後,最好一天不要運動,效果比較好。有運動就容易又痛起來。

2017年12月16日 星期六

Python: 在自訂的exception handling中加入traceback來取得錯誤的行號

在我們寫python程式的過程中,難免會在測試時看到程式因Exception/Error而中止。
中止的時候,會看到畫面印出在哪一行出錯。例如程式當中有一行:
 
int('abc') 
我們會看到以下的錯誤訊息。錯誤訊息主要分成三個部份,分別用不同的底色來表示(之後依序簡稱訊息1、訊息2、訊息3):
Traceback (most recent call last):
  File "./traceback_test.py", line 7, in <module>
    int('abc')
ValueError: invalid literal for int() with base 10: 'abc'
 如果我們用了try...except如下:
try:
    int('abc')
except Exception as e:
    print(e)  
則會得到以下的結果,只有訊息3,錯誤的行號不見了:
invalid literal for int() with base 10: 'abc'
要如何取得訊息1(以取得發生錯誤的行號)和訊息2,甚至是完全一樣的資訊呢?我們需要使用traceback這個module。以下是一個簡單的範例供參考,如果想要更深入瞭解,可以去找python文件:
#!/usr/bin/python3

import sys, traceback

try:
    int('abc')
except Exception as e:
    ex_type, ex, tb = sys.exc_info() #此行取得ex_type, ex, tb
    #印出訊息1: File "./traceback_test.py", line 7, in <module>\n   int('abc')
    print('----traceback.print_tb(tb)----')
    traceback.print_tb(tb)
    #印出訊息2:ValueError
    print('----print(ex_type.__name__)----')
    print(ex_type.__name__)
    #印出訊息3:invalid literal for int() with base 10: 'abc'
    print('----print(ex)----')
    print(ex)
    #印出完整訊息,含Traceback (most recent call last):
    print('----format_exception(ex_type, ex, tb)----')
    msg_lines = traceback.format_exception(ex_type, ex, tb)
    for l in msg_lines:
        print(l, end='')
    #印出完整訊息,含Traceback (most recent call last):
    print('----traceback.format_exc()----')
    msg_str = traceback.format_exc()
    print(msg_str)