전체 κΈ€

기타

IntelliJ μ•ˆμ“°λŠ” import 정리

μ•ˆμ“°λŠ” import문을 μ €μ ˆλ‘œ μ—†μ–΄μ§€κ²Œ ν•˜κ³  싢을 λ•Œ μ“°λŠ” 방법! μ„€μ • -> 에디터 -> 일반 -> μžλ™ κ°€μ Έμ˜€κΈ° -> importλ¬Έ μ¦‰μ‹œ μ΅œμ ν™”λ₯Ό μ²΄ν¬ν•œλ‹€. λ‚΄κ°€ 보렀고 μž‘μ„± γ…Žγ…Ž

Spring

[Spring] Spring Security(μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°) Form Login 인증

🌱 μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°κ°€ 기본적으둜 μ œκ³΅ν•˜λŠ” 둜그인 둜직 form을 ν†΅ν•΄μ„œ 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜λ©΄ μ„Έμ…˜ 및 인증 토큰을 μ €μž₯ν•œλ‹€. μΆ”ν›„μ—λŠ” ν•΄λ‹Ή 인증을 ν†΅ν•΄μ„œ μž‘μ—… κ°€λŠ₯ν•˜λ‹€. 둜그인 API μ—¬κΈ°μ„œ λ§λΆ™μ—¬μ„œ μ„€λͺ…ν•˜λ©΄ loginProcessingUrl : form νƒœκ·Έμ— μžˆλŠ” action url , νƒ€μž„λ¦¬ν”„ μ“°λ©΄ th:action successHandler : μ„±κ³΅ν–ˆμ„ λ•Œ λ‚΄κ°€ μΆ”κ°€μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆλŠ” ν•Έλ“€λŸ¬ failureHandler : μ‹€νŒ¨ν–ˆμ„ λ•Œ λ‚΄κ°€ μΆ”κ°€μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆλŠ” ν•Έλ“€λŸ¬ πŸ‘‰ successUrlμ΄λž€ failureUrlμ΄λž‘ λΉ„μŠ·ν•˜λ‹€λŠ” 생각을 ν•  μˆ˜λ„ μžˆκ² μ§€λ§Œ μ•žμ— 두 κ°œλŠ” url섀정밖에 ν•˜μ§€ λͺ»ν•œλ‹€. Controller @GetMapping("/loginPage") public Strin..

Spring

[Spring] Spring Security(μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°) 기초 κ°œλ…

κ°•μ˜λ“€μœΌλ©΄μ„œ 배운 것듀을 κ°„λ‹¨ν•˜κ²ŒλΌλ„ 남겨보렀고 ν•œλ‹€! πŸ₯ Spring Security(μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°)λž€? Spring 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄μ•ˆμ„ λ‹΄λ‹Ήν•˜λŠ” Spring ν•˜μœ„ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. springboot에 spring securityλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„λž˜ μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•΄μ€˜μ•Όν•œλ‹€. implementation 'org.springframework.boot:spring-boot-starter-security' μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°μ˜ μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•˜λ©΄ μΌμ–΄λ‚˜λŠ” 것은? μ„œλ²„κ°€ κ°€λ™λ˜λ©΄ μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°μ˜ μ΄ˆκΈ°ν™” μž‘μ—… 및 λ³΄μ•ˆ 섀정이 이루어짐 λ³„λ„μ˜ μ„€μ •μ΄λ‚˜ κ΅¬ν˜„μ„ ν•˜μ§€ μ•Šμ•„λ„ 기본적인 μ›Ή λ³΄μ•ˆ κΈ°λŠ₯이 ν˜„μž¬ μ‹œμŠ€ν…œμ— 연동돼 μž‘λ™ λͺ¨λ“  μš”μ²­μ€ 인증이 λ˜μ–΄μ•Ό μžμ›μ— 접근이 κ°€λŠ₯ 인증 방식은 Form 둜그인 방식과 ..

DB

[DB] Transaction(νŠΈλžœμž­μ…˜)μ΄λž€?

πŸ” νŠΈλžœμž­μ…˜μ΄λž€? νŠΈλžœμž­μ…˜μ€ ACID(μ›μžμ„±, 일관성, 격리 및 지속성) 속성이 μžˆλŠ” μž‘μ—… 그룹이닀. 즉, ν•΄λ‹Ή 속성을 가지며 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° μœ„ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„λ₯Ό λ§ν•œλ‹€. 보톡 μ•„λž˜μ˜ μ§ˆμ˜μ–΄λ₯Ό ν†΅ν•΄μ„œ μž‘μ—…μ΄ 이루어지며 ACID κ·œμΉ™μ„ μ§€ν‚€κ²Œ λœλ‹€. SELECT INSERT DELETE UPDATE 🎑 νŠΈλžœμž­μ…˜ νŠΉμ§• μ›μžμ„± (Atomicity) μ›μžμ„±μ€ νŠΈλžœμž­μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ λ°˜μ˜λ˜λ˜κ°€, μ•„λ‹ˆλ©΄ μ „ν˜€ λ°˜μ˜λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 것이닀. 은행 μ†‘κΈˆμ„ 예둜 λ“€μ–΄λ³΄μž. 은행 μ†‘κΈˆμ€ ν•œ κ³„μ’Œμ™€ λ‹€λ₯Έ κ³„μ’Œμ— λŒ€ν•œ 행동이 μ›μžμ„±μ˜ 집합이닀. Aκ³„μ’Œμ—μ„œ Bκ³„μ’Œλ‘œ λˆμ„ μ΄μ²΄ν–ˆλŠ”λ° 쀑간에 였λ₯˜κ°€ λ‚˜μ„œ Aκ³„μ’Œμ—λŠ” 돈이 λΉ μ Έλ‚˜κ°”μ§€λ§Œ Bκ³„μ’Œμ—λŠ” 돈이 λ“€μ–΄μ˜€μ§€ μ•Šμ„ μˆ˜κ°€ μžˆλ‹€. 이런 문제λ₯Ό λ°©μ§€ν•˜μ§€..

Spring

[Spring] Dirty Checking(더티 체킹) μ΄λž€?

μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€κ°€ repository.save()λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ update 쿼리가 μ‹€ν–‰λ˜μ–΄ DB에 λ°˜μ˜λ˜λŠ” ν˜„μƒμ„ 보고 Dirty Checking에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€ πŸ€” βš™οΈ Dirty Checkingμ΄λž€? Spring JPAμ—μ„œ 더티 μ²΄ν‚Ήμ΄λž€ μ˜μ†μ„± μ»¨ν…Œμ΄λ„ˆκ°€ κ΄€λ¦¬ν•˜λŠ” μ—”ν‹°ν‹°μ˜ μƒνƒœλ₯Ό κ°μ§€ν•΄μ„œ λ³€κ²½λœ 뢀뢄이 μžˆλ‹€λ©΄ μžλ™μœΌλ‘œ νŠΈλžœμž­μ…˜μ΄ λλ‚˜λŠ” μ‹œμ μ— λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•˜λŠ” κΈ°λŠ₯이닀. dirty : λ³€κ²½λœ μ—”ν‹°ν‹° 데이터 dirty checking : λ³€κ²½λœ λΆ€λΆ„ 감지 Dirty Checking은 μ–Έμ œ μΌμ–΄λ‚ κΉŒ? μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ—μ„œ κ΄€λ¦¬λ˜λŠ” μ—”ν‹°ν‹° μ€€μ˜μ†/λΉ„μ˜μ† μƒνƒœμ˜ μ—”ν‹°ν‹°λŠ” 더티 μ²΄ν‚Ήμ˜ λŒ€μƒμ΄ λ˜μ§€ μ•ŠλŠ”λ‹€. Transaction(νŠΈλžœμž­μ…˜)이 μ»€λ°‹λ˜μ—ˆμ„ λ•Œ νŠΈλžœμž­μ…˜μ΄ μ»€λ°‹λ˜κΈ° μ „κΉŒμ§€ μ˜μ†μ„± μ»¨ν…μŠ€νŠΈλŠ” λ³€..

DB

ν…Œμ΄λΈ” 이름은 λ‹¨μˆ˜ν˜•μœΌλ‘œ ν•΄μ•Όλ κΉŒ λ³΅μˆ˜ν˜•μœΌλ‘œ ν•΄μ•Όλ κΉŒ? πŸ€”

κ°•μ˜λ₯Ό λ“£λ‹€κ°€ ν…Œμ΄λΈ” 이름을 μ •ν•˜λŠ”κ±°μ— μžˆμ–΄μ„œ λ‹¨μˆ˜ν˜•μ΄ 쒋을지 λ³΅μˆ˜ν˜•μ΄ 쒋을지에 λŒ€ν•΄μ„œ μ°Ύμ•„λ³΄μ•˜λ‹€. 🧢 λ‹¨μˆ˜ν˜•μœΌλ‘œ μ§“λŠ” 경우 μ‰½κ²Œ 보이기 λ•Œλ¬Έμ— μ‚¬λžŒλ“€μ΄ λ”°λ₯΄κΈ°κ°€ 맀우 쉽닀. λ§Œμ•½ 볡수둜 μ§“λŠ” κ²½μš°μ— child-children, octopus-octopi처럼 λ³΅μˆ˜ν˜•μ„ κΈ°μ–΅ν•˜λŠ” 것이 μ–΄λ €μšΈ μˆ˜λ„ μžˆλ‹€. κ·Έλž˜μ„œ λ‹¨μˆ˜λ‘œ μ‚¬μš©ν•  κ²½μš°μ— μ‹œκ°„ μ ˆμ•½μ΄ λœλ‹€ κ°œλ°œμžκ°€ μ μ ˆν•œ λ³΅μˆ˜ν˜•μ— λŒ€ν•΄μ„œ κ³ λ―Όν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. λ³΅μˆ˜ν˜•μ„ μ“°λŠ” 것보닀 μ˜€νƒ€κ°€ μ€„μ–΄λ“€μ–΄μ„œ 전체적인 였λ₯˜λ„ 쀄어듀 수 μžˆλ‹€. 🧡 λ³΅μˆ˜ν˜•μœΌλ‘œ μ§“λŠ” 경우 λ³΅μˆ˜ν˜• 이름이 μ½”λ“œ μ €μž₯μ†Œ, λ°μ΄ν„°λ² μ΄μŠ€ μ•„ν‚€ν…μ²˜, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°„ μ•„ν‚€ν…μ²˜ 간에 톡일성을 μ œκ³΅ν•œλ‹€. λ§Œμ•½μ— userλΌλŠ” ν…Œμ΄λΈ”μ΄ 있으면 이건 users의 그룹이 μ•„λ‹Œ user의 그룹이라고 착각할 μˆ˜λ„ 있기 λ•Œ..

기타

Git Flow μ „λž΅ κ°„λž΅νžˆ μ‚΄νŽ΄λ³΄κΈ°

Git Flowλž€? Git을 μ‚¬μš©ν•˜μ—¬ κ°œλ°œν•˜λŠ” ν™˜κ²½μ—μ„œ λΈŒλžœμΉ˜κ°„μ˜ 문제 없이 λ°°ν¬κΉŒμ§€ μ•ˆμ •μ μœΌλ‘œ ν•  수 μžˆλ„λ‘ 브랜치λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ „λž΅μ„ λ§ν•œλ‹€. 🌈 μ£Όμš” 브랜치 Main(=Master) : μ‹€μ œ 운영 ν™˜κ²½μ— λ‚˜κ°€μžˆλŠ” μ½”λ“œλ§Œ 쑴재 Dev : 메인 브랜치λ₯Ό 기반으둜 ν•œ 것 (λ‹€μŒ 배포에 λ‚˜κ°ˆ λ‚΄μš©λ“€μ„ λ°”λ‘œ 메인에 머지할 수 μ—†κΈ° λ•Œλ¬Έμ— 각 featureμ—μ„œ κ°€μ Έμ˜¨ 것듀을 λͺ¨μ•„놓은 것) Feature : μƒˆλ‘œμš΄ κ°œλ°œμ„ ν•  λ•Œ featureλ₯Ό λ”°μ„œ κ°œλ°œν•˜κ³  Dev에 merge Release : 데브 브랜치λ₯Ό 베이슀둜 λ§Œλ“¦. Releaseκ°€ μƒμ„±λœ μ΄ν›„λΆ€ν„°λŠ” 더이상 Devμ—μ„œ μž‘μ—… μ•ˆν•˜κ³  Releaseμ—μ„œ μž‘μ—…ν•˜κ²Œ 됨. Hotfix : μ˜λ„μΉ˜ μ•Šμ€ μž₯μ•  상황이 λ°œμƒν–ˆμ„ λ•Œ 메인 λΈŒλžœμΉ˜μ—μ„œ λ°”λ‘œ μƒμ„±ν•˜κ³  μˆ˜μ •ν•˜λŠ” ..

κ²½ν—˜

2023 ν•˜λ°˜κΈ° ICT 인턴십 합격 ν›„κΈ° [μ„œλ₯˜/μ½”λ”©ν…ŒμŠ€νŠΈ/λ©΄μ ‘]

βš™οΈ ICTμΈν„΄μ‹­μ΄λž€?μ •λΆ€μ—μ„œ μ£Όκ΄€ν•˜λŠ” 것 같은데 ! κΈ°μ—…κ³Ό λ§€μΉ­λ˜μ–΄ 싀무 κ²½ν—˜λ„ μ–»κ³  학점도 얻을 수 μžˆλŠ” μ•„μ£Ό 쒋은 κΈ°νšŒμ΄λ‹€!4-1을 마치고 막학기가 λ‚¨μ•˜μ—ˆλŠ”λ° 11학점이 λ‚¨μ•„μžˆμ—ˆλ‹€γ…Žγ…Ž 학점은 μ΅œλŒ€ 15학점을 받을 수 μžˆλŠ”λ° 우리 학ꡐ 같은 κ²½μš°λŠ” μž₯기인턴일 경우 μ΅œλŒ€ 12학점인 것 κ°™λ‹€! (전곡 6학점 + μžμ„ , ꡐ양 6학점) λ‚œ μ „κ³΅μ‹¬ν™”μ˜€λŠ”λ° λ”± 6학점이 λΆ€μ‘±ν•΄μ„œ 닀행인 것 κ°™λ‹€....https://www.ictintern.or.kr/main.do ICT 학점연계 ν”„λ‘œμ νŠΈ 인턴십ICT 학점연계 ν”„λ‘œμ νŠΈ 인턴십www.ictintern.or.kr  πŸ”Ά 지원총 100κ°œκ°€ λ„˜λŠ” 기업쀑에 λ‚΄κ°€ μ§€μ›ν•˜κ³ μž ν•˜λŠ” νšŒμ‚¬λŠ” 기쀀이 λ”± ν•˜λ‚˜μ˜€λ‹€!Springbootλ₯Ό λ‹€λ£¨λŠ”μ§€!!!!!μŠ€ν”„λ§μ„ 본격적으둜(?) κ³΅λΆ€ν•œ..

AWS

[Nginx/Spring] Let's Encrypt Https μ„€μ •

🫧 AWS에 Nginxλ₯Ό μ„€μΉ˜ν•˜μ—¬ https μ μš©μ„ ν•΄μ€€λ‹€ 1. nginx μ„€μΉ˜ sudo apt-get install -y nginx nginx-common nginx-full 2. μΈμ¦μ„œ λ°œκΈ‰ apt-get update -y apt-get install software-properties-common -y 3. certbot μ„€μΉ˜ apt-get install certbot -y sudo certbot certonly -d [도메인 μ£Όμ†Œ] --manual --preferred-challenges dns λ§Œμ•½μ— 도메인 μ£Όμ†Œκ°€ λ‘κ°œλΌλ©΄ 뒀에 -d [λ„λ©”μΈμ£Όμ†Œ] λ₯Ό μΆ”κ°€ν•΄μ£Όλ©΄ λœλ‹€!! μ—¬κΈ°μ„œ 이제 이메일을 μž‘μ„±ν•˜κ³  μ•½κ΄€ λ™μ˜κ°€ λ‚˜μ˜€λŠ”λ° λ‚œ λ‹€ λ™μ˜ν–ˆλ‹€!!! 4. nginx.conf μ„€μ • sudo vi /etc..

Network

[Network] 401 Error vs 403 Error

πŸ—‚οΈ HTTPS μƒνƒœμ½”λ“œ 5μ’…λ₯˜ 1xx (정보, Information) : μš”μ²­μ„ λ°›κ³ , ν”„λ‘œμ„ΈμŠ€λ₯Ό κ³„μ†ν•œλ‹€. 2xx (성곡, Successful) : μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ λ°›κ³ , μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν–ˆλ‹€. 3xx (λ¦¬λ‹€μ΄λ ‰μ…˜, Redirection) : μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μΆ”κ°€ μž‘μ—… μ‘°μΉ˜κ°€ ν•„μš”ν•˜λ‹€. 4xx (ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜, Client Error) : μš”μ²­μ˜ 잘λͺ»λœ 문법 λ“±μœΌλ‘œ μ²˜λ¦¬ν•  수 μ—†λ‹€. 5xx (μ„œλ²„ 였λ₯˜, Server Error) : μ„œλ²„κ°€ 정상 μš”μ²­μ„ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆλ‹€. 401 Error VS 403 Error 401 μ—λŸ¬μ™€ 403μ—λŸ¬λŠ” λͺ¨λ‘ 인증이 μ•ˆλμ„ λ•Œ λ°œμƒν•˜λŠ” 것 πŸ”Έ 401 Unauthorized Error μ‚¬μš©μžκ°€ μΈμ¦λ˜μ§€ μ•Šμ•˜μ„ λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬ 즉, λ‘œκ·ΈμΈμ„ ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ, μš”μ²­..