profile
iOS Developer ๐Ÿ’ป

SOLID ์›์น™, in Swift

๐ŸŒŸ SOLID ์›์น™์ด๋ž€? SOLID๋ผ๋Š” ์šฉ์–ด๋Š” ๊ฐ์ฒด ์„ค๊ณ„์— ํ•„์š”ํ•œ 5๊ฐ€์ง€ ์›์น™์˜ ์•ฝ์ž๋กœ, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๊ณ , ์œ ์—ฐํ•˜๊ณ , ํ™•์žฅ์ด ์‰ฌ์šด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š”๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. Clean Agile, Clean Achitecture, Clean Code, Clean Sof

2023๋…„ 3์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Clean Architecture๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐ŸŒŸ Clean Architecture๋ž€? ํด๋ฆฐ ์•„ํ‚คํ…์ณ๋Š” Rober C. Martin(aka. Uncle Bob)์ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์•„ํ‚คํ…์ณ์—์„œ ๋…ผ์˜๋˜๋˜ ๋‚ด์šฉ์„ ์ง‘์•ฝ์‹œํ‚จ ๊ฐœ๋…์„ ๋ธ”๋กœ๊ทธ์— ๊ธฐ์žฌํ•œ ๋‚ด์šฉ์ด๋‹ค. ํด๋ฆฐ ์•„ํ‚คํ…์ณ๋Š” ๋‘ ๊ฐ€์ง€์˜ ๊ด€์ ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” ์•„ํ‚คํ…

2023๋…„ 3์›” 17์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] Xcode๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋”ฐ๋ผํ•ด๋ณด๊ธฐ - 2

Code Coverage๋Š” ํ…Œ์ŠคํŠธ์˜ ๊ฐ€์น˜๋ฅผ ์ธก์ •ํ•˜๋Š” ๋„๊ตฌ.(Codeย coverageย isย aย toolย toย measureย theย valueย ofย yourย tests.)์ถœ์ฒ˜: ์• ํ”Œ ๋ฌธ์„œ์ฐธ๊ณ : ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€(Code Coverage) ๋ฌผ๋ก , all targets๋กœ ํ•ด์ค˜๋„

2023๋…„ 3์›” 14์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

[Swift] ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€(Code Coverage)

Code Coverage๋Š” ํ…Œ์ŠคํŠธ์˜ ๊ฐ€์น˜๋ฅผ ์ธก์ •ํ•˜๋Š” ๋„๊ตฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ํ…Œ์Šคํ„ฐ๊ฐ€ ์˜๋„ํ•œ ๋Œ€๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.์ธก์ • ๊ธฐ์ค€์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ํ™”์ดํŠธ ๋ฐ•์Šค1(๋ผ์ธ(Line) ์ปค๋ฒ„๋ฆฌ์ง€๋ผ๊ณ  ๋ถ€

2023๋…„ 3์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] Xcode๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋”ฐ๋ผํ•ด๋ณด๊ธฐ - 1

Xcode์—์„œ Unit Test๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ํ•จ๊ป˜ ์ถ”๊ฐ€ํ•˜๊ธฐ.๊ธฐ์กด์˜ ํ”„๋กœ์ ํŠธ์— Unit Testing Bundle์„ ์ถ”๊ฐ€ํ•˜๊ธฐ.์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ํ™•์ธํ•ด๋ณด์ž.๋งŒ์•ฝ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Podfile์ด ์žˆ๋‹ค๋ฉด Unit T

2023๋…„ 3์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)

๐ŸŒŸ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test) > ์œ ๋‹› ํ…Œ์ŠคํŠธ(unit test)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test case)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ฅผ

2023๋…„ 3์›” 7์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] Xcode๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋”ฐ๋ผํ•ด๋ณด๊ธฐ - 3

XCTest๋Š” Xcode ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test), ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ŠคํŠธ(UI Test), ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ(Performance Test) ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.Xcode ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

2023๋…„ 3์›” 6์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

[Swift] TDD (Test Driven Development)์˜ ๊ฐœ๋…

TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์—”์ง€๋‹ˆ์–ด ์ผ„ํŠธ ๋ฐฑ (Kent Beck)์— ์˜ํ•ด ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์˜ ๋ฐ˜๋ณต์— ์˜์กดํ•˜๋Š” ๊ฐœ

2022๋…„ 12์›” 14์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Git ๋ช…๋ น์–ด ๋ชจ์Œ

git add -u .\-u : untracked ํŒŒ์ผ๋“ค์€ ์ œ์™ธ์‹œํ‚จ๋‹ค.. : ๋ชจ๋“  ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.git commit -m "Message": ํ•ด๋‹น ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ด์•„์„œ commit ํ•œ๋‹ค.git push -u origin/\-u : ์•ž์œผ๋กœ git push ๋งŒ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋‹ค

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Spring - UTF-8 ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ JDBC ๋น„๊ต

ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ โ†’ DBMS ๋‹จ๊ณ„์—์„œ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋ฌธ์ž์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.GETGET ๋ฐฉ์‹์—์„œ๋Š” Header์˜ URI์— ํฌํ•จ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค.๊ทธ๋Ÿฌ๋ฏ€๋กœ URI Encdoing์„ ๊ฑฐ์ฒ˜์•ผ ํ•œ๋‹ค.POSTPOST ๋ฐฉ์‹์—์„œ๋Š” Body์— ํฌํ•จ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค.์„œ๋ธ”๋ฆฟ์—์„œ

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

TestFlight ์™ธ๋ถ€ ํ…Œ์Šคํ„ฐ ์ดˆ๋Œ€๋ฅผ ํ†ตํ•œ ํ…Œ์ŠคํŠธ

AppStore์— ์•ฑ์„ ์—…๋กœ๋“œ ํ•œ๋‹ค.( ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ https://0urtrees.tistory.com/59 ์ฐธ๊ณ  ํ•˜์‹œ๊ธธ ๋ฐ”๋ž€๋‹ค.)App Store Connect ๋‚˜์˜ ์•ฑ โ†’ Test Flight ํƒญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ ์ƒˆ ๊ทธ๋ฃน์„ ํด๋ฆญํ•˜์—ฌ ๊ทธ๋ฃน์„ ์ƒˆ๋กœ

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Swift - Image Resizing

์ตœ๊ทผ Swift ์—์„œ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•์„ ์œ„ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ๋ดค๋˜ ์ ์ด ์žˆ๋‹ค.UIImage๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์„œ UIImage๋ฅผ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋Š” Function์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ์ฝ”๋“œ์˜ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์•˜๋‹ค.์ถœ์ฒ˜ : https://soooprmx.com/ar

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Swift - AWS S3 ํŒŒ์ผ ์—…๋กœ๋“œ

Amazone Web Service ์˜ Storage ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค. ํ•œ๋งˆ๋””๋กœ ๋Œ€๊ธฐ์—… ์•„๋งˆ์กด์ด ์šด์˜ํ•˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ์†Œ ์ž…๋‹ˆ๋‹ค.https://aws.amazon.com/ko/s3/?nc=sn&loc=1์ด๊ณณ์— ์ž์„ธํ•œ ์„ค๋ช…์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์„ธ์š” ใ…Žใ…ŽregionType

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Safe Area ์™€ View Life Cycle

Safe Area Guide ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰์„ ํ†ตํ•ด View ๊ฐ€ SafeArea ๋ฅผ ์นจ๋ฒ”ํ•˜์ง€ ์•Š๋„๋ก ์ ์šฉํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.https://devmjun.github.io/archive/SafeArea_1Mjun ๋‹˜์ด ๋ฒˆ์—ญํ•˜์—ฌ ์˜ฌ๋ ค ๋‘์‹ 

2022๋…„ 11์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

[Swift] ReactorKit ์‚ฌ์šฉ๊ธฐ - 3

์šฐ๋ฆฌ๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ global state๋ฅผ ์ข€ ๋” ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. service provider๋Š” Reactor ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•œ ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„์˜ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๋™์‹œ์— side effect, API ํ˜ธ์ถœ๊ณผ ๊ฐ™์€ ๋น„๋™๊ธฐ ์ž‘

2022๋…„ 6์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] ReactorKit ์‚ฌ์šฉ๊ธฐ - 2

View๋Š” data๋ฅผ Displayํ•˜๋Š” ์—ญํ• ์ด๋‹ค. View layer์—๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์—†๋‹ค. action stream์— user์˜ ์ž…๋ ฅ์„ ๋ฐ”์ธ๋”ฉํ•˜๊ณ , view state๋ฅผ view์˜ UI์— ๋ฐ”์ธ๋”ฉ๋งŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  action๊ณผ state๋ฅผ ์–ด๋–ป๊ฒŒ ๋งตํ•‘ํ• ์ง€๋งŒ

2022๋…„ 6์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] ReactorKit ์‚ฌ์šฉ๊ธฐ - 1

์•ˆ๋…•ํ•˜์„ธ์š” ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ œ๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์ง์ ‘ ์‚ฌ์šฉ์ค‘์ธ ReactorKit์— ๊ด€ํ•œ ์„ค๋ช…์„ ๋‹ด์€ ๊ธ€์„ ๊ณต์œ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์™œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€? ReactorKit์ด ๋ฌด์—‡์ธ์ง€? ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€? ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ธ€์€ ์ž‘๋…„์— Notion์— ์ ์–ด๋‘์—ˆ๋˜ ๊ธ€์„ Velog๋กœ ์˜ฎ๊ฒจ๋‘๋Š”

2022๋…„ 6์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift] File, Image ๊ณต์œ ํ•˜๊ธฐ

์•ฑ์„ ์ œ์ž‘ ํ•˜๋‹ค๋ณด๋ฉด ํŠน์ • ์•„์ดํ…œ์„ ์™ธ๋ถ€๋กœ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์–ดํ”Œ์— Export ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ActivityViewController๋ฅผ ํ†ตํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํ•ด๋‹น ํด๋ž˜์Šค๋Š” iOS 6.0 ์ด์ƒ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.iPod Touch ํ˜น์€ i

2022๋…„ 6์›” 17์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

[Swift] Network ์ƒํƒœ ์ฒดํฌํ•˜๊ธฐ

swift์—์„œ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.์šฐ์„  swift์—๋Š” Network๋ผ๋Š” ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ์ด์šฉํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.์ด๊ฒƒ์„ ์ด์šฉํ•˜๋ฉด ํ˜„์žฌ ๋„คํŠธ์›Œํฌ์˜ ์ƒํƒœ, ์ข…๋ฅ˜ ๋“ฑ.. ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ

2022๋…„ 6์›” 13์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Atomic ๋ณ€์ˆ˜

ํ˜„์žฌ ๊ฐœ๋ฐœ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค๋ณด๋‹ˆ Atomic<A>๋ผ๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ์—‡๊ณ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ ์žˆ๊ธฐ์— ํ˜ธ๊ธฐ์‹ฌ์— ๋“ค์–ด๊ฐ€ ๋ดค๋‹ค๊ฐ€ ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์ธ๊ฑฐ ๊ฐ™์•„ ๋ฒˆ์—ญ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.Atomic Variables๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ ์›์ž์„ฑ์„ ๋ณด์žฅํ•˜๋Š”

2022๋…„ 5์›” 30์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท