' 유용 한 팁 ' 카테고리 의 글 목록 : : 謨 事 在 人 成事 在天 [ - 0 ㅡ メ ] 
 3 / 25 / 168 , 466 
 Leap Motion 2014 . 12 . 03 
 앱 과 정보 보안 2014 . 12 . 03 
 함수 의 선언 과 정의 의 차이점 2012 . 11 . 27 
 [ 스크랩 ] GPL / LGPL / MPL / BSD 라이선스 2012 . 09 . 19 
 오버로딩 과 오버 라 이 딩 2012 . 09 . 17 
 [ 프로그래밍 ] 프로세스 와 스레드 2012 . 09 . 06 
 XML , JSON , BSON , MSGPACK 장 , 단점 비교 2012 . 09 . 05 
 [ JAVA ] HashMap 2012 . 09 . 05 
 [ A * 알고리즘 을 사용 한 길 찾 기 ] 2012 . 09 . 05 
 [ JAVA ] 내부 클래스 ( inner class ) 2012 . 09 . 05 
 2014 . 12 . 03 21 : 36 
 제스처 인식 을 하 기 위해서 립 모션 에 대해서 분석 했 던 자료 들 입니다 . 
 - 립 모션 에 대한 소개 
 - 립 모션 API 
 최종 적 으로 제스처 인식 에 는 다소 부족 함 을 보였 지만 
 게임 과 같 은 엔터 테 이 먼 트 요소 로 활용 하 기 에 는 좋 은 디바이스 라고 생각 됩니다 . 
 립 모션 이란 . pptx 
 앱 과 정보 보안 ( 0 ) 
 함수 의 선언 과 정의 의 차이점 ( 0 ) 
 [ 스크랩 ] GPL / LGPL / MPL / BSD 라이선스 ( 0 ) 
 오버로딩 과 오버 라 이 딩 ( 0 ) 
 [ 프로그래밍 ] 프로세스 와 스레드 ( 0 ) 
 앱 과 정보 보안 
 APP 에서 일반 텍스트 나 다른 데이터 들 을 읽 기 쉽 도록 모바일 디바이스 에 저장 하 는 일 은 되 도록 삼가 
 - APP 에서 어떤 유형 의 데이터 를 저장 , 생 성 , 교환 할 것 인가 를 결정 
 - APP 에서 재 사용 가능 한 암호 화 루틴 을 몇 가지 보유 ( AES 등 ) . 
 프로젝트 내 에서 포함 할 수 있 도록 분리 된 라이브러리 형태 로 유지 
 - 각각 의 애플리케이션 에서 다른 키 를 생성 한다 . 
 길 고 예측 하 기 어려운 비밀 키 생성 알고리즘 을 통해 키 를 생 성 
 - 데이터 를 생성 하 거나 저장 할 때 암호 화 한다 . 
 함수 의 선언 과 정의 의 차이점 
 1 . 선언 의 형식 
 2 . 정의 의 형식 
 반환형 함수 이름 ( 매개변수 들 ) 
 3 . 선언 은 그러 한 함수 가 있 다고 알리 는 것 이 고 정의 는 그 함수 의 실제 내용 을 만드 는 것 입니다 . 
 4 . 정의 는 선언 을 겸 합니다 . 
 5 . 정의 되 어 있 지 않 은 함수 를 선언 하 고 호출 하 는 코드 가 포함 된 프로그램 을 빌 드 하 면 컴파일 은 됩니다 만 링크 시 에 해당 함수 의 실체 를 찾 을 수 없 으므로 링크 오류 가 발생 합니다 . 
 6 . 함수 가 정의 되 어 있 더라도 선언 되 어 있 지 않 으면 이 를 호출 할 수 없 습니다 . 이 는 컴파일 오류 를 발생 시킵니다 . 
 여기 서 상기 할 것 은 정의 는 선언 을 겸 한다고 한 것 입니다 . 
 즉 , 선언 또는 정의 한 곳 이후 의 위치 에서 해당 함수 를 호출 할 수 있 다는 의미 입니다 . 
 예 를 들 면 , 함수 를 별도 로 선언 하 는 것 이 귀찮 을 때 main 함수 위 에서 함수 를 정의 해 두 고 main 함수 에서 이 를 호출 하 는 것 을 보 셨 을 것 입니다 . 만약 해당 함수 가 main 함수 뒤 에 있 다면 main 함수 앞 에서 선언 을 별도 로 해 주 어야 main 함수 에서 해당 함수 를 호출 할 수 있 습니다 . 
 [ 스크랩 ] GPL / LGPL / MPL / BSD 라이선스 
 2012 . 09 . 19 11 : 42 
 bsd , GPL , LGPL , MPL 
 출처 : http : / / yundarz . egloos . com / 9142824 
 GPL ( General Public License ) 은 MPL 이 나오 기 이전 에 가장 널리 사용 되 던 공개 소프트웨어 라이선스 였 다 . GPL 은 OSS 의 가장 대표 적 인 라이선스 로 GNU 프로젝트 소프트웨어 를 배포 할 때 사용 되 는 것 이 었 지만 이후 에 는 GNU 프로젝트 로 시작 된 것 이 아닌 다른 소프트웨어 에 도 광범위 하 게 사용 되 고 있 다 . 
 GPL 은 리차드 스톨만 에 의해 만들 어 졌 고 자유 소프트웨어 재단 의 철학 을 반영 하 고 있 다 . 소프트웨어 를 복제 하 거나 유통 하 는 데 제약 은 없 지만 몇 가지 조건 을 만족 시켜야 한다 . 사용자 가 소스 코드 를 쉽 게 사용 할 수 있 어야 하 며 배포 되 는 소프트웨어 에 는 GNU GPL 이 포함 되 어 있 어야 한다 . 그리고 쌍방향 프로그램 의 경우 프로그램 이 시작 될 때 이 를 게시 해야 한다 . 프로그램 을 수정 할 경우 에 는 언제 , 누구 에 의해 수정 되 는지 를 명시 하 기 만 하 면 된다 . 파생 제품 을 만들 수 있 지만 파생 제품 에 는 GPL 이 적용 되 어야 한다 . 
 GPL 의 가장 큰 특징 은 배포 된 소프트웨어 가 상업 용 소프트웨어 ( proprietary product ) 로 변질 되 는 것 을 막아주 는 조항 , 이른바 카피레프트 조항 을 가지 고 있 다는 것 이 다 . 결과 적 으로 GPL 소프트웨어 를 결합 하 여 만든 소프트웨어 는 반드시 GPL 이 적용 되 어야 하 므로 이른바 바이러스 효과 가 일어난다 . 즉 GPL 은 저작 권 을 포기 하 는 것 이 아니 다 . 만일 개발자 나 기업 이 GPL 이 적용 된 소프트웨어 의 일부 를 사용 하 여 다른 소프트웨어 를 개발 할 경우 , 기업 은 그 들 이 개발 한 소프트웨어 의 소스 코드 를 공개 해야 만 한다 . 결과 적 으로 소프트웨어 를 제작 판매 하 는 기업 에서 는 GPL 이 적용 된 소프트웨어 를 기피 하 는 문제 가 있 다고 할 수 있 다 . 
 GPL 의 주요 한 특징 을 살펴보 면 첫째 소스 코드 뿐 만 아니 라 목적 코드 ( object code ) 또는 실행 가능 한 형태 ( executable form ) 로 도 배포 를 허락 하 지만 , 이 경우 어떤 형태 로 든 소스 코드 에 대한 접근 이 보장 되 어야 한다 . 둘째 , 2 차 적 저작물 이 GPL 에 의해 라이선스 된다는 조건 하 에 코드 의 변경 및 재 배포 를 무제한 으로 허용 한다 . 셋째 , 다른 소프트웨어 와 의 완전 한 통합 ( complete integration ) 은 그 소프트웨어 가 GPL 을 수용 한다는 조건 하 에서 만 허용 된다 . 
 이 와 같 은 이유 로 GPL 이 소프트웨어 를 제작 판매 하 는 기업 에서 사용 되 는 것 에 제한 이 있 으므로 자유 소프트웨어 재단 은 LGPL ( GNU Lesser General Public License ) 을 만들 었 다 . LGPL 이 적용 되 는 라이브러리 를 사용 해도 개발 된 소프트웨어 는 GPL 에 오염 되 지 않 는다 . 이 를 만든 이유 는 좋 은 자유 소프트웨어 제품 이 많이 사용 되 어 표준 이 되 고 독점 제품 과 경쟁 할 수 있 도록 하 기 위해서 다 . LGPL 이 적용 된 최초 의 소프트웨어 는 GNU C 라이브러리 였 다 . LGPL 은 GNU 프로젝트 에 의해 개발 된 소프트웨어 와 사 적 소프트웨어 를 포함 한 다른 소프트웨어 와 의 통합 을 허용 하 기 위해 자유 소프트웨어 재단 에 의해 만들 어 졌 다 . 자유 소프트웨어 가 아닌 모듈 과 의 링크 를 허용 한다는 면 에서 완전 한 카피 레프트 라이선스 는 아니 라고 할 수 있 다 . 
 LGPL 은 보통 라이브러리 를 라이선스 할 때 사용 되 는데 , 특히 자유 라이브러리 ( free library ) 에 대응 되 는 상용 라이브러리 가 존재 할 때 사용 된다 . 일반 적 으로 소프트웨어 개발자 들 은 비슷 한 기능 의 라이브러리 가 존재 할 때 제한 이 별로 없 는 상용 라이브러리 를 사용 하 게 될 것 이 고 , 그렇게 된다면 자유 라이브러리 는 점점 사용 되 지 않 을 것 이 기 때문 이 다 . 반면 대응 되 는 상용 라이브러리 가 없 는 자유 라이브러리 를 만들 었 을 때 는 LGPL 대신 GPL 을 사용 하 고 있 다 . 
 MPL ( Mozilla Public License ) 은 넷 스케이프 가 그 들 의 브라우저 인 모질 라 의 소스 코드 를 공개 하 는 데 사용 한 라이선스 이 다 . MPL 은 코드 와 실행 파일 을 분리 하 여 양자 를 보완 한 것 이 다 . 코드 는 공개 되 어야 하 고 최초 의 저작 자 에게 보완 한 내용 을 통지 해야 한다 . 반면 에 실행 파일 은 독점 라이선스 로 배포 될 수 있 다 . 즉 저작 자 의 이익 을 보호 할 뿐 아니 라 , 이 라이선스 는 수정 , 보완 된 소프트웨어 의 배포 를 통한 상업 적 이익 을 보호 할 수 있 다 . 이 는 적정 한 가격 을 요구 할 수 있 고 , 불법 복제 에 대해 제재 를 가할 수 있 다는 것 을 의미 한다 . 또한 소프트웨어 를 더욱 보완 , 발전 시키 려는 개발자 들 의 이익 을 보호 할 수 있 다고 생각 한다 . 즉 기술 적 으로 개선 을 할 경우 코드 를 보 고 , 수정 한 후 , 컴파일 하 여 새로운 독창 적 인 버전 으로 재 배포 할 수 있 다 . 
 MPL 에서 유래 한 라이선스 는 IPL ( Interbase Public License ) , ISC OSPL ( Open Source Public License ) , SPL ( Sun Public License ) , NOSL ( Netizen Open Source Lecense ) , OTPL ( Open Telecom Public License ) , EPL ( Erlang Public License ) 등 이 다 . MPL 도 사용 자 에게 이후 의 라이선스 계약 시 동일 한 라이선스 를 부과 하 는 카피레프트 조항 을 가지 고 있 다는 면 에서 GPL 과 흡사 하 다 . 하지만 이러 한 의무 가 소스 코드 에 만 부여 된다는 점 에서 차이 가 있 다 . 다시 말 하 면 이용자 가 원래 의 프로그램 에 변경 을 가했 거나 추가 시킨 경우 에 해당 소스 코드 를 원래 의 개발자 나 공동체 가 사용 할 수 있 도록 공표 해야 하 지만 , 실행 가능 한 바이너리 코드 는 상업 용 소프트웨어 라이선스 를 포함 한 어떠 한 라이선스 를 사용 해서 도 배포 할 수 있 다 . MPL 은 OSS ( Open Sousrce Society ) 그룹 과 산업 계 와 의 타협 의 산물 이 라고 평가 받 는 데 특이 한 점 한 가지 는 프로그램 의 복제 또는 배포 가 특허 권 에 관련 한 경우 는 이용자 에게 특허 의 실시 를 허용 해야 한다는 점 이 다 . 그러나 원본 코드 ( original code ) 에서 제거 하 거나 분리 한 코드 , 원본 코드 의 개작 또는 다른 소프트웨어 와 의 결합 으로 야기 되 는 침해 에 대해서 는 특허 라이선스 가 허락 되 지 않 는다 . 
 사용자 의 의무 에 관하 여 는 MPL 은 GPL 의 순수 한 카피레프트 라이선스 와 유사 하 다고 할 수 있 다 . 만일 사용 자 가 의무 를 불이행 하 는 경우 에 는 보장 된 권리 의 자동 적 인 소멸 을 초래 하 게 된다 . 단 GPL 과 는 달리 라이선스 조건 위반 은 이용자 의 권한 을 즉각 적 으로 종료 시키 는 것 이 아니 라 사실 인식 후 30 일 경과 하 면 소멸 한다고 규정 한다 . 
 다음 은 개발자 에게 중요 한 개 작자 의 의무 에 대해 살펴보 자 . 개량 자 는 코드 개작 시 취득 한 저작 권 을 MPL 하 에 라이선스 해야 할 의무 가 있 다 . 그러나 그 는 원 코드 를 잉여 할 권리 는 가지 지 않 는다 . 프로그램 의 개작 ( modification ) 이 발생 하 면 재 작자 는 개작 된 프로그램 소스 코드 를 공개 해야 하 고 개작 내용 ( description of modifications ) 에 대해 문서 화 할 의무 가 있 다 . 무엇 보다 도 MPL 적용 프로그램 을 실행 버전 ( executable versions ) 으로 배포 하 는 자 는 프로그램 의 소스 코드 에 대한 접근 을 가능 케 해야 한다 . 만일 법규 또는 판례 로 인하 여 이용자 가 준 수 가 불 가능 한 경우 이용자 는 ‘ 가장 가능 한 범위 까지 ( to the maximum extent possible ) ’ MPL 조항 을 준 수 해야 하 며 , 법규 들 이 영향 을 미치 는 제한 ( limitations ) 을 설명 해야 한다고 하 고 있 다 . 
 BSD ( Berkeley Software Distribution ) 라이선스 는 언제나 라이선스 의 주석 에 BSD 가 캘리포니아 대학 에서 처음 개발 된 것 이 기 에 이 를 명시 해야 만 하 는 다소 단순 하 고 귀찮 은 의무 가 기재 되 어 있 으며 FreeBSD , X , NetBSD 등 여러 변종 이 존재 한다 . BSD 는 소프트웨어 산업 과 관련 하 여 가장 다양 하 게 사용 될 수 있 는 라이선스 라고 할 수 있 다 . BSD 라이선스 가 적용 되 는 소프트웨어 를 수정 , 보완 한 소프트웨어 는 상업 용 독점 소프트웨어 가 될 수 도 있 고 , BSD 라이선스 로 배포 될 수 도 있 다 . 또한 GPL 로 배포 될 수 도 있 다 . 
 BSD 라이선스 는 예컨대 아파치 웹 서버 등 에 사용 되 는 라이선스 로 사용 자 들 에게 거의 제한 을 가하 지 않 는 것 이 특징 이 다 . 심지어 카피레프트 조항 도 없 기 때문 에 사 적 소프트웨어 벤더 들 도 BSD 라이선스 로 배포 되 는 OSS 컴포넌트 를 그 들 의 제품 에 무제한 으로 사용 할 수 있 다 . 예컨대 , BSD 는 X 라이선스 의 변형 인데 동 라이선스 는 소프트웨어 를 사용 , 복제 , 통합 , 변경 , 발행 , 배포 및 판매 할 권리 를 부여 한다 . 다만 때때로 저작 권 표기 를 요구 하 거나 코드 변경 의 날짜 , 저자 및 변경 목적 을 요구 하 기 도 한다 . MIT 라이선스 , XFee 86 라이선스 , X 컨소시엄 라이선스 모두 저작 권 과 무 보증 의 표시 만 한다면 누구 든지 무상 으로 소프트웨어 를 사용 , 복제 , 변경 , 병합 , 출판 , 배포 , 다시 라이선스 할 수 있 으며 이러 한 것 들 을 유상 으로 타인 에게 판매 할 수 있 도록 하 고 있 다 . 이 같이 라이선스 허용 범위 가 넓 은 이유 는 BSD 라이선스 가 미국 정부 가 제공 한 재원 으로 운영 되 었 기 때문 이 라고 한다 . X 라이선스 는 소프트웨어 를 사용 , 복제 , 변경 , 통합 , 발행 , 배포 및 판매 할 권리 를 부여 한다 . 다만 때때로 저작 권 표기 를 요구 하 거나 , 코드 변경 의 날짜 , 저자 및 변경 목적 을 요구 하 기 도 한다 . 
 BSD , X 라이선스 , 아파치 웹 서버 프로젝트 라이선스 류 의 가장 중요 한 사항 은 X 라이선스 를 따르 는 개작 을 개인 적 으로 허가 하 고 있 다는 점 이 다 . 쉽 게 말 하 면 X 라이선스 를 따르 는 프로그램 의 소스 코드 를 구해 수정 한 후 소스 를 공개 하 지 않 고 판매 할 수 있 다 . 즉 , 수정 한 부분 에 대해서 는 X 라이선스 를 적용 하 지 않 은 채 로 판매 할 수 있 다 . 반면 GPL 은 개인 적 으로 개작 한 부분 은 GPL 에 따라서 반드시 배포 되 어야 한다고 규정 하 고 있 으며 , 그 에 따라 프로그램 개발자 는 타인 의 개발 성과 를 받 아 볼 수 있 다 . 
 BSD 는 무엇 보다 2 차 적 저작물 에 대한 카피레프트 조항 이 없 다 . 즉 , 배포 하 거나 공표 하 려는 저작물 의 전부 또는 일부 가 양 도 받 은 프로그램 으로부터 파생 된 것 이 라면 , 저작물 전체 에 대한 사용 권리 를 GPL 의 규정 에 따라 공중 에게 무상 으로 허용 해야 한다고 GPL 이 명시 한 부분 이 없 다 . 따라서 상업 용 소프트웨어 판매자 들 도 BSD 라이선스 로 배포 되 는 공개 소프트웨어 의 컴포넌트 를 자신 의 제품 에 무제한 으로 사용 할 수 가 있 다 . BSD 라이선스 정책 을 지지 하 는 사람 들 은 GPL 라이선스 가 지나치 게 엄격 하 다고 비판 하 기 도 한다 . 
 BSD 지지자 들 은 아무런 제한 없이 소스 를 공개 하 고 , 이 를 누구 든지 자유 롭 게 재 배포 하 고 수정 할 수 있 도록 함 으로써 이러 한 소프트웨어 들 이 상업 적 으로 도 사용 될 수 있 도록 문호 를 개방 하 는 편 이 훨씬 더 효과 적 으로 자유 로운 소프트웨어 의 사용 이 라는 목표 를 달성 할 수 있 다고 보 고 있 는 것 이 다 . 그러나 GPL 을 지지 하 는 측 에서 는 BSD 라이선스 를 선택 하 는 것 은 기업 들 이 소스 를 변형 하 여 2 차 저작물 을 작성 해 이 에 대해 독점 적 인 라이선스 정책 을 취할 것 이 며 , 일반인 들 의 자유 사용 이 제한 되 므로 진정 한 자유 소프트웨어 는 될 수 없 을 것 이 라고 비판 하 기 도 한다 . BSD 라이선스 정책 을 취하 고 있 는 소프트웨어 중 에 는 세계 웹 서버 의 50 % 이상 에서 작동 하 고 있 는 아파치 서버 , Perl 소프트웨어 , BIND , sendmail 소프트웨어 와 같이 상업 적 으로 도 많이 사용 되 고 있 는 소프트웨어 들 이 많 다 . 그 중 에서 도 BSD 라이선스 는 예컨대 아파치 웹 서버 등 에 사용 되 는 라이선스 로 사용 자 들 에게 거의 제한 을 가하 지 않 는 것 이 특성 이 다 . 
 이상 BSD 라이선스 의 내용 을 요약 해 보 면 다음 과 같 다 . 오픈 소스 라이선스 개념 에 해당 하 며 GPL 보다 는 그 허용 범위 가 크 다 . 비 자유 상용 소프트웨어 와 혼합 이 가능 하 다 . 수정 된 소스 코드 가 원저 작자 에게 돌아가 진 않 을 수 있 다 . 즉 , 수정 한 후 소스 를 공개 하 지 않 고 상업 적 으로 판매 할 수 있 다는 점 에서 GPL 과 차이 가 있 다 . 파생 저작물 이 반드시 무상 이 어야 하 는 것 은 아니 어서 파생물 도 GPL 을 따라야 하 며 무상 이 어야 만 한다고 명시 한 GPL 과 다른 것 이 다 . 
 XML , JSON , BSON , MSGPACK 장 , 단점 비교 ( 0 ) 
 오버로딩 과 오버 라 이 딩 
 2012 . 09 . 17 11 : 01 
 오버 라 이 딩 , 오버로딩 
 - 한 클래스 내 에서 같 은 이름 의 매서 드 를 여러 개 정의 하 는 것 을 오버로딩 
 - 기존 에 없 는 새로운 매서 드 를 정의 , 한 객체 가 상황 에 따란 다른 의미 를 가질 수 있 도록 하 는 것 
 - 매서 드 의 이름 이 같 아야 하 고 , 매개변수 의 개수 또는 타입 이 달라야 하 며 , 배 개 변수 명 이 같 고 
 리턴 타임 이 다른 경우 는 오버로딩 이 성립 되 지 않 는다 
 - 오버로딩 된 매서 드 들 은 매개변수 에 의해서 만 구별 
 - 상속 받 은 매서 드 의 내용 을 변경 하 는 것 
 - 주로 서브 클래스 에 맞 게 고쳐서 사용 , 상속 된 메소드 와 동일 한 이름 , 인자 를 가진 메소드 를 정의 하 여 덫 어 씌 움 
 - 오버 라이드 를 하 기 위해서 는 상위 클래스 의 메소드 와 이름 이 같 아야 하 고 , 매개변수 타입 과 개수 , 리턴 타임 이 
 같 아야 하 며 , 상위 클래스 보다 좁 은 접근 지정 자 를 사용 할 수 없 다 . 
 [ JAVA ] HashMap ( 0 ) 
 [ 프로그래밍 ] 프로세스 와 스레드 
 컴퓨터 내 에서 실행 중 인 프로그램 , 할당 받 은 자신 만 의 자원 을 가지 고 , 
 CPU 가 기계어 명령 들 을 실행 함 에 따라 끊임없이 변화 하 는 동적 인 존재 . 
 코드 ( Code ) , 데이터 ( Data ) , 힙 ( Heap ) , 스택 ( Stack ) 
 실제 적 으로 명령어 가 CPU 를 사용 하 여 실행 되 어 지 는 객체 의 단위 . 
 하나 의 프로세스 에서 여러 개 의 스레드 가 실행 될 수 있 으면 최초 에 프로세스 가 생성 될 때 메인 스레드 가 생 성 , 이러 한 스레드 는 같 은 프로세스 에 있 는 자원 과 상태 를 공유 . ( 코드 , 데이터 , 힙 의 영역 을 프로세스 와 공유 하 면서 오직 프로그램 카운터 , 레지스터 , 스택 을 스레드 별 로 갖 게 된다 . ) 
 차이점 : 
 프로세스 는 독립 적 으로 실행 되 며 별개 의 메모리 영역 을 차지 , 
 스레드 는 프로세스 내 의 메모리 를 공유 해 사용 할 수 있 으며 프로세스 간 
 전환 속도 보다 는 스레드 간 전환 속도 가 더 빠르 다 . 
 메인 스레드 : 프로세스 의 메인 함수 로서 실행 되 는 스레드 
 일반 스레드 : 메인 스레드 로부터 생성 된 스레드 나 스레드 에서 새로 생성 된 스레드 
 개발자 의 개발 영역 : 개발자 들 이 직접 구현 하 거나 실행 시켜야 하 는 메서 드 들 로 구성 
 안드로이드 의 시스템 영역 : 안드로이드 시스템 내부 스 케 쥴 에 따라 자동 실행 되 는 메서 드 들 로 구성 
 new : 스레드 생명 주기 의 시작 으로 인 스턴스 는 만들 어 졌으나 start ( ) 되 지 않 은 상태 를 말 한다 
 Runnable : start ( ) 매서 드 호출 에 의해 스레드 는 Runnable 상태 로 이동 한다 . 
 Running : 스케줄 러 는 Runnable 풀 ( pool ) 을 체크 하 고 스레드 는 Running 상태 로 이동 시킨다 . 이때 개발자 가 작성 한 run ( ) 메서 드가 호출 된다 . 
 Bolcking : Sleep 매서 드 , Wait 매서 드 , I / O 입출력 요청 ( request ) , 수행 시 블록 ( Blocking ) 상태 로 이동 한다 . 
 Dead : Run ( ) 이 완료 되 면 자연 스럽 게 스레드 는 종료 된다 . 이 상태 에서 다시 시작 되 는 것 은 불 가능 하 다 . 
 하나 의 자원 ( resource ) 을 여러 스레드 가 사용 할 때 한 시점 에서 하나 의 스레드 만 허용 하 는 기능 
 [ A * 알고리즘 을 사용 한 길 찾 기 ] ( 0 ) 
 XML , JSON , BSON , MSGPACK 장 , 단점 비교 
 2012 . 09 . 05 18 : 45 
 BSON , JSON , MSGPACK , XML 
 * 출처 : 포 씨 소프트 ( http : / / www . 4 csoft . com ) 사내 게시판 
 1 . 나온 지 10 년 이 넘 어 엄청나 게 널리 쓰이 고 있 음 
 1 . 의미 를 확인 하 기 위한 불 필요 한 TEXT ( 시작 태그 및 닫 는 태그 등 ) 가 포함 됨 
 2 . DTO 를 사용 하 기 위해선 반드시 파싱 과정 을 거쳐야 함 
 1 . 대부분 의 언어 별 lib 지원 
 2 . 불 필요 한 XML 대비 TEXT 가 없 어 패킷 용량 감소 
 3 . 대부분 의 언어 의 기본 Collection type 으로 바로 사용 가능 
 1 . JSON 내용 을 Binary 로 변환 하 여 패킷 용량 감소 
 1 . 아직 JSON 이나 XML 만큼 의 다양 한 언어 LIB 는 지원 하 지 않 음 
 [ MSGPACK ] 
 1 . JSON 보다 훨씬 빠른 속도 ( BJON 비교 자료 는 없 지만 보다 빠름 ) 
 2 . 자유 로운 DTO 전환 
 3 . 커넥션 풀 지원 으로 단순 메시지 서버 구현 가능 
 1 . ANDROID 로 하 기 엔 Jboss netty , SLF 4 J 가 포함 되 어야 하 므로 단말기 는 반드시 LIB 를 로드 해야 함 
 2 . IOS 의 Object C 는 아직 지원 하 지 않 아 C LIB 를 사용 해야 함 
 3 . WEB 과 연계 가 필요 하 다면 SESSION 에 들어갈 정보 에 대한 정리 가 필요 함 
 [ JAVA ] 내부 클래스 ( inner class ) ( 0 ) 
 [ JAVA ] HashMap 
 hashing , HaspMap , 해싱 
 http : / / iilii . egloos . com / 4457500 
 HashMap 란 ? ( Hap 인터페이스 의 한 종류 로써 Key 와 Value 값 으로 데이터 를 저장 하 는 형태 ) 
 1 . Map 인터페이스 key , value 를 매핑 하 는 객체 로 List 형태 의 조상 
 2 . Map 종류 : Hashtable , HasMap , LinkedHasMap , SortedMap , TreeMap 
 - 해싱 ( hashing ) 이 란 검색 방법 을 사용 하 기 때문 에 많 은 양 의 데이터 를 검색 하 는데 있 어서 뛰어난 성능 을 보여줌 . 
 1 ) 해싱 ( Hashing ) 의 정의 
 - 해싱 함수 ( Hashing Function ) 를 이용 하 여 레코드 키 에 대한 해시 테이블 ( Hash Table ) 내이 홈 주소 
 ( Home Address ) 를 계산 하 여 주 어 진 레코드 에 접근 하 는 방식 이 다 . 
 - 직접 접근 ( Direct Access Method ) 파일 을 구성 할 때 사용 된다 . 
 - 속도 는 가장 빠르 지만 충돌 현상 시 오버플로 해결 의 부담 이 가중 되 며 , 많 은 기억 공간 을 요구 한다 . 
 - 데이터 양 이 적 더라도 , 일정 크기 의 burket 을 가지 고 있 어야 하 기 때문 에 , 리소스 를 많이 사용 하 는 단점 
 - 순서 보장 하 지 않 음 
 - map 에 데이터 를 등록 할 때 , key 값 은 중복 이 되 지 않 고 , value 값 은 중복 이 허용 
 - 만약 중복 된 key 로 데이터 를 삽입 할 경우 해당 되 는 key 의 데이터 가 나중 에 삽입 된 데이터 로 수정 ( Update ) 된다 . 
 해싱 ( Hashing ) 이란 ? 
 - 레코드 를 산술 연산 에 의해 한 번 에 바로 접근 할 수 있 는 기법 
 - 해시 함수 ( 데이터 의 저장 , 위치 산출 방법 ) 를 통해 탐색 키 를 해시 테이블 주소 로 변환 
 해싱 을 사용 하 는 목적 
 알고리즘 의 실행 시 소요 되 는 시간 과 공간 에 대해 적절 한 균형 을 제공 
 1 ) 기억 장소 의 제한 이 없 을 경우 : 
 키 값 을 직접 기억 장소 의 주소 로 사용 하 면 어떤 탐색 이 든지 한 번 의 기억 장소 접근 으로 수행 이 가능 
 2 ) 시간 에 제한 이 없 을 경우 : 
 최소한 의 기억 장소 를 사용 하 여 데이터 를 저장 하 고 순차 탐색 을 수행 
 따라서 , 해싱 은 두 극단 사이 ( 기억 장소 , 시간 에 제한 ) 에서 합리 적 인 균형 을 이룰 수 있 는 방법 을 제공 , 
 해싱 을 사용 하 게 되 면 가용 한 기억 장소 를 효과 적 으로 사용 하 면서 빠르 게 기억 장소 에 접근 
 [ JAVA ] 추상 클래스 ( abstract class ) 와 인터페이스 ( interface ) ( 0 ) 
 [ A * 알고리즘 을 사용 한 길 찾 기 ] 
 2012 . 09 . 05 15 : 36 
 http : / / gameai . net / Article / Astar / Astar . htm 
 http : / / blog . daum . net / jty 71 / 15645104 
 http : / / cozycoz . egloos . com / 9748811 
 Doxygen 기본 설정 법 ( 0 ) 
 [ JAVA ] 내부 클래스 ( inner class ) 
 2012 . 09 . 05 14 : 59 
 내부 클래스 ( inner class ) 
 1 . 내부 클래스 ( inner class ) 란 ? ( 클래스 내 에 선언 된 클래스 ) 
 클래스 에 다른 클래스 를 선언 하 는 이유 : 두 클 래스 가 서로 긴밀 한 관계 이 있 기 때문 
 내부 클래스 의 장점 
 - 내부 클래스 에서 외부 클래스 의 멤버 들 을 쉽 게 접근 할 수 있 다 . 
 - 코드 의 복잡 성 을 줄일 수 있 다 . ( 외부 에 는 불 필요 한 클래스 를 감춤 ) 
 [ 참고 ] 내부 클래스 는 JDK 1 . 1 버전 이후 에 추가 된 개념 이 다 . 
 2 . 내부 클래스 의 종류 ( 변수 의 선언 위치 에 따른 ) 와 특징 
 1 ) 인 스턴스 클래스 ( instance class ) 
 - 외부 클래스 의 멤버 변수 선언 위치 에 선언 , 외부 클래스 의 인 스턴스 멤버 처럼 다루 어 짐 . 
 - 외부 클래스 의 인 스턴스 멤버 들 과 관련 된 작업 에 사용 될 목적 으로 선언 . 
 2 ) 스 태 틱 클래스 ( static class ) 
 - 외부 클래스 의 멤버 변수 선언 위치 에 선언 , 외부 클래스 의 static 멤버 처럼 다루 어 짐 . 
 - 외부 클래스 의 static 멤버 , 특히 static 메 서드 에서 사용 될 목적 으로 선언 . 
 3 ) 지역 클래스 ( local class ) 
 - 외부 클래스 의 메 서드 나 초기 화 블럭 안 에 선언 하 며 , 선언 된 영역 내부 에서 만 사용 
 4 ) 익명 클래스 ( anonymous class ) 
 - 클래스 의 선언 과 객체 의 생 성 을 동시 에 하 는 이름 없 는 클래스 ( 일회용 ) 
 출처 : http : / / cafe . naver . com / javachobostudy . cafe 
 팔 기 위한 인디 게임 ( 0 )