λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

전체 κΈ€

(46)
TLS 1.2 Handshake λ™μž‘ κ³Όμ • + HTTPS κ°œμš” ByteByteGo : SSL, TLS, HTTPS Explained μ˜μƒμ„ 보며 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. HTTPS κ°œμš”TLS 1.2 Handshake λ™μž‘ κ³Όμ • μ„€λͺ…에 μ•žμ„œ λͺ‡ 가지 κ°œλ…μ„ μ†Œκ°œν•©λ‹ˆλ‹€. β–Ά HTTPS : HTTP ν”„λ‘œν† μ½œμ„ TLS/SSL 둜 μ•”ν˜Έν™”ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.  β–Ά SSL/TLS : μ•”ν˜Έν™” ν”„λ‘œν† μ½œλ‘œ, 인터넷을 톡해 μ „μ†‘λ˜λŠ” 데이터λ₯Ό λ³΄ν˜Έν•©λ‹ˆλ‹€. SSL 이 졜초의 μ•”ν˜Έν™” ν”„λ‘œν† μ½œμ΄λ©°, λ³΄μ•ˆμ΄ 더 ν–₯μƒλ˜κ³ , λ°œμ „ν•œ 것이 TLS ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.  β–Ά λŒ€μΉ­ν‚€ μ•”ν˜Έν™” λ°©μ‹μ•”ν˜Έν™”/λ³΅ν˜Έν™”μ— 같은 ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” μ–‘λ°©ν–₯ μ•”ν˜Έ λ°©μ‹μž…λ‹ˆλ‹€.같은 ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 미리 μ•ˆμ „ν•œ ν†΅λ‘œλ₯Ό 톡해 ν‚€κ°€ κ΅ν™˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.같은 ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ•”ν˜Έν™” 속도가 λΉ¨λΌμ„œ λŒ€μš©λŸ‰ 데이터 μ•”ν˜Έ μ²˜λ¦¬μ— μ‚¬μš©λ©λ‹ˆλ‹€.같은 ..
HTTP/1.0 → HTTP/1.1 → HTTP/2.0 → HTTP/3.0 버전별 차이λ₯Ό μ΄ν•΄ν•˜κΈ° HTTP λ²„μ „λ§ˆλ‹€ μ–΄λ–€ 단점이 μžˆμ—ˆκ³ , λ‹€μŒ λ²„μ „μ—μ„œ κ·Έ 단점을 μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€λ₯Ό μ†Œκ°œν•˜κ³ μž ν•©λ‹ˆλ‹€.HTTP/1.0HTTP/1.0 은 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°„μ— Connection 을 μ§€μ†ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.즉, ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ™€ Connection 을 λ§ΊκΈ° μœ„ν•΄ DNS 쑰회, TCP 3-way handshake, SSL/TLS handshake 같이 λ„€νŠΈμ›Œν¬ 지연 μ‹œκ°„μ„ λŠ˜λ¦¬λŠ” ν–‰μœ„λ₯Ό 1개의 μš”μ²­ λ§ˆλ‹€ 반볡적으둜 ν–ˆλ‹€λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 맀우 λΆˆν•„μš”ν•œ ν–‰μœ„μ΄κΈ° λ•Œλ¬Έμ—, HTTP/1.1 은 이λ₯Ό μ΅œμ ν™” ν•˜κ²Œ λ©λ‹ˆλ‹€. HTTP/1.1β–Ά HTTP/1.1 의 κΈ°λŠ₯ : Keep-Alive κ·Έλž˜μ„œ, HTTP/1.1 λΆ€ν„° 맀 μš”μ²­λ§ˆλ‹€ Connection 을 맺지 μ•ŠκΈ° μœ„ν•΄ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°„μ˜ Connection 을 K..
TCP/IP의 'νŒ¨ν‚· κ΅ν™˜ 방식' 찍먹 ν•˜κΈ° 논리적인 것과 물리적인 것을 κ΅¬λΆ„ν•˜κ³ μž 물리적인 것은 'ν•˜λ“œμ›¨μ–΄/물리'λž€ 단어λ₯Ό 뢙이고 λ…Όλ¦¬μ μ΄λ©΄μ„œ 물리적인 것은 'λ„€νŠΈμ›Œν¬'λž€ 단어λ₯Ό λΆ™μ˜€μŠ΅λ‹ˆλ‹€.OSI 7계측과 TCP/IP λͺ¨λΈ, 각 κ³„μΈ΅μ˜ 데이터 λ‹¨μœ„ 와 μ‹λ³„μž, λ„€νŠΈμ›Œν¬/ν•˜λ“œμ›¨μ–΄ μž₯μΉ˜λ“€μ„ κ³΅λΆ€ν•˜μ—¬ 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 방법을 μ„€λͺ…ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. λ“€μ–΄κ°€κΈ°μ— μ•žμ„œ, 'νŒ¨ν‚·', 'μ„Έκ·Έλ¨ΌνŠΈ', 'ν”„λ ˆμž„' 와 같은 데이터 λ‹¨μœ„μ— λŒ€ν•΄ λͺ¨λ₯΄μ‹ λ‹€λ©΄ λ„λ„ν•œ κ°œλ°œμžλ‹˜μ˜ 'λ„€νŠΈμ›Œν¬ 데이터 λ‹¨μœ„ 정리' μ˜μƒμ„ λ³Έ 후에 글을 μ½λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. TCP/IP의 νŒ¨ν‚· κ΅ν™˜ λ°©μ‹κ°„λ‹¨ν•˜κ²Œ λ§ν•˜λ©΄ 데이터λ₯Ό μ—¬λŸ¬ 개의 νŒ¨ν‚·μœΌλ‘œ λΆ„ν•  ν•˜μ—¬ μ „μ†‘ν•œ ν›„, μˆ˜μ‹ ν•˜λŠ” κ³³μ—μ„œ νŒ¨ν‚·μ„ μž¬μ‘°λ¦½ν•˜λŠ” 방식인 νŒ¨ν‚· κ΅ν™˜ λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ, λ„€νŠΈμ›Œν¬λŠ” μ΄λ ‡κ²Œ κ°„λ‹¨ν•˜μ§€κ°€ μ•ŠμŠ΅λ‹ˆλ‹€.O..
[둜그인 및 νšŒμ›κ°€μž…] μ‚¬μš©μž νŽΈμ˜μ„±μ„ κ³ λ €ν•œ 이메일 인증 기반 둜그인/νšŒμ›κ°€μž… μ†Œκ°œ μš”κ΅¬μ‚¬ν•­ μ†Œκ°œAirbnb μ‚¬μ΄νŠΈμ—μ„œ λ‘œκ·ΈμΈν•˜κΈ° μœ„ν•΄ 이메일을 μž…λ ₯ν–ˆμ„ λ•Œμ΄λ©”μΌμ΄ μ‘΄μž¬ν•œλ‹€λ©΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜λŠ” 창을 λ„μ›Œμ£Όκ³ ,이메일이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ ν•΄λ‹Ή 이메일을 가지고 νšŒμ›κ°€μž…μ„ ν•˜λ„λ‘ μ§„ν–‰μ‹œν‚΅λ‹ˆλ‹€.κ³ λ―Ό 포인트1. Aμ‚¬μš©μžμ™€ Bμ‚¬μš©μžκ°€ λ™μ‹œμ— 같은 μ΄λ©”μΌλ‘œ νšŒμ›κ°€μž…μ„ ν•  λ•Œ, λˆ„κ΅¬μ˜ 이메일을 μœ νš¨ν•˜κ²Œ λ³Ό 것인가? μ²˜μŒμ—λŠ” λ‘œκ·ΈμΈν•˜κΈ° μœ„ν•΄ 이메일을 λ¨Όμ € μž…λ ₯ν•œ μ‚¬μš©μžλ§Œ μ²˜λ¦¬λ˜μ•Ό ν•œλ‹€ μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.κ·Έλž˜μ„œ λ™μ‹œμ— 이메일을 μž…λ ₯ν–ˆμ„ λ•Œμ˜ μΌ€μ΄μŠ€λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‹±κΈ€ μŠ€λ ˆλ“œμΈ Redis 에 λ¨Όμ € λ“€μ–΄μ˜¨ 이메일을 μ €μž₯ ν•  순 μžˆμ§€λ§Œ, 이후에 μš”μ²­ν•œ μ‚¬μš©μž μž…μž₯μ—μ„œλŠ” νšŒμ›κ°€μž… ν•˜μ§€λ„ μ•Šμ•˜λŠ”λ° λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜λŠ” 창을 λ„μ›Œμ£ΌλŠ” 것은 μ‚¬μš©μžλ‘œ ν•˜μ—¬κΈˆ λΆˆνŽΈν•˜λ‹€κ³  νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, 메일 μ„œλ²„μ˜ APIλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄..
[νŠΈλŸ¬λΈ” μŠˆνŒ…] jakarta.mail.internet.addressexception: local address contains control or whitespace ꡬ글링 해도 λ‚˜μ˜€μ§€ μ•Šλ˜ μ—λŸ¬λ₯Ό ν•΄κ²°ν•˜λŠ” 과정을 μ†Œκ°œν•˜λ©°, μ™œ λ°œμƒν•˜κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€ μ†Œκ°œν•˜λŠ” κΈ€μž…λ‹ˆλ‹€.SMTP κΈ°λŠ₯에 λŒ€ν•΄ μ„€λͺ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.μ„œλ‘ μ—μ–΄λΉ„μ•€λΉ„μ— νšŒμ›κ°€μž…ν•  λ•Œ, νšŒμ›μ΄ μž…λ ₯ν•œ 이메일이 정상 이메일인지 ν™•μΈν•˜κ³ μž 인증번호λ₯Ό λ³΄λ‚΄κ³ μž ν–ˆμŠ΅λ‹ˆλ‹€.κ·Έλž˜μ„œ, μ•„λž˜μ™€ 같은 μ½”λ“œλ‘œ 넀이버 μ„œλ²„μ— 메일을 λ³΄λƒˆμœΌλ‚˜, `jakarta.mail.internet.addressexception: local address contains control or whitespace` μ—λŸ¬κ°€ javaMailSender.send(message) μ—μ„œ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.public void sendVerificationEmail(String memberEmail) { try { SimpleMai..
μœˆλ„μš°, WSL, JVM 으둜 μ–•κ²Œ μ•Œμ•„λ³΄λŠ” ν™˜κ²½λ³€μˆ˜μ™€ νŒŒμΌμ‹œμŠ€ν…œ β­μ„œλ‘ μ œ μš΄μ˜μ²΄μ œλ₯Ό λ¨Όμ € μ†Œκ°œν•©λ‹ˆλ‹€. μ €μ˜ μš΄μ˜μ²΄μ œλŠ” Window 이며, μœˆλ„μš°μ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” wsl2 λ₯Ό 톡해 Ubuntu 도 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.      이 ν™˜κ²½μ—μ„œ μ½”λ“œμŠ€μΏΌλ“œμ˜ λ¦¬λˆ…μŠ€ κ°€μƒ ν™˜κ²½ λ° ν¬λ‘€λ§ λ―Έμ…˜μ„ μ§„ν–‰ν•˜κ³ μž ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ, 제 μœˆλ„μš°μ—μ„œ IDE둜 크둀링 μ½”λ“œλ₯Ό μž‘μ„±ν•œ 후에 wsl 에 μ ‘μ†ν•΄μ„œ Ubuntu ν™˜κ²½μ—μ„œ crontab 을 μ‚¬μš©ν•΄μ„œ 크둀링을 μžλ™ν™” ν•  κ³„νšμ΄μ—ˆκ³ , 크둀링 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ…€λ ˆλ‹ˆμ›€μ„ μ‚¬μš©ν•˜κ³ μž ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κ²Œ λ―Έμ…˜μ„ μ§„ν–‰ν•˜λ©° λ‹€μŒκ³Ό 의문이 생겼고, μ˜λ¬Έμ— λŒ€ν•œ 닡을 μ°Ύμ•„κ°€λ©° μ•Œκ²Œ 된 것을 κ³΅μœ ν•˜κ³ μž ν•©λ‹ˆλ‹€.1. μœˆλ„μš°μ™€ wsl 은 νŒŒμΌμ‹œμŠ€ν…œμ„ κ³΅μœ ν•˜μ§€λ§Œ, ν™˜κ²½λ³€μˆ˜λŠ” μ™œ μ„œλ‘œ κ³΅μœ ν•˜μ§€ μ•ŠλŠ” 것인지 ?? 2. OS 에 ν™˜κ²½λ³€μˆ˜λ₯Ό λ“±λ‘ν•˜λŠ” κ²ƒμ΄λž‘ Java 둜 set..
[νŠΈλŸ¬λΈ” μŠˆνŒ…] 20만 더미 데이터 μ‚½μž…μ„ csvνŒŒμΌμ„ μ΄μš©ν•΄μ„œ DB connection timeout → 7초둜 쀄이기 β­μ„œλ‘ μ½”λ“œμŠ€μΏΌλ“œ 에어비앀비 클둠 μ½”λ”© ν”„λ‘œμ νŠΈ 쀑 μ„±λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό ν•˜κ³  μ‹Άμ—ˆκ³ ,이λ₯Ό μœ„ν•΄ λ‹€λŸ‰μ˜ μˆ™μ†Œ, μ˜ˆμ•½, νšŒμ›μ˜ 더미 데이터λ₯Ό λ§Œλ“€κ³ μž ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ”λ―Έ 데이터λ₯Ό μˆ™μ†Œ 20만개, μ˜ˆμ•½ 100만개, νšŒμ› 1만λͺ…을 λ§Œλ“€κ³ μž ν•˜μ˜€μŠ΅λ‹ˆλ‹€.이 쀑, μˆ™μ†Œ 20만개λ₯Ό λ§Œλ“œλŠ” κ³Όμ •μ—μ„œ 생긴 일을 μ†Œκ°œν•©λ‹ˆλ‹€. 20만개 μˆ™μ†Œ 데이터λ₯Ό Java μ½”λ“œλ‘œ μˆ™μ†Œ 1κ°œλ§ˆλ‹€ INSERT INTO 쿼리λ₯Ό DB에 λ‚ λ Έλ”λ‹ˆ DB connection timeout 문제λ₯Ό λ§ˆμ£Όν–ˆμŠ΅λ‹ˆλ‹€. - κ³ λ €ν•œ λ°©μ•ˆMySQL의 λ ˆμ½”λ“œλŠ” ν…Œμ΄λΈ” λ‹¨μœ„μ˜ 파일둜 μ €μž₯λœλ‹€λŠ” 점에 μ°©μ•ˆν•œ csv파일 μ‚¬μš©λŒ€λŸ‰ μ‚½μž…μ— νŠΉν™”λœ 기술인 Spring Batch - 2가지 이유둜 csvνŒŒμΌμ„ μ΄μš©ν•˜κΈΈ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€.ν”„λ‘œμ νŠΈ 남은 1μ£Ό λ™μ•ˆ μ„±λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό ν•΄μ•Όλœλ‹€λŠ” 점더미 ..
[λ™μ‹œμ„± μ œμ–΄] μœ λ‹ˆν¬ μ œμ•½μ‘°κ±΄μ„ ν™œμš©ν•΄ 1 건의 μ˜ˆμ•½λ§Œ μ €μž₯ β­μš”κ΅¬μ‚¬ν•­μ½”λ“œμŠ€μΏΌλ“œμ˜ Airbnb ν”„λ‘œμ νŠΈ 쀑같은 μˆ™μ†Œμ— μ‚¬λžŒ A 와 μ‚¬λžŒ B κ°€ λ™μ‹œμ— μ˜ˆμ•½μ„ μš”μ²­ν•  경우, ν•œ 건의 μ˜ˆμ•½λ§Œ 성곡해야 ν•©λ‹ˆλ‹€.(같은 μˆ™μ†Œλ₯Ό μ‚¬λžŒ A와 μ‚¬λžŒ Bκ°€ λ™μ‹œμ— μ‚¬μš©ν•˜λ©΄ μ•ˆλ˜λ‹ˆκΉŒ!)β­κ³ λ―Όκ·Έλž˜μ„œ, λ™μ‹œμ— μ˜ˆμ•½ μš”μ²­μ„ 막기 μœ„ν•΄λΉ„κ΄€μ  락낙관적 락DB의 μœ λ‹ˆν¬ μ œμ•½μ‘°κ±΄μ„ κ³ λ―Όν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.⭐해결 κ³Όμ •μ˜ˆμ•½μ΄ μ €μž₯λ˜λŠ” μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.@Transactionalpublic BookingResponse create(BookingSaveRequest request) { // μš”μ²­ν•œ μ˜ˆμ•½μ΄ κΈ°μ‘΄ μ˜ˆμ•½μ˜ 일정과 μ€‘λ³΅λ˜λŠ”μ§€ ν™•μΈν•˜λŠ” 둜직 Long bookedStayCount = bookingRepository.countBookedStay(request.getStayId(), re..