간만에 계획 세워보기

일 : Python 클래스와 모듈 개념 정리, Custom Tag 만드는 법 정리, AJN 2차 정모
월 : 성준이네 이사 도와주기, Spring으로 공부 중인 주소록 마무리.
화 : 오전 11시 치과, 주소록 화면 개선, SimpleFormController 공부, 심심하면 Python
수 : 1시~3시 JSP, 남는시간.. 뭐하나…
목 : 1시~3시 AJ 마지막 스터디 + 쫑파티, 과연 시간이 날런지..
금 : 아직은 빈 시간…
토 : 데이트

AOP: Radical Research in Modularity


Google video에서 engedu[footnote]English education의 약어인듯..[/footnote]로 검색했더니 AOP 강좌가 있었습니다.

흠~ 한시간에 걸쳐 다 보았는데 마지막에 AOP는 모듈화 하는 기술이라고 합니다. 그리고 강의는 주로 AspectJ에 대해서 설명을 하는데 청중들이 질문을 상당히 적극적으로 하는 매우 멋진 강의 였습니다. 그리고 질문 중에 하나는 pointcut이 적용 된 곳이 많아지면 더 복잡해 지지 않느냐는 것과 비슷한 애기가 있었던 것 같은데 IDE(발표자는 Eclipse + AspectJ 플러긴)가 그런 것들을 도와 준다고 하며 시연을 해줍니다. 조금 밖에 못알아 들은 것 같지만 꽤 재밌습니다.

함수

>>> def sum(*args):
…     sum = 0
…     for i in args:
…             sum = sum + i
…     return sum

위와 같은 형태로 sum이라는 함수를 만들었습니다. def 함수명(인수): 이렇게 선언하고 그 아래에 정의를 해주면 되는 듯 합니다. *args 는 가변인수를 뜻합니다. 인자를 초기화 할 수 도 있습니다.

>>> def call(name, age=20):
…     print name
…     print age

age를 20으로 초기화 해놨기 때문에 name만 전해 줘도 됩니다. 물론 age도 주면 그에 맞게 값이 변합니다.

>>> call(“기선”)
기선
20
>>> call(“기선”, 26)
기선
26
>>> name = ‘기선’
>>> call(name)
기선
20
>>> myName = ‘기선’
>>> call(myName)
기선
20
>>> name = “기선”
>>> call(name)
기선
20

return을 만나면 함수에서 나가는 것은 java와 같은데 약간 특이합니다. 여러 개의 값을 return하고 싶을때 return 값1, 값2, 값3 이렇게 적어 주면 터플로 리턴해줍니다.

>>> def call():
…     return 1, 2, 3

>>> a = call()
>>> a
(1, 2, 3)

for문

range()라는 함수와 자주 쓰이는것 같습니다. java에서 for(int i = 0 ; i < 10 ; i++) 이것을 Python에서는 for i in range(10): 이렇게 씁니다. range(5,10) 이렇게도 쓸 수가 있는데 5 이상 10 미만을 뜻합니다. 즉 [5, 6, 7, 8, 9] 이런 배열을 만들어 주는듯 합니다.

>>> a = [‘spring’, ‘hibernate’, ‘python’]
>>> for i in range(len(a)):
…     print a[i]

>>> a = [‘spring’, ‘hibernate’, ‘python’]
>>> for i in a:
…     print “저는 %s를 공부하고 있습니다.” % i

저는 spring를 공부하고 있습니다.
저는 hibernate를 공부하고 있습니다.
저는 python를 공부하고 있습니다.

while문

조건문에서는 pass를 쓰고 반복문에서는 continue를 사용하나 봅니다. Java와 마찬가지로 break와 continue를 사용할 수 있습니다. 차이점은 거의 없는 것 같습니다. 조건문 뒤에 : 이걸 붙이는거랑 들여쓰기 하는 거에 익숙해져야 겠습니다.

>>> a = 10
>>> while a:
…     a = a-1
…     print a
…     if a == 5: break

9
8
7
6
5

>>> while a < 10:
…     a = a+1
…     if a%2 == 0: continue
…     print a

1
3
5
7
9