![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cCcrC9/btrrKxwRCO7/8u5fiwDJ2hFxKrTBlGicq0/img.jpg)
문제 상황 현재가 정보에서 불러온 Entity를(TickerAPI) Cell에서 사용 가능하게 변경해줘야 해요. 문제는 Cell에서 한글 이름을 보여줘야 하는데, 서버 어디에서도 한글 이름을 전해주지 않았어요. 이 문제를 해결하기 위해서는 결국 코인 타입별로 직접 한글 이름을 입력해주어야 하는데 186개에 달하는 코인 이름을 매번 검색해서 넣는 것은 시간이 오래 걸리는 하드 코딩이었어요. 그래서 업무를 줄이기 위해, 업비트의 API에서 호출한 정보를 가지고 겹치는 코인의 경우 이름을 할당해주는 작업을 진행했어요. 문제 해결하기 업비트의 API에서 제공하는 코인과 빗썸에서 제공하는 코인의 종류는 달라요. 그래서 목표는 빗썸에서 제공하는 코인의 종류 중 업비트에서 동시에 제공하는 코인이 있다면 업비트에서 내..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/YoWjS/btrrKH0FusY/NObbjKEIgImudXqohaWZw0/img.jpg)
문제 상황 인식하기 API에서 암호화폐 코인 별 정보를 받아오려고 해요. 빗썸의 open API에서 Ticker 정보를 받아오는데 그 정보는 아래와 같이 들어와요. // URL: https://api.bithumb.com/public/ticker/{order_currency}_{payment_currency} { "status" : "0000", "data" : { "opening_price" : "504000", "closing_price" : "505000", "min_price" : "504000", "max_price" : "516000", "units_traded" : "14.71960286", "acc_trade_value" : "16878100", "prev_closing_price" : "..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFq9xD/btrrLOLLyzB/7at6BO8SkEiYjFBemXWqK1/img.jpg)
학습했던 MVVM과 RxSwift를 활용해서 프로젝트를 진행하기로 했어요! 여기에 소켓 통신을 사용해보기 위해 암호화폐 거래소 앱을 주제로 선정했어요. 기본적으로는 클론 코딩의 형식을 갖고, 필요에 따라 조금씩 변화를 주며 구현할 계획이에요. 프로젝트 GitHub Repository 3인으로 팀을 구성해서 프로젝트를 진행했어요 :) 목표는 우선 메인화면과 실시간 호가 화면 등 총 3개의 화면으로 잡았는데 이번 글에서는 메인 화면 설계에 대한 글을 작성하려고 해요. 저는 앱을 설계하기 위해 아래와 같이 메인 화면을 분석했어요. 1. SearchBar SearchBar는 NavigationBar에 넣는 방식으로 구현하는 것이 좋을 것 같다고 생각했어요. 서치바 버튼 버튼 버튼 위와 같이 4개의 요소를 sta..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GJj18/btrrhF9AU90/0W83ZCUkzDQLYbcMjttbk1/img.jpg)
RxTest 활용하기 이번 글에서는 RxSwift로 구현된 기능을 테스트해보기 위해 RxTest를 사용해보려고 해요! RxSwift는 비동기로 동작하기 때문에 단순히 코드를 작업하면 원하지 않는 결과물이 나올 수 있어요. 테스트 시 비동기 상황을 만드는 방법은 여러 가지가 있겠지만, 이번에는 RxTest를 익혀보기로 했어요 :] (거기에 더해 Nimble / RxNimble을 추가로 사용했어요!) 상황 이해하기 우선 테스트하려는 객체를 정의해볼게요. 저는 SearchBar에 글자를 입력하고 검색 버튼을 눌렀을 경우 그 글자가 정상적으로 잘 전달되는지 테스트하려고 해요. 그 코드는 아래와 같아요. import RxCocoa import RxSwift struct SearchBarViewModel { let..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b1LRjh/btrrdnIgXqR/gSlf4keRTn7SFVm28cseQ0/img.jpg)
init() vs viewDidLoad() in UIViewController 왜 갑자기 이런 의문이 들었을까? UI 라이브러리인 Texture를 학습하며 init과 didLoad에 차이점을 학습한 경험이 있어요. UIKit에서 UIViewController를 구성할 경우 init은 Main 스레드에서 동작하지만, Texture에서는 init과 didLoad의 차이가 있었어요. 어떤 코드의 경우 init에서 초기화를 하는지, didLoad에서 초기화를 하는지에 따라 큰 차이를 낼 수 있었어요. 예를 들면, UI 같은 경우 갱신을 Main 스레드에서 진행하기 때문에 굳이 init에서 선언하기보다 didLoad에서 선언하는 것이 좋았죠. 그래서 작업할 때 초기화 위치에 대한 고민을 많이 했던 것 같아요. 그..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/neu8n/btrpJQZDuVv/txBWqxfu4Rp0SBlXYCetYK/img.jpg)
문제 상황 파악하기 UI를 구현할 때 가장 힘든 것 중 하나가 매번 빌드하면서 결과물을 확인하는 것이죠. 물론, Figma 등으로 UI 스펙이 확정된 경우 UI를 그리기 상대적으로 편하지만 그래도 여전히 UI 확인을 실시간으로 할 수 없다는 건 불편한 것 같아요. 특히 현업에서 빌드를 한 번 돌리는데 너무 많은 시간이 소요되었기 때문에 더 힘들었어요(단순 빌드가 20분 넘게 걸린 적도..). 그래서 이번에는 Preview를 통해 화면을 미리 볼 수 있는 기능을 구현해볼게요. Preview 구현하기 우선 도구는 SwiftUI에요. "내 프로젝트는 UIKit인데?" 하는 분이 있을 수도 있지만 프로젝트의 UI와 아무 상관이 없어요. 저 역시 프로젝트는 UIKit와 Snapkit으로 구현하고, SwiftUI는..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dYpFnP/btrpyiQT3mM/gY1Ze98wXYYDrHkKJQue01/img.jpg)
문제 파악하기 Swift에서 배열의 요소에 접근할 경우를 생각해볼게요. let fooArray = [1,2,3] print(fooArray[0]) // 1 출력 위의 상황에서는 문제없이 결괏값이 출력돼요. 그럼 배열의 범위를 벗어날 경우는 어떻게 될까요? let fooArray = [1,2,3] print(fooArray[100]) // Index out of range 에러 발생 당연히 범위를 벗어나는 에러가 발생하죠. 여기서 문제는, 결괏값이 옵셔널이라 nil로 반환되는 것이 아니라 에러가 된다는 것이에요. 혹시 배열의 요소에 접근한 결과가 옵셔널인지 타입을 확인해볼게요. let fooArray = [1,2,3] print(type(of:fooArray[0])) // Int 출력 옵셔널의 Int가 아..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bD4sPr/btrpzK0ByGK/DVOK1lKGfaSm2MQaerUcx1/img.jpg)
문제 상황 이해하기 API를 통해서 문자열을 호출할 때 HTML 태그와 함께 오는 경우들이 있어요. 예를 들면, Kakao API에서 카페 검색 정보를 호출할 때 결과물 중 제목과 콘텐츠에 HTML 태그들이 섞여와요. 아래는 Kakao 개발 가이드에서 보여주는 Response의 예시에요. HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "meta": { "is_end": false, "pageable_count": 983, "total_count": 218662 }, "documents": [ { "cafename": "쭉빵카페", "contents": "무대의상들 정보 궁금해하는 게녀들이 있길래 가져왔어! 이번에는 레드벨벳이랑 아이유 의상..
- Total
- Today
- Yesterday
- 반복수열#백준알고리즘#Python
- 날짜 계산#BOJ#완전탐색#Python
- 텀 프로젝트#백준알고리즘#Python
- django#slicing
- 백준 알고리즘#BackTracking
- 토마토#백준알고리즘#Python
- Brackets#Stacks and Queues#Codility#Python
- 쿼드트리#BOJ#분할정복#Python
- 미로 탐색#백준알고리즘#Python
- 배열합치기#분할정복#BOJ#Python
- API#lazy#
- 터틀비치#리콘#xbox#controller
- 병든 나이트#BOJ#탐욕법#Python
- 암호코드#dp#BOJ#Python
- Triangle#Sorting#Codility#Python
- 랜선자르기#이분탐색#BOJ#Python
- 나무자르기#BOJ#이분탐색#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 순열사이클#BOJ#Python
- PassingCars#Codility#Python
- 종이자르기#분할정복#BOJ#Python
- Swift#Tuples#Range
- filter#isalnum#lower
- Distinct#Codility#Python
- 파이썬알고리즘인터뷰#4장
- django
- N으로 표현#DP#Programmers#Python
- 공유기 설치#BOJ#이분탐색#Python
- 리모컨#완전탐색#BOJ#Python
- 섬의개수#백준알고리즘#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |