๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•
[RxSwift] Operator๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! RxSwift ๋Š” ์‰ฝ๊ฒŒ Observable์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€ํ˜•ํ•˜๊ณ  ํ•ฉ์น˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Operator๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋‹ค์–‘ํ•œ Operator๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! Create ๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„๋ณผ๊ฑด Observable์„ ์ƒ์„ฑํ•˜๋Š” Operator ์ž…๋‹ˆ๋‹ค. 1. create ๊ฐ€์žฅ ๊ธฐ๋ณธ์œผ๋กœ ์˜ต์ €๋ฒ„๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2. just just๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ •ํ•ญ๋ชฉ์„ ํ•˜๋‚˜๋งŒ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3. from From์€ just์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ just๋Š” ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ๋ฐ˜๋ฉด from์€ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. 4.of of๋Š” just์ฒ˜๋Ÿผ [1,2,3] ๋ฐฐ์—ด์„ ํ•œ๋ฒˆ์— ๋ฐฉ์ถœํ•  ์ˆ˜๋„ ์žˆ๊ณ .. 2021. 1. 19.
[Firebase iOS] ์•ฑ์— ๊ด‘๊ณ ๋‹ฌ๊ธฐ (Google Firebase AdMob) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ตœ๊ทผ์— TimeBank ๋ผ๋Š” ์•ฑ์„ ์ถœ์‹œํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์•ฑ์œผ๋กœ ์ˆ˜์ต์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ด ๋ญ๊ฐ€ ์žˆ์„๊นŒ? ์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ google ์• ๋“œ๋ชน์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์• ๋“œ๋ชน ๋‹ค๋Š”๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ• ๊ฒŒ์š”! AdMob Google Admob ์• ๋“œ๋ชน ํ™ˆํŽ˜์ด์ง€๋กœ ๋จผ์ € ์ด๋™ํ•ด์ค๋‹ˆ๋‹ค~ AdMob ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ๋ชจ๋“  Google ์„œ๋น„์Šค๋ฅผ AdMob์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธํ•˜์„ธ์š”. accounts.google.com ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œฐ๊ฑฐ์—์š”. ์‹œ์ž‘ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ๋‹น์—ฐํžˆ iOS ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์•ฑ์Šคํ† ์–ด์— ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์˜ˆ,์ง€์›๋˜๋Š” ์•ฑ ์Šคํ† ์–ด์— ์•ฑ.... ์ด๊ฒƒ์„ ํด๋ฆญํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค ์ž์‹ ์˜ ์•ฑ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ณจ๋ผ์ฃผ์„ธ์š”. ์ œ ์ฒซ๋ฒˆ์งธ ์•ฑ ํƒ€์ž„๋ฑ…ํฌ์ž…๋‹ˆ๋‹ค!! ์‚ฌ์šฉ.. 2021. 1. 18.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ Swift Source Code Solution ๊ฐ€์žฅ ์งง๊ฒŒ ํ‰๊ท ์„ ํ˜•์„ฑํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์š”์‹œ๊ฐ„์ด ์ž‘์€ ๊ฒƒ๋“ค์ด ๋จผ์ € ์˜ค๋„๋ก ์ •๋ ฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ์—์„œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ๋Š” ๋จผ์ € ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ž‘์—…๋ถ€ํ„ฐ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๊ณ ๋กœ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์„ ๋•Œ๋Š” ์š”์ฒญ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€ ๊ฒƒ์„ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ๋Š” ์†Œ์š”์‹œ๊ฐ„์ด ์ž‘์€ ๊ฒƒ์„ ์‹คํ–‰ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์ •๋ ฌํ•ด์ฃผ๋ ค๋ฉด ๋จผ์ € ์†Œ์š”์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋จผ์ € ์ •๋ ฌํ•ด์ฃผ๊ณ  ๊ทธ ์ •๋ ฌํ•ด์ค€ ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ์‹œ๊ฐ„์œผ๋กœ ๋‹ค์‹œ ์ •๋ ฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์ •๋ ฌ๋œ ์ž‘์—…๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ์กฐ๊ฑด์— ๋งž๋Š” ์ž‘์—…์„ ํ•˜๋‚˜์”ฉ ์ง€์›Œ๊ฐ€์ค€๋‹ค. Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ ํ•˜๋“œ๋””์Šคํฌ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ .. 2021. 1. 18.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ Swift Source Code Solution ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€ํ•œ ๋ฌธ์ œ์˜€๋‹ค. 1.0๋ฒˆ์งธ 1๋ฒˆ์งธ 2๋ฒˆ์งธ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์ค€๋‹ค. 2.0๋ฒˆ์งธ 1๋ฒˆ์งธ 2๋ฒˆ์งธ๋ฅผ ์ด์šฉํ•ด์„œ ..n๋ฒˆ์งธ๊นŒ์ง€ ๊ฐ’์„ ๊ตฌํ•˜๋ฉด์„œ ๊ทœ์น™์„ ์ฐพ์•„๋‚ธ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” F(n) = F(n-1) + F(n-2)์˜ ๊ทœ์น™์ด ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ์—” ์ด๋ ‡๊ฒŒ ์ œ์ถœํ–ˆ๋Š”๋ฐ ๊ฑฐ์˜ ์ ˆ๋ฐ˜์ด ํ‹€๋ฆฌ๋Š”๊ฑฐ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ž์„ธํžˆ ์ฝ์–ด๋ณด๋‹ˆ ๊ตฌํ•œ ๊ฐ’์— 1234567๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋ผ๊ณ  ๋˜์–ด์žˆ์—ˆ๋‹ค. ๊ณ ๋กœ F(n) = (F(n-1) + F(n-2))%1234567 ์ด๋‹ค. Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ ํšจ์ง„์ด๋Š” ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ๋ฅผ ์—ฐ์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํšจ์ง„์ด๋Š” ํ•œ๋ฒˆ์— 1์นธ, ๋˜๋Š” 2์นธ์„ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นธ์ด ์ด 4๊ฐœ ์žˆ์„ ๋•Œ, ํšจ์ง„์ด๋Š” (1์นธ, 1์นธ, 1์นธ, 1์นธ) .. 2020. 12. 29.
[Firebase iOS] ํœด๋Œ€ํฐ๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ(Authenticate with Phone Number) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Firebase๋ฅผ ์ด์šฉํ•ด์„œ ํœด๋Œ€ํฐ๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•˜๋Š”๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode ๊ฐ€์žฅ ๋จผ์ € Signing & Capability๋กœ ์ด๋™ํ•˜์…”์„œ +Capability ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์‹œ๊ณ  Push Notifications๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ์ฃผ์„ธ์š”. ๊ทธ ๋‹ค์Œ์œผ๋ก  Background Modes๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ์ค€ ๋’ค Remote notifications๋ฅผ ์ฒดํฌํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค AppDelegate๋กœ ์ด๋™ํ•˜์…”์„œ UserNotifications์™€ Firebase๋ฅผ importํ•ด์ค๋‹ˆ๋‹ค. didFinishLaunchingWithOptions ๋ถ€๋ถ„์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ™์—ฌ๋„ฃ์–ด์ฃผ์„ธ์š”. 1 2 3 4 FirebaseApp.configure() UNUserNotificationCenter.c.. 2020. 12. 29.
[ํ•ด๊ฒฐ๋ฒ• ํฌํ•จ] 14.3 iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋…ธ๋ž€์ƒ‰ ํ‹ดํŠธ ์—๋Ÿฌ (Simulator Yellow Tint Error) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ 14.3 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ „์ฒด์ ์ธ ํ‹ดํŠธ๊ฐ€ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ๋ณ€ํ•ด์žˆ๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ์–ด์š”. (์•„๋ž˜์™€ ๊ฐ™์ด ํ‹ดํŠธ๊ฐ€ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ๋ณ€ํ•ด์žˆ์Œ. ์•ฑ์„ ์ผœ๋„ ํƒญ,๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ๋ชจ๋‘ ๋…ธ๋ž€์ƒ‰) ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ Simulator - File - GPU Selection - Prefer Integrated GPU ๋ฅผ ์„ ํƒํ•ด์ฃผ์‹œ๊ณ  ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๊ป๋‹ค ์ผœ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ์ƒ‰์ด ๋Œ์•„์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 2020. 12. 29.
[RxSwift] Observable ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— Reactive X๋Š” "์˜ต์ €๋ฒ„๋ธ” ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ API" ๋ผ๊ณ  ์†Œ๊ฐœ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์†Œ๊ฐœ์— ๋‚˜์™€ ์žˆ๋‹ค์‹œํ”ผ Observable ์ด๋ผ๋Š” ๊ฐœ๋…์€ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ฒƒ์ธ๋ฐ์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Observable์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Observer Pattern ๋จผ์ € Reactive X๋Š” ์˜ต์ €๋ฒ„ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ต์ €๋ฒ„ ํŒจํ„ด์ด๋ž€ Observable์„ Observer๊ฐ€ ๊ตฌ๋…ํ•˜๊ณ  Observable์ด ์–ด๋–ค ์ƒํƒœ๋ฅผ ๋ฐฉ์ถœํ•˜์˜€์„ ๋•Œ Observer์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด์ฃ . ์ด๊ฒƒ์€ ์œ ํŠœ๋ฒ„๊ฐ€ ๊ตฌ๋…์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ดํ•ดํ•˜์‹œ๋ฉด ํŽธํ• ๊ฑฐ๊ฐ™์•„์š”. Observable์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์€ 3๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. OnNext -> ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ OnEr.. 2020. 12. 29.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] KVO๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ iOS๋ฉด์ ‘์งˆ๋ฌธ์— ์ž์ฃผ ๋‚˜์˜ค๋Š” KVO์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. KVO๋ž€? ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด KVO๋Š” Key Value Observing์˜ ์ค„์ž„๋ง์ด๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”์ฝ”์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„ willSet๊ณผ disSet์ด๋ž‘ ์œ ์‚ฌํ•˜์ง€๋งŒ ์™ธ๋ถ€์— ๊ด€์ฐฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ๊ด€์ฐฐํ•˜๊ณ  ์‹ถ์€ ๊ฐ์ฒด์— ์˜ต์ €๋ฒ„๋ฅผ ๋‹ฌ๊ณ  ๊ทธ ๊ฐ’์ด ๋ณ€ํ• ๋•Œ ๋ฐ”๋€Œ๊ธฐ์ „ ๊ฐ’์ด๋ž‘ ๋ฐ”๋€๊ฐ’์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• KVO๋Š” Objective-C ๋Ÿฐํƒ€์ž„์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋กœ ์•ž์— @objc dynamic๊ฐ€ ๋ถ™์€ NSObject Class๋กœ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Swift 4 ์ด์ „์—๋Š” ์–ด๋–ป.. 2020. 12. 29.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์—ฌํ–‰๊ฒฝ๋กœ Swift Source Code Solution ํ•ด๋‹น ๋ฌธ์ œ๋Š” DFS๋กœ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ 1. ์›ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ˆ? 2. ๊ฐ’์ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ˆ? 3. ์›ํ•˜๋Š” ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์žฌ๊ท€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ˆ? ํ•ต์‹ฌ 1์„ ์ด์šฉํ•˜์—ฌ ์ฒ˜์Œ์—๋Š” ICN๋ถ€ํ„ฐ ์ถœ๋ฐœํ•œ๋‹ค๊ณ  ๋˜์–ด์žˆ์œผ๋‹ˆ ICN์ด 0๋ฒˆ์งธ์ธ ํ‹ฐ์ผ“์„ ํ•„ํ„ฐ๋งํ•ด์ค€๋‹ค. ํ•ต์‹ฌ 2๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•œ ํ‹ฐ์ผ“์ด ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์•Œ์•„๋‚ธ ๋’ค ์‚ญ์ œํ•ด์ค€๋‹ค. ํ•ต์‹ฌ 3์„ ์ด์šฉํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ดˆ๊ธฐ route๋ฅผ ํ•„ํ„ฐ๋งํ•œ ํ‹ฐ์ผ“์˜ 0๋ฒˆ์งธ์™€ 1๋ฒˆ์งธ,์‚ญ์ œํ•œ ํ›„ ๋‚จ์•„์žˆ๋Š” ํ‹ฐ์ผ“,์ด ํ‹ฐ์ผ“์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ์žฌ๊ท€ํ•ด์ค€๋‹ค. Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์—ฌํ–‰๊ฒฝ๋กœ [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN.. 2020. 12. 28.
[๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป ๋‚ด์ด์•ผ๊ธฐ] iOS๊ฐœ๋ฐœ์ž๊ฐ€ Flutter๋ฅผ ์‹œ์ž‘ํ•œ ์ด์œ  ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ํ•œ 2์ฃผ ์ „์ฏค์ธ๊ฐ€? ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์–ด์š”. ์™œ ๊ตณ์ด iOS๊ฐœ๋ฐœ์ž๊ฐ€ ํ”Œ๋Ÿฌํ„ฐ๋ฅผ? ์™œ ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์„ ํƒํ–ˆ์„๊นŒ? ๋ผ๋Š” ๋ฌผ์Œ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”. Flutter๋ž€? ํ”Œ๋Ÿฌํ„ฐ๋Š” ๊ตฌ๊ธ€์—์„œ 2017๋…„ 5์›”์— ๋ฐœํ‘œํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด Dart ๊ตฌ๊ธ€์˜ ์ฐจ์„ธ๋Œ€ OS์ธ ํ“จ์‹œ์•„์˜ ์ฃผ๋œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ iOS,Android,Web,Mac,Window ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์™œ iOS๊ฐœ๋ฐœ์ž๊ฐ€ Flutter๋ฅผ ์‹œ์ž‘ํ–ˆ์„๊นŒ? ๐Ÿค” ๋จผ์ € ์ฒซ๋ฒˆ์งธ๋กœ๋Š” iOS๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ˆ๋“œ๋กœ์ด๋“œ, ์›น ์•ฑ์„ ๋งŒ๋“ค๊ณ ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. iOS์šฉ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ๋‚œ๋’ค ํƒ€ํ”Œ๋žซํผ์•ฑ์„ ๋งŒ๋“œ๋ ค๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๋‚˜ ์›น๊ฐœ๋ฐœ์ž์™€ ํ˜‘๋ ฅ์„ ํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”Œ๋Ÿฌํ„ฐ์— ๋Šฅ์ˆ™ํ•ด์ง„๋‹ค๋ฉด ์ด.. 2020. 12. 28.
[ํ•ด๊ฒฐ๋ฒ• ํฌํ•จ] ์•ฑ๋ฐฐํฌ์‹œ ์—๋Ÿฌ Redundant Binary Upload. You've already uploaded a build with build number ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ์˜ค๋Š˜ ๋ฐœ๊ฒฌํ•œ ์—๋Ÿฌ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์•ฑ์„ ์•„์นด์ด๋ธŒํ•œ ๋’ค ์žฌ๋ฐฐํฌํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ "Redundant Binary Upload. You've already uploaded a build with build number ~" ๋ผ๊ณ  ๋œจ๋– ๋ผ๊ตฌ์š”. ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ์•ฑ์˜ Target์œผ๋กœ ์ด๋™ํ•˜์…”์„œ Build๋ฅผ ์›๋ž˜์žˆ๋˜ build ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์–ด์š”. ์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘๋ณต๋˜์ง€์•Š๋Š” ๋นŒ๋“œ ๋ฒˆํ˜ธ๋ฅผ ์ ์–ด์ฃผ์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ์—…๋กœ๋“œ๊ฐ€ ๋˜์‹ค๊ฒ๋‹ˆ๋‹ค!! 2020. 12. 27.
[RxSwift] Disposable๊ณผ DisposeBag ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ RxSwift์—์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ๊ฐ€๋˜๋Š” Disposable๊ณผ DisposeBag์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Disposable ๋จผ์ € dispose์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ๋ญ˜๊นŒ์š”? ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ Rx์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜๋ฏธ๋Š” "์ฒ˜๋ฆฌํ•˜๋‹ค" ๋ผ๋Š” ๋œป์ด์—์š”. ("์ทจ์†Œํ•˜๋‹ค" ๋ผ๊ณ  ๋ณด์…”๋„ ๋ ๊ฑฐ๊ฐ™์•„์š”) ๊ทธ๋ ‡๋‹ค๋ฉด disposable์€ "์ฒ˜๋ฆฌํ• ์ˆ˜์žˆ๋Š”" ์ด๊ฒ ์ฃ ? ๋งŒ์•ฝ ์–ด๋–ค ์ž‘์—…์ด ์‹คํ–‰๋˜๋Š”๋ฐ ์ด๊ฒŒ ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ์ค‘๊ฐ„์— ์ทจ์†Œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์ค‘์ธ ์ž‘์—…์„ ๋ฉˆ์ถฐ์•ผํ•˜๊ฒ ์ฃ ? ๋งŒ์•ฝ Rx๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  GCD๋กœ ๋น„๋™๊ธฐ์ž‘์—…์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด ์ค‘๊ฐ„์— ์ทจ์†Œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๋งŒ์•ฝ ์ทจ์†Œํ•ด์•ผํ•œ๋‹ค๋ฉด OperationQueue๋ฅผ ์‚ฌ์šฉํ•ด์„œ cancelํ•ด์ค˜์•ผ ํ• ๊ฑฐ์—์š”. Rx๋Š” cancel ๋Œ€์‹  .. 2020. 12. 26.
728x90
๋ฐ˜์‘ํ˜•