2015年1月16日 星期五

Install I2C on raspberry pi

Reference:


鍵入指令
sudo nano /etc/modprobe.d/raspi-blacklist.conf

在blacklist i2c-bcm2708前加入#
按Ctrl+X → Y → enter


sudo nano /etc/modules
新增i2c-dev 在最後一行
按Ctrl+X → Y → enter

下載i2c
sudo apt-get update
sudo apt-get install i2c-tools

增加使用者
sudo adduser pi i2c

重新開機
sudo shutdown -r now


測試I2C
sudo i2cdetect -y 1


2015年1月8日 星期四

Disable Raspberry pi screen sleep

一開始先試了下面的方法,結果不知道哪裡弄錯了
重開機以後,就在也進不了主畫面(悲劇阿....)

# 輸入指令
Disable Raspberry pi screen sleep
# 在 [SeatDefaults] 區域加入下面這行
# don't sleep the screen
xserver-command=X -s 0 dpms

後來找到另一個方法可以成功關掉睡眠
# 輸入指令
$sudo apt-get update 
# 下載 xscreensaver  
$sudo apt-get install xscreensaver  

從Preferences打開Screensaver


把Mode 設定成Disable Screen Saver





2015年1月3日 星期六

Partizip Attribute

Reference:
Mittelpunkt C1

Partizip I (Partizip Präsens)
Beschreibt einen Vorgang im Aktiv, der gleichzeitig mit einem anderen Geschehen stattfinden bzw. stattgefunden hat.

Der Abteilungsleiter, der das Vorstellungsgespräch leitete, wurde später vom Personalchef kritisiert.
Der das Vorstellungsgespräch leitende Abteilungsleiter wurde später vom Personalchef kritisiert.

Partizip II (Partizip Perfekt)
Beschreibt meist passivische Vorgänge oder Zustände.

Urlaub, der nicht rechtzeitig genommen wird, verfällt am 31.März des Folgejahres.

Nicht rechtzeitig genommener Urlaub verfällt am 31.März des Folgejahres.



Gerundiv ( zu + Partizip I )

Reference:
Mittelpunkt C1
http://deutsch-im-duett.de/mediapool/98/986879/data/Aspekte3/Aspekte3_L7_Gerundivum.pdf

通常用在書寫上,用來縮短Nebensatz,表示還需要,應該或是還可以做的事情
(Man verwendet das Gerundiv vor allem im formellen schriftlichen Gebrauch, um einen Relativsatz zu verkürzen, es bedeutet, dass man etwas machen muss, soll oder kann

Zu + Partizip I + Endung(形容詞字尾變化)

 Dies sind Daten, die man auswendig lernen sollte.
  Dies sind auswendig zu lernende Daten.
 Situationen, die noch mehrfach durchgespielt werden sollten.
  Noch mehrfach durchzuspielende Situationen.(可分離動詞,zu要放中間)


Aktiv:                Das ist ein Fernseher, den man nicht mehr reparieren kann.
Passiv:             Das ist ein Fernseher, der nicht mehr repariert werden kann.
sein + zu:         Das ist ein Fernseher, der nicht mehr zu reparieren ist.
Gerundivum:  Das ist ein nicht mehr zu reparierender Fernseher.



2014年12月29日 星期一

Futur

Reference: https://deutsch.lingolia.com/de/grammatik/zeitformen/futur-1
                  https://deutsch.lingolia.com/de/grammatik/zeitformen/futur-2
                  Mittelpunkt C1





2014年11月6日 星期四

安裝pydev + eclips

安裝pydev + eclips


1.安裝java-jdk
2.設定環境變數,用cmd-java看是否安裝成功
3.下載Eclipse IDE for C/C++ Developers

4. 在Eclipse上update software Pydev


如果之後要更改python的版本
Eclipse → Windows → Preferences → Pydev → Interpreter → Python Interpreter


python inheritance note

Reference
http://www.artima.com/weblogs/viewpost.jsp?thread=281127
http://apt-blog.net/constructors_with_different_arguments_in_python_multiinheri_class

Python Inheritance 繼承
繼承型態如下
class DerivedClassName(BaseClassName):
<statement-1>
.
.
.
<statement-N>

舊式繼承
class Father:
def __init__(self,f_name,f_age):
self.f_name = f_name
self.f_age = f_age

def f_info(self):
print("papa name:",self.f_name,"papa age:",self.f_age)

class Child(Father):
def __init__(self,c_name,c_age,f_name,f_age):
Father.__init__(self,f_name,f_age)
self.c_name = c_name
self.c_age = c_age
self.f_info()

def fam_info(self):
print("age sum:",self.f_age+self.c_age)


python 3以後可以用super來繼承,父類繼承object才能使用super函式,即使是多重繼承也只需要呼叫一次super()
class Father(object):
def __init__(self,f_name,f_age):
self.f_name = f_name
self.f_age = f_age

def f_info(self):
print("papa name:",self.f_name,"papa age:",self.f_age)

class Child(Father):
def __init__(self,c_name,c_age,f_name,f_age):
super(Child,self).__init__(f_name,f_age)
self.c_name = c_name
self.c_age = c_age
self.f_info()

def fam_info(self):
print("age sum:",self.f_age+self.c_age)

>>> d = Child('mary',10,'john',40)
('papa name:', 'john', 'papa age:', 40)
>>> d.fam_info()
('age sum:', 50)


Multi Inheritance 多重繼承
繼承順序是由左到右

舊式
class Father:
def __init__(self,f_name,f_age):
self.f_name = f_name
self.f_age = f_age

def f_info(self):
print("papa name:",self.f_name,"papa age:",self.f_age)


class Mother:
def __init__(self,m_name,m_age):
self.m_name = m_name
self.m_age = m_age

def m_info(self):
print("mama name:",self.m_name,"mama age:",self.m_age)

class Child(Father,Mother):
def __init__(self,c_name,c_age,f_name,f_age,m_name,m_age):
Father.__init__(self,f_name,f_age)
Mother.__init__(self,m_name,m_age)
self.c_name = c_name
self.c_age = c_age
self.f_info()
self.m_info()

def fam_info(self):
print("age sum:",self.f_age+self.m_age+self.c_age)




>>> d = Child('mary',10,'john',40,'ann',35)
('papa name:', 'john', 'papa age:', 40)
('mama name:', 'ann', 'mama age:', 35)
>>> d.fam_info()
('age sum:', 85)

新式繼承super
super在單繼承跟多繼承有兩種不同的工作方式
將父類別繼承母類別,再由子類別繼承父類別來呼叫父母類別的函式

class Mother(object):
def __init__(self,m_name,m_age):
self.m_name = m_name
self.m_age = m_age

def m_info(self):
print("mama name:",self.m_name,"mama age:",self.m_age)


class Father(Mother):
def __init__(self,f_name,f_age,m_name,m_age):
super(Father,self).__init__(m_name,m_age)
self.f_name = f_name
self.f_age = f_age

def f_info(self):
print("papa name:",self.f_name,"papa age:",self.f_age)

class Child(Father,Mother):
def __init__(self,c_name,c_age,f_name,f_age,m_name,m_age):
super(Child,self).__init__(f_name,f_age,m_name,m_age)
self.c_name = c_name
self.c_age = c_age
self.f_info()
self.m_info()

def fam_info(self):
print("age sum:",self.f_age+self.m_age+self.c_age)


如果使用super有多重分支,會走上最上層的父繼承,再走另一分支
因為他在多重繼承裡使用MRO (Method Resolution Order)
MRO是深度優先的繼承列表
class A(object):
def __init__(self):
super(A,self).__init__()
print "A"

class B(A):
def __init__(self):
super(B,self).__init__()
print "B"


class C(A):
def __init__(self):
super(C,self).__init__()
print "C"


class D(object):
def __init__(self):
super(D,self).__init__()
print "D"

class E(B,C,D):
def __init__(self):
super(E,self).__init__()
print "E"
>>> d = E()
D
A
C
B
E
>>>

上例如果沒有super做多重繼承的話,必須找出繼承順序寫在子類別中
class A(object):
def __init__(self):
print "A"

class B(A):
def __init__(self):
print "B"


class C(A):
def __init__(self):
print "C"


class D(object):
def __init__(self):
print "D"

class E(B,C,A,D):
def __init__(self):
D.__init__(self)
A.__init__(self)
C.__init__(self)
B.__init__(self)
print "E"

>>> d = E()
D
A
C
B
E