Code Monkey home page Code Monkey logo

natural's Introduction

Natural

ย 

๐Ÿค” ๋ณธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ฒŒ๋œ ๊ณ„๊ธฐ (What made me create this application?)

ย 

๐Ÿ’ป ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ (Development Period)

ย 

๐Ÿ“š ์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Used libraries)

  1. RxSwift
  2. RxCocoa
  3. Naver NMapsMap(๋„ค์ด๋ฒ„ ๋งต)
  4. Google Firebase ๋ฐ Firestore
  5. GeoFire

ย 

๐Ÿš€ ์‚ฌ์šฉํ–ˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ๋˜ ํŒจํ„ด/์Šคํ‚ฌ (Used Or Tried Patterns And Skills)

  1. RxSwift with MVVM
  2. DelegateProxy with DelegateProxyType (Delegate ํŒจํ„ด ์ผ๋˜ ๊ฒƒ ๋ฆฌํŒฉํ† ๋ง)

ย 

๐Ÿ’ฆ ๋งŒ๋“ค๋ฉด์„œ ํž˜๋“ค์—ˆ๋˜ ์  (Difficulties)

  1. RxSwift์— ๋Œ€ํ•œ ์ดํ•ด
    RxSwift ๊ณต๋ถ€๋Š” ๊ณฐํŠ€๊น€๋‹˜ ์œ ํŠœ๋ธŒ ๊ฐ•์˜๋กœ ์‹œ์ž‘ํ•˜์˜€์—ˆ๋‹ค. ๋“ค์œผ๋ฉด์„œ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ ค์› ์ง€๋งŒ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๋” ์–ด๋ ค์› ๋‹ค.
    ๋‚ด๊ฐ€ ๋Š๋‚€ ์žฅ์ : ๊ธฐ์กด์— (ํด๋กœ์ €๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ) @escaping completionHandler๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ๊ฒƒ์„ Observable๋กœ ๋ฐ”๊ฟ”๋ณด๋‹ˆ ์ฝ”๋“œ๋Š” ๋” ๊ฐ„๊ฒฐํ•ด์กŒ๋‹ค.(๋‚˜์ค‘์— ๋‹ค์‹œ ๋ด๋„ ํ›จ์”ฌ ๊ฐ€๋…์„ฑ์ด ์ข‹์Œ. ํŠนํžˆ ํด๋กœ์ €๋ฅผ ์“ฐ๋‹ค๋ณด๋ฉด retain cycle์„ ์‹ ๊ฒฝ์จ์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ ์ด๊ฒŒ ํŽธํ•ด์กŒ๋‹ค. ๋ฌผ๋ก  RxSwift๋„ retain cycle์€ ์‹ ๊ฒฝ์จ์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ, ํด๋กœ์ €๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์“ฐ๋˜ ๊ธฐ์กด์˜ ๋ฐฉ์‹๋“ค๋ณด๋‹ค๋Š” ํŒŒ์•…์ด ํ›จ์”ฌ ์‰ฌ์›Œ์กŒ๋‹ค.)

  2. Code Refactoring (Delegate ํŒจํ„ด์„ DelegateProxy ์ด์šฉํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง)
    RxSwift๋งŒํผ์ด๋‚˜ ์–ด๋ ค์› ๋˜ DelegateProxy..
    Delegate ํŒจํ„ด์€ ๋งŽ์ด ์“ฐ์ด๊ธด ํ•˜์ง€๋งŒ RxSwift์˜ Observable์Šคํƒ€์ผ๊ณผ๋Š” ๋งž์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ DelegateProxy๋‹ค. (Delegate๋ฅผ ๊ฐ์‹ธ์„œ(?) Observableํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. fake delegate object๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.)

  3. Google Firestore์™€ GeoFire์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
    ์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์— ๋งŽ์ด ํ—ค๋งธ๋‹ค. ์ตœ์‹  Google FireStore์—๋Š” GeoFire๋ฅผ ๋ง๋ถ™์ผ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ์˜์กด์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด GeoFire 4.1.0์—๋Š” Google FirebaseFirestore 1.x ์„ค์น˜๊ฐ€ ํ•„์š”ํ–ˆ์—ˆ๋‹ค. (Firebase ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ 6.x ์„ค์น˜ ํ•„์š”ํ–ˆ์—ˆ์Œ)
    ํ˜„์žฌ๋Š” GeoFire์—์„œ ์˜์กด์„ฑ ์„ค์ •์„ ์—…๋ฐ์ดํŠธ ํ•ด์„œ Firebase 7.x ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. (Google API ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ์ดํ›„์— ๊ตฌ๊ธ€์—์„œ ํ•œ๊ฐ€์ง€๋กœ ํ†ตํ•ฉํ•˜์˜€๋‹ค. - ์›๋ž˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„๋กœ ๋ฒ„์ „์ด ๋‹ฌ๋ž๋‹ค. - )
    ๋‹คํ–‰ํžˆ๋„ pod์ด ์˜์กด์„ฑ๋“ค์„ ๋‹ค ๊ณ ๋ คํ•ด์„œ ์„ค์น˜ํ•ด์ค€ ๋•๋ถ„์— ํฐ ๊ณ ์ƒ์€ ํ•˜์ง€ ์•Š์•˜๋‹ค.

  4. Storyboard Autolayout
    Autolayout์— ๋Œ€ํ•ด ์•„์ง ์™„๋ฒฝํžˆ ์ˆ™์ง€ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.(์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋„..)

  5. ์ปค์Šคํ…€ ๋ทฐ(Custom View)

  6. RxSwift์— ๋Œ€ํ•œ ๋ถ€์กฑํ•œ ์ดํ•ด
    flatMap operator๋ฅผ ํ†ตํ•ด ํด๋กœ์ € ๋‚ด๋ถ€์—์„œ ๋ณ„๋„์˜ Observable ๋ฐ์ดํ„ฐ๋ฅผ returnํ•˜์—ฌ ๋ฉ”์ธ(๋ฐ”๊นฅ) ์‹œํ€€์Šค์— ์‹ฃ๋Š” ๊ฒฝ์šฐ ์ด๋Š” ์‹œํ€ธ์Šค์˜ ๋ถ„๊ธฐ๊ฐ€ ์•„๋‹ˆ๋‹ค. (๋ถ„๊ธฐ์ธ์ค„ ์•Œ์•˜๋‹ค.)
    ๋‚ด๋ถ€ Observable์˜ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ์ถ”์ถœํ•ด์„œ ๋ฉ”์ธ ์‹œํ€€์Šค์— ๋†“๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋  ๋“ฏ ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ flatMap์„ ํ†ตํ•ด ์ถ”์ถœ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ error์ธ ๊ฒฝ์šฐ ๋ฉ”์ธ ์‹œํ€€์Šค์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

ย 

flatMap ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Observable.zip์˜ ๋™์ž‘๊ณผ take์˜ ๋™์ž‘์— ๋Œ€ํ•ด์„œ๋„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์‚ฌ์šฉํ–ˆ๋‹ค.

ย 

๐Ÿ’ฌ ๊ธฐ๋Šฅ(์‚ฌ์šฉ๋ฒ•)

ย 

๐Ÿ›  ๊ฐœ์„ ํ•ด์•ผํ•  ์ /์ถ”๊ฐ€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๊ธฐ๋Šฅ (Needs to be improved / Want to add)

ย 

๐Ÿ“ Information

ย 

natural's People

Contributors

ictechgy avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.