profile
Studying Frontend ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป
post-thumbnail

[iOS] Signed URL ๋ฐœ๊ธ‰ & ์ด๋ฏธ์ง€ ์ €์žฅ ์„œ๋ฒ„ ํ†ต์‹ ํ•˜๊ธฐ

์ด๋ฒˆ ์•ฑ์žผ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ๋•Œ์—๋Š” URL์„ ๋ฐœ๊ธ‰๋ฐ›๊ณ  ๋ฒ„ํ‚ท์— ๋”ฐ๋กœ ์ €์žฅ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Signed URL ๋ฐœ๊ธ‰์„ ์œ„ํ•œ POST API๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ €์žฅ์„ ์œ„ํ•œ API ํ˜ธ์ถœ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท์— ์ด๋ฏธ์ง€ ์ €์žฅ์„ ํ•˜๊ธฐ ์œ„ํ•œ Signed U

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

[iOS] UITextView fall back ํฐํŠธ ์ ์šฉํ•˜๊ธฐ / flick ํ˜„์ƒ ํ•ด๊ฒฐ

UITextView์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ ์‹œ ๊ธ€์ž๊ฐ€ ๊ณ„์† ๊นœ๋นก๊ฑฐ๋ฆฌ๋ฉด์„œ, ๋ทฐ์—์„œ ์‚ฌ๋ผ์กŒ๋‹ค๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ๋ฐ˜๋ณต๋˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค .ํ…์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฒœ์ฒœํžˆ ์ž…๋ ฅํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์„ ๋•Œ, ๋ทฐ์—์„œ ์•ˆ๋ณด์ด๋Š” ๊ธ€์ž๋“ค์€ ๋ชจ๋‘ ํฐํŠธ์—์„œ ๋ฏธ์ง€์›๋˜๋Š” ๊ธ€์ž๋“ค์ด์—ˆ์Šต๋‹ˆ๋‹ค.๋””์ž์ธ์‹œ์Šคํ…œ์—์„œ๋Š” SUIT

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

[Swift] ์ดˆ๊ธฐํ™”

๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์›€๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ดˆ๊ธฐํ™”๋ผ๋Š” ์šฉ์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉด!์ดˆ๊ธฐํ™”๋ž€, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•, ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ดˆ๊ธฐํ™”์˜ ์—ญํ• ์€ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ธ์Šคํ„ด

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

[iOS/SwiftUI] LazyVStack์œผ๋กœ Sticky Header ๊ตฌํ˜„ํ•˜๊ธฐ

์ผ๋ฐ˜ Stack๊ณผ ๋‹ค๋ฅด๊ฒŒ, Lazy ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์€ LazyVStack๊ณผ LazyHStack์€ ๊ฐ ์•„์ดํ…œ์ด ํ•„์š”ํ•  ๋•Œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ฏธ๋‚˜์—์„œ ๋ฐฐ์šด LazyHGrid, LazyVGrid์™€ ๋น„์Šทํ•œ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VStak์— ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ์ด ์—„์ฒญ ๋งŽ๋‹ค๋ฉด Lazy

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

[Swift ๋ฌธ๋ฒ•] ์†์„ฑ (Property)

ํ”„๋กœํผํ‹ฐ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค โœ๐Ÿป๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ์†์„ฑ์ž…๋‹ˆ๋‹ค. var, let ์œผ๋กœ ์„ ์–ธ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ๊ฐ ์ €์žฅ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค. (nil๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•จ)lazy ํ‚ค์›Œ๋“œ๋กœ ํ•ด๋‹น ์†์„ฑ์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ

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

[iOS/Swift] ๋””์ฝ”๋”ฉ ์—๋Ÿฌ / ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ ค์ฃผ์ง€ ์•Š์„ ๋•Œ

๋„คํŠธ์›Œํ‚น ์„ธํŒ… ์‹œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ ์ด์Šค ๋ฆฌ์Šคํฐ์Šค๋ฅผ ์ง€์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ผ๋ถ€ API์—์„œ ์š”์ฒญ์€ 200์œผ๋กœ ์ž˜ ๋˜๋Š”๋ฐ, ๋””์ฝ”๋”ฉ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.PATCH api์—์„œ๋Š” ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•œ ๋ฆฌ์Šคํฐ์Šค์— data๊ฐ€ ์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฒ ์ด์Šค ๋ฆฌ

2025๋…„ 5์›” 26์ผ
ยท
2๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[iOS/UIkit] ์ฃผ๊ฐ„ ์บ˜๋ฆฐ๋” ๊ตฌํ˜„

์ด๋ฒˆ ํ•ฉ๋™์„ธ๋ฏธ๋‚˜์—์„œ ์ €ํฌ ํŒ€์ด ๋งก์€ ์„œ๋น„์Šค๋Š” ํˆฌ๋‘๋ฉ”์ดํŠธ์˜€์Šต๋‹ˆ๋‹ค.๊ทธ ์ค‘ ์ €๋Š” ์บ˜๋ฆฐ๋”๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”..์บ˜๋ฆฐ๋” UI ์ž‘์—…์ด ์–ผ์ถ” ์™„๋ฃŒ๋˜์—ˆ๋Š”๋ฐ, ์ •๋ฆฌ ๊ฒธ ํšŒ๊ณ  ๊ฒธ ์•„ํ‹ฐํด ์ž‘์„ฑ๊ฒธ... ์—ฌํŠผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.์ด๋ ‡๊ฒŒ ์ƒ๊ธด ์บ˜๋ฆฐ๋”๋ฅผ ๋งŒ๋“ค๊ฑด๋ฐ์š”.์ด๋ ‡๊ฒŒ ๊ตฌ์กฐ๋ฅผ ์งฐ๊ณ , ๋‹ฌ๋ ฅ ๋ถ€๋ถ„

2025๋…„ 5์›” 19์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[iOS/Swift] SwiftLint ์„ค์น˜ ๋ฐ github Action CI ์„ธํŒ…ํ•˜๊ธฐ

์ด๋ฒˆ ํ•ฉ๋™์„ธ๋ฏธ๋‚˜์—์„œ๋Š” SwiftLint๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ์š”.SwiftLint๋ž€ ๋ฌด์—‡์ธ์ง€, ๋˜ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.SwiftLint๋ž€ ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ๋ถ„์„ํ•ด์ฃผ๋Š” ์ •์ ๋„๊ตฌ์ธ๋ฐ์š”. ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋“ค์—์„œ ๊ทœ์น™์— ์–ด๊ธ‹๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋‚ด์„œ

2025๋…„ 5์›” 12์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[Swift ๋ฌธ๋ฒ•] ์—ด๊ฑฐํ˜• (Enum)

์—ด๊ฑฐํ˜•์€ ์—ฐ๊ด€์„ฑ์ด ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋ชจ์•„๋‘” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์€ ์ผ๊ธ‰๊ฐ์ฒด๋กœ์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ณ„์‚ฐ ๋ฐ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ์š”. ์†”์งํžˆ ๋ฌด์Šจ๋ง์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ๊นŒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด๋“ค์„ ์ผ๊ธ‰๊ฐ์ฒด๋ผ๊ณ  ํ•˜

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

[Swift ๋ฌธ๋ฒ•] ํƒ€์ž… ์„ ์–ธ

์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” let, var๋กœ ์ƒ์ˆ˜&๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. ์ด๋ ‡๊ฒŒ๋งŒ ์ž‘์„ฑํ•˜๋ฉด Type Annotation missing์ด๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜, ์ƒ์ˆ˜์˜ ์ž๋ฃŒํ˜•์ด ๋ฌด์—‡์ธ์ง€ ์•Œ

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

[iOS/Uikit] UICollectionView ์ •๋ฆฌํ•˜๊ธฐ

๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” UICollectionView๋ฅผ An object that manages an ordered collection of data items and presents them using customizable layouts.๋ผ๊ณ  ์ •์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ ฌ๋œ da

2025๋…„ 5์›” 6์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[์กธ์—…์ž‘ํ’ˆ ํšŒ๊ณ  -3] sse๋กœ ์•Œ๋ฆผ ์ „์†ก๋ฐ›๊ธฐ

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

2025๋…„ 4์›” 1์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[์กธ์—…์ž‘ํ’ˆ ํšŒ๊ณ  -2] withCredential 403 Forbidden ํ•ด๊ฒฐ

https://securityinit.tistory.com/248

2025๋…„ 4์›” 1์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[์กธ์—…์ž‘ํ’ˆ ํšŒ๊ณ  -1] React cookie ์‚ฌ์šฉํ•˜์—ฌ ์•„์ด๋”” ์ €์žฅํ•˜๊ธฐ

๋กœ๊ทธ์ธ ์‹œ ์•„์ด๋””๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด React-cookie๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 1) react cookie๋ฅผ installํ•œ๋‹ค. 2) ์ฝ”๋“œ 3) App.js๋ฅผ < CookieProvider >๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผํ•œ๋‹ค. ํ•œ๋ฒˆ ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ ๋‹ค์‹œ ๋กœ๊ทธ์ธํŽ˜์ด์ง€์— ๊ฐ€

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

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜์˜ () ์œ ๋ฌด ์ฐจ์ด

onClick ์ด๋ฒคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ด๋ ‡๊ฒŒ onclick ์ด๋ฒคํŠธ ๋•Œ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜ ๋’ค์— ()๋ฅผ ๋ถ™์ด๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋˜์ž๋งˆ์ž ๊ฒฝ๋กœ๊ฐ€ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•จ์ˆ˜ ๋’ค์— ()๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ onclick ์ด๋ฒคํŠธ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š”

2025๋…„ 2์›” 10์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท