์ „์ฒด ๊ธ€

์‚ฌ๊ฑด์˜ ๋ฐœ๋‹จ ์›๋ž˜ ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ ์Šคํ‚จ ์ค‘ ๊ฐ€์žฅ ์‹ฌํ”Œํ•˜๊ณ  ๋ง˜์— ๋“œ๋Š” ์• ๋กœ ๊ณจ๋ผ์„œ ์•ฝ๊ฐ„์˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ๋ฅผ ํ•ด์„œ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ธ€์„ ์“ธ๋•Œ๋งˆ๋‹ค bullet point ๊ฐ„๊ฒฉ์ด ์ œ๋ฉ‹๋Œ€๋กœ์ž„ + ํ…์ŠคํŠธ ์ค„ ๊ฐ„๊ฒฉ ์‚ฌ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ฐ€๊นŒ์›Œ ๊ฐ€๋…์„ฑ์ด ๋งค์šฐ ๋งค์šฐ ์•ˆ ์ข‹์•˜๋‹ค. ๋˜ ์ด์ƒํ•˜๊ฒŒ ํฐํŠธํฌ๊ธฐ๋ฅผ ์ œ๋ชฉ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ค„ ๊ฐ„๊ฒฉ์ด ์–ด๋–ค ๊ณณ์€ ์—„์ฒญ ํฌ๊ณ  ์–ด๋””๋Š” ์•„์˜ˆ ์ค„๊ฐ„๊ฒฉ์ด ์•ˆ์ƒ๊ธฐ๊ณ ... ๋ธ”๋กœ๊น…ํ•˜๋Š”๋ฐ ์˜ฌ๋ฆฌ๊ธฐ ์ „์— ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ๋ฐฑ๋งŒ๋ฒˆ ์—ด์—ˆ๋‹ค ๋‹ซ์•˜๋‹ค ์˜ฌ๋ฆฌ๊ธฐ ์ „์— ๋น„๊ตํ•ด์„œ ๋ณด๋‹ค๋ณด๋‹ˆ ์Šฌ์Šฌ ์ฐธ์„ ์ˆ˜ ์—†๋Š” ์ง€๊ฒฝ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ์˜คํ”ˆ ์†Œ์Šค ์Šคํ‚จ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๋งˆ์Œ๋จน์—ˆ๋‹ค..!! ๊ธฐ์กด ์Šคํ‚จ์—์„œ ์ธ๋ผ์ธ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ• ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๊ฝค๋‚˜ ์œ ๋ช…ํ•œ hELLO ์Šคํ‚จ์„ ๊ฐ€์ ธ๋‹ค ์ ์šฉํ–ˆ๋Š”๋ฐ.. ๋ฌธ์ œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์žˆ์—ˆ๋‹ค. ์ด ์Šคํ‚จ์„ ์ ..
ยท React
ํ”„๋กœ์ ํŠธ ํด๋”๊ตฌ์กฐ ๐Ÿ“ฆpublic โ”ฃ ๐Ÿ“‚policy โ”— โ”— ๐Ÿ“œservice.html ๐Ÿ“ฆsrc โ”ฃ ๐Ÿ“œApp.tsx โ”ฃ ๐Ÿ“‚assets โ”ƒ โ”ฃ ๐Ÿ“‚fonts โ”ฃ ๐Ÿ“‚components โ”ฃ ๐Ÿ“‚containers โ”— ... ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ• 1. vite.config.ts ํŒŒ์ผ์— html ๊ฒฝ๋กœ ์ง€์ • โŒ https://ko.vitejs.dev/guide/build.html#multi-page-app build: { rollupOptions: { input: { main: resolve(__dirname, 'index.html'), public: resolve(__dirname, 'public/policy/service.html'), }, }, }, 2. iframe ์—์„œ src ๋กœ ๋„์šฐ๊ธฐ https://ko.vitejs.de..
ยท Python
JavaScript const string = 'dcba' console.log(string.split('').sort().join('')) //'abcd' ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด `sort()`๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, `sort()` ๋ฉ”์„œ๋“œ๋Š” `๋ฐฐ์—ด ์ž๋ฃŒํ˜•๋งŒ ์ •๋ ฌ์ด ๊ฐ€๋Šฅ`ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์šฐ์„  ๊ทธ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค. 1. `split()` ๋ฉ”์„œ๋“œ๋กœ ๋จผ์ € ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. split์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ `split(separator)`์œผ๋กœ, separator ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐฐ์—ด์„ ๋‚˜๋ˆŒ๊ฑด์ง€ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, `string.split('')`์œผ๋กœ ์ ์–ด์ค€๋‹ค๋ฉด string์ธ 'dcba'๋ฅผ ' ํ•œ ์ž ํ•œ ์ž ๋ถ„๋ฆฌํ•œ๋‹ค, ์ชผ๊ฐ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. 2. ์ด์ œ ๋ฐฐ์—ด..
ยท Python
python์—์„œ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํŒŒ์ด์ฌ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ์˜ `sort()`์™€ `sorted()`๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ ์ •๋ ฌ ๋ฉ”์„œ๋“œ`sort()`๋Š” listํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์—๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, `sorted()`๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธํ˜•, ๋ฌธ์žํ˜•, ํŠœํ”Œํ˜•๊ณผ ๊ฐ™์€ ์ดํ„ฐ๋Ÿฌ๋ธ”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฆฌ์ŠคํŠธ sort() ๋ฉ”์„œ๋“œmy_numbers = [2,5,6,1,8,3]my_numbers.sort()print(my_numbers) #[1, 2, 3, 5, 6, 8] sorted() ํ•จ์ˆ˜์ •๋ ฌํ•˜๊ณ ์žํ•˜๋Š” iterable์„ ์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ ์–ด์ค€๋‹คlist = [5, 4, 3, 2, 1]print(sorted(list)) #[1, 2, 3, 4, 5]string = 'abcd'print(sorted(string)) ..
ยท React
Form์„ ์ €์žฅํ•  ๋•Œ ํ•„์š”ํ•œ input ์ƒํƒœ๊ฐ’์„ object ํƒ€์ž…์œผ๋กœ ํ•œ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ input ๊ฐ’์ด ๋ณ€๋™๋  ๋•Œ๋งˆ๋‹ค ์ƒ์œ„ ๋ถ€๋ชจ์—์„œ handleChange ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ form ์ƒํƒœ๊ฐ’์„ ์ผ๊ด„์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ์ƒ์œ„ ๋ถ€๋ชจ๋Š” ์ƒํƒœ๊ฐ’ ๊ด€๋ฆฌ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๊ณ , ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์œ„์—์„œ ์ƒํƒœ๊ฐ’์„ ๋ฐ›์•„ ui ๋งŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์˜€๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์„ค๊ณ„๋Š” ์œ„์˜ ์„ค๋ช…๊ณผ ๊ฐ™์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ถ”์—ˆ๋Š”๋ฐ, ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ƒ์œ„ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ export const Form = () => { const initialFormValue: Info = { name: '', location: { address: '', detailAddress: '', zipCode..
ยท React
์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” ๊ฒ€์ƒ‰์–ด input ๊ฐ’์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— api๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค. ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด debounce๋ผ๋Š” ๊ฐœ๋…์„ ์ฝ”๋“œ์— ์ƒˆ๋กœ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. debounce๊ฐ€ ์–ด๋–ค ๊ฐœ๋…์ด๋ฉฐ ์ด๊ฑธ react ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณธ๋‹ค. ๊ธฐ์กด ๊ฒ€์ƒ‰ ์ปดํฌ๋„ŒํŠธ useEffect(() => { getLazySearchList(); //api ํ˜ธ์ถœ }, [searchInputValue]); setSearchInputValue(e.target.value) } /> ์œ„ ์ฝ”๋“œ์—์„œ๋Š” useState hook์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” searchInputValue๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์ง€๊ธˆ ์˜ˆ์ œ ์‚ฌ์ง„์—์„œ ๋ณด๋“ฏ์ด ๊ฒ€์ƒ‰์ฐฝ์— ์œ ์ €๊ฐ€ ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜๋ฉด ใ„ฑ > ๊ทธ > ๊ธ€ >..
ยท React
์„œ๋ก ๊ธฐ๋ณธ์ ์ธ Form ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋ฆ„, ์ฃผ์†Œ, ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ๋ฅผ input์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์ €์žฅ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด input ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ด Form ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์„ฑ์‹œ, ์ˆ˜์ •์‹œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ์ƒ์„ฑ์‹œ๊ธฐ๋ณธ input ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ’์ด ๋นˆ string์„ ๊ฐ€์ง„๋‹ค.์ €์žฅ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ input ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ชจ์•„์„œ ์ƒ์„ฑ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํ•จ์ˆ˜์ธ onCreateInfo๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ˆ˜์ •์‹œ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ „๋‹ฌ ๋ฐ›์€ ๋ฐ์ดํ„ฐ value๊ฐ’์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ๊ฐ€์ง„๋‹ค.  ์ €์žฅ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด input ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ˆ˜์ • ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” onEditInfo๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.   interface Props { data?: Data; //์ˆ˜์ •์‹œ์—๋งŒ ์กด์žฌ onCreateInfo?: (inputs: ..
ยท React
๋ชจ๋…ธ๋ ˆํฌ ๋„์ž…์ง€๊ธˆ ํšŒ์‚ฌ ํ”„๋ŸฐํŠธ ํŒ€์˜ ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜๋Š” ๋„๋ฉ”์ธ ๋ฉ”๋‰ด๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ฉ€ํ‹ฐ๋ ˆํฌ Multi repo ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ–ˆ์—ˆ๋‹ค. ์ฆ‰ ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์„œ ๊ฐœ๋ฐœํ–ˆ์—ˆ๊ณ , ํŒ€์›๋ผ๋ฆฌ ๋˜‘๊ฐ™์€ ui๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์ €์žฅ์†Œ๊ฐ„์— ์ปจํ…์ŠคํŠธ ๊ณต์œ ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๊ฐœ๊ฐœ์ธ ๊ฐ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋‚ด๋ถ€์—์„œ ๋˜‘๊ฐ™์€ ui๋ฅผ ์ค‘๋ณตํ•ด์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด์ œ ์—ฌ๋Ÿฌ๊ณณ์—์„œ ์ค‘๋ณต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์„œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ์™€ ์ž์›์„ ๊ด€๋ฆฌํ•˜์—ฌ ์„œ๋กœ์˜ ๊ด€๊ณ„์™€ ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค. ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ ์‹คํ–‰์ด ์•ˆ๋ ๋•Œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ์ด๋•Œ ๋งˆ์ฃผํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.  Monorepo ๋นŒ๋“œ ๋„๊ตฌ Turborepo  ..
hana1203
hana's lab ๐ŸŒฑ