일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 자바기초
- 안드로이드
- flutter
- Kotlin
- 파이썬 크롤링
- Design Pattern
- Apollo Server
- unit test
- ubuntu python
- mvvm
- 우분투 파이썬
- prisma
- Android test
- graphQL
- PYTHON
- java
- 웹크롤링
- dagger-hilt
- 유니티
- Apollo GraphQL
- Nexus GraphQL
- 자바
- Data structure
- 안드로이드 테스트
- Android
- LinkedList
- 안드로이드 디자인패턴
- 안드로이드 mvp
- Dependency Injection
- MVVM pattern
- Today
- Total
목록전체 글 (66)
Hun's Blog
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rLW6o/btqCRxHtKb0/e2PSzM4dcq2sKFN7lbj3KK/img.png)
JUnit -Java 프로그래밍 언어의 Unit Test 프레임워크이다. JUnit을 사용해보기 전에 테스트에 대해서 조금 더 알아보자. // 수동테스트 & 자동테스트 1. 수동테스트 -> 시간이 많이 걸림 -> 인건비 증가 -> 사람의 손으로 직접 하기 때문에 신뢰성 떨어짐 -> 프로그래밍 불가능 2. 자동테스트 -> 인적 자원보다 빠르게 테스트 가능 -> 인건비 감소 -> 사람의 손보다 안정적 -> 프로그래밍 가능 // Unit test & UI test 1. Local Unit Test (Unit Test) -> JVM에서 실행된다. -> 프로젝트 구조 : src/test/java 2. Instrumentation Test (UI Test) -> 안드로이드 기기가 필요하다. -> 프로젝트구조 : s..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/myynw/btqCQoxpUWe/IxqsL4wZKLNdQECoiYVzL1/img.png)
Android Test란 무엇인가? 이미지 1 안드로이드 프로젝트 처음 안드로이드를 공부할 때 안드로이드 스튜디오에서 Hello world를 찍기위해 기본적인 empty activity를 포함하는 프로젝트를 생성하면 이미지1 과같이 java 폴더가 생성되는것을 볼 수 있다. com.회사명.프로젝트명 으로 패키지가 생성되고 우리는 맨 위에 있는 패키지 안에 앱을 구성하는 본격적인 자바 프로그래밍을 하게된다. 그런데 아래있는 두개의 패키지는 무엇일까? 수많은 기초 예제와 작은 프로젝트를 만들면서 단 한번도 저 안에 자바 클래스를 만들어본 적이 없다. 안드로이드 스튜디오에서는 왜 기본적인 패키지 이외에 2가지의 패키지를 더 만들어주는 것일까? 이러한 질문으로 시작해서 Android Test에 대해서 알아보기 ..
Content Provider 컨텐트 프로바이더는 어플리케이션 사이에서 데이터를 공유하는 통로 역할을 한다. 각종 설정값이나 DB에 접근하게 해 주며 결과를 반환하는 브릿지 역할은 컨텐트 리졸버(Content Resolver)가 한다. 컨텐트 리졸버는 컨텐트 프로바이더의 주소를 통해 데이터에 접근하여 결과를 가져온다. App -ContentUri-> ContentResolver --> ContentProvider -->DBClass -->SQLite 안드로이드 시스템에서는 각 어플리케이션마다 각각의 DB를 가질 수 있다. 그리고 어플리케이션 내부의 DB는 해당 어플리케이션만 접근이 가능하다. 다른 어플리케이션에게 DB가 전부 공개된다면 보안에 취약해 질 수 있기 때문이다. 하지만, 어플리케이션 DB 접근..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Ul07v/btqCQoRGXAt/xkrBfQcUjIkHak6VtfQr41/img.png)
Broadcast Receiver 안드로이드에서 다양한 이벤트와 정보를 받아 반응하는 컴포넌트이다. Broadcast는 메시지를 여러 객체에게 전달하는 방법을 의미하는데 이렇게 전달되는 Broadcast 메시지를 Broadcast Receiver라는 어플리케이션 구성요소를 이용해 받을 수 있다. *방송의 특징과 흡사하다. 방송은 불특정 다수에게 송신하고 필요한 사람만 수신하는 구조이다. 경우에 따라 특정 사람에게만 송신되는 경우도 있다.(유료채널) 이러한 방송에 귀 기울이고 있는 수신자가 Broadcast Receiver 이다. 수신만 가능한 것이 아니라 필요에 의해 방송도 가능하다. 이때 방송에서 채널에 해당하는 것이 action이다. ex) 베터리 상태확인 action -> ACTION_BATTERY..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qn3i9/btqCTwVg9d3/F6gYIhvtqKo1ssRKuAlep0/img.jpg)
4대 컴포넌트 - Activity - Service - Broadcast Receiver - Content Provider 각 컴포넌트는 하나의 독립된 형태로 존재하며, 정해진 역할을 수행한다. 컴포넌트 간에 Intent라는 일종의 메시지 객체를 사용하여 상호 통신을한다. 가장 많이 사용하는 컴포넌트는 액티비티이며 나머지 컴포넌트도 매우 중요하므로 어떠한 기능을 담당하는지 파악해두어야 한다. 이미지1 안드로이드 4대 컴포넌트와 인텐트 Service - 서비스는 백그라운드에 실행되는 프로세스를 의미한다. - 화면이 존재하지 않는다. - 한번 시작 된 서비스는 앱이 종료되도 계속 백그라운드에서 돌아간다. - 모든 서비스는 Service 클래스를 상속받아 사용한다. - 네트워크를 통해 데이터를 가져올 수 있다..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/E8cON/btqCPAdJwJn/KnMKlIvOn9zHDLQsAEFQc1/img.jpg)
4대 컴포넌트 - Activity - Service - Broadcast Receiver - Content Provider 각 컴포넌트는 하나의 독립된 형태로 존재하며, 정해진 역할을 수행한다. 컴포넌트 간에 Intent라는 일종의 메시지 객체를 사용하여 상호 통신을한다. 가장 많이 사용하는 컴포넌트는 액티비티이며 나머지 컴포넌트도 매우 중요하므로 어떠한 기능을 담당하는지 파악해두어야 한다. 이미지1 안드로이드 4대 컴포넌트와 인텐트 Activity - 액티비티는 UI 화면을 담당하는 컴포넌트이다. - 안드로이드 애플리케이션은 반드시 하나의 액티비티를 가지고 있어야 한다. - 각 액티비티는 매니페스트 파일에 등록 되어 있어야 한다. - 액티비티는 하나 이상의 view를 가질 수 있다. Activity L..
Generic 제네릭이란 데이터 타입을 일반화한다는 것을 의미한다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 것이다. *JDK 1.5 이전에는 여러 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 Object 타입을 사용했었다. 이 경우 반환된 Object 객체를 다시 원하는 타입으로 변환해야 했으며, 이때 오류가 발생할 가능성이 존재한다. JDK1.5 부터 도입된 제네릭을 활용하면 컴파일 시 미리 타입이 정해지므로, 타입검사나 타입 변환과 같은 번거로운 작업을 생략할수 있게 된다. 예제 1 2 3 4 5 6 7 8 9 class MyArray { T element; void setElement(T element){ this.element = element; } T ..
Hash? ArrayList는 내부 인덱스를 이용하여 검색이 한번에 이루어지기 때문에 빠른 검색 속도를 보장하는 반면 데이터의 추가/삭제시 많은 데이터가 밀리거나 당겨지기 때문에 많은 시간이 소요된다. LinkedList는 추가/삭제시 인근 노드들의 참조값만 수정해 줌으로써 빠른 처리가 가능하지만 데이터를 검색할 경우 해당 노드를 찾기 위해 처음부터 순회 검색을 해야하기 때문에 데이터의 수가 많아질수록 효율이 떨어지는 구조이다. *이러한 한계를 극복하기 위해서 제시된 방법이 Hash이다. Hash는 내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠른 검색속도를 갖는다. 그리고 데이터 추가/삭제시 기존 데이터를 밀어내거나 당기는 작업이 필요없도록 특별한 알고리즘을 이용하여 데이터와 연관된 고유한 숫자..
MAP 맵은 사전과 비슷하다. people이란 단어에 "사람", baseball이란 단어에 "야구"라는 뜻이 부합되듯이 Map은 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다. 맵은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통해 Value를 얻는다. *맵의 가장 큰 특징은 Key로 Value를 얻어낸다는 것이다. People이라는 단어의 뜻을 찾기 위해서 사전의 내용을 순차적으로 검색하는 것이 아니라 해당 단어가 있는 곳만을 펼쳐 보는 것이다. *맵도 리스트와 마찬가지로 인터페이스다. 맵 인터페이스를 구현한 Map자료형에 HashMap, LinkedHashMap, TreeMap등이 있다. HashMap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16..
Call by value = 값에 의한 호출 프로그래밍 언어에서 변수를 다른 메소드의 인자로 넘겨 줄 수 있다. 이때 변수의 '값'을 넘겨주는 호출 방식을 Call by value 라고한다. 자바는 Call by value 방식으로 동작한다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 static void swap(int x,int y){ int tmp = x; x = y; y = tmp; } //main() 호출 및 결과 int a = 1; int b = 2; swap(a,b); System.out.println(a); // 1 System.out.println(b); // 2 swap() 은 입력값 x와 y의 값을 바꾸는 예제이다. a = 1, b = 2가 입력되고 바뀐것이니 println..