본문 바로가기
[android] TransactionTooLargeException 에 대한 이야기 [android] TransactionTooLargeException 에 대한 이야기 http://developer.android.com/reference/android/os/TransactionTooLargeException.html -Binder transaction 이 너무 큰 operation 으로 실패하는 경우에 발생한다. -remote call 시 argument 나 return value 는 Parcel object 의 형태로 전송되며, 이 녀석이 Binder transaction buffer 에 저장이 된다.만약에 argument 나 return value 가 transaction buffer 에 담기 너무 큰 용량이 되면 TransactionTooLargeException 이 발생한다. .. 2017. 4. 16.
[Java] Executor : Java Concurrency API [Java] Executor : Java Concurrency API - Executor Interface 제공된 Runnable 을 실행하는 객체가 구현해야 할 인터페이스. execute( Runnable ) 을 구현해야 한다. public interface Executor {void execute(Runnable command);} - ExecutorService interface Executor 의 라이프 사이클을 관리할 수 있는 기능을 제공한다. 추가로 Runnable 뿐만 아니라 Callable 도 작업할 수 있다. void shutdown() 이미 Executor 에 제공된 작업은 실행되지만, 새로운 작업은 수용하지 않는다. List shutdownNow() 현재 실행중인 모든 작업을 중지시키.. 2017. 3. 8.
[Effective Java] 하위 계층의 예외 처리를 신중하게 하자. [Effective Java] 하위 계층의 예외 처리를 신중하게 하자. - 상위 계층에서 하위 계층의 예외를 반드시 catch 해야 한다. 그리고 그 예외대신에 상위 계층의 추상체가 알 수 있는 예외로 바꿔 던져야 한다. 이 이디엄을 예외 변환(exception translation)이라 한다. 그렇지 않으면 구현 내용을 공개하는 것처럼 되어 나중에 호환성 이슈를 겪게 된다. - 만약 예외 변환을 사용하면서 근본적인 이유까지 확실히 알고 싶다면 변화할 때 excpetion 을 담아서 전달할 수 있다. 예를 들어 throw new HigherLevelException( lowerLevelException ) - 예외 연쇄 - 하위 계층(저수준)에서 발생한 예외를 분별 없이 전파하는 것보다는 예외 변환을 사.. 2017. 2. 27.
[Effective Java] 작명 패턴보다는 주석(annotation)을 사용하자. [Effective Java] 작명 패턴보다는 주석(annotation)을 사용하자. - 1.5 배포판 이전에는 도구나 프레임워크에서 특별히 취급할 필요가 있는 프로그램 요소들을 나타내기 위해 작명 패턴(naming pattern)을 사용하는 것이 일반적. 예를 들어 JUnit 테스팅 프레임워크에서는 테스트 메소드들의 이름을 test로 시작하도록 하였다. 이 방법은 효과는 있지만 단점들이 있다. 1. 철자상의 오류로 인한 오류 2. 적합한 프로그램 요소에만 사용되는지 확신할 방법이 없다. 3. 매개 변수 값을 프로그램 요소와 연관시키는 좋은 방법을 제공하지 않는다. - 작명패턴의 단점은 annotation 을 사용하여 깔끔히 해결된다. - annotation 정의는 다음과 같이 한다. @Retention.. 2017. 1. 2.
[iOS Study] UINavigationController [iOS Study] UINavigationController 출처 : 아론 힐리가스의 iOS 프로그래밍 -각 설정은 세부 페이지를 가지고 그 세부 페이지는 또 관련된 하위 페이지를 가진다.이러한 형태의 인터페이스를 드릴 다운 인터페이스(drill-down interface)라 한다. -앱에서 여러 정보 화면을 나타낼 때 UINavigationController 가 그 화면들의 스택을 관리한다.각 화면은 UIViewController 의 view 이고, 그 스택은 뷰 컨트롤러의 배열이다.UIViewController 가 스택 꼭대기에 있을 때 그 컨트롤러의 view 가 보여진다. -UINavigationController 의 인스턴스를 초기화할 때 그 인스턴스에 UIViewController 를 전달해줘.. 2016. 2. 22.
[iOS Study] UITableView 와 UITableViewController [iOS Study] UITableView 와 UITableViewController 출처 : 아론 힐리가스의 iOS 프로그래밍 -UITableView 는 여러 행을 가질 수 있는 단일 열에 데이터를 보여준다. -UITableView 의 dataSource 는 UITableViewDataSource 프로토콜을 따르는 한 어떠한 Objective-C 객체든 될 수 있다. -UITableViewController 클래스의 인스턴스는 뷰 컨트롤러, 데이터 소스, 델리게이트의 세 가지 역할을 다 할 수 있다. -UITableViewController 는 UIViewController 의 하위 클래스이기 때문에 view 프로퍼티를 가진다.UITableViewController 의 view 는 언제나 UITable.. 2016. 2. 20.
[Effective Java] 파이날라이저 ( finalizer ) 의 사용을 피하자. [Effective Java] 파이날라이저 ( finalizer ) 의 사용을 피하자. - 파이널라이저는 예측 불가에다가 위험하기도 하며 일반적으로 불필요하다. - 파이널라이저의 큰 단점은 신속하게 실행된다는 보장이 없다는 것. 즉 파이널라이저에서 time critical 하게 중요한 일을 해서는 안 된다는 것. - 파이널라이저가 얼마나 빨리 실행되는가는 가비지 컬렉션 알고리즘에 달려있으며, 이는 JVM 종류에 따라 다양하다. - 자바 언어 명세에는 파이널라이저가 신속하게 실행된다는 보장이 없는 것은 물론, 반드시 실행될것인지도 보장하고 있지 않다. - System.gc() 와 System.runFinalization() 메소드들을 사용하지 말자. 그 메소드들은 파이널라이저가 실행될 가능성을 높여주긴 하.. 2015. 12. 15.
Objective-C 고급 ( Advanced Objective-C ) Objective-C 고급 ( Advanced Objective-C ) 출처 : http://www.tutorialspoint.com/objective_c/objective_c_classes_objects.htm > - class 는 @interface 와 @implementation 의 두 파트로 나뉘어 정의된다. - 대부분이 objects 를 상속한다. - objects 는 메세지를 받기 때문에 receiver 로 불리기도 한다. - Properties 는 다른 class 에서의 access 를 접근하도록 도와준다. - ex) @interface Box:NSObject { double length; double breadth; } @property(nonatomic, readwrite) double .. 2015. 6. 18.
[android] DB 를 update 혹은 insert 할 떄 주의해야 할 것 ( thread ) android, DB 를 update 혹은 insert 할 떄 주의해야 할 것 ( thread ) DB 에 write ( update or insert ) 를 할 때 2개의 다른 thread 에서 동시에 진행한다면 한 thread 에서는 실패한다. 하나가 끝나기를 기다리는 것이 아니라 바로 fail 한다. ( synchronized 와 같이 wait 상태가 아니다. )경우에 따라서는 Exception 을 내뱉는 것이 아니라, 그냥 log 에 기록하는 것이 전부이기도 하다. 이것은 singleton synchronize database instance 로 해결할 수 있다. 덧붙여 Provider 역시 multi thread 에서 접근할 수 있기 때문에 open provider의 경우 이에 대한 대처를 꼭 .. 2014. 3. 13.
반응형