본문 바로가기
[Kotlin] 장점, 단점, 그리고 아쉬운 점 이야기 [Kotlin] 장점, 단점, 그리고 아쉬운 점 이야기 https://medium.com/keepsafe-engineering/lessons-from-converting-an-app-to-100-kotlin-68984a05dcb6https://medium.com/keepsafe-engineering/kotlin-the-good-the-bad-and-the-ugly-bf5f09b87e6f -위 링크의 글을 쓴 필자는 마켓에 출시된 Java 로 되어 있는 앱을 Kotlin 으로 전환했다.많은 사람들이 Kotlin lib 때문에 dex method limit 이 걸릴 것을 걱정하지만,실제 converting 후 proguard 적용시 method count 는 10% 줄어들고, code line 은 30% 줄.. 2018. 1. 15.
[Effective Objective-C] #39 핸들러 블록을 사용해 코드가 여러 개로 나뉘는 것을 막으라 [Effective Objective-C] #39 핸들러 블록을 사용해 코드가 여러 개로 나뉘는 것을 막으라 출처 : Effective Objective-C -특정 상황에서 앱이 특정 시간 동안 응답하지 않으면 자동으로 종료될 수 있다.특히 iOS 앱은 반드시 종료된다.시스템 와치독(system watchdog)은 특정 시간 동안 메인 스레드가 중단된 앱은 강제로 종료시킨다. -비동기 메서드를 쓰면 일을 끝냈을 때 완료 사실을 알고 싶어 하는 것들에 완료 사실을 알려주는 방법이 필요하다.이를 할 수 있는 방법이 몇 가지 있다.일반적으로 쓰는 방법은 객체가 따를 수 있는(conform) 델리게이트 프로토콜을 이용하는 것이다.델리게이트 객체는 비동기 작업의 완료 같은 적절한 이벤트가 발생하면 알림을 받을 수.. 2017. 10. 3.
[Java] nio vs io ( package level 에서의 개념, not 성능 ) [Java] nio vs io ( package level 에서의 개념, not 성능 ) http://tutorials.jenkov.com/java-nio/nio-vs-io.html -IO stream oriented blocking IO NIO buffer oriented non-blocking IO selectors -Stream oriented 한개 또는 그 이상의 byte 를 stream 에서 읽어온다. stream 에서 앞뒤로 왔다갔다 할 수 없다. ( buffer 를 사용해 cache 해야 가능하다. ) -Buffer oriented 우선 buffer 에 읽어오고 그 다음에 process 를 한다. buffer 를 통해 앞뒤로 왔다갔다 할 수 있다. -Blocking IO 는 read(), w.. 2017. 6. 11.
[Java] GC 에 대한 이야기 [Java] GC 에 대한 이야기 http://www.javaworld.com/article/2078645/java-se/jvm-performance-optimization-part-3-garbage-collection.html -System.gc() 를 호출하는 것이 GC 를 보장하지 않는다. -gc 가 호출되면 gc 는 자신이 실행되어도 안전한 시점인지 확인 후 실행된다.안전한 시점이라는 것은 지속적인 object allocation 이 아닐 때, optimized CPU instruction 의 중간이 아닐 때 와 같은 경우가 있겠다. -GC 는 여러 가지 variation 이 있지만 다음 두가지는 모든 GC 가 동일하다.1. OOM 이 나지 않도록 사용되지 않는 메모리를 free 시킨다.2. pe.. 2017. 5. 25.
[샌프란시스코] 첫 식사는 역시 스테이크! 테드 스테이크 ( Ted's Steak House ) [샌프란시스코] 첫 식사는 역시 스테이크! 테드 스테이크 ( Ted's Steak House ) 시작 : 16:13 끝 : 16:46 유니언 스퀘어에서 살짝 멍 떄리다가 첫 식사를 하러 간다.역시 미국에 왔으니 스테이크를 맛 봐야 겠지? 가성비도 좋고, 셀프 서비스 느낌으로 이용하기도 편리하다는Ted's Steak House ( 테즈 스테이크 하우스 ) 를 이용하기로 한다. 위치는 글 가장 마지막에~ 입구에 전기구이( 혹은 오븐구이 ) 치킨들이 보이고, 메뉴도 보인다. 테드의 유명한 특수부위 스테이크는 $17.49.신선한 구운 연어는 $ 17.49.오븐에 구운 ( broil ) 치킨 반마리는 $ 12.49. 우리는 위에서부터 2개.특수부위 스테이크와 구운 연어를 먹기로 한다. 안쪽으로 들어서자, 그릴에서.. 2017. 5. 8.
[Java Concurrency] 명시적인 락 13.1. Lock 과 ReentrantLock - Lock 인터페이스는 암묵적인 락과 달리 조건 없는(unconditional)락, 폴링 락, 타임아웃이 있는 락, 락 확보 대기 상태에 인터럽트를 걸 수 있는 방법 등이 포함돼 있으며, 락을 확보하고 해제하는 모든 작업이 명시적이다. - public interface Lock{ void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition(); } - Reentran.. 2017. 5. 5.
[Java Concurrency] 작업 실행 [Java Concurrency] 작업 실행 - 앱이 해야 할 일을 "작업"이라는 단위로 분할하면 프로그램의 구조를 간결하게 잡을 수 있고, 트랜잭션의 범위를 지정함으로써 오류에 효과적으로 대응할 수 있고, 작업 실행 부분의 병렬성을 자연스럽게 극대화 할 수 있다. 6.1. 스레드에서 작업 실행 - 프로그램에서 일어나는 일을 작업이라는 단위로 재구성하고자 한다면 가장 먼저 해야 할 일은 작업의 범위를 어디까지로 할 것인지 정하는 일이다. 원론적으로 보자면 작업은 완전히 독립적인 동작을 말한다. 독립성이 갖춰져 있어야 병렬성을 보장할 수 있다. 작업을 스케쥴링하거나 부하 분산(load balancing)을 하고자 할 때 폭넓은 유연성을 얻으려면 각 작업이 앱의 전체적인 업무 내용 가운데 충분히 작은 부분을.. 2017. 4. 24.
[Java Concurrency] 객체구성 [Java Concurrency] 객체구성 4.1. 스레드 안전한 클래스 설계 - 객체가 갖고 있는 여러 가지 정보를 해당 객체 내부에 숨겨두면 전체 프로그램을 다 뒤져볼 필요 없이 객체 단위로 스레드 안전성이 확보되어 있는지 확인할 수 있다. - 클래스가 스레드 안전성을 확보하도록 설계하고자 할 때에는 다음과 같이 세 가지를 고려해야 한다. 객체의 상태를 보관하는 변수가 어떤 것인가? 객체의 상태를 보관하는 변수가 가질 수 있는 값이 어떤 종류, 어떤 범위에 해당하는가? 객체 내부의 값을 동시에 사용하고자 할 때, 그 과정을 관리할 수 있는 정책 - n 개의 변수를 갖는 객체의 상태는 n개 변수가 가질 수 있는 값의 전체 조합이다. A라는 객체 내부에 다른 객체 B를 가리키는 변수를 사용하고 있다면, .. 2017. 4. 18.
[라오스 루앙프라방] 강 건너 맛집, (디) 옌사바이 [라오스 루앙프라방] 강 건너 맛집, (디) 옌사바이 Free(?) Boat 를 타고 강 건너 레스토랑에 도착했다.레스토랑 이름은 (디) 옌사바이. (디) 를 괄호 안에 넣어준 것은, 가이드 북에는 "옌사바이" 라고만 되어 있는데,영어 스펠링에는 D 가 들어있어서.. 구분을 주기 위해서? ㅋㅋ 여튼 앞으로 "옌사바이" 라는 단어가 또 등장할지 안 할지는 모르겠으나,(디) 는 생략하는 것으로? 칸 강이 보이는 옌 사바이 레스토랑이라고 간판이 써있다.간판이 정겹다. 입구. 우리네 국립공원 같은 산에 놀러가면, 계곡 혹은 냇가를 따라 평상들이 있는데 그런 느낌이다. 그러나 자연과 조금 더 어울어진 느낌이 들어 조금 더 아늑하다.( 물론 삐끼 아주머니들도 없다. ) 사실 우리는 칸 강을 바로 옆에서 볼 수 있는.. 2017. 3. 16.
반응형