'분류 전체보기'에 해당되는 글 165건
- 2009.08.14 업무프로세스 세미나
- 2009.08.11 무한도전 봅슬레이
- 2009.06.30 아랍어 시험문제 6
- 2009.06.26 우주에서 얻는 미래 자원 - 헬륨3 3
- 2009.06.26 The name-to-address translation function 2
- 2009.06.26 PTR
- 2009.06.26 RR(resource records) 자원 레코드
- 2009.06.26 FQDN
- 2009.06.26 IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요?
- 2009.06.26 IPv6 멀티캐스트 범위 2
2009|0814 회의록
회의 발표자
- 김이사님
회의 안건
- 개발 프로세스 세미나 01
이슈 및 논의내용
- 스펙(사양) => 디자인(설계) => 코딩 => 테스트
-
기능과 스펙(specification 요구명세서)
- 기능에서 기능적인 것 외에 더 상세히 적는 것이 스펙(spec)이다.
-
스펙이 없을 경우 혼돈이 발생한다.
- "숫자 3개를 주고 정렬하는 프로그램" 을 만들기로 하고 진행 중에 나오는 요구사항
- -> 만약 실수 3개라면?
- -> 만약 복소수 포함이라면?
- -> 만약 핸드폰에 넣을 프로그램이라면?
- 이와 같이 스펙이 명확하지 않으면 최악의 경우 모두 엎고 다시 만들어야 할 수도 있다.
-
대부분의 개발자들은 방해받는 것을 싫어한다.
- 다른 부서와의 명확한 의사소통을 하고 중복 의사소통을 피하기 위해 스펙을 상세히 쓰는 것이 좋다.
-
디자인 (설계)
- 완성된 스펙으로 디자인을 시작한다.
- 프로그래머에 대한 의존도를 최소화 한다.
-
어떤 TOOL을 이용할 것인가?
- 자신에 맞는 TOOL을 이용하여 설계한다. 너무 다루기 힘든 TOOL을 사용하려고 하면 TOOL 사용법을 배우는데 시간이 더 많이 든다.
-
개발
- 20%의 코딩 + 80%의 예외처리(에러처리)
-
Peer Review
-
종류 :
- 설계 리뷰
- 코드 리뷰 (checkin 하기 전 코드에 대한 review) 등등
-
방법 :
- 몇명 모여서 간단히.
- 보통 상급 프로그래머 + 초급 프로그래머의 조합
-
코드 리뷰의 목적 :
- test 이전에 버그를 조기 발견할 수 있다.
- 정보의 공유를 통해 개인 사정으로 부재시에도 별 문제가 없다.
- 잘된 코드를 볼 수 있고, 잘못된 코드를 고쳐가면서 빨리 배울 수 있다.
- 왜 이렇게 만들었느냐 하는 책임을 묻는 자리가 아니다.
-
-
테스트
- Pre-Alpha test (개발버전)
- Alpha test : 설치, 동작이 되고 주요기능 구현이 되어 있다.
- Beta test : 모든 기능이 구현되어 있다.
- RC (Release candidate) : 출시를 위해 만들어 버그가 거의없다.
- RTM (Release To Manufacturing == GA(General Available)) 릴리즈 버전. RC의 마지막 버전
-
훌륭한 관리자의 역할
-
예상치 못한 것을 예상하라.
- Back up Plan을 가지고 A가 안될 경우 B플랜을 실행한다.
- 예상하는 것까지는 괜찮은 관리자, 예상하여 B플랜을 가지고 B로 하면 된다는 것까지 알고 있으면 훌륭한 관리자.
이 글은 스프링노트에서 작성되었습니다.
'개발자가 뭐길래' 카테고리의 다른 글
install [파일 설치] /usr/bin/install (2) | 2010.02.09 |
---|---|
[우분투] - How to install manpage (man page 설치) (0) | 2009.12.11 |
최신 커널의 특징과 디바이스 드라이버 개발에 대한 이해 (0) | 2008.12.10 |
웹 로봇 소스 코드 (0) | 2008.12.09 |
iptables Tutorial 1.2.2 (0) | 2008.12.09 |
채널 돌리다가 우연히 TV에서 무한도전 봅슬레이 편을 봤다. 아마 재방송일 것이다.
평소에 무한도전은 바보 캐릭터들이 나와서 쓸데없는 이것 저것을 하며 웃기는 프로그램이라고 생각했다. 나도 보면서 재밌기도 하고 배를 잡고 웃기도 했지만 지나면 그냥 그뿐인 나에겐 소비성 강한 프로그램이었다.
봅슬레이에 도전하는 것을 보면서도 처음엔
아, 얘네들 이제 별거 다 도전하는구나.. 생각했다.
한국에선 거의 불모지에 가까워 봅슬레이 경기를 하거나 연습할 시설도 없고, 일본에서 경기를 하면서 얼음 상태가 괜찮을때 일본 선수들이 먼저 출전하고 뒤이어 한국이 경기에 임하는 조금은 서글픈 상황이었다.
그럼에도 불구하고 자신이 하고자 하는 것에 열정을 아끼지 않는 우리나라 선수들이 있다는 것을 자연스럽게 보여주면서.. 과연 거의 운동과는 거리가 멀어보이는 이 무한도전 아저씨들이 해낼 수 있을까 하는 기대감을 끌어냈다. 미친듯한 속도로 얼음 터널을 미끄러져 나가는 앞의 선수들 모습에 이어.. 마지막 무한도전팀의 출발 직전 긴장감이 안방까지 전해졌다.
실전에서 최고의 성적을 낸 무한도전 팀의 평소엔 거의 찾아볼 수 없는 합심으로 이루어낸 완주는 참 감동적이었다. 결국 꼴지로 들어오긴 했지만.. 그것도 다른 팀보다 겨우 몇 초 뒤진 속도로 사고없이 참 훌륭하게도 해내었다. 결국 박명수까지 울어대는 상황이..
예전에 라틴댄스스포츠에 도전하면서도 그리 울더니 참 감동 잘하는 모임이구나 했는데..
어떤 도전이든 결심과 노력, 두려움에 대한 극복과 팀원간의 합심 등등.. 많은 것들이 필요하고 이들이 잘 뭉쳐졌을 때, 그로 인해 놀라운 결과가 나왔을 때 자기도 모르게 그만 감동해버리고.. 넘치는 기쁨에 눈물이 저절로 나온 것이라는 걸 알게 되었다.
이들은 참 행복한 사람들이다.
매일 그렇게 새로운 도전을 하고 때론 무모해 보이지만 보통은 저렇게 미치도록 행복해 보이니까..
그들을 보면서 더 힘을 얻는 사람들도 있을 것이다.
그런 의미에서 이제 그들의 무모한 도전을 따뜻한 시선으로 바라보기로 했다. ^^
'혼자놀기' 카테고리의 다른 글
[재미] 댁의 고양이는 당신을 어떻게 생각할까요? (0) | 2009.09.25 |
---|---|
현충원 국립 묘지의 봄날 (2) | 2008.04.12 |
심즈 건축 - 화이트씨 댁 (4) | 2007.12.28 |
밤과낮 (0) | 2007.08.30 |
심즈2 (0) | 2007.06.13 |
뭔가.. 너무 쉽잖아.
'상상' 카테고리의 다른 글
포천에서 스님을 만나고.. (5) | 2009.08.23 |
---|---|
우주에서 얻는 미래 자원 - 헬륨3 (3) | 2009.06.26 |
차세대 비디오 프로젝션 기술영상 (2) | 2008.12.09 |
맑은 고딕체 흐리게 보일 때 (2) | 2008.09.08 |
구글 브라우저 '크롬' 베타 (4) | 2008.09.03 |
'상상' 카테고리의 다른 글
포천에서 스님을 만나고.. (5) | 2009.08.23 |
---|---|
아랍어 시험문제 (6) | 2009.06.30 |
차세대 비디오 프로젝션 기술영상 (2) | 2008.12.09 |
맑은 고딕체 흐리게 보일 때 (2) | 2008.09.08 |
구글 브라우저 '크롬' 베타 (4) | 2008.09.03 |
[RFC 2133] Basic Socket Interface Extensions for IPv6)
좋은 참고가 되었다.
http://www.ietf.org/rfc/rfc2133.txt?number=2133
추천받은 사이트 (Powerd by DNS)
'개발자가 뭐길래 > Network' 카테고리의 다른 글
Longest Prefix (0) | 2010.01.12 |
---|---|
IPv4 compatible address와 IPv4 mapped address의 차이는? (0) | 2009.08.26 |
PTR (0) | 2009.06.26 |
RR(resource records) 자원 레코드 (0) | 2009.06.26 |
FQDN (0) | 2009.06.26 |
'개발자가 뭐길래 > Network' 카테고리의 다른 글
IPv4 compatible address와 IPv4 mapped address의 차이는? (0) | 2009.08.26 |
---|---|
The name-to-address translation function (2) | 2009.06.26 |
RR(resource records) 자원 레코드 (0) | 2009.06.26 |
FQDN (0) | 2009.06.26 |
IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요? (0) | 2009.06.26 |
'개발자가 뭐길래 > Network' 카테고리의 다른 글
The name-to-address translation function (2) | 2009.06.26 |
---|---|
PTR (0) | 2009.06.26 |
FQDN (0) | 2009.06.26 |
IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요? (0) | 2009.06.26 |
IPv6 멀티캐스트 범위 (2) | 2009.06.26 |
전체 주소 도메인 네임 (FQDN, Fully qualified domain name)
부분 주소 도메인 네임 (PQDN, Partially qualified domain name)
예를 들어, boriya.tistory.com 이 FQDN이라면, boriya 는 PQDN 이 되는 것이다.
PQDN을 사용하는 이유는 바로 편리함이다. 도메인 관리자는 매번 전체 주소 네임을 반복할 필요 없이 PQDN을 이용해 장비나 하위 도메인을 알아낼 수 있다. 예를 들어 "cs.widgetopia.edu."라는 도메인 네임을 가지는 Widgetopia 대학 컴퓨터 공학부의 관리자가 있다고 하자. 그는 개개의 호스트를 과일 네임을 따서 명명했따. 이 경우 관리자는 기본적으로 자신이 관리하는 DNS 파일에서 "apple.cs.widgetopia.edu." 나 "banana.cs.widgetopia.edu."와 같은 FQDN으로 각 장비를 찾아낼 수 있다. 그러나 "부분 주소 네임이면 cs.widgetopia.edu 도메인 안의 것으로 간주하라"와 같은 명령을 미리 소프트웨어에 입력해 둠으로써 apple, banana만으로도 각각에 해당하는 장비를 찾을 수 있다. 즉 DNS 소프트웨어는 kiwi와 같은 PQDN을 "kiwi.cs.widgetopia.edu."로 인식한다.
<도메인 마지막에 오늘 점(.)에 대해서..>
일반적으로 널 루트 도메인의 마지막에 오는 점(.)은 주로 생략한다. 실제로 사용자가 애플리케이션에서 도메인 네임을 입력할 때와 같은 일반적인 상황에서는 주로 마지막의 점을 생략한다. 예를 들어 웹 브라우저에 도메인 네임을 입력할 때 마지막 점을 입력하는 경우는 거의 없다. 그러나 DNS 마스터 파일에서는 FQDN과 PQDN을 명확히 구분하기 위해서 마지막에 오는 점을 사용한다. 앞선 예에서 apple은 "apple.cs.widgetopia.edu."를 가리키지만 "apple.com."은 Apple Computer, Inc.의 FQDN을 가리킨다. 여기서 "apple.com."의 마지막에 오는 점은 중요하다. 마지막에 점이 없는 apple.com은 PQDN으로 애플컴퓨터의 도메인이 아니라 "apple.com.cs.widgetopia.edu."을 가리키기 때문이다.
기술적으로 최상위 도메인 A가 하위 도메인 B를 포함하고 B는 다시 C라는 하위 도메인을 포함한다면 C의 전체 도메인 네임은 "C.B.A"다 .이 네임을 해당 노드의 전체 주소 도메인 네임 (FQDN, Fully qualified domain name)이라고 한다. C.B.A라는 도메인 네임은 특정 도메인의 위치를 정확히 알려주기 때문에 완전한 도메인 네임이다. 전체 주소 도메인 네임은 전체 DNS 네임 공간에서 생성한 네임이다.
부분 주소 도메인 네임 (PQDN, Partially qualified domain name)
때로는 불완전한 네임으로 장비를 찾아낼 수도 있다. 이를 PQDN이라고 한다. PQDN은 장비의 위치를 부분적으로 지정하여 이것만 가지고는 도메인의 전체 경로를 알수 없기 때문에 모호하다. 그러므로 PQDN은 절대 도메인 네임을 알고 있는 특정 부모 도메인 안에서만 사용할 수 있다. 부모 도메인의 절대 네임을 부분 네임에 붙이면 그 부분 주소 도메인의 FQDN을 알 수 있다. 예를 들어 FQDN "Y.X" 안에 Z라는 PQDN이 있다면 Z의 FQDN은 "Z.Y.X"이다.
PQDN을 사용하는 이유는 바로 편리함이다. 도메인 관리자는 매번 전체 주소 네임을 반복할 필요 없이 PQDN을 이용해 장비나 하위 도메인을 알아낼 수 있다. 예를 들어 "cs.widgetopia.edu."라는 도메인 네임을 가지는 Widgetopia 대학 컴퓨터 공학부의 관리자가 있다고 하자. 그는 개개의 호스트를 과일 네임을 따서 명명했따. 이 경우 관리자는 기본적으로 자신이 관리하는 DNS 파일에서 "apple.cs.widgetopia.edu." 나 "banana.cs.widgetopia.edu."와 같은 FQDN으로 각 장비를 찾아낼 수 있다. 그러나 "부분 주소 네임이면 cs.widgetopia.edu 도메인 안의 것으로 간주하라"와 같은 명령을 미리 소프트웨어에 입력해 둠으로써 apple, banana만으로도 각각에 해당하는 장비를 찾을 수 있다. 즉 DNS 소프트웨어는 kiwi와 같은 PQDN을 "kiwi.cs.widgetopia.edu."로 인식한다.
<도메인 마지막에 오늘 점(.)에 대해서..>
일반적으로 널 루트 도메인의 마지막에 오는 점(.)은 주로 생략한다. 실제로 사용자가 애플리케이션에서 도메인 네임을 입력할 때와 같은 일반적인 상황에서는 주로 마지막의 점을 생략한다. 예를 들어 웹 브라우저에 도메인 네임을 입력할 때 마지막 점을 입력하는 경우는 거의 없다. 그러나 DNS 마스터 파일에서는 FQDN과 PQDN을 명확히 구분하기 위해서 마지막에 오는 점을 사용한다. 앞선 예에서 apple은 "apple.cs.widgetopia.edu."를 가리키지만 "apple.com."은 Apple Computer, Inc.의 FQDN을 가리킨다. 여기서 "apple.com."의 마지막에 오는 점은 중요하다. 마지막에 점이 없는 apple.com은 PQDN으로 애플컴퓨터의 도메인이 아니라 "apple.com.cs.widgetopia.edu."을 가리키기 때문이다.
'개발자가 뭐길래 > Network' 카테고리의 다른 글
PTR (0) | 2009.06.26 |
---|---|
RR(resource records) 자원 레코드 (0) | 2009.06.26 |
IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요? (0) | 2009.06.26 |
IPv6 멀티캐스트 범위 (2) | 2009.06.26 |
ND (Neighbor Discovery) (0) | 2009.06.25 |
도메인네임이 IPv4 주소(A RR)와 IPv6 주소(AAAA RR)를 모두 갖고 있는 경우
IPv4 인터넷에서는 도메인 네임이 갖는 IP 주소는 IPv4 주소 한 종류 뿐이었습니다.
그러나 이제 IPv6 인터넷이 도입되면서, 하나의 도메인네임이 IPv4 주소와 IPv6 주소 모두를 갖는 경우가 발생하게 됩니다.
예를 들어 아래와 같은 경우,
"examp.co.kr" 도메인 설정 내용ftp.examp.co.kr. 1800 IN A 192.0.2.200ftp.examp.co.kr. 1800 IN AAAA 2001:dc5:f::200
단말 호스트의 IPv6 어플리케이션은 getaddrinfo() 함수 호출의 결과로 ftp.examp.co.kr. 도메인네임에 대해 "192.0.2.200" IPv4 주소와 "2001:dc5:f::200"의 2개 주소를 얻게 됩니다.
이 경우, 어플리케이션은 "이 2개의 주소 중 어느 주소를 선택하여 접속을 시도해야 하는가?" 하는 문제가 발생하게 됩니다.
물론 이것은 원칙적으로 어플리케이션을 작성하는 개발자의 선택에 따라 결정될 것입니다.
어플리케이션이 getaddrinfo() 함수로부터 얻은 IP 주소 중 하나를 다시 Socket API에 인자로 전달함으로써 통신이 개시될 수 있기 때문입니다.
이 동작은 프로그래머가 정하여 프로그램 코드를 작성할 수 있습니다.
디폴트 IP 주소 선택 알고리듬 (Default Address Selection)
IETF RFC3484 문서는 이 문제를 다루고 있습니다.
Ref Docs : RFC3484 "Default Address Selection for Internet Protocol version 6 (IPv6)"
일반적으로 어플리케이션은 도메인네임의 IP 주소 변환 함수 gethostbyname() 이나 getaddrinfo()가 리턴하는 IP 주소 목록에서 첫 번째 IP 주소를 선택하여 이 IP 주소로 Socket을 열고 통신을 개시합니다.
이러한 일반 사항을 기반으로 RFC3484는 getaddrinfo() 함수가 도메인네임의 IPv4 주소와 IPv6 주소를 함께 파악한 경우, 일정한 디폴트 알고리듬을 적용하여 어플리케이션으로 리턴하는 IP 주소 목록을 정렬(sort)하여 반환하는 동작을 정의합니다.
getaddrinfo() 함수는 일정한 규칙으로 IP 주소 목록을 반환하여 어플리케이션이 접속 시도하는 IP 주소를 일정하게 제어하는 역할을 하게 됩니다.
접속대상 주소 선택 알고리듬에 사용되는 디폴트 정책 테이블(default poliy table)은 아래와 같습니다.
Prefix Precedence Label 비고
---------- ------------------- ---------- --------------------
::1/128 50 0 IPv6 LoopBack 주소
::/0 40 1 이외의 모든 IPv6 주소
2002::/16 30 2 6to4 IPv6 주소
::/96 20 3 IPv4-compatible IPv6 주소
::ffff:0:0/96 10 4 IPv4-mapped IPv6 주소, IPv4 주소를 의미
Source : RFC3484 "Default Address Selection for Internet Protocol version 6 (IPv6)"
2.1. Policy Table
이 주소 선택 알고리듬의 개략적인 내용은 아래와 같이 정리할 수 있습니다.
1. IPv4 주소와 IPv6 주소가 함께 리스트에 있는 경우, IPv6 주소가 디폴트로 리스트 중 첫 번째 IP 주소로 리턴됩니다.
IPv4 주소(::ffff:0:0/96) 보다 IPv6 주소(::1/128, ::/0, 2002::/16, ::/96)들이 Precedence에서 모두 우선순위가 높습니다.
이에 따라 IPv6 어플리케이션이 getaddrinfo() 함수로부터 반환받는 IP 주소 리스트에 IPv4와 IPv6가 혼재하는 경우, 디폴트 동작으로 그 첫 번째 IP 주소는 IPv6 주소가 됩니다.
결과적으로 IPv6 어플리케이션은 IPv4와 IPv6 주소 모두 가진 도메인네임에 대해서는 IPv6를 먼저 접속 시도 주소로 선택하는 동작을 하게 됩니다.
2. IPv6 주소가 다수 존재하는 경우, IPv6 루프백(loopback) 주소, 일반적인 IPv6 주소, 6to4 IPv6 주소, IPv4-compatible IPv6 주소의 순으로 정렬(sort)하여 리턴합니다.
IPv6 주소 "2001:dc5:f::200"와 IPv6 주소 "2002:c000:02c8::c000:02c8"가 도메인네임에 함께 지정되어 있는 경우, APNIC을 통해 할당된 native IPv6 주소 "2001:dc5:f::200"가 6to4 tunnelling 방식의 자동생성된 6to4 IPv6 주소 "2002:c000:02c8::c000:02c8"보다 우선하게 됩니다.
곧 어플리케이션은 native IPv6 주소와 6to4 IPv6 주소가 있는 경우, native IPv6 주소로 먼저 접속시도하게 됩니다.
NOTE!: DNS의 IPv6 주소 설정오류가 야기하는 어플리케이션의 접속 시간 지연 문제
일반적으로 어플리케이션은 getaddrinfo() 등의 함수로부터 리턴받은 IP 주소 목록 중 첫 번째 IP 주소로 접속을 시도한 후 접속에 실패하면 다음의 IP 주소를 사용하여 접속을 시도합니다.
따라서 IPv4와 IPv6 주소가 하나씩 있는 경우, IPv6 주소로 먼저 접속을 시도하고, 이에 실패하게 되면, IPv4 주소로 접속을 시도합니다.
만일 DNS의 특정 도메인네임에 존재하지 않는 IPv6 주소가 설정되어 있는 경우, 어플리케이션에서는 접속시도와 그 timeout에 따르는 시간지연이 발생한 후 IPv4 주소로 접속이 성공함으로써, 사용자는 접속이 느린 현상을 경험하게 됩니다.
위에서 정리된 디폴트 주소 선택 알고리듬 내용은 개략적인 것으로 이외에 시스템 환경조건에 의한 주소 선택 및 정렬 알고리듬을 RFC3484 문서에서 정의하고 있습니다.
주의할 점은 RFC3484에서 정의한 주소선택 알고리듬은 디폴트 알고리듬일 뿐이며 어플리케이션에서 별도의 선택 알고리듬을 사용하여 특정한 주소 선택을 하거나, 디폴트 주소 선택 정책 테이블의 내용을 변경하는 경우, 선택 방식이 변경될 수 있다는
사실입니다.
Windows 2003 서버의 경우, 아래와 같이 default policy table 내용을 볼 수 있으며, 이 테이블에서 각 필드 값을 변경하여 getaddrinfo() 함수의 정렬 순서를 변경할 수 있습니다.
C:>netsh interface ipv6 show prefixpolicyQuerying active state...Precedence Label Prefix---------------- --------- --------------------------------10 4 ::ffff:0:0/9620 3 ::/9630 2 2002::/1640 1 ::/050 0 ::1/128
'개발자가 뭐길래 > Network' 카테고리의 다른 글
PTR (0) | 2009.06.26 |
---|---|
RR(resource records) 자원 레코드 (0) | 2009.06.26 |
FQDN (0) | 2009.06.26 |
IPv6 멀티캐스트 범위 (2) | 2009.06.26 |
ND (Neighbor Discovery) (0) | 2009.06.25 |
멀티캐스트를 사용하면 한 데이터그램을 그룹 수신자 모두에게 한꺼번에 전송할 수 있다. 콜론 16진 표기법으로 썼을 때 FF(숫자로 1111 1111) 로 시작하는 주소는 모두 IPv6 멀티캐스트 주소이다.
멀티캐스트 범위
멀티캐스트 주소의 범위에 대한 정확한 이해가 매우 중요하다. 전 범위 멀티캐스트 주소는 모든 인터넷을 통틀어 고유한 주소를 가져야 하지만 로컬 범위 멀티캐스트 주소라면 해당 기관에서만 고유하면 된다. 따라서 주소 할당이 매우 유연하다. 모든 유형의 멀티캐스트 주소가 다양한 형태로 나타날 수 있다. 어떤 멀티캐스트 주소는 한 노드에만 속할 수도 있고 어떤 주소는 한 로컬 링크 (로컬 네트워크)에만 멀티캐스팅하고 다른 것은 로컬 사이트에 멀티캐스팅하는 등이다. 범위를 지정하면 라우터가 멀티캐스트 데이터그램의 주소를 보고 데이터그램을 얼마나 멀리까지 전달해야 하는지 곧바로 결정할 수 있으므로 좀더 효율적이며, 원했던 범위 이상으로 트래픽이 전달되지 않도록 할 수 있다.
'개발자가 뭐길래 > Network' 카테고리의 다른 글
PTR (0) | 2009.06.26 |
---|---|
RR(resource records) 자원 레코드 (0) | 2009.06.26 |
FQDN (0) | 2009.06.26 |
IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요? (0) | 2009.06.26 |
ND (Neighbor Discovery) (0) | 2009.06.25 |