๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

GIT Server - Protocol๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ˜‘์—…ํ•˜๋ ค๋ฉด remote ์ €์žฅ์†Œ(์›๊ฒฉ ์ €์žฅ์†Œ)๊ฐ€ ํ•„์š”๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ชจ๋‘ ์ด ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜์—ฌ push, pull ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ1. ์‚ฌ์šฉํ•  ์ „์†ก ํ”„๋กœํ† ์ฝœ ๊ฒฐ์ •ํ”„๋กœํ† ์ฝœ ์ข…๋ฅ˜, ๊ฐ ํ”„๋กœํ† ์ฝœ์˜ ์žฅ๋‹จ์ , ์‚ฌ์šฉ ๋ฐฉ๋ฒ•, ์„œ๋ฒ„ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•remote ์ €์žฅ์†Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ working directory๊ฐ€ ์—†๋Š” Bare ์ €์žฅ์†Œ์ด ์ €์žฅ์†Œ๋Š” ํ˜‘์—…์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— checkout์ด ํ•„์š” ์—†์Œ๊ทธ๋ƒฅ Git ๋ฐ์ดํ„ฐ๋งŒ ์žˆ์œผ๋ฉด ๋จ, ๋‹ค์‹œ ๋งํ•ด Bare ์ €์žฅ์†Œ๋Š” ์ผ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ .git ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ์žˆ๋Š” ์ €์žฅ์†ŒGIT์€ Local, HTTP, SSH, GIT ์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€ protocol์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ1. Local Protocol๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ๊ฐ€ ๋‹จ์ˆœํžˆ ๊ฐ™์€ ์‹œ์Šคํ…œ์˜..
ํ•™๋ถ€ ๋•Œ ๋„คํŠธ์›Œํฌ๋ฅผ ์—ด์‹ฌํžˆ ํ–ˆ์–ด์•ผ ํ–‡๋‹ค...ใ…Ž;ICMP ?์ฃผ๋กœ TCP/IP ํ™˜๊ฒฝ์—์„œ IP Packet์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” protocol๋กœ, IP๋Š” ์˜ค์ง packet์ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ–ˆ๋Š”์ง€๋งŒ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ์ด์œ ๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋Š” ์•Œ๋ ค์ฃผ์ง€ ๋ชปํ•จ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด ICMP(Internet Control Message Protocol)Type : ICMP์˜ packet ์ข…๋ฅ˜Code : Type์—์„œ ํŒŒ์ƒ๋œ ์„ธ๋ถ€ ๋ถ„๋ฅ˜CheckSum : ์ฝ”๋“œ์˜ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์ฆAdditional Header Field : Type์— ๋”ฐ๋ผ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด 0Payload : ์ง์ ‘์ ์ธ ๋ฐ์ดํ„ฐ ๋‚ด์šฉIP ?OSI 7๊ณ„์ธต ์ค‘์— 3๊ณ„์ธต(Network Layer)์—์„œ ์‚ฌ์šฉ..
SimpleJdbcInsert๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, insert๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘ ๋ฌธ์ œ ๋ฐœ์ƒ private Member insert(Member member) { SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate.getJdbcTemplate()) .withTableName("Member") .usingGeneratedKeyColumns("id"); SqlParameterSource params = new BeanPropertySqlParameterSource(member); var id = simpleJdbcInsert.executeAndReturnKey(params).longValue(); return Member.builder() .id(..
์˜ค๋Š˜์˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์–ด์ œ๋ถ€ํ„ฐ ํ”„๋ก ํŠธ ๊ตฌํ˜„๊ณผ ํ•จ๊ป˜ ํ† ์Šค ๊ฒฐ์ œ API ์—ฐ๋™ ๊ฐœ๋ฐœ์— ๋“ค์–ด๊ฐ”๋‹ค. ๊ทผ๋ฐ ๋ฌธ์ œ์  1. 401 Unauthorized tossPayments = TossPayments(key); ํ•ด์ฃผ๋Š” ๊ณผ์ •์—์„œ, ํ‚ค ๊ฐ’์ด ๊ถŒํ•œ์ด ์—†๋Š” ๊ฑฐ๋‹ค๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ฃผ๊ตฌ์žฅ์ฐฝ .......... ๋ถ„๋ช… ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ๋ฐ›์€ ๊ฐ’์„ ์ž˜๋„ฃ์–ด์คฌ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ๊ณ„์†ํ•ด์„œ ๋‹ค๋ฅธ ๊ฐ’๋„ ๋„ฃ์–ด์ฃผ๊ณ  ๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ˆ ๋๋‹ค.... ์™œ ๋์ง€???? ๋ญ”๊ฐ€ ๋’ค์— ๊ณต๋ฐฑ์ด๋ผ๋˜๊ฐ€ .... ์ด๋Ÿฐ๊ฒŒ ๋“ค์–ด๊ฐ„๊ฑฐ ๊ฐ™๋‹ค.... ๋์œผ๋‹ˆ๋ญ 2. ๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ํ™•์ธ ํ›„, ํ—ค๋”์— ํ‘œ์‹œ๋˜๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋‹ฌ๋ผ์ ธ์•ผํ•˜๋Š”๋ฐ function checkLoginStatus() { var token = Cookies.get('Authorization'); // ๋กœ๊ทธ์ธ ์ƒํƒœ ํ™•์ธ A..
TCP (Transmission Control Protocol): ์—ฐ๊ฒฐ ์ง€ํ–ฅ์„ฑ (Connection-Oriented): TCP๋Š” ์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ํ›„์—๋Š” ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๊ณ  ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‹ ๋ขฐ์„ฑ ๋ฐ ํ๋ฆ„ ์ œ์–ด: TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์ „์†กํ•˜๊ณ , ์ˆ˜์‹ ์ธก์—์„œ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žฌ์กฐ๋ฆฝํ•˜์—ฌ ์ƒ์œ„ ๊ณ„์ธต์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ๋ฆ„ ์ œ์–ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ˆ˜์‹ ์ธก์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ๊ณผ๋„ํ•œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ ๋ณด์žฅ: TCP๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์—ฌ ์ˆ˜์‹ ์ธก์—์„œ๋Š” ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ์ˆœ์„œ๋กœ ์žฌ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ๋†’์€ ์‹ ๋ขฐ์„ฑ: ์˜ค๋ฅ˜ ๋ณต๊ตฌ ๊ธฐ๋Šฅ๊ณผ ์žฌ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์—ฌ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์‹œ: ์›น ๋ธŒ๋ผ์šฐ์ €์˜ HTTP ํ†ต์‹ , ..
์˜ค๋Š˜์˜ ํ—›์ง“๊ฑฐ๋ฆฌ โš ๏ธ ํ† ํฐ ๊ฒ€์ฆ,์ธ๊ฐ€ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ์ตœ์ƒ์œ„ ํ•„ํ„ฐ๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์—ˆ๋”ฐ. ๋น ๋ฅด๊ฒŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ๋งŒ ์ฒดํ‚น์„ ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋Š”๋ฐ, ์ดํ›„ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ ์—๋Ÿฌ์˜ ํ–ฅ์—ฐ... ๋„๋Œ€์ฒด ์–ด๋””์„œ ๋‚˜๋Š” ๊ฒƒ์ธ๊ฐ€ ๋ณด๋‹ˆ, ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„์— ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„ํ„ฐ์˜ ์ˆœ์„œ(?) ์„ค์ •์ด ๋ฌธ์ œ์ธ๊ฐ€ํ•ด์„œ, addFilterBefore()์„ ์ด๊ฒƒ์ €๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•ด๋ดค๋‹ค. .addFilterBefore(exceptionHandlerFilter(), JwtAuthenticationFilter.class) ๊ธฐ์กด -> ์˜ˆ์™ธ๋Š” ์›ํ•˜๋Š” ๋ฐ”๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ, ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ, ์ด์ƒํ•œ ์—๋Ÿฌ๊ฐ€ ๋œธ .addFilterBefore(exceptionHandlerFilter(), JwtAuthoriza..
์˜ค๋Š˜์€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ํ–‡๋‹ค 1. ๊ธฐ์กด ) ์–ด๋“œ๋ฏผ ์œ ์ € ํšŒ์› ๊ฐ€์ž…(์–ด๋“œ๋ฏผ ํ† ํฐ์„ ๊ฐ€์ง€๊ณ ) -> ๋ณ€๊ฒฝ ) ์ดˆ๊ธฐ ์–ด๋“œ๋ฏผ์„ data.sql๋กœ ์ง์ ‘ ๋„ฃ์–ด์ฃผ๊ณ , ์ดํ›„ ์ถ”๊ฐ€๋˜๋Š” ๊ด€๋ฆฌ์ž๋“ค์€ ๊ธฐ์กด ๊ด€๋ฆฌ์ž๋“ค์ด ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ (โœ… ๊ตฌํ˜„ํ•ด์•ผํ•จ) 2. ๊ด€๋ฆฌ์ž API๋Š” ๊ด€๋ฆฌ์ž๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก 3. ๊ธฐ์กด) JWT Token ๊ฒ€์ฆ ์‹คํŒจ ์‹œ, log.error ๋กœ ๋กœ๊ทธ๋งŒ ์ฐ์–ด์คฌ๋Š”๋ฐ, ๋ณ€๊ฒฝ ) ApiException์„ ๋˜์ ธ์„œ Response๋ฅผ ์ฃผ๋„๋ก ์ˆ˜์ • - ์ถ”๊ฐ€ ์ˆ™์ œ โš ๏ธ, ์ตœ์ƒ์œ„ Filter๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ๊ธฐ์„œ ํ•˜๋„๋ก ํ•ด์ฃผ๊ธฐ โš ๏ธ 4. ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ SMS ์ธ์ฆ ๊ธฐ๋Šฅ 50% ๊ตฌํ˜„ ์™„๋ฃŒ (..... ์ „์†ก๊นŒ์ง„ ๋๊ณ , ์ด์ œ ์ •๋ฆฌ์™€ redis์— ์ €์žฅํ•˜๊ณ , ํšŒ์› ๊ฐ€์ž… ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํ™•์ธ๊นŒ์ง€ ใ„ฑใ„ฑ)
๊นจ๋‹ฌ์€ ์  ๋‚˜๋Š” ๋‹ค๋ฅธ ํŒ€์›๋“ค๋ณด๋‹ค ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ๋‹ค... ๋งŽ์ด ๋ฐฐ์›Œ๊ฐ€์Ÿˆ! ํ™”์ดํŒ…! ๊ทธ๋ฆฌ๊ณ  ํŒ€์˜ ๋ง‰๋‚ด๋กœ์„œ(๋งž๋‚˜..?) ์„œ๊ธฐ๋ฅผ ๋งก๊ณ  ์žˆ๋Š”๋ฐ ์ดํ›„์— ๋ณด๋‹ˆ ๋„ˆ๋ฌด ์ค‘๊ตฌ๋‚œ๋ฐฉ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์—ˆ๋‹ค. ์ •๋ฆฌ๋ฅผ ๋” ์ž˜ ํ•˜์ž! 01/06 ์ž ๊ฐœ๋ฐœ ์ผ์ง€ ์•ˆ๊ฑด1 : ๊ฐ์ฒด์ง€ํ–ฅ์˜ 5๊ฐ€์ง€ ์›์น™์ค‘ ์˜์กด ์—ญ์ „ ์›์น™ ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ์ถ”๊ฐ€ ์„ค์ •ํ•จ! User of(String email, String password…), User of(UserCreateRequest) entity๋Š” request์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ž์ฒด๋กœ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•จ Request.toEntity(User) → User of(String email, String password…) ์ด ๋ถ€๋ถ„์˜ ์ดํ›„ ๋ฌธ์ œ์ ์„ ๋ฐœ๊ฒฌ, Sequence ๊ฐ™์€ ๊ฒฝ์šฐ request๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋Š”๋ฐ..
KIMHYEYUN
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก