본문 바로가기
[Android/안드로이드] OpenGL 기초 APIs ( Rotation, LoadIdentity, ColorPointer, Enable ) 안녕하세요 돼지왕 왕돼지입니다. 오늘은 Android에서 사용하는 OpenGL 의 기초 APIs 중 Rotation, LoadIdentity, ColorPointer, Enable 에 대해 알아보겠습니다. gl.glRoatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); - (x, y, z) vector를 기준으로 angle만큼 rotate. 여기서 angle 단위는 degree. - 현재의 Matrix Mode에 곱해진다. ( ModelView 혹은 Projection ) - rotation 방향은 right-hand rule을 따른다. ( ex) (x,y,z)가 user를 향하면 방향은 counterclockwise) gl.glLoadIdentity(); -.. 2012. 2. 14.
[Design Pattern/Java] finalizer ( 파이널라이저 ) 사용을 피하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 finalizer (파이널라이저) 사용을 피하자. 라는 주제로 이야기를 해볼까 합니다. 이 글은 "Effective Java" 를 기반으로 작성하였습니다. Finalizer 왜 피해야 하는가? - Finalizer 는 예측 불가에다가 위험하기도 하며 일반적으로 불필요하다. 파이널라이저를 사용하면 예측이 어려운 프로그램 실행과 성능 저하 및 이식성의 문제가 생길 수 있다. 파이널라이저의 문제점 - 신속하게 실행된다는 보장이 없다. 객체가 사용할 수 없게 되는 시점부터 파이널라이저가 실행되는 시점까지는 긴 시간이 소요될 수 있다. 즉! 실행시간이 중요한 작업을 "절대!" 하지 말아야 한다는 것. ( ex) finalizer 에서 파일 닫기 ) - Finalizer 의 수.. 2012. 2. 13.
[Design Pattern/Java] 쓸모 없는 객체 참조를 제거하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 쓸모 없는 객체 참조를 제거하자. 라는 주제로 이야기하고자 합니다. 이 글은 "Effective Java" 를 기반으로 작성되었습니다. 자바의 GC는 만능이 아니다. - 자바와 같이 가비지 컬렉션 ( Garbage Collection 이하 G.C. ) 을 자동으로 해주는 언어는 G.C.가 더 이상 참조되지 않는 객체들의 메모리를 자동으로 회수합니다. 그래서 자칫하면 우리가 메모리 관리를 고려하지 않아도 된다는 생각을 가질 수 있으나, 그것은 사실이 아닙니다. 2012/01/12 - [프로그래밍 놀이터/자바] - [Java] Garbage Collection ( GC ) 가 뭐 하는 녀석인지 한 번 해부해보자. 메모리 누출 ( Memory Leak ). - 메모리 누출.. 2012. 2. 10.
[Design Pattern/Java] 불필요한 객체의 생성을 피하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 불필요한 객체의 생성을 피하자. 라는 주제를 함께 알아보고자 합니다. 이 글은 "Effective Java" 내용을 기반으로 합니다. 불필요한 객체 생성을 왜 피하는가? 기능적으로 동일한 객체를, 필요한 때마다 매번 새로 생성하기보다는 하나의 객체를 재사용하는 것이 좋을 때가 많습니다. 재사용을 하면 객체 생성에 소요되는 비용( 시간과 자원)이 절감되므로 실행 속도가 더 빨라지고 코드도 보기 좋게 작성할 수 있습니다. 불변 객체 ( Immutable object ) - 불변객체는 생성 후에는 변하지 않는 object 로, 언제든 재사용이 가능합니다. - 불변객체의 불필요한 객체 생성을 막으려면 생성자보다는 static 팩토리 메소드를 사용하는 것이 좋습니다. ( Fa.. 2012. 2. 10.
[Design Pattern/Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 private 생성자를 사용해서 인스턴스 생성을 못하게 하자. 라는 내용을 함께 알아보고자 합니다. 이 글은 "Effective Java" 를 기반으로 합니다. 언제 쓰는가? static method 와 static field 만을 모아 놓은 클래스를 만들 필요가 종종 있습니다. 예를 들자면, Utility class 들이 있죠, ( 대표적 ex) Math ) 이런 친구들은 인스턴스를 생성하지 못하게 설계되어야 합니다. 인스턴스 생성이 무의미하기 때문이죠. 왜 그렇게 해야 하는가? 생성자가 없을 경우 컴파일러는 기본적으로 default constructor 를 생성합니다. 고로 Compiler 덕에 생성가능한 객체가 됩니다. 간혹 abstract class 로 만들어.. 2012. 2. 10.
[Design Pattern/Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. 라는 내용을 함께 보고자 합니다. 이 글은 "Effective Java"의 내용을 기반으로 하였습니다. 싱글톤 ( Singleton )? 싱글톤 ( Singleton ) 은 시스템이나 어플리케이션에 정확히 하나의 인스턴스만 유지되는 클래스를 말합니다. 이런 싱글톤은 본질적으로 유일한 시스템 컴포넌트를 나타냅니다. ( ex) 윈도우 매니저, 파일 시스템 ) 싱글톤을 구현하는 기본적인 방법 1. public class Elvis{ public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } } 싱글톤을 구현하는 기본적인 방법 .. 2012. 2. 10.
[Design Pattern/Java] 생성자의 매개변수가 많을 때는 빌더(Builder) 를 고려하자. 안녕하세요 돼지왕왕돼지입니다. 오늘은 생성자의 매개변수가 많을 때 빌더 사용을 고려하자는 내용을 살펴보려고 합니다. 해당 글은 "Effective Java" 라는 책을 정리한 내용입니다. 매개변수가 많을 때 무엇이 문제가 되는가? Static Factory Method 와 Constructor 의 공통적인 제약사항은 선택 가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다는 문제가 있습니다. 모든 매개변수를 다 입력해야 한다면 상관 없지만, 몇개는 꼭 입력해야 하고 몇개는 선택해서 입력할 수 있는 경우를 말합니다. 해결책 1 : 텔레스코핑 생성자 ( Telescoping Constructor ) - 특징 : 매개변수 수를 달리하는 Constructor 들을 여러개 만들어 this( a, b, de.. 2012. 2. 10.
[Android/안드로이드] Activity 의 배경 Wallpaper (월페이퍼) 로 설정하기. 안녕하세요 돼지왕왕돼지입니다. 오늘은 Activity의 배경을 Wallpaper 로 설정하는 방법에 대해 알아보겠습니다. Manifest 에서 Theme 을 주는 방법과, 코드상으로 설정하는 방법이 있습니다. 먼저 manifest 변경방법을 살펴볼까요? @manifest 위와같이 theme 을 Wallpaper 로 주는 방법이 있습니다. 자 이번에는 코드로 하는 방법을 알아볼까요? getWindow().setFlags( WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER, WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER ); 위와 같은 방법으로 설정을 해줄 수 있습니다. 단 코드로 wall paper 를 설정하는 경우에는 backgrou.. 2012. 2. 10.
[Android/안드로이드] Activity 의 Title ( 제목 ) 제거하기. 안녕하세요 돼지왕왕돼지입니다. 오늘은 Activity 의 Title 을 제거하는 방법에 대해 알아보고자 합니다. manifest 에서 theme 값을 주는 방법도 있고, 코드를 통해서 하는 방법도 있습니다. 먼저 manifest 에서 하는 방법을 알아볼까요? @manifest 위와같이 theme 을 no titlebar 로 설정해주시면 되겠습니다. 이번에는 코드로 하는 방법을 알아볼까요? requestWindowFeature( Window.FEATURE_NO_TITLE ); 아주 간단하죠? 단, 코드로 할 때에는 반드시 setContentView() 전에 호출해주어야 합니다. setContentView() 이후에 부르면 RunTimeException 이 발생합니다. 자 그럼 도움이 되셨길 바라며, 저는 .. 2012. 2. 10.
반응형