์ „์ฒด ๊ธ€ 38

[IOS/Swift] MBTI ์นด๋“œ ์„ ํƒ ๊ฒŒ์ž„ UI ๊ตฌํ˜„

swift ui๋ฅผ ์ด์šฉํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„๋ฅผ ์ง„ํ–‰ ํ•ด๋ด…์‹œ๋‹ค. ๊ธฐํš๋œ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Ÿ‰ ๋˜๋Š” ์–ธ๊ธ‰๋Ÿ‰์„ ๋น„๊ตํ•  ๋‘ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ๊ฐ ์นด๋“œ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•ญ์ƒ ์•„๋ž˜์— ์žˆ๋Š” ์นด๋“œ(ํŒŒ๋ž‘)๊ฐ€ ์œ„์— ์žˆ๋Š” ์นด๋“œ(๋นจ๊ฐ•) ๋ณด๋‹ค ์–ธ๊ธ‰๋Ÿ‰์ด ๋” ๋งŽ์€์ง€ ๋‚ฎ์€์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ •๋‹ต์„ ๋งž์ถ”๋ฉด ๋‹ค์Œ ์นด๋“œ๋กœ ์ด๋™, ์ž˜๋ชป ์„ ํƒํ•˜๋ฉด ๊ฒŒ์ž„์ด ๋๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ ๊ฒŒ์ž„์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ(API ์ „๋‹ฌ ๊ฒฐ๊ณผ)๋ฅผ ์„ค๊ณ„ํ•ด๋ด…์‹œ๋‹ค. struct StageList: Codable { var data: Array var answer: Array } API์—์„œ ์‘๋‹ต๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Struct๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. { "data": ["์งœ์žฅ๋ฉด", "์งฌ๋ฝ•", "ํƒ•์ˆ˜์œก", "์œ ๋ฆฐ๊ธฐ", "๊ฟ”๋ฐ”๋กœ์šฐ"], "answe..

IOS(Swift) 2022.05.22

[๋…์„œ๋…ธํŠธ] ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ - 7์žฅ ํŠธ๋žœ์žญ์…˜

์ด์ „์— ๋…์„œ๋…ธํŠธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ… ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.https://jongwho.tistory.com/17 [Youtube ์˜์ƒ ์š”์•ฝ] - ๋…์„œ ๋ฉ”๋ชจ๋ฒ•์ตœ๊ทผ ์—„์ฒญ ๋‘๊บผ์šด ์ฑ… ์ฝ๊ธฐ์— ๋„์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„๋ผ๋Š” ์ฑ…์ธ๋ฐ์š” http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158390983&orderClick=LE..jongwho.tistory.com ์œ„ ๋ฉ”๋ชจ๋ฒ•์„ ๋ฐ”ํƒ•์œผ๋กœ '๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„' 7์žฅ ํŠธ๋žœ์žญ์…˜์„ ์š”์•ฝํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.ํ‚ค์›Œ๋“œ ์š”์•ฝ์•ฝ 2ํŽ˜์ด์ง€๋งˆ๋‹ค ์ฝ์€ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด์„œ ํ‚ค์›Œ๋“œ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์˜ ๊ตฌ๋ถ„์€ '/'๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.ํŠธ๋žœ์žญ์…˜, ์•ˆ์ „์„ฑ ๋ณด์žฅ / ์›์ž์„ฑ, ..

Note 2022.05.03

[Youtube ์˜์ƒ ์š”์•ฝ] - ๋…์„œ ๋ฉ”๋ชจ๋ฒ•

์ตœ๊ทผ ์—„์ฒญ ๋‘๊บผ์šด ์ฑ… ์ฝ๊ธฐ์— ๋„์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„๋ผ๋Š” ์ฑ…์ธ๋ฐ์š”http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158390983&orderClick=LEa&Kc= ์•ฝ 600 ํŽ˜์ด์ง€ ์ฑ…์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” ๋„ˆ๋ฌด ๋‘๊ป๊ณ  ๋‚ด์šฉ๋„ ๋งŽ์•„ ์–ด๋–ป๊ฒŒ ์ •๋ฆฌํ•ด์•ผ ํ•  ์ง€ ๊ณ ๋ฏผํ•˜๋˜ ์ฐจ์— ์œ ํŠœ๋ธŒ์—์„œ ๋ฉ”๋ชจ์™€ ๊ด€๋ จ๋œ ์˜์ƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ - ๊ต๋ณด๋ฌธ๊ณ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์‹œ์Šคํ…œ์„ ์ง€ํƒฑํ•˜๋Š” ํ•ต์‹ฌ | ์ด ์ฑ…์—์„œ ๋ฐฐ์šฐ๋Š” ๋‚ด์šฉโ—Ž ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€๋ฅผ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๊ณ  ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์šด์šฉwww.kyobobook.co.kr ํšจ๊ณผ์ ์œผ๋กœ ๋ฉ”..

Note 2022.04.30

[Elastic Search] MBTI ๊ฒ€์ƒ‰ ํ”„๋กœ์ ํŠธ - 3. API ๊ตฌ์ถ•ํ•˜๊ธฐ

MBTI ๊ฒ€์ƒ‰์—”์ง„ ๋ฐ์ดํ„ฐ๋ฅผ API ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. API ๋ชฉ๋ก ์ „์ฒด ๋ฌธ์„œ์—์„œ ๊ฐ MBTI ํƒ€์ž…๋ณ„ ์ƒ์œ„ 100๊ฐœ ํ‚ค์›Œ๋“œ ์ถœ๋ ฅ - ๋ฌธ์„œ ์ˆ˜ ๊ธฐ์ค€ MBTI ์œ ํ˜• ์ค‘ E ๋˜๋Š” I ์œ ํ˜•์— ๋”ฐ๋ผ ์ƒ์œ„ 100๊ฐœ ํ‚ค์›Œ๋“œ ์ถœ๋ ฅ MBTI ์œ ํ˜• ์ค‘ E ๋˜๋Š” I ์œ ํ˜•์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ฒ€์ƒ‰๋œ ์ƒ์œ„ 100๊ฐœ ํ‚ค์›Œ๋“œ ์ถœ๋ ฅ ๊ตฌํ˜„ํ•œ API๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋ฌธ์„œ์—์„œ ๊ฐ MBTI ํƒ€์ž…๋ณ„ ์ƒ์œ„ 100๊ฐœ ํ‚ค์›Œ๋“œ๋ฅผ ์ถœ๋ ฅ @app.get('/top/keywords/{mbti_type}') def get_top_keywords(mbti_type: str, q:Optional[str]=None): es_query = { "size": 0, "query": {"match": {"keyword": mbti_type}}, "aggs..

Elastic Search 2022.04.29

[Elastic Search] MBTI ๊ฒ€์ƒ‰ ํ”„๋กœ์ ํŠธ - 2. Emoji ๊ฒ€์ƒ‰ ๋ฐ Aggregation(3ํŽธ)

Re-Index ๋ง‰์ƒ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ ๊ฐ ์›๋ฌธ์—์„œ ์ด๋ชจํ‹ฐ์ฝ˜์ด ์–ผ๋งˆ๋‚˜ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€, ์–ด๋–ค ์ด๋ชจํ‹ฐ์ฝ˜์ด ๊ฐ€์žฅ ๋งŽ์ด ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•ด๋ณด์ž ๊ทธ์ „์— ์‚ฌ์ „ ์ค€๋น„ ์ž‘์—…์œผ๋กœ text field๋กœ ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ์—์„œ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœ(Es ๋‚ด๋ถ€์—์„œ๋Š” Term)ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์ „์ฒด ๋ฌธ์„œ์—์„œ ํ‚ค์›Œ๋“œ ๋นˆ๋„์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ด…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๊ตฌ์„ฑ PUT /mbti_term { "settings": { "analysis": { "analyzer": { "nori_mixed": { "tokenizer": "nori_t_mixed", "filter": "shingle" }, "nori_pos_noun": { "type": "custom", "tokenizer": "nori_t_mixed", "..

Elastic Search 2022.04.24

[Elastic Search] MBTI ๊ฒ€์ƒ‰ ํ”„๋กœ์ ํŠธ - 2. Emoji ๊ฒ€์ƒ‰ ๋ฐ Aggregation(2ํŽธ)

๊ธฐ์กด ์ฝ˜ํ…์ธ ์—์„œ ์ด๋ชจํ‹ฐ์ฝ˜๋งŒ ํŒŒ์‹ฑ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ RDB์— ์ˆ˜์ง‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค. (ES Analyzer์— regex filter๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ์— ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!) ์Šคํ‚ค๋งˆ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ Insert ํ•˜์˜€์Šต๋‹ˆ๋‹ค(RDB) T: t_emoji_dashboard Columns: emoji, mbti_type(MBTI ํƒ€์ž… ์ž…๋‹ˆ๋‹ค), emoji_count(๊ฐ ๋ฌธ์„œ๋ณ„ ๋“ฑ์žฅ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค) SELECT emoji, mbti_type, sum(emoji_count) FROM t_emoji_dashboard WHERE emoji = '๐Ÿ˜˜' GROUP BY emoji, mbti_type ORDER BY mbti_type, sum DESC ์‚ฌ์šฉํ•œ ์ฟผ๋ฆฌ๋กœ ์กฐํšŒํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. (ํŠน์ • ์ด๋ชจํ‹ฐ์ฝ˜๋งŒ ์กฐํšŒํ•˜์˜€์Šต๋‹ˆ..

Elastic Search 2022.04.21

[๊ธฐํƒ€] ๋งฅ๋ถ์œผ๋กœ ์›๊ฒฉ๊ทผ๋ฌด ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ

ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ ๋งฅ์„ ์‚ฌ์šฉ์ค‘์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” PC๋„ ๋งฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›๊ฒฉ ์ ‘์†ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.Mac ์›๊ฒฉ ์ ‘์†๋ฐฉ๋ฒ•ParsecParsec ์„ค์น˜ ํ›„ Mac ํ™˜๊ฒฝ ์„ค์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •์„ ์—ด์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ > ์†์‰ฌ์šด ์‚ฌ์šฉ์œ„ ์„ค์ •์—์„œ Parsec์„ ์ฒดํฌ ํ•ด์ค€ ๋’ค ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.์ดํ›„ ํ™”๋ฉด ๊ธฐ๋ก ํ•ญ๋ชฉ์—์„œ๋„ ์ฒดํฌ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.์ดํ›„ Parsec ์„ ์‹คํ–‰ ํ•œ ๋’ค ์™ผ์ชฝ ์•„์ด์ฝ˜ ์ค‘ ์„ค์ •(ํ†ฑ๋‹ˆ๋ฐ”ํ€ด)์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋Ÿฌ๋ฉด ์ด์ „์— ์—†๋˜ Hosting Enabled ๋ผ๋Š” ์˜ต์…˜์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.์ด ์˜ต์…˜์„ Enabled ๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”. ์„ค์ • ํ›„ ์ปดํ“จํ„ฐ ๋ชฉ๋ก์œผ๋กœ ๊ฐ€ ๋ณด๋ฉด ๊ณต์œ ๋œ ์ปดํ“จํ„ฐ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

[Elastic Search] MBTI ๊ฒ€์ƒ‰ ํ”„๋กœ์ ํŠธ - 2. Emoji ๊ฒ€์ƒ‰ ๋ฐ Aggregation

MBTI ๋ณ„ ํŠน์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ˆ˜์ง‘๋œ ํ…์ŠคํŠธ๋“ค์„ ๋ณด๋‹ˆ ์ด๋ชจ์ง€๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฑธ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.Q: Emoji๊ฐ€ ElasticSearch ์—์„œ ๊ฒ€์ƒ‰์ด ๋˜๋‚˜์š”?A: ๋„ค Emoji๋„ ํ…์ŠคํŠธ๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์ด ์ž˜ ๋ฉ๋‹ˆ๋‹ค!ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ด๋ชจ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฌธ์„œ ์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์—์„œ ์ด๋ชจ์ง€๋งŒ ํŒŒ์‹ฑ ํ•ด๋ด…์‹œ๋‹ค.์ €๋Š” Python์˜ Regex๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ชจ์ง€๋ฅผ ์ถ”์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.import pandas as pdimport re# ... DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„์€ ์ƒ๋žต# df๋Š” ์นผ๋Ÿผ์œผ๋กœ contents(์ˆ˜์ง‘๋œ ํ…์ŠคํŠธ), doc_url(ํ…์ŠคํŠธ์˜ url)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œemoji_pattern = re.compile("[" ..

Elastic Search 2022.04.13

[Elastic Search] MBTI ๊ฒ€์ƒ‰ ํ”„๋กœ์ ํŠธ - 1. ๊ฒ€์ƒ‰ Score ํŠœ๋‹

ํ˜„์žฌ ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋ฅผ ์ด์šฉํ•ด ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ(MBTI ํƒ€์ž…๋ณ„ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ)๋ฅผ ์กฐํšŒํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ MBTI ํƒ€์ž…๊ณผ ์Šค๋งˆํŠธํฐ(์•„์ดํฐ ๋˜๋Š” ๊ฐค๋Ÿญ์‹œ)์˜ ์ƒ๊ด€์„ฑ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ES์˜ ์ฟผ๋ฆฌ๋ฅผ ํŠœ๋‹ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ์ฝ˜ํ…์ธ  ๋‚ด๋ถ€์—์„œ ๋ช…์‚ฌ๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด nori_noun์ด๋ผ๋Š” ๋ถ„์„๊ธฐ๋ฅผ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์—ฌ ํ•„๋“œ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. { "mbti" : { "aliases" : { }, "mappings" : { "properties" : { "comment_cnt" : { "type" : "integer" }, "contents" : { "type" : "text", "fields" : { "full" : { "type" : "keyword" }, "nori_mixed" : { "t..

Elastic Search 2022.04.12

[IOS/Swift] ์ฝ˜ํ…์ธ  ๊ฒ€์ƒ‰ ์•ฑ ๊ตฌํ˜„ - 4. ๋กœ๊ทธ์ธ UI ๊ตฌํ˜„

Swift UI - 4. ๋กœ๊ทธ์ธ UI ํ™”๋ฉด ๊ตฌํ˜„ ์ด์ „์— ๊ตฌํ˜„ํ•œ ํšŒ์›๊ฐ€์ž…์œผ๋กœ ํšŒ์›์ด ๋“ฑ๋ก๋˜์—ˆ๋‹ค(DRF๋กœ ํšŒ์›๊ฐ€์ž… API๋ฅผ ๊ตฌํ˜„) ์ด์ œ ๋“ฑ๋ก๋œ ํšŒ์›์œผ๋กœ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•˜๊ณ  ํ‚ค์ฒด์ธ์„ ์ด์šฉํ•ด์„œ Access Token ๋ฐ Refresh Token์„ ์ €์žฅํ•˜์—ฌ ์•ฑ ์‚ฌ์šฉ ์ค‘ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋ณด์ž. // // LoginView.swift // mbtiPlayground // // Created by ๋ฐ•์ข…ํ›„ on 2022/03/16. // import SwiftUI struct LoginView: View { @State private var email: String = "" @State private var password: String = "" @State private var loginStatus: ..

IOS(Swift) 2022.04.04