분류 전체보기
-
[TDD] 안드로이드 UI 테스트 도구 에스프레소 소개TDD 2020. 11. 21. 18:55
TDD를 안드로이드에서 적용할 방안이 없을까 생각해보았다. JUnit은 일반적으로 예상한 값과 실제값을 비교하여 테스트에 통과했는지를 비교하는 방식으로 이루어진다. 그런데 이러한 JUnit을 안드로이드에서 바로 사용하기에는 실제 동작이 주로 UI에서 이루어지기에 적용하기는 어려워 보였다. 그러나 역시 이러한 TDD 방식을 안드로이드 환경에서도 할 수 있게끔 UI 테스트를 지원해주는 에스프레소라는 프레임워크를 알게 되었다. https://developer.android.com/training/testing/ui-testing/espresso-testing?hl=ko 해외에서도 국내에서도 UI 테스트에서 많이 쓰이는 지 안드로이드 개발자 문서에서도 이에 관한 내용을 찾아볼 수 있다. 에스프레소를 사용하려면 ..
-
[Espresso] androidx.test.espresso.PerformException: Error performing 'type text..... 오류 해결 경험 공유TDD 2020. 11. 21. 16:58
이번에 만들고 있는 텍스트 작성 프래그먼트의 레이아웃이다. 중앙에 있는 텍스트 뷰에 텍스트를 넣어보고 제대로 텍스트가 입력되었는지 테스트해보기로 하였다. TextView에 Hello라는 문자열을 입력하는 테스트 코드를 작성하였고, 실행해보니 결과는 실패, 오류가 떠서 문제가 뭔지 고민해봤는데, 어찌보면 당연한 것이었다.TextView에는 텍스트를 입력해서 바꿔 넣을 수 없다는 것. 그래서 당연하게도 실행에 실패. 그래서 해당 TextView를 EditText로 바꿔주었다. 테스트 코드를 간략하게 바꾸고 재 시도. 이번에도 실패. 입력한 텍스트가 실제로 일치하지 않는다고 한다.왜일까??? 혹시나 해서 text 란을 비워보고 다시 실행. 결과는 성공. 입력하려던 EditText에 Text라는 문자열이 이미 ..
-
[CS] 퀵 정렬(Quick Sorting)Computer Science 2020. 11. 20. 22:30
찰스 앤서니 리처드 호어라는 사람이 만든 정렬 알고리즘이다.분할 정복(Divide and Conquer) 방식을 기반으로 하며최악의 경우 O(N^2), 평균적인 경우 O(n log n)의 시간 복잡도를 가진다.요소들이 균일하게 섞여있는 경우 가장 빠르며, 내림차순으로 정렬되어 있을 때에 가장 느리다.이름에서도 알 수 있듯, 가장 빠른 정렬 알고리즘들 중 하나에 속한다. 분할 정복방식이란?분할 정복 방식이란 말 그대로 어떤 커다란 문제를 여러 개의 작은 문제로 분할 한 뒤, 각각을 해결하고,해결된 각 부분을 합하여 전체의 문제를 정복하는 문제 해결 방식이다.퀵 정렬도 이러한 방식을 기초로 하고 있다. 퀵 정렬 알고리즘의 수행 과정1.배열의 첫번째 요소를 피벗(Pivot)으로 정한다. 여기서 피벗이란 배열의..
-
[PS] 백준 - 수 정렬하기 2Problem Solving 2020. 11. 19. 21:03
입력된 갯수만큼 수를 입력하고,해당 수열을 오름차순으로 정렬해야하는 문제이다. a = int(input()) entries=[] for x in range(0,a): entries.extend([int(input())]) entries.sort() for x in entries: print(x)멍청하게도, 그냥 아싸리 파이썬의 정렬함수를 이용하여 제출했으나결과는 제한 시간 2초를 넘겨 통과하지 못했다. 제한 시간이 2초밖에 안되는 만큼, 가장 빠른 정렬을 이용할 필요가 있다고 생각했고,퀵 정렬을 이용하기로 하였다. def quicksort(entry): if len(entry) entry[1]: temp = en..
-
[개발 팁] Vim 에디터란 무엇인가?개발 팁 2020. 11. 17. 21:55
최근에 즐겨보게 된 유튜브 채널 중에 얄코-얄팍한 코딩 지식이라는 채널이 있다. 설명도 아주 친절하게 잘해주는 건 물론이고, 도중에 간간히 유머도 녹아있어 초보자들이 입문으로 접하기에 아주 좋은 채널이라고 생각한다.이 채널의 동영상들을 시간 가는 줄 모르고 하나씩 보다가 Vim 에디터에 대한 소개 영상이 눈에 들어 왔다. Vim. AWS 원격 접속 시 환경 세팅을 하는 데에서 잠깐 봤던 녀석이다. 리눅스와 같은 CLI 환경에서 사용되는 구닥다리 유물 쯤으로 생각하고 있었으나, 얄코의 소개 영상을 보고 생각이 조금 달라졌다. CLI 환경에서만 즐겨 사용되는 것이 아닌, GUI 환경에서도 Vim을 고집하는 사람들이 있다지 뭔가. 기존에 익숙해진 방식에서 벗어나기 어려워하는 괴짜 같은 개발자가 아닌가 생각했으..
-
[아이패드로 코딩하기] 아이패드에서 파이썬 코딩하기 - Pythonista 소개개발 팁 2020. 11. 14. 18:29
최근 출퇴근 길에 아이패드로 백준 알고리즘 문제를 한번 풀어보고 싶어 스마트폰 핫스팟을 켜고 백준에 접속해서 코딩을 해보니, 여간 불편 한 것이 아니었다. 출퇴근 시간대라 사람이 많이 몰려 인터넷 속도는 기가 막히게 느릴 지경이었고, 백준의 제출 란은 IDE가 아니기에 코딩하기에 좋은 환경은 아니었다. 그래서 나름의 대안을 찾아보다가 Pythonista라는 어플을 발견했다. 앱스토어에 들어가 보면 이 어플에 대한 찬사도 자자하다. 나름대로 평가가 좋은 어플인 것 같아서, 12,000원의 돈을 주고 바로 다운로드 받아 직접 코딩을 해봤다. 직접 사용해보니, 사람들이 입을 모아 칭찬하는 것에는 다 이유가 있는 듯 하다. 내가 사용해보면서 느꼈던 장접들을 꼽아보자면 다음과 같다. 1.오프라인으로도 컴파일해서 ..
-
[Android] tools:가 도대체 뭘까??Andorid 2020. 11. 14. 10:04
안드로이드 레이아웃을 짜고있다가 특정 뷰의 속성을 정해주고 하다보면 이것저것 만지게 되는데, 가끔 이상한 속성들이 걸리적거리며 코딩을 방해하는 경우가 생긴다. 나 같은 경우 tools였다.이게 뭔지도 모르겠고,왜 있는지도 모르겠고, 왜 여기 끼어서 방해하는 건지도 모르겠어서 나에게는 그저 귀찮은 존재였다. 뷰의 visibility를 올바로 설정했다고 생각했는데, 실제로 그것이 적용되지 않는 경우. 옆의 스패너 아이콘이 보이는가? 이게 tools라는 뜻이다. 같은 속성 같아 보이지만 엄연히 다르다. 나 같은 경우 이런 식으로 작업해놓고 막상 에뮬레이터나 실제 기기로 테스트해보면, 잘만 나왔던 레이아웃이 자취를 감추듯 사라져버리곤 했다.평상시 같았으면 tools를 없애고 작업을 이어서 했겠지만, 최근들어 안..
-
[디자인 패턴] 싱글톤 패턴(Singleton Pattern)Design Pattern 2020. 11. 12. 00:18
싱글턴 패턴이란 이름에서도 유추할 수 있듯이 어떠한 객체를 생성해서 사용하는데 어떤 곳에서든 같은 객체를 사용할 수 있어야 하는 상황에 주로 사용된다. 예를 들어 프린터 등의 주변기기와의 인터페이스를 담당하는 클래스 또는 데이터베이스에 접근하는 클래스와 같은 것이 그 예가 될 수 있겠다. 나는 이러한 싱글톤 패턴을 직접 실습해보고자 현재 개발중인 개인 어플리케이션에 적용해보도록 했다. 나는 현재 MVP 패턴을 사용하고 있는데, 여기서 사용되는 모델이 데이터 저장과 인출을 맡고 있기 때문에, 싱글톤 패턴을 적용하기에 딱 좋은 예가 될 수 있다고 생각했다. 다음은 이를 그에 맞춰 구현한 모델 코드다. package com.lilac.lilacstory.Common.Model; import android.co..
-
[디자인 패턴] Android MVP 디자인 패턴Design Pattern 2020. 11. 11. 23:56
카테고리를 Android로 할까, 디자인 패턴으로 할까 고민하다가, 그래도 주 내용이 디자인 패턴이니 해당 카테고리에 넣었다. 프로그램을 개발하는 방법에는 여러가지가 있고, 사람마다 그 방법도 각기 다르다. 하지만 어떤 것이 더 효율적인 코드일까를 고민하면서 나온 것이 디자인 패턴이다. 컴퓨터를 전공한 학부생들의 경우 한 번쯤은 이 개념과 관계된 수업을 들었을 것이다. 나 또한 마찬가지로 대학에서 처음 디자인 패턴을 접해봤으나,그것을 자기 것으로 만드는 데에는 번번히 실패해왔다. 그 이유 중의 하나가 디자인 패턴을 일종의 이론적 지식으로 인식하고 , 예제를 거의 암기하듯이 머릿속에 우겨넣는 듯한 방식으로 진행했기 때문이 아닌가 생각한다. 시간이 조금흘러 디자인 패턴을 다시 공부하기로 마음먹었을 때, 찬찬..
-
[Android] 레이아웃 화면상의 비율을 일정하게 유지하는 방법Andorid 2020. 11. 7. 19:50
안드로이드 레이아웃을 제작하는 것에 서툴렀을 때,나는 각 레이아웃의 속성 사용방법을 제대로 알지 못하는 상태에서 주먹구구 방식으로 내가 원하는 결과물이 나올 때까지 이것도 바꿔보고 저것도 바꿔보며 시행착오를 거쳐 레이아웃을 만들어냈었다. 나는 주로 LinearLayout을 사용하기보다는 ConstraintLayout을 사용하기를 선호했었다. ConstraintLayout을 사용하면 굳이 여러개의 LinearLayout을 사용하여 그룹을 짓지 않아도 컴포넌트간의 마진을 이용하여 하나의 레이아웃의 위치를 빠르게 맞출 수 있기 때문이다. 이런 방식으로 어느정도 노력을 거듭하다 보면 나름대로 봐줄만한 결과물이 나오게 된다.나왔으면 하는 결과물과 시각적으로 거의 차이가 없을 때까지.그럼 어느정도 결과물이 나온 것..