https://fonts.google.com/?subset=korean¬o.script=Kore Browse Fonts - Google Fonts Making the web more beautiful, fast, and open through great typography fonts.google.com ๊ตฌ๊ธํฐํธ ๊ท์ฌ์ด ๊ฑฐ ์ฌ์ฉํ๋ ค๊ณ ์ฐพ์๋ด ์ํ๋ ํฐํธ get ๋ฒํผ ๋๋ฅด๊ณ global.css (ํน์ ์ ์ญ css) ์ @import ๋ฅผ ์ถ๊ฐํ๋ค @import url("https://fonts.googleapis.com/css2?family=Jura:wght@300..700&display=swap"); tailwind.config.ts import type { Config } from "tailwindc..
์ฝ๋ฉ ๋ฉ๋ชจ
๊ธฐ๋ณธ ํ
๋๋ฆฌ๋ ๊ฒ์ ์์ด๊ณ , ์ฃผ๋ณ์์์ด๋ ๋ง์ถฐ์ ๋ณด์ด๊ฒ ํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํด์ผ๋ ์ง ์ฐพ์๋ณธ ๊น์ ๋ฉ๋ชจ focus:ring-2 focus:ring-inset focus:ring-#์ฌ๊ธฐ์์์ focus:outline-none ์ด๊ฑฐ ์ถ๊ฐํด์ฃผ๋ฉด ๋จ focus ์์ ring ์ถ๊ฐํ๊ณ , ์ ์ชฝ์ผ๋ก ์ถ๊ฐํ๊ณ ๊ทธ๋ ๊ฒ ๊น์ง๋ง ํ๋ฉด outline ๊ฒ์ ์์ด ๊ทธ๋๋ก ๋ณด์ด๊ธฐ ๋๋ฌธ์ none ์ฒ๋ฆฌ
ํ์์๋ ๋ค๋ฅธ ๋ธ๋์น์์ ์์
ํ git lab์ ์ง์ ๋ค์ด๊ฐ์ create merge~์ด์ฉ๊ณ ๋จ๋ฉด ๊ทธ๊ฑฐ ๋๋ฌ์ merge์์
ํ์๋๋ฐ, (git merge ๋ช
๋ น์ด๊ฐ ์กฐ๊ธ ๋ณต์ก์๋ ต๊ฒ ๋๊ปด์ง๊ณ , ํน์๋ผ๋ mergeํ๋ค ์ถฉ๋๋ ๊น๋ด ใ
ใ
)_ ํ์ง๋ง ์ถฉ๋๋๋ฉฐ ๋ฐฐ์ฐ๋ git..... (์ด๋ผ์ฐ๊ณ ๋งจ๋ ๋ฐ๋ก ๋ฐฑ์
ํด๋์ใ
) ๋ช
๋ น์ด๋ก ํด๋ณด๋ ์ต๊ด์ ๋ค์ด๊ธฐ๋ก ํจ dev๋ผ๋ ๋ธ๋์น์์ ์์
ํ main์ ๋จธ์ง๋ฅผ ํ๋ ค๋ฉด, 1. ์ผ๋จ main๋ธ๋์น๋ก ์ด๋ํ๋ค. git checkout main 2. dev์ ์ฌ๋ผ์์๋ ์์ค๋ฅผ merge ํ๋ค. git merge dev 3. ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฒฉ์ ์ฅ์๋ก pushํ๋ค. git push origin main ๋ง์ผ push ํ๋ค๊ฐ error: failed to push some refs to..
dev์์ ์์
์ํ๊ณ main์ ๋ณํฉํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๋๋ฐ, ์ฒดํฌ๋ฅผ ์ํ๊ณ ์๊พธ main์์ ์์ ์์
์ ํ๋ค ใ
^^ ๊ทธ๋์ ๊ทธ๋์์ ๊ทธ๋ฅ ๋๊ฐ์ด dev์์๋ ์์
ํ๊ณ ์ปค๋ฐํด์คฌ๋๋ฐ, ์ด๋ฒ์ ๋ด์ญ์ด ์ข ๋ง์์,, ์ผ๋จ ๊ธฐ๋กํด๋์ผ๋ ค๊ณ ํจ ๊ฒ๋ด์ง๋ง๊ณ ๊ทธ๋ฅ git checkout dev git merge main ํด์ฃผ๋ฉด main์ ์๋ ์์ค๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณ , ๋ณ๊ฒฝ์ฌํญ์ด ๋ฌ๋ค. (์ฌ๊ธฐ์ ์ถฉ๋์ด ์์ผ๋ฉด ์ถฉ๋ ์์ ๊น์ง ํด์ค) ์ด์ ์ด ์์ ๋ด์ญ์ด ์์ฌ์ git status๋ฅผ ํด์ฃผ๋ฉด commit๋ด์ญ์ด ์๋ค๊ณ ๋์ด ์ด์ ํธํ๊ฑธ๋ก push ํด์ฃผ๋ฉด ๋จ! ์ ๋ฒํผ ๋๋ฅด๋ฉด ๋์ง๋ง ๋๋ ์์ฆ์ ๋ช
๋ น์ด๋ก๋ง git์ฐ๋ ๊ฑฐ ์ต๊ด๋ค์ด๋ ค๊ณ git push origin dev ํด์ฃผ์๋ค
๋ก๊ทธ์ธ ์ ํค๋์ ๋ด๊ธด Access-token์ ๋ฐ์์์ผ ํ๋๋ฐ headers ๊ฐ ๋ถ๋ฌ์์ง์ง ์๋ ์ค๋ฅ๊ฐ ์๊ฒผ๋ค. const loginHandler = useCallback(async () => { try { const response: any = await fetch(Account.POST_SNS_LOGIN, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ code: authCode, snsCode: "1110501", phoneNumber: phone, name: name, }), }); const data = await response.json(); console.log(data); /..
์ด ์ค๋ฅ๋ ์ฃผ๋ก Git์ด ๋ ๋ธ๋์น์ ํ์คํ ๋ฆฌ๊ฐ ์๋ก ๊ด๋ จ์ด ์๋ค๊ณ ํ๋จํ ๋ ๋ฐ์ํ๋ค. ๋ด๊ฐ ์ด ์ค๋ฅ๋ฅผ ๋ง๋ ๊ฑด ๋ก์ปฌ์ git ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ์ปค๋ฐํ๊ณ , github ์ ์๋ก์ด ์ ์ฅ์๋ฅผ ๋ง๋ค๋ README ๋ฅผ ์ถ๊ฐํ์ฌ ์๋ก์ด ์ปค๋ฐ์ด๋ ฅ์ด ์๊ฒผ๋ ์ํฉ์ด๋ค. ์ด ์ํ์์ ๋ก์ปฌ์ ์๋ ๊ฒ์ ํธ์ํ ๊ฒฝ์ฐ, ๋ก์ปฌ ์ ์ฅ์์๋ github์ ์ปค๋ฐ์ด๋ ฅ์ด ์์ผ๋ฏ๋ก ์๊ธฐ๋ ์๋ฌ๋ผ๊ณ . git pull --allow-unrelated-histories ~ ~ git pull --allow-unrelated-histories origin main ์ ํด์ฃผ์ด ์ ํด๊ฒฐ๋์์. https://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories-..
๐จ ์๋ฌ ์ํฉ ๋ก์ปฌ์์ next ํ๋ก์ ํธ๋ฅผ ํ๋ ์์ฑํ๋๋ฐ, ์ด๋ฅผ repository๋ง ์์ฑํด๋์ git ๊ณผ ์ฐ๋ํ๋ ๊ณผ์ ์์ ์๊ธด ์ค๋ฅ โจ ์์ธ ๋ก์ปฌ์ git๊ณผ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ git ์ ๋ณด๊ฐ ๋๊ธฐํ ๋์ง ์์์, ์๋ก ๋ง๋ค์ด์ง ๋ฆฌ๋ชจํธ ์ ์ฅ์ ๋ธ๋์น๋ฅผ ์ฐธ์กฐํ ์ ์๊ธฐ์ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค. ๊ทธ๋์ ์ฒ์์ master๋ก ๋์ด์๋ ์ํ์์, gitlab ์๋ main์ด ์์๋๋ฐ ๊ทธ ๋ ๊ฐ๊ฐ ์๋ก ๋๊ธฐํ๊ฐ ์๋์ด์์ผ๋ ์๋ก ์ฐพ์ง ๋ชปํ๊ณ ์์๋ ๊ฒ. ๐ก ํด๊ฒฐ git remote update git checkout main ์๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๋ค๋ฉด main์๋ฆฌ์ ์์ฑํ ๋ธ๋์น ์ด๋ฆ์ ๋ฃ์ด์ ์ด๋ํ๋ฉด ๋จ ๋ณดํต pull ๋ฐ๊ธฐ ์ git remote update ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ์ต์ ์ด๋ ฅ ์ ๋ณด๋ฅผ ํ์ธํ ํ, git pu..
์ฐ๋์ด ์ฐ์ด๋ค... ๊ฐ๋ง์ ๋งฅ๋ถ์ ํค๋ฉด ์ฃ์ผ ์ค๋ฅ ์์ ๋ง ํ๋ ๊ฑฐ ๊ฐ์ ๊ธฐ๋ถ.. vue js ๋ก ์์
ํ๋ ค๋๋ฐ ํ์ผ ์ ์ฅ์ด ์๋๊ณ ์๊พธ permission ์๋ฌ๊ฐ ๋ฌ๋ค.. Retry as Sudo ๋ก ํด๋ ๋น๋ฒ์
๋ ฅํ๊ณ ๋๊ฐ์ ์ฐฝ ๊ณ์ ๋ฐ ๋ฟ.. Error: EACCES: permission denied, rmdir ํด๊ฒฐ๋ฐฉ๋ฒ sudo chown -R [username] . [username]์ echo $USER ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด์ ๋์ค๋ ๊ฒฐ๊ณผ๋ฅผ ์
๋ ฅํด์ฃผ๋ฉด ๋๋ค. ์ฒ์์ ์ . ์ ๋ชป๋ด์ usage: chown [-fhnvx] [-R [-H | -L | -P]] owner[:group] file ... chown [-fhnvx] [-R [-H | -L | -P]] :group file ... ์ด ์น๊ตฌ๋ค๋ง ๊ณ์..
ํ์ฌ ๋ค๋๋ฉด์ ํ์ฌ ์ปดํจํฐ ์ฐ๊ณ , ์ง์์๋ ๋ฐ์คํฌํ์ผ๋ก ํ๊ณ ํ๋ค๋ณด๋ ๋ด ๋งฅ๋ถ์ ์ธ ์ผ์ด ๋ง์ด ์์ด์ก๋๋ฐ ๊ฐ๋ง์ ๋งฅ๋ถ์ผ๋ก ์ธ๊ฐ์ ๋ค์ผ๋ ค ํ๋ค๊ฐ vue.js ์ค์น๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋์ ๊ณ์ ์ ๋จน์๋ค. ๋ด๊ฐ ์
๋ ฅํ ๋ช
๋ น์ด๋ ์๋์ ๊ฐ๋ค. npm install -g @vue/cli ๊ทธ๋ฆฌ๊ณ ๋์จ ์ค๋ฅ. zsh: command not found: npm ๋ฐ์คํฌํ์์๋ ์๋ง๋๋๊ฒ.. ๊ทธ๋ฆฌ๊ณ ๋งฅ๋ถ์ผ๋ก ํ ์ฝ๋ฉ์ด ์ผ๋ง๋ฐ npm๋ node๋ ์๋์ค์ง? ๊ทธ๋ ๋ค๊ณ ํด์ yarn global add @vue/cli ์ด ๋๋ ๊ฒ๋ ์๋์๋ค. npm install๋ ๋์ง ์์์ node ๋ npm ๋ ์๋ฌด๊ฒ๋ ๋์ง ์์๋ค. node๋์๋ค๊ณ ํ๋ ํํ์ด์ง์์ node ๋ฅผ ๋ค์ด ๋ฐ์๋๋ ์ด์ ๋ค๋ฅธ ์ค๋ฅ๋ฅผ ๋์ ๋ค npm ERR! cod..
map ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // ์ถ๋ ฅ: [2, 4, 6, 8] forEach ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํ. ๋ฐํ ๊ฐ์ด ์์(undefined). const numbers = [1, 2, 3, 4]; numbers.forEach((num, index) => { console.log(`Element at index ${index}: ${num}`); }); filter ์ฃผ์ด์ง ํจ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ค๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ const n..

select ๊ฐ์ value์ ๋ฃ๊ธฐ๋ง ํ์ง ํด๋น value์์ ๊บผ๋ด์จ ๊ฒ์ด ๊ธฐ์ต์ด ์ ์๋ ๋ฉ๋ชจํด๋๋๋ค. import { useState } from "react"; export default function App() { const initialFruitList = [ { id: 1, name: "์ฌ๊ณผ", color: "RED" }, { id: 2, name: "๋ฐ๋๋", color: "YELLOW" }, { id: 3, name: "์ฒด๋ฆฌ", color: "RED" }, { id: 4, name: "๋ณต์ญ์", color: "PINK" }, { id: 5, name: "ํฌ๋", color: "PURPLE" }, ]; const [fruitList, setFruitList] = useState(initia..
One of your dependencies, babel-preset-react-app, is importing the "@babel/plugin-proposal-private-property-in-object" package without declaring it in its dependencies. This is currently working because "@babel/plugin-proposal-private-property-in-object" is already in your node_modules folder for unrelated reasons, but it may break at any time. babel-preset-react-app is part of the create-react-..