IT (26) 썸네일형 리스트형 슬기롭게 로그(Log)를 쌓는 법 How to Make Effective Logging 모든 언어, 시스템과 프레임 워크를 통틀어서 공통적으로 가지고 있는 기능은 Log입니다. 우리는 응용프로그램이 의도한대로 동작하고 있는지 확인하기 위해서 또는 문제가 발생된 부분이 어디인지 찾기 위해서 로그를 적극적으로 활용하고 있습니다. 그런데 많은 개발자들이 시스템에 남기는 로그를 저마다의 생각과 개성을 반영하여 남기고 있습니다. 지금이라도 웹서버의 access.log를 열어보거나 Graylog같은 모니터링 시스템에서 로그를 확인해 보시기 바랍니다. 로그를 기반으로 시스템이 잘 운영되고 있다고 진단할 수 있나요? 아마도 꽤 오랜시간을 들여다 보거나 한숨이 절로 나오실 겁니다. 결국은 아무렇게 쌓은 로그는 많은 개발자들이 시스템을 운영하는 환경에서 .. AWS에서 효율적인 비용으로 시스템을 운영하기 How to handle the cost of AWS when your system is dramatically growing up. AWS에서 비용을 줄이는 포스팅은 많습니다. 이것저것 줄이고 바꿔서 비용을 효율적으로 사용하는 것이 대부분의 문맥입니다. 하지만 실제로 운영하면서 엔지니어들이 항상 염두에 둘 사항들에 대해서 이야기하는 포스팅을 보지 못했습니다. 그래서 서비스와 시스템이 빠르게 성장함에 따라 시스템 비용을 어떻게 운용해야 하는지 알아보고자 합니다. 클라우드 시스템을 운영하는 마음가짐 - You should change your mindset from IDC to Cloud on operating & planning Systems. 비용 절감 이야기에서 갑자기 마음가짐을 바꾸라는 말이냐 라고.. [Android] Koin Test로 테스트 코드 작성하기 이 글은 이미 Koin 세팅을 하셨다는 전제하에 기술하였습니다. 아직 Koin을 세팅하지 않았다면 이전 세팅 방법에 대해서 포스팅을 참고하시기 바랍니다.https://simplifyprocess.tistory.com/5 이번에는 Koin을 사용해서 테스트 코드를 작성할때 사용하는 KoinTest에 대해서 기술하고자 합니다. Gradle 세팅일단 어느 라이브러리를 사용하던지 gradle 세팅을 안할 수는 없겠죠. 이부분도 아주 간단합니다.먼저 다음과 같이 MavenRepository에 jCenter를 추가합니다.// build.gradle at Project Levelbuildscript { repositories { jcenter() }} 그리고 Module Gradle에 KoinTest를 추가합니다... [Android] Koin vs Dagger2 이전 아티클을 보시면 아래의 내용을 이해하는데 도움이 됩니다. Koin으로 의존성 주입하기 [ https://simplifyprocess.tistory.com/5 ] 오늘은 민감한 주제입니다. Koin vs Dagger2. Dagger는 안드로이드에서 가장 많이 사용되고 있는 DI Framework이고, 구글에서 직접 유지보수하는 오픈소스입니다. 하지만 두가지를 경험해본 저는 Koin에 손을 들어주고 싶습니다. 왜냐하면 서로 바라보는 지향점이 아주 다르고 Layering, 사용 편의성으로 따져봤을때 Koin이 더욱 우세하다고 생각합니다. Koin과 Dagger의 구동방식 이해를 돕기 위해 아래의 그림을 봅시다. 위 그럼처럼 Koin은 Module에서 선언한 DI를 Cache에 저장하고 있습니다. 그렇기 .. [Android] Mockito Plugin 세팅 - MockMaker TDD를 해야 한다는 것은 굳이 설명할 필요가 없을 정도로 잘 알고 계시리라 생각합니다. 그중에서 DI 환경에서 테스트 코드를 작성할때 사용하는 Mock은 필수라고 할 수 있습니다. 그중에서 Mockito와 PowerMock을 많이 사용합니다. 개인적으로 테스트 코드를 작성할때 Mock 라이브러리는 심플하고 쉽게 사용할 수 있는 것을 선호해서 Mockito를 사용합니다. 안드로이드에서 Mockito를 이용해서 유닛 테스트 코드를 만들때 사전에 해줘야 하는 세팅을 알려드리고자 합니다. Mockito를 사용하는 분이라면 한번 맞닥뜨렸을 오류.. Could not initialize plugin: interface org.mockito.plugins.MockMaker 아래의 그림처럼 잘 나가다가 갑자기 오류가.. [Android] Koin으로 의존성 주입하기 요즘 안드로이드 프로젝트를 수행하면서 의존성 주입(DI - Dependency Injection)은 필수라 할 수 있습니다. 그래서 코틀린 환경에서 떠오르고 있는 DI Framework인 Koin에 대해서 이야기하고자 합니다. 1. Koin 세팅 최상단의 Project Gradle(ROOT/build.gradle)에 아래와 같이 설정을 추가합니다. buildscript { dependencies { classpath "org.koin:koin-gradle-plugin:$koin_version" } } 그리고 Koin을 사용하는 Module의 Gradle(app/build.gradle)에 아래와 같이 설정을 추가합니다. apply plugin: 'koin' android { packagingOptions .. [Android] No static method metafactory Kotlin + Retrofit + OkHttp 예제를 만들고 있는데.. 갑자기 다음과 같은 에러가 나와서 살짝 당황했습니다. java.lang.NoSuchMethodError: No static method metafactory (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar) 원인은 자바의 호환성에 대한 지정이 없었기 때문이었습니다. 그래서 다음과 같이 app:gradle.build에 추가해서 1.8 기준으로 지정해서 해결할 수 있었습니다. android { ... compileOptions { sourceCompatibility JavaVersion.V.. [Android] Http 통신을 로그로 기록하기 How to logging Http communication used by Okhttp? 모바일 프로그래밍을 하다 보면 인증, 로깅등을 위해서 Http 정보를 로그로 출력해야 하는 상황이 있다. Retrofit과 OkHttp를 이용해서 Http 통신에 대한 로그도 출력해보자. Retrofit, OkHttp에 대한 소개와 사용법은 이미 알고 있다고 가정한다. 1. app:gradle.build에 아래와 같이 OkHttp Logging Lib를 추가한다. ... dependencies { ... // OkHttp implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.5.0' // Use for HttpLoggingIntercept.. 이전 1 2 3 4 다음