28 Followers
·
Follow

내가 이해를 못해서 알아본 observeOn과 subscribeOn

Image for post
Image for post
Photo by Curtis MacNewton on Unsplash

RxSwift를 공부하고 사용하면서 가장 헷갈렸던 Scheduler에 대해서 정리해보고자 한다.

Scheduler 제대로 알아보기

공식 문서에서 말하기를…

If you want to perform work on a different scheduler just use observeOn(scheduler)operator.

If you want to start sequence generation (subscribe method) and call dispose on a specific scheduler, use subscribeOn(scheduler).

즉, 작업 수행을 다른 스케줄러에서 하고 싶다면 observeOn(scheduler) 를 사용하고, sequence 생성과 dispose call을 특정 스케줄러에서 하고 싶다면 subscribeOn(scheduler) 를 사용하라는 것이다.

이렇게 observeOn을 사용해서 그 다음에 오는 map이 작업할 스케줄러를 바꿔줄 수 있다. 첫번째 map은 backgroundScheduler위에서 작업을 할 것이고, 두번째 map은 MainScheduler위에서 작업을 할 것이다.

음 알겠어… observeOn은 예제에서 많이 봐서 뭔지 알겠는데… subscribeOn은 아직 이해가 안가… 그리고 왜 갑자기 sequence 생성이 나오는거지? …


Swift에서 JSON을 decoding 해보자

Image for post
Image for post
Photo by Yura Fresh on Unsplash

현재 진행 중인 사이드 프로젝트에서 Firebase를 걷어내고 node.js로 RESTful API를 만들어 대체했습니다. 이 API에서 받은 JSON을 decoding 할 때 삽질한 과정을 정리하고 공유하고자합니다. 혹시라도 잘못된 부분이 있다면 알려주시면 감사하겠습니다.

우선 제가 사용한 JSON입니다. array로 감싸져있는 형태입니다.

Codable이란?

Codable은 Swift 4.x에서 등장한 프로토콜입니다. Codable을 이용하면 JSON decoding 및 encoding이 가능합니다. 저는 decoding만 해봤기 때문에 이 글에서는 decoding에 대해서만 다루겠습니다.

Struct 생성하기

먼저 API로 받아온 JSON을 넣어줄 Struct를 생성해야하는데 Struct 안의 변수명을 지을 때는 어떤 방법을 쓸 것인지를 고려하고 이름을 지어야합니다.

  1. CodingKey
  2. keyDecodingStrategy

이렇게 두가지 방법이 있습니다. 먼저 CodingKey에 대해서 알아보겠습니다.

CodingKey

CodingKey 프로토콜을 사용하여 Enum으로 키의 이름을 재설정하는 방법입니다. stadium의 경우처럼 JSON key값을 그대로 사용할 경우에는 Enum에 아무것도 적어주지 않아도 무방합니다.

keyDecodingStrategy

keyDecodingStrategy를 이용하여 snake_case에서 CamelCase로 변환시켜주는 방법입니다. 이 경우에는 구조체 안의 변수명을 JSON key값을 CamelCase로 변환한 값과 일치하게 적어야합니다.

전체 코드

keyDecodingStrategy, URLSession을 이용하여 JSON decode 후 Realm에 저장하는 코드입니다.


이제 Mac OSX에서도 Oracle을 사용해보자!

작년에 데이터베이스 수업을 들었을 때는 맥에서는 오라클이 안된다는 말에 그냥 부트캠프에서 Oracle을 사용했었다. 그런데 이번에 데이터베이스를 청강하고 또 실습을 도와주게 되어서 다시 찾아보니 도커를 이용하면 맥에서도 오라클을 사용할 수 있다는 것을 보고 바로 해보았다! 진짜 생각보다 훨씬 쉽다. 미리 알았더라면 윈도우에서 힘겹게 하지 않아도 되었을 텐데.. 지금이라도 알아서 다행이다. 모두들 맥에서 오라클 돌리고 광명 찾으시길

자바가 설치되어있지 않은 경우

아래 링크에서 JDK 8 버전 설치

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Docker 설치

중간 쯤으로 스크롤을 내려서 왼쪽에 있는 stable version을 다운로드

Image for post
Image for post

설치 후 도커를 열어서 실행.

Image for post
Image for post
도커 귀여워

터미널에 아래와 같이 입력한다.

oracle 11g의 이미지를 pull. (다운로드 같은 개념이라고 보면 될 듯하다.)

docker pull wnameless/oracle-xe-11g

oracle 컨테이너를 실행

docker run -d -p 59160:22 -p 59161:1521…

About

이승연

👩‍💻 세상의 모든 에러를 경험하는 중. https://github.com/sweepty

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store