전체 글 102

기본 구조 - 아키텍처

아키텍처 리눅스 커널(운영체제의 핵심)안드로이드가 리눅스를 채용한 주된 이유는 공개 운영체제라는 이유도 있지만 디바이스 드라이버의 지원이 광범위하기 때문- 백그라운드 스레드, 메모리 관리, 보안, 디바이스 드라이버 등의 저수준 관리 기능을 담당- 터치 스크린, 카메라, 무선 인터넷, 메모리, 키패드 등 대부분의 모바일 장비에 사용되는 부품의 드라이가 제공 하드웨어 추상레이어(HAL)추상레이어는 주로 커널을 통해 안드로이드가 제공하는 드라이버를 제어하는 목적으로 사용.- 표준화된 API를 제공하고 있을 뿐만 아니라 사용자 정의 컴포넌트를 추가할 수 있다. 라이브러리장비의 전반적인 속도를 결정하는 중요한 요소. 라이브러리 대부분은 C언어로 작성되어 성능이 뛰어나고 충분한 테스트를 거쳐 신뢰성이 보장- BSD..

함수의 선언과 정의의 차이점

1. 선언의 형식반환형 함수이름(매개변수들); 2. 정의의 형식반환형 함수이름(매개변수들){ 내용;} 3. 선언은 그러한 함수가 있다고 알리는 것이고 정의는 그 함수의 실제 내용을 만드는 것입니다.4. 정의는 선언을 겸합니다.5. 정의되어 있지 않은 함수를 선언하고 호출하는 코드가 포함된 프로그램을 빌드하면 컴파일은 됩니다만 링크 시에 해당 함수의 실체를 찾을 수 없으므로 링크 오류가 발생합니다.6. 함수가 정의되어 있더라도 선언되어 있지 않으면 이를 호출할 수 없습니다. 이는 컴파일 오류를 발생시킵니다.여기서 상기할 것은 정의는 선언을 겸한다고 한 것입니다.즉, 선언 또는 정의한 곳 이후의 위치에서 해당 함수를 호출할 수 있다는 의미입니다.예를 들면, 함수를 별도로 선언하는 것이 귀찮을 때 main 함..

유용한 팁 2012.11.27

[Android] px 과 dip 단위 변환

- 안드로이드에서 다양한 화면크기의 기기들을 지원하려면 고정 단위인 px 보다 밀도에 따른 논리 단위인 dip 를 사용해야한다. 하지만 안드로이드 api 소스코드들의 크기는 px 단위를 사용한다. 따라서 dip를 px 로 변환하여 사용하는 방법이 필요.- 안드로이드 개발자 사이트 화면 관련 http://developer.android.com/guide/practices/screens_support.html 다양한 3가지 방법- 입맛에 맞춰 사용하자- 아래소스는 10 dip 를 pixel 로 변환한다는 것을 가정한다. 1. 안드로이드 dev 사이트에 소개된 방식 final float scale = getResources().getDisplayMetrics().density; // 화면의 밀도를 구한다.fl..

[스크랩]vim 명령어 요약

출처 : http://blog.naver.com/dhan71?Redirect=Log&logNo=60170035092 유닉스 리눅스 프로그래밍 필수 유틸리티 개정판 이 책을 읽고 vim 을 좀 더 잘 사용하기 위해 명령 요약을 정리정말 좋은 책임 1. 저장 및 종료 :w 저장 :w file.txt file.txt 파일에 저장 :w >> file.txt file.txt 파일에 덧붙여서 저장 :q 종료 :q! 종료 ZZ 저장 후종료 :wq! 강제 저장 후 종료 :e file.txt file.txt 파일을 불러옴 :e 현재 파일을 불러옴 2. 입력모드 전환 a 커서 위치 다음 칸부터 입력 A 커서 행의 맨 마지막부터 입력 i 커서 위치에 입력 I 커서 행의 맨 앞에서부터 입력 o 커서 다음 행에 입력 O 커서 ..

프로그래밍/NDK 2012.09.19

[스크랩]GPL/LGPL/MPL/BSD 라이선스

출처 : http://yundarz.egloos.com/9142824 GPL GPL(General Public License)은 MPL이 나오기 이전에 가장 널리 사용되던 공개 소프트웨어 라이선스였다. GPL은 OSS의 가장 대표적인 라이선스로 GNU 프로젝트 소프트웨어를 배포할 때 사용되는 것이었지만 이후에는 GNU 프로젝트로 시작된 것이 아닌 다른 소프트웨어에도 광범위하게 사용되고 있다. GPL은 리차드 스톨만에 의해 만들어졌고 자유 소프트웨어 재단의 철학을 반영하고 있다. 소프트웨어를 복제하거나 유통하는데 제약은 없지만 몇 가지 조건을 만족시켜야 한다. 사용자가 소스 코드를 쉽게 사용할 수 있어야 하며 배포되는 소프트웨어에는 GNU GPL이 포함되어 있어야 한다. 그리고 쌍방향 프로그램의 경우 프로..

유용한 팁 2012.09.19

오버로딩과 오버라이딩

오버로딩 -한 클래스 내에서 같은 이름의 매서드를 여러개 정의하는 것을 오버로딩-기존에 없는 새로운 매서드를 정의, 한 객체가 상황에 따란 다른 의미를 가질 수 있도록 하는 것-매서드의 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 하며, 배개변수 명이 같고리턴 타임이 다른 경우는 오버로딩이 성립되지 않는다-오버로딩된 매서드들은 매개변수에 의해서만 구별 오버라이딩 -상속받은 매서드의 내용을 변경하는 것-주로 서브클래스에 맞게 고쳐서 사용, 상속된 메소드와 동일한 이름, 인자를 가진 메소드를 정의하여 덫어 씌움-오버라이드를 하기 위해서는 상위 클래스의 메소드와 이름이 같아야 하고, 매개변수 타입과 개수, 리턴타임이같아야 하며, 상위 클래스보다 좁은 접근지정자를 사용할 수 없다. http://bl..

유용한 팁 2012.09.17