본문 바로가기
반응형

전체 글340

코틀린 코드 작성 규칙 (Coding Convention) 스타일 가이드 적용 이 스타일 가이드에 따라 IntelliJ 포맷터를 구성하기 위해서는 Kotlin 플러그인 버전 1.2.20 이상을 설치하고, Setting -> Editor -> Code Style -> Kotlin -> set from... 을 선택하세요. 그리고 메뉴에서 Predefined Style -> Kotlin style guide를 선택합니다. 스타일 가이드에 따라 코드가 적용되어있는지 확인하려면 Setting -> Inspections -> Kotlin -> Style issues -> File is not formatted according to project settings 를 선택합니다. 소스 코드 구성 디렉토리 구조 순수 코틀린 프로젝트에서 권장되는 디렉토리 구조는, 공통 루트 .. 2020. 1. 20.
안드로이드 스튜디오 Heap 사이즈 늘리기 Heap 사이즈 증가 안드로이드 스튜디오의 초기 버전보다는 성능이 많이 좋아졌다고는 하지만, 여전히 동작할 때 마다 메모리를 왕창 잡아먹고있다. 연식이 있거나 하드웨어 성능이 부실한 컴퓨터에서는 비행기가 이륙하는 소리가 날 때도 많다. 안드로이드 스튜디오의 전반적인 성능을 높이기 위해서 많은 방법들이 있겠지만, 그 중에서 가장 쉬운건 Heap 사이즈를 증가 시키는 것이다. Heap 사이즈가 너무 작을 경우 퍼포먼스에 영향을 미칠 수 있기 때문에 적당한 사이즈로 늘리는 것을 권장한다. 맥 기준 좌측상단 Android -> Preference -> Appearance & Behavior -> System Settings -> Memory Settings에 들어간다. IDE Heap Size Setting에 .. 2020. 1. 16.
안드로이드 스튜디오에서 Lombok을 사용해보자 Lombok이란? Java BEAN 패턴이나 생성자 명세 등을 쉽게 해주는 라이브러리이다. Annotation을 이용하여 여러 기능을 사용할 수 있다. 기존의 private로 선언된 멤버변수에 접근하기 위해 반복적으로 메소드를 만드는 것, 또는 생성자를 Annotation한줄로 만들어 낼수 있다. 주요 기능 @Getter/@Setter 말그대로 Getter와 Setter를 생성한다. Annotation이 사용되므로 코드가 짧아지고 가독성이 높아진다. 하지만 명확하지 않은 데이터에 대한 Setter 기능을 자제하자. @AllArgsConstructor/@RequiredArgsConstructor/@NoArgsConstructor 각각 모든 변수로 생성자, final이나 @NonNull 된 멤버변수로만 생성.. 2019. 7. 2.
안드로이드 에뮬레이터에서 로컬호스트 주소 접근 방법 Retrofit2를 사용하기 위해 node 서버를 로컬에 띄웠는데 접근이 되지 않는다. 디바이스의 경우 실행 환경이 다르기 때문에 루프백 주소(127.0.0.1)로 접근하는건 말이 안되고, 에뮬레이터에서 루프백 주소로 접근했더니, 그래도 동작 불능이다. 구글링을 했더니 역시나 해답 발견. 안드로이드는 가상 라우터와 방화벽 뒤에서 네트워크가 동작하기 때문에 locahost나 127.0.0.1이 에뮬레이터를 실행하는 컴퓨터가 아니라 에뮬레이터 자신이 되어버린다는것. 따라서 불변의 접근 가능한 주소를 제공해준다. 주소는 다음과 같다. AVD - 10.0.2.2 Genymotion - 10.0.3.2 코드에 적용하면 다음과 같이 사용할 수 있겠다. public class Repo { private static .. 2019. 7. 1.
Global로 설치된 노드 모듈이 실행되지 않는 경우 안드로이드 Retrofit을 테스트 해보고 싶어서 빠르게 node 서버 구축하려고 했다. 하나하나 일일히 설정하면 노가다니까, express 보일러플레이트인 express generator를 글로벌로 설치했다. 그런데 이게 웬걸, 동작하지 않는다. express generator 회사 컴퓨터에서 한번 테스트 해본건데 동작이 안될리가 없었다. 모듈 경로 문제구나 싶어서 구글링을 했더니 바로 답이 나왔다. 내가 사용한 express-generator 설치 커맨드는 다음과 같다. sudo npm install express-generator -g 그리고 설치 결과는 아래와 같았다. 여기서 결과 화면에 나온 경로에 주목! /Users/nunu/.node/bin/express -> /Users/nunu/.node.. 2019. 7. 1.
안드로이드 Gradle Dependency 버전을 변수로 사용 안드로이드 Gradle에 Dependency를 추가하다보면 버전 정보가 뒤섞여 눈에 잘 들어오지 않는다. 이 때 implementation과 버전 정보에 변수를 사용하면 편리하다. 다음은 구글 architecure-sample에 있는 App 레벨 Gradle의 일부 코드이다. 같은 성격을 가지는 dependency끼리 주석으로 행구분이 되어있다. 이렇게 분리를 해주면 관리 하는 측면에서도 한눈에 파악이 가능하다. dependencies { // App dependencies implementation "androidx.appcompat:appcompat:$appCompatVersion" implementation "androidx.cardview:cardview:$cardVersion" implement.. 2019. 7. 1.
Netlify로 정적 웹 클라이언트를 배포해보자! 봄맞이(?) 개인 프로젝트를 진행하고 있다. 여태껏 야심 차게 준비했던 토이 프로젝트는 번번이 실패해서, 이번에는 마음을 단단히 먹고 시작했다. 성공을 위해서 기능을 최소의 최소까지 줄이고, 불필요한 서버 부분도 떼 버렸다. 데이터는 브라우저도 아닌 싱글턴으로 저장하게 만들었는데, 덕분에 새로고침 하면 클-린한 상태가 된다. 다시 말해 굉장히 정적인 페이지가 된 것이다. 한 2주정도 주말과 평일 저녁 틈틈이 작업을 한 프로젝트가 막바지에 들어가면서, 처음으로 배포해보고 싶다는 생각이 들었다. 관리할 데이터베이스/서버도 없어서 상당히 쉽지 않을까 하고 이것저것 찾아보던 중에 Netlify라는 서비스를 알게 되었다. 기본적으로 배포는 물론이고 Github에 연동하여 Push 될 때마다 자동으로 빌드, 배포 .. 2019. 4. 7.
코드 정적 분석을 위한 소나 클라우드(Sonar Cloud) 사용법 소나 큐브? 소나 큐브는 코드의 정적 분석을 위해 사용되는 툴입니다. 정적 분석은 말 그대로 코드를 실행하지 않고 코드 형태에 대한 분석만 진행합니다. 대표적으로 소나 큐브를 사용하여 분석할 수 있는 카테고리는 코드 악취(Code Smell), 버그(Bug), 취약성(Vulnerability), 테스트 커버리지(Test Coverage) 등이 있습니다. 또한 히스토리를 쌓아 이러한 분석 결과 추이를 볼 수도 있습니다. 이러한 분석을 통해 수치적으로 내 코드의 퀄리티가 어느 정도 되는지 확인할 수 있으며, 추가되는 코드에 대해 지속적으로 관리가 가능합니다. 로컬에서 개인적으로 사용하거나, 웹서버를 구축하여 소나 큐브를 올린 뒤 사용하는 방법을 쓸 수 있습니다. 그러나 개인 웹서버에 설치하는 것보다 세팅이 .. 2019. 3. 30.
자바스크립트 호출 스택(Call Stack) 동작 예제 아래의 예제들은 자바스크립트 호출 스택과 이벤트 루프, Web API가 어떤식으로 동작하는지 보여줍니다. 예제 코드의 동작 환경은 웹 브라우저 입니다. 일반적인 호출 스택 / 이벤트 루프 코드와, 호출 스택, 이벤트 루프, Web API는 아래와 같은 관계로 표현됩니다. 처음 시작하면 모든 것들이 빈 상태입니다. 코드가 실행되면 글로벌 스택 프레임이 호출 스택에 Push됩니다. 그리고 나서, 첫번째 라인(setTimeout 호출)이 실행됩니다. 실행된 함수를 스택안에 넣습니다. 이름에서부터 알 수 있듯이 호출 스택은 스택(Stack) 입니다. 이는 Push된 마지막 항목이 Pop에서는 가장 먼저 나오는 LIFO(Last In First Out) 구조를 의미합니다. (쌓여있는 접시를 꺼내는 상황을 생각해보.. 2019. 1. 7.
반응형