๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽจ Projects19

[์—๋Ÿฌ๋ชจ์Œ] fatal: 'origin' does not appear to be a git repository ์—๋Ÿฌ ์ƒํ™ฉ VSCode์—์„œ ๊นƒํ—ˆ๋ธŒ๋กœ push ํ•  ๋•Œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ํ•ด๊ฒฐ ์šฐ์„  git remote -v ๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์—ฐ๊ฒฐ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ์—ฐ๊ฒฐ์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค. $ git remote add origin https://github.com/cgy0627/02_PhotoApp.git # ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด https://github.com/cgy0627/02_PhotoApp.git ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ origin ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ๋‚ด ๊ฒฝ์šฐ์—๋Š” ์ด๋ฏธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์ด๋ฏธ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ๋‹ค๋ฉด ๊นƒํ—ˆ๋ธŒ๋กœ push ํ•  ๋•Œ, ์ด๋ฏธ ์ •ํ•ด์ง„ remote name์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์œ„ ์Šคํฌ๋ฆฐ์ƒท์— ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋‚ด ๊ฒฝ์šฐ๋Š” remote name์ด ์ด๋ฏธ 0.. 2023. 4. 29.
VSCode์™€ GitHub ์—ฐ๋™ํ•˜๊ธฐ 2 (๋ช…๋ น์–ด ๋ฒ„์ „) Goal 1. VSCode์—์„œ GitHub ์—ฐ๋™์„ ๋ช…๋ น์–ด๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ 2. ๋ช…๋ น์–ด ์—†์ด ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ตํ•˜๊ธฐ VSCode - GitHub ์—ฐ๋™ํ•˜๊ธฐ 1. GitHub์—์„œ ์ƒˆ๋กœ์šด ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ (Respositories > New > Create repository) 2. VSCode bash ํ„ฐ๋ฏธ๋„์—์„œ ๋‚ด๊ฐ€ GitHub๋กœ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€ ํด๋” ์—ด๊ธฐ 3. ํ”„๋กœ์ ํŠธ์— Git ์ €์žฅ์†Œ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ธฐ 4. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๋ชจ๋“  ๋‚ด์šฉ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ(staging area)์— ์ถ”๊ฐ€ํ•˜๊ธฐ 5. ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์˜ฌ๋ผ์˜จ ๋‚ด์šฉ๋“ค์„ ๋ฒ„์ „์œผ๋กœ ๊ธฐ๋กํ•˜๊ธฐ = ์ปค๋ฐ‹(commit) 6. ์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ master์—์„œ main์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ 7. "origin"์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ 1๋ฒˆ์—์„œ ์ƒ์„ฑํ•œ ๋ ˆ.. 2023. 4. 1.
์ƒํƒœ ์ฝ”๋“œ Goal 1. ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ 2. ๋Œ€ํ‘œ์ ์ธ ์ƒํƒœ ์ฝ”๋“œ ์•Œ์•„๋ณด๊ธฐ ์ƒํƒœ ์ฝ”๋“œ๋ž€? ์ธํ„ฐ๋„ท์„ ์ž์ฃผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์œ„ ๊ทธ๋ฆผ์— ๋ณด์ด๋Š” ํŽ˜์ด์ง€๋ฅผ ํ•œ๋ฒˆ์ฏค์€ ๋ณด์•˜์„ ๊ฒƒ์ด๋‹ค. 404 ๋ผ๋Š” ๊ฒƒ์ด ์ƒํƒœ ์ฝ”๋“œ์ด๋‹ค. ์ƒํƒœ ์ฝ”๋“œ๋Š” ์„ธ ์ž๋ฆฌ ์ˆซ์ž๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜จ ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ด ๊ฐ’์€ HTTP์— ํฌํ•จ ๋œ ๊ฐ’์œผ๋กœ, ์›น ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ณ„์† ๋ณด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. Django Rest Framework(DRF)์—์„œ๋Š” Response ๊ฐ์ฒด๊ฐ€ ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ƒํƒœ ์ฝ”๋“œ HTTP ์ƒํƒœ ์ฝ”๋“œ ์˜๋ฏธ HTTP_200_OK ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” GET ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ค„์กŒ์„ ๋•Œ HTTP_201_CREATED ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” POST ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ค„์กŒ์„ ๋•Œ HTTP_206.. 2023. 3. 26.
VSCode์™€ GitHub ์—ฐ๋™ํ•˜๊ธฐ Goal 1. VSCode ํ”„๋กœ์ ํŠธ์—์„œ GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ VSCode - GitHub ์—ฐ๋™ํ•˜๊ธฐ 1. GitHub์—์„œ ์ƒˆ๋กœ์šด ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ (Respositories > New > Create repository) 2. VSCode์—์„œ ๋‚ด๊ฐ€ GitHub๋กœ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€ ํด๋” ์—ด๊ธฐ 3. Source Control icon > Initialize Repository ๋งŒ์•ฝ Initialize Repository๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค๋ฉด Git Bash ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  "git init"์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 4. ์ปค๋ฐ‹ํ•  ๋ฉ”์„ธ์ง€ ์ ๊ธฐ > Commit > Yes 5. ์ปค๋ฐ‹์ด ๋๋‚˜๋ฉด “…” ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ธฐ > Pull, Push > Push to… > Add Remote > 1๋ฒˆ์—์„œ ๋งŒ๋“  ๋ ˆํฌ์ง€ํ† ๋ฆฌ .. 2023. 3. 25.
README.md ํŒŒ์ผ์— ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ Goal 1. README.md์— ๋งˆํฌ๋‹ค์šด ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ 2. README.md ์˜ˆ์‹œ ๋ณด๊ธฐ ๋งˆํฌ๋‹ค์šด ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ ํ—ค๋”์™€ ํ–‰ ํ…Œ์ด๋ธ”์€ ํ—ค๋”์™€ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ํ…Œ์ด๋ธ”์˜ ์ œ๋ชฉ๋“ค์ด ๋‹ด๊ธด ๊ฐ€์žฅ ์œ„์— ์ค„์— ์žˆ๋Š” ํ–‰์ธ๋ฐ ๋งˆํฌ๋‹ค์šด ์–ธ์–ด์—์„œ๋Š” ํŒŒ์ดํ”„ ์บ๋ฆญํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„ ์บ๋ฆญํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ‚ค๋ณด๋“œ์—์„œ Enter ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” ์—ญ์Šฌ๋ž˜์‹œ ๋ฒ„ํŠผ \ ์„ Shift + \ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ธฐํ˜ธ ์ผ๋ฐ˜ ์Šฌ๋ž˜์‹œ (slash) / ์—ญ์Šฌ๋ž˜์‹œ (back slash) \ ํŒŒ์ดํ”„ ์บ๋ฆญํ„ฐ (pipe) | ํ—ค๋” ๋งˆํฌ๋‹ค์šด ์–ธ์–ด๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. | ํ—ค๋”1 | ํ—ค๋”2 | ํ—ค๋”3 | | --- | --- | --- | ์ •๋ ฌ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ๊ฐ€์šด๋ฐ ์ •๋ ฌ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ .. 2023. 3. 24.
[์—๋Ÿฌ๋ชจ์Œ] java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String ์—๋Ÿฌ ์ƒํ™ฉ ์ž๋ฐ”์—์„œ ์—ฌ๋Ÿฌ ๋กœ๊ทธ์ธ API๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ๋„ค์ด๋ฒ„๋Š” ๋‹ค ์ž˜ ๋๋Š”๋ฐ ์นด์นด์˜ค UserInfo.java๋งŒ ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค. public class KakaoUserInfo implements OAuth2UserInfo { private Map attributes;// getAttributes() private Map attributesAccount;// getAttributes().get("kakao_account") private Map attributesProfile;// attributesAccount.get("profile") public KakaoUserInfo(Map attributes) { this.attributes = attributes; t.. 2023. 3. 23.
MTV ํŒจํ„ด Goal 1. MTV ํŒจํ„ด ์„ค๋ช…ํ•˜๊ธฐ 2. ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด MTV ํŒจํ„ด ์•Œ์•„๋ณด๊ธฐ MTV ํŒจํ„ด์ด๋ž€? Model (๋ชจ๋ธ) : ์•ฑ์˜ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃธ Template (ํ…œํ”Œ๋ฆฟ) : ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„ View (๋ทฐ) : Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ Template์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ , Template์˜ ํ•„์š”ํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„ Django์—์„œ๋Š” MTV ํŒจํ„ด์œผ๋กœ ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•œ๋‹ค (์ž๋ฐ” ์Šคํ”„๋ง์— MVC ํŒจํ„ด์ด ์žˆ๋“ฏ์ด). ์ด๋Ÿฌํ•œ ๊ฐœ๋ฐœ ํŒจํ„ด์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃน์ง€์–ด ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœ์ž๋“ค์˜ ์—ญํ• ์„ ๋‚˜๋ˆ„๋Š”๋ฐ๋„ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๊ณ  ์ถ”ํ›„์— ํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์ง€๋ณด์ˆ˜์™€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด์•˜์„ ๋•Œ๋„ ์‰ฝ๊ฒŒ ์ฝ”๋“œ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. MTV ํŒจํ„ด ์˜ˆ์‹œ Template์€ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ณด๋Š” ์›น ํŽ˜์ด์ง€์ด๋‹ค. ์œ„ ์˜ˆ์ œ์—์„œ๋Š” ๋‚ด.. 2023. 3. 22.
[์—๋Ÿฌ๋ชจ์Œ] com.auth0.jwt.exceptions.AlgorithmMismatchException: The provided Algorithm doesn't match the one defined in the JWT's Header ์—๋Ÿฌ ์„ค๋ช… ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‹œํ๋ฆฌํ‹ฐ ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด JWT ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ธด ์—๋Ÿฌ JwtAuthenticationFilter.java @RequiredArgsConstructor public class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; // /login ์š”์ฒญ์„ ํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜ @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServ.. 2023. 3. 21.
[์—๋Ÿฌ๋ชจ์Œ] Failed to evaluate expression 'hasRole('ROLE_USER') or hasRole('ROLE_MANAGER') or hasROLE('ROLE_ADMIN')' ์—๋Ÿฌ ์„ค๋ช… ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์—์„œ SecurityConfig.java๋ฅผ ํ†ตํ•ด ์‹œํ๋ฆฌํ‹ฐ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์ณ ์›น ํŽ˜์ด์ง€ ์ ‘๊ทผํ•  ๋•Œ ์ƒ๊ธด ์—๋Ÿฌ @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) @RequiredArgsConstructor public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.sessionManagement().sessionC.. 2023. 3. 19.