본문 바로가기
[Android] ART vs. Dalvik [Android] ART vs. Dalvik https://source.android.com/devices/tech/dalvik/ Ahead-of-time ( AOT ) compilation -ART 는 AOT compile 을 제공한다. 이는 install-time 은 더 오래 걸리지만, app 자체의 performance 는 더 향상된다.Install time 에 ART 는 app 을 on-device dex2oat tool 을 이용해 compile 한다.이 dex2oat 는 DEX 파일을 input 으로 받아서 target device 에 맞는 compiled app executable 을 생성해낸다.( ART 이전에 개발된 앱들은 문제가 생길 수 있다. https://developer.androi.. 2018. 10. 11.
[Kotlin Tutorial] Kotlin 의 Type system - Chap6. The Kotlin type system [Kotlin Tutorial] Kotlin 의 Type system - Chap6. The Kotlin type system 출처 : Kotlin in action 6.1. Nullability 6.1.1. Nullable types -Kotlin 은 nullable types 를 지원한다.nullable type 이라는 것은 어떤 variable 이 null 을 가질 수 있는지를 명시하는 것이다. -nullable 하지 않은 곳에 null 을 넣으면 compile error 가 난다.기본 type 은 nullable 하지 않으며, nullable 을 만드려면 type 뒤에 ? 를 붙여주면 된다.어떤 타입이든 뒤에 ? 를 붙여줄 수 있다.fun strLenSafe(s: String?) = … 6.1.2.. 2017. 8. 18.
[Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 [Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 출처 : Effective Objective-C -오브젝티브-C 는 내장(built-in) 네임스페이스 기능이 없다.그렇기 때문에 일어날 가능성이 있는 충돌을 피하는 방법을 사용하지 않으면 이름은 쉽게 충돌한다.앱에서 이름이 충돌하면 중복 심벌 에러(duplicate symbol error)가 발생하여 링크(link)가 되지 않는다. -링크가 안 되는 것보다 더 좋지 않은 상황은 중복된 것을 포함한 라이브러리 중 하나가 실행 시간에 로딩되었을 때다.이 경우 동적 로더(dynamic loader)는 중복 심벌 에러와 마주치게 될 것이다.그리고 아마도 전체 앱이 다운될 것이다. -이 문제를 피하는 한 가지 방법은 간.. 2017. 8. 17.
[Java Concurrency] 활동성 최대로 높이기 #2 [Java Concurrency] 활동성 최대로 높이기 #2 10.2. 데드락 방지 및 원인 추적 - 한 번에 하나 이상의 락을 사용하지 않는 프로그램은 락의 순서에 의한 데드락이 발생하지 않는다. 물론 그다지 실용적이지 않은 방법일 수 있지만, 가능하다면 한 번에 하나 이상의 락을 사용하지 않도록 프로그램을 만들어 보는 것도 좋다. - 여러 개의 락을 사용해야만 한다면 락을 사용하는 순서 역시 설계 단계부터 충분히 고려해야 한다. 설계 과정에서 여러 개의 락이 서로 함께 동작하는 부분을 최대한 줄이고, 락의 순서를 지정하는 규칙을 정해 문서로 남기고 그 규칙을 정확하게 따라서 프로그램을 작성해야 한다. - 세세한 수준에서 락을 관리하는 프로그램에서는 두 단계의 전략으로 데드락 발생 가능성이 없는지를 확.. 2017. 5. 2.
[Java Concurrency] 중단 및 종료 #2 [Java Concurrency] 중단 및 종료 #2 7.3. 비정상적인 스레드 종료 상황 처리 - 스레드를 예상치 못하게 종료시키는 가장 큰 원인은 바로 RuntimeException 이다. RuntimeException 은 대부분 프로그램이 잘못 짜여져서 발생하거나 기타 회복 불가능의 문제점을 나타내는 경우가 많기 때문에 try_catch 구문으로 잡지 못하는 경우가 많다. RuntimeException 은 호출 스택을 따라 상위로 전달되기보다는 현재 실행되는 시점에서 콘솔에 스택 호출 추적 내용을 출력하고 해당 스레드를 종료시키도록 되어 있다. - 스레드 풀에서 사용하는 작업용 스레드나 스윙의 이벤트 처리 스레드와 같은 작업 처리용 스레드는 항상 Runnable 등의 인터페이스를 통해 남이 정의하고.. 2017. 4. 26.
[iOS Study] 디버그 도구 [iOS Study] 디버그 도구 출처 : 아론 힐리가스의 iOS 프로그램 -Xcode 5 CPU와 메모리 사용량에 관한 정보를 한눈에 제공하는 디버그 측정기(debug gauges) 가 있다. -디버그 네비게이터는 프로그램 실행 중에(실시 정지나 중단된 경우가 아닌) CPU 와 메모리 측정기를 보여준다. -이 측정기들은 실제 프로그램이 실행 중인 하드웨어를 기반으로 측정한다.Mac 은 iOS 장비보다 가용 램이 훨씬 많고 CPU 코어도 대개 더 많다.따라서 iOS 시뮬레이터에서 프로그램을 실행하면 CPU 와 메모리 사용량은 매우 작게 나타날 것이다. -CPU 디버그 측정기는 편집기 패널에 CPU 리포트를 표시한다. Percentage Utilized 해당 장비가 가진 CPU 코어 수에 상대적인 CPU .. 2016. 2. 26.
[iOS Study] 델리게이션과 텍스트 입력 [iOS Study] 델리게이션과 텍스트 입력 출처 : 아론 힐리가스의 iOS 프로그래밍 -UITextField 인스턴스는 사용자가 텍스트를 수정할 수 있게 해준다. -UIResponder 는 UIKit 프레임워크에 존재하는 추상 클래스이다.다음 세 클래스는 UIResponder 의 하위 클래스이다. UIView, UIViewController, UIApplication UIResponse 는 이벤트를 제어하는 메소드들을 정의한다.이벤트에는 터치 이벤트, 흔들기와 같은 모션 이벤트, 재생/정지와 같은 원격 제어 이벤트 등이 있다.하위 클래스들은 이런 이벤트에 응답하기 위해 각각에 따라 이들 메소드를 재정의한다. -UIWindow 는 다른 이벤트들에 응답할 객체를 가리키는 퍼스트 리스폰더 (first re.. 2016. 2. 19.
[android] Memory Allocation 을 추적하자! Memory Allocation 을 추적하자. DDMS 의 Allocation Tracker 라는 도구를 이용하여 메모리 할당을 조사할 수 있다.해당 application process 를 클릭한 후 Allocation Tracker 를 클릭하고, Start Tracking 버튼을 클릭한 후, 앱에서 여러가지 기능을 수행한다. 그 다음 Get Allocation 버튼을 클릭하면 현재 할당된 메모리들에 대한 정보가 나온다. 해당 메모리가 어떤 경위로 할당되었는지 Stack Trace 정보도 볼 수 있고, 어떤 Thread, 어떤 Class, 어떤 File의 몇번째 줄에서 생성된 녀석인지 상세정보를 알 수 있다. Allocation Tracker, Android, application process, CLA.. 2013. 8. 13.
[android] Flurry 에 Crash Report 기능이 생겼다. Flurry 에 Crash Report 기능이 생겼다. 무료 오늘의 운세 프로그램에 Flurry 를 장착해놨었는데,신나게 오랜기간 여행을 다녀오니 Crash Report 라는 기능이 생겼다. 무료 오늘의 운세 프로그램이 궁금하세요? 클릭! 현재는 Beta 버전인데, 기존에 사용하던 2.x 버전에서는 지원하지 않고,3.x 버전부터 지원하는듯 싶다. 미리 ACRA 라도 설치하고 다녀왔어야 하는데,1주 단위로 약 140개나 되는 에러가 발생했는지 이를 확인할 길이 없으니 답답하다. 이번에 3.x 버전으로 업데이트 할 예정이니..BETA 라도 충실히 버그를 잘 리포트해주면 되겠다. 리포트를 잘 하는지는 한번 써보고 다시 한번 업데이트 해보겠다. 여튼, Flurry 가 Crash Report 기능도 지원하니 너무.. 2013. 6. 1.
반응형