젊음

젊음은 인생의 한 시기가 아니라 마음의 상태다.
그것은 장미빛 뺨도, 빨간 입술도 아니며 나긋나긋한 무릎도 아니다.
그것은 의지와 상상력이며 활력이 넘치는 감성이다. 그것은 삶의 깊은 샘에서 솟아나는 신선함이다.

젊음은 용기가 비겁함을 누르는 것을 뜻하며 안이함을 떨쳐 버리고 모험에 나서는 것을 뜻한다.
이런 성향은 때로는 20살의 청년에게서가 아니라 60살의 노인에게서 발견되기도 한다. 나이만 먹는다고 늙는 것이 아니다. 이상을 버릴 때 우리는 늙는 것이다.

나이는 피부에 주름살을 만들지만, 열정이 식어 버리면 정신에 주름살을 만든다. 걱정과 두려움과 자기불신은 용기를 꺾고 정신을 죽여 버린다.

60살이든 16살이든, 사람의 가슴 속에는 경이로움에 끌리는 마음, 미지의 것에 대한 꺼지지 않는 호기심 그리고 삶이란 게임에서 느끼는 기쁨이 있게 마련이다.
당신과 내 가슴의 한복판에는 무선전신국이 있다. 그 무선전신국이 인간과 신神에게서 오는 아름다움, 희망, 환호, 용기 그리고 힘의 메시지를 수신하는 동안은 당신은 젊은 것이다.

안테나가 내려지고 당신의 정신이 냉소의 눈雪과 비관의 얼음으로 덮이면, 당신은 나이가 20살이라도 늙은 것이다.
반면 안테나가 올라가 있고 그 안테나를 통해 낙관의 전파를 수신한다면, 당신은 나이가 80살이라도 젊은 채로 죽을 수 있는 것이다.

— 새뮤얼 울먼의 수필, 리더스 다이제스트 1991년 3월호에서 발췌

Supremo, Maragogipe

그윽하고 약간 신 끝맛이 일품인 Supremo. 원두를 갈 때 향이 정말 기가 막힌, 가장 즐겨먹는 커피이다.

20100609_coffee2

얼마전 Supremo를 사면서 Maragogipe를 한 번 250g 사보았다. 멕시코 산, 일명 ‘엘리펀트 빈’이라고 한다는데 갈아보니 향이 Supremo 못지 않다.
맛은 약간 연해서 아침에 먹기 좋을 듯.

20100609_coffee1

사진에서는 그리 커보이지 않지만 콩이 꽤 크다.

Pacifier

쭉쭉이 또는 공갈젖꼭지 – 영어로는 pacifier, 독일어로는 der Schnuller라고 한다.
아기용품 제조회사로 유명한 NUK는 Beruhigungssauger라고 해서 헷갈리게 하기도 한다.

아이가 너무 젖을 보채는 것 같아 공갈젖꼭지를 한 번 써보려고 BabyOne에 들렀는데 세상에나… 그 종류의 방대함에 질려버렸다. 공갈젖꼭지에 그렇게 많은 취향이 존재할 수 있는 것이다. (예를 들어 NUK의 제품들 일부를 한번 보기)

갈등 끝에 NUK 제품 중 ‘Soft’란 것을 사 와서 급하게 물렸는데 – 제대로 소독도 안 했지만 마음이 너무 급했다 – 잠깐 물더니 가차없이 뱉어버린다. 육아책을 보니, 엄마 젖꼭지와 혼란을 일으킬 수 있기 때문에 특히 신생아의 경우에는 쓰면 안된다고 한다. 거 참, 복잡하구먼.

추: 공갈젖꼭지의 소독법을 설명하는 페이지가 있었다. (사실 특별한 것은 없고, 그냥 끓는 물에 소독하면 됨)
여기 가 보면, 기본적이지만 꽤 괜찮은 다른 정보들도 비디오로 소개하고 있다.

Package example in ABAP, 두번째

지난 번과는 반대로, subpackage가 superpackage의 object를 억세스하려 할 경우를 생각해보자.

20100610_package_inf_1

  1. SE80 open.
  2. 먼저 subpackage와 superpackage 양쪽에 Package Interface가 있나 확인해보자. 없으면 만들자.
  3. superpackage의 Package Interface를 더블 클릭. 두 개의 탭이 나오는데 ‘Exposed Objects’를 클릭, 노출할 object를 추가한다. (드래그 앤 드롭으로 쉽게 된다)
  4. 20100610_package_inf_2

  5. 다음에 바로 옆의 탭인 ‘Attributes’ 클릭. 하단에 ‘Visible for subpackages’에 체크한다.
  6. subpackage 이름을 더블 클릭, ‘Dependency Control List’ 탭을 연다. Add 버튼을 누르고 superpackage의 Package Interface를 추가한다.
  7. 20100610_package_inf_3

SWIFT MT103

  • SWIFT(the Society for the Worldwide Interbank Financial Telecommunication)는 표준화된 글로벌 금융 트랜잭션 개발을 위한 조직이다.
  • SWIFT 멤버는 목적에 따라 MT100 ~ MT999의 메시지를 생성하며 이는 SWIFT로 전달, 수신자(다른 SWIFT 멤버)로 전달된다.
  • SWIFT MT103은 다른 나라 은행으로의 payment를 위해 가장 보편적으로 사용되는 포맷이다. 기존 single payment를 위해 사용된 MT100의 향상된 버젼으로 무척 많은 옵션을 가지지만 이로 인해 너무 flexible하다는 문제가 생겨 요즘은 MT103+를 사용하는 추세다.
  • MT103과 MT103+ 메시지가 수신은행에서 올바르게 해석되기 위하여 파일 내에 포함된 ‘bank details’ (IBAN과 BIC details 포함) 은 반드시 정확해야 한다.

The Iterator Pattern (in ABAP)

20100606_iterator

Iterator를 사용해서 구현과는 분리하여 하나 하나 요소들을 셀 수 있다.
아래 소스를 보면 loop를 돌 때 Iterator의 메소드만 이용하고 있으며 Aggregate 클래스가 어떤 식으로 구현되어 있는가 – 배열이든, 벡터든, Internal Table이든 – 는 상관없다. 즉 나중에 Aggregate의 요소 관리 방식을 얼마든지 바꿀 수 있다는 이야기.
이를 위해 아래와 같은 것들이 필요하다.

  • Iterator 인터페이스.
  • Aggregate 인터페이스. Iterator 인터페이스 타입의 객체를 리턴하는 메소드를 제공.
  • ConcreteIterator. Iterator 인터페이스를 구현한다. 구체적으로 어떤 놈을 어떻게 돌아야하는지 알고 있어야 하기 때문에 ConcreteAggregate의 객체를 내부에 가지고 있다.
  • ConcreteAggregate. Aggregate 인터페이스를 구현한다. 자신을 인자로 넘겨주면서 ConcreteIterator를 생성한다.

헷갈리기 쉬운게 Next()와 hasNext()인데,

  • Next() 호출시 현재 요소를 리턴하면서 내부적으로 다음 위치로 이동하게 된다.
  • hasNext()는 최후의 요소를 얻기 전에는 true를 리턴하고 최후의 요소를 얻은 후에는 false를 리턴한다. 다음에 Next()를 호출해도 괜찮은지 조사하는 메소드로 이해하면 된다.

아래는 해당 소스.