Retrofit을 사용해본지 상당한 시간이 지났고 기억이 잘 나지 않아 복습하고 학습하자는 의미로 연습해보기로 하였다. API는 비트코인 저장소 중 하나인 Bithumb Open API를 사용해보기로 하였다. Base URL : https://api.bithumb.com/public/ticker/{currency} 1) 먼저 Retrofit과 GSON을 사용하기 위해 Gradle설정을 한다. dependencies { ... compile 'com.google.code.gson:gson:2.8.2' // Gson 사용시 compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' //..
ANR이란? ANR은 Application Not Responding의 약자로 그대로 해석해보면 의미를 쉽게 파악할 수 있다. '애플리케이션이 응답하지 않는다.' 인 것이다. 이 에러의 원인은 Main Thread(UI Thread)가 일정 시간 어떤 Task에 잡혀 있으면 발생하게 된다. ANR의 발생 요인 ANR은 대체로 아래의 상황에서 발생하게 된다. 애플리케이션이 UI 스레드에 어떠한 I/O 명령(빈번한 네트워크 액세스)으로 인해 막힐 때 너무 많은 시간을 정교한 메모리 구조를 구축하는데 들일 때 구체적으로 설명하자면 Android Developers 에서는 아래와 같이 명시하고 있다. Input 이벤트(키를 누르거나 화면을 터치하는 등)에 5초안에 반응을 하지 않을 때 BroadcatReceiv..
최신 단말기에서는 크게 문제가 발생되지 않는 반면 예전(성능이 낮은) 단말기에서 고해상도의 Bitmap을 ImageView에 설정하면 보이지 않는 현상이 발생하는데 이를 해결하는 방법을 정리해보고자 한다. Logcat을 살펴보면... 설정하려는 비트맵의 크기가 텍스쳐에 업로드할 수 있는것에 비해 너무 크다는 에러 로그가 뜬다. W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (4160x2340, max=4096x4096) 안드로이드의 Hardware Accelerated를 사용할 경우 기본적으로 GL_MAX_TEXTURE_SIZE 만큼만 rendering을 할 수 있기 때문에 이 SIZE를 넘어가는 Bitmap들은 문제가 발생한다는 것이..
JAVA로 구현한 링크트리스트 소스 코드는 다음과 같다. class Node { Object data; Node next_node; Node(Object obj) { this.data = obj; this.next_node = null; } } Node클래스다. 기본적으로 데이터가 들어갈 부분과 Next Node로 이루어져 있으며 어떤 데이터 타입이 들어올지 모르기 때문에 Object타입으로 클래스를 정의하였다. public class LinkedList { private Node head; private Node tail; private int size = 0; Linked List 클래스이다. head 노드와 tail 노드, 그리고 리스트의 크기를 나타내는 변수가 있다. 기본적으로 리스트 생성 시 노..
Binary Search Tree의 최악의 상황에 대해서도 균형된 시간 복잡도가 나올 수 있도록 새롭게 고안된 Balanced Binary Search Tree다. 즉, 최악의 경우 (한쪽에만 노드가 일렬로 정렬된 경우) 가 나오지 못하도록 제약 조건을 걸고 있다. [제약 조건] 1. Root Property : 루트 노드의 색은 검정(Black)이다. 2. External Property : 모든 외부 노드들은 검정(Black)이다. 3. Internal Property : 빨강(Red)노드의 자식은 검정(Black)이다. == No Double Red(빨간색 노드가 연속으로 나올 수 없다.) 4. Depth Property : 모든 리프노드에서 Black Depth는 같다. == 리프노드에서 루트노드..
RxJava란 RxJava란 Reactive Programming을 하기위한 라이브러리인 Rx(Reactive Extensions)의 JVM판입니다. StreamAPI + 비동기 콜백같은 느낌. 이벤트를 정의한 Observable 인스턴스에 대해 짧은 함수를 엮은(체인) 스트림같이 이벤트 결과 데이터를 가공하는 처리를 정의, 지연실행, 비동기 콜백을 할 수있다. 기본적인 사용법 처리를 싱행하고 결과를 전달하는 Observable, 결과를 수신할때의 처리를 정하는 Observer를 사용한다. 우선 “Hello”와 “world”라는 2개의 문자열을 결과로 전달하는 심플한 Observable를 생성해보자. ※java.util.Observable가 아니므로 주의 Observable myObservable = O..
SSUNOIN이란, 숭실대학교(Soongsil Univ.) 공지사항(Notice) 인문대학(InMun)의 약자로 만들어진 iOS 앱이다. Swift언어를 사용하며 개발이 된 앱이다. 기독교학과를 제외한 모든 학과가 들어가 있다. (기독교학과는 싸이월드를 학과홈페이지로 사용하고 있어 개발 당시 파싱 어려움) 예시로 국어국문학과를 선택해보겠다. 국어국문학과의 학과 공지사항을 최신순으로 나타낸 화면이다. 오른쪽에 클립 모양이 있는 게시물은 첨부파일이 있는 게시물을 의미한다. 가장 최신 게시물을 눌러보도록 하겠다. 공지사항 부분이 HTML로 이루어져 있어 HTML을 보여줄 수 있는 WebView를 사용하였다. 하단의 첨부파일의 경우 파일 명을 Parsing하고 개수를 Count하여 레이아웃 하단에 나타나도록 하..
ARC는 가비지컬렉션이 절대 아니다! 혼동하면 안됩니다. 방식 자체가 둘이 완전히 다르거든요. Objective C는 기본적으로 Reference Counting 이라는 메모리 관리 모델을 사용합니다. Objecitve C에서만 사용되는 방법은 아니지만 어쨌든 Objective C에서는 기본적으로 메모리를 관리하는 방법 그런데, 이 역시도 어떤면에서든 수동으로 메모리를 관리하는 것이 기본이다보니 프로그래머가 사람인 이상 실수할 때도 있더라는 겁니다. 그래서인지 애플은 XCode 4.2와 iOS 4.3부터 ARC (Automatic Reference Counting) 이라는 메모리 관리 기능을 추가 이로써 프로그래머들이 직접 메모리를 release 하지 않아도 되게 됨 오히려, ARC 기능이 추가되면서, ..
- Total
- Today
- Yesterday
- 알고리즘
- watchos
- databinding
- 안드로이드
- Rxjava
- Reactive programming
- 함수형
- Apple Watch
- C++
- 함수형프로그래밍
- ios
- Kotlin
- retrofit
- Notissu
- Elliotable
- 오토레이아웃
- 상속
- 애플워치
- Auto Layout
- XCode
- Swift
- 아이폰
- java
- CloudComputing
- android
- 스위프트
- SwiftUI
- 컬렉션
- apple
- 코틀린
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |