λͺ©λ‘μ „체 κΈ€ (124)

DevLog 😢

[μš°ν…Œμ½” 5κΈ°] 사닀리 타기 κ²Œμž„ λ―Έμ…˜ 회고

ν›„μΆ”λž‘ μ§„ν–‰ν•œ 두 번째 νŽ˜μ–΄ ν”„λ‘œκ·Έλž˜λ°μΈ 사닀리 λ―Έμ…˜μ΄λ‹€. 사싀 이번 λ―Έμ…˜μ€ ꡉμž₯히 빨리 mergeκ°€ λ˜μ–΄μ„œ λ―Έμ…˜ μžμ²΄μ— 많이 신경을 μ“°μ§€λŠ” μ•Šμ•˜λ˜ 것 같은데, λ‹€λ₯Έ 크루뢄듀이 κ³ λ―Όν•˜μ‹œλŠ” κ±Έ 보고 μžˆμœΌλ‹ˆ λ‚΄κ°€ λ„ˆλ¬΄ 생각을 μ•ˆ ν•œ 것인가... λΌλŠ” 생각이 λ“€μ—ˆλ‹€ πŸ’¦ λ‹€μŒ λ―Έμ…˜μ—μ„œλŠ” 쑰금 더 μ‹ κ²½μ“°λ©΄μ„œ μ§„ν–‰ν•΄μ•Ό ν•  것 κ°™λ‹€. κ·Έλž˜λ„ ν›„μΆ” 덕뢄에 도메인 섀계λ₯Ό ꡉμž₯히 μˆ˜μ›”ν•˜κ²Œ ν•΄μ„œ, 더 λΉ λ₯΄κ²Œ 마무리 ν•  수 μžˆμ—ˆλ˜ μ‹œκ°„μΈ 것 κ°™λ‹€. (λ¬Όλ‘ ... 이 κ²Œμ‹œκΈ€μ„ μž‘μ„±ν•œ μ‹œμ μ—μ„œλŠ” ν•œμ°Έ 전에 λλ‚œ λ―Έμ…˜μ΄μ§€λ§Œ, μž„μ‹œ μ €μž₯을 해두고 μ˜¬λ¦¬μ§€ μ•Šμ•˜μ–΄μ„œ...γ…Ž λ’€λŠ¦κ²Œ μ˜¬λ¦°λ‹€) βœ”οΈ μž‘μ„±ν•œ μ½”λ“œ GitHub - Cl8D/java-ladder: 사닀리타기 λ―Έμ…˜μ„ μœ„ν•œ μ €μž₯μ†Œμ‚¬λ‹€λ¦¬νƒ€κΈ° λ―Έμ…˜μ„ μœ„ν•œ μ €μž₯μ†Œ. Contribute to..

[Kotlin & Spring] Amazon S3 μ—…λ‘œλ“œ - 곡톡 μ—λŸ¬ 처리 핸듀링, runCatching

정말 μž‘μ€ μ—­ν• μ΄μ§€λ§Œ μ‘°κΈˆμ”© μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜κ³  μžˆλŠ”λ°, μ½”ν‹€λ¦° 문법을 κ³΅λΆ€ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ 점을 μ•Œκ²Œ λ˜μ–΄ κΈ°λ‘ν•˜κ³ μž ν•œλ‹€! (μ½”ν‹€λ¦°... μ΅μˆ™ν•΄μ§€λ©΄ 정말 νŽΈν•  것 κ°™μ§€λ§Œ 아직은 잘 λͺ¨λ₯΄κ² λ‹€. μ–΄λ ΅λ‹€!) βœ”οΈ Amazon S3 with Kotlin μ½”ν‹€λ¦°κ³Ό s3λ₯Ό μ—°λ™ν•˜κ²Œ 되면, 예기치 λͺ»ν•œ μ„œλ²„ 였λ₯˜μ— λŒ€λΉ„ν•˜μ—¬ νŒŒμΌμ„ μ‚½μž…ν•˜κ±°λ‚˜ μ‚­μ œν•  λ•Œ, ν˜Ήμ€ url 정보λ₯Ό λ°›μ•„μ˜¬ λ•Œ λ‹€μŒκ³Ό 같이 Exception이 λ°œμƒν•  수 있게 λœλ‹€. ν•œ κ°€μ§€ κΆκΈˆν•œ 점은, AmazonServiceException의 경우 λΆ€λͺ¨ νƒ€μž…μ΄ SdkClientException인데 μ™œ κ΅¬λΆ„ν•΄λ‘μ—ˆμ„κΉŒ... μ•„λ¬΄νŠΌ, κΈ°μ‘΄μ—λŠ” μ„œλ²„ μ—λŸ¬μ— λŒ€ν•΄ μ „ν˜€ κ³ λ €ν•˜μ§€ μ•Šμ€ μƒνƒœλ‘œ λ‹€μŒκ³Ό 같은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€μ—ˆλ‹€. fun deleteFile(file..

κ°œλ°œμΌμ§€ 2023. 3. 30. 23:41
[Java] Classic TDD vs Mockist TDD

μ–Όλ§ˆ 전에 μš°ν…Œμ½”μ—μ„œ 체슀 ν”Όλ“œλ°± 2 κ°•μ˜λ₯Ό λ“€μœΌλ©΄μ„œ, λ””νŠΈλ‘œμ΄νŠΈ ν•™νŒŒ (classicist) vs 런던 ν•™νŒŒ (Mockist)에 λŒ€ν•΄μ„œ λ“£κ²Œ λ˜μ—ˆλ‹€. λ‘˜ λ‹€ 처음 λ“€μ–΄λ³Έ μš©μ–΄μ—¬μ„œ κΆκΈˆν•œ λ§ˆμŒμ— 이것저것 찾아보며 μž‘μ„±ν•΄λ³΄κ³ μž ν•œλ‹€. (μ „λ°˜μ μΈ λ‚΄μš©μ€ ν…Œμ½”ν†‘ λ°œν‘œ λ‚΄μš©μ„ 많이 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€ πŸ™‡‍♀️) βœ”οΈ λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ λ¬΄μ—‡μΌκΉŒ? λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°€μ Έμ•Ό ν•œλ‹€. 1. Low-level ν…ŒμŠ€νŠΈλ₯Ό 닀루어야 ν•œλ‹€. 2. 일반적인 ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. 3. 빨라야 ν•œλ‹€. μ—¬κΈ°μ„œ λ‹¨μœ„λž€ λ¬΄μ—‡μΌκΉŒ? λ§Œμ•½, κΈ°λŠ₯ λ‹¨μœ„λΌκ³  κ΅¬μ„±λœλ‹€λ©΄ 객체지ν–₯의 κ΄€μ μ—μ„œλŠ” ν•΄λ‹Ή κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 클래슀의 집합이 λ‹¨μœ„κ°€ 될 μˆ˜λ„ μžˆλ‹€. μš°λ¦¬λŠ” μ΄λŸ¬ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„œ, μ–΄λ– ν•œ λ‹¨μœ„κ°€ μƒν˜Έ μž‘μš©ν•  수 μžˆλŠ”..

✏️/Java 2023. 3. 28. 08:59
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 78. 곡유 쀑인 κ°€λ³€ λ°μ΄ν„°λŠ” 동기화해 μ‚¬μš©ν•˜λΌ (1)

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 78을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 이번 μ •λ¦¬λŠ” μ±…κ³ΌλŠ” λ‹€μ†Œ λ‹€λ₯Έ λ‚΄μš©μž…λ‹ˆλ‹€ :D κ°œλ… μžμ²΄κ°€ μ–΄λ €μš΄ λΆ€λΆ„μ΄μ–΄μ„œ 책을 읽으며 κΆκΈˆν•œ 뢀뢄에 λŒ€ν•΄ μ‘°μ‚¬ν•˜λŠ” μ‹μœΌλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ πŸ™‡‍♀️ 두 편으둜 λ‚˜λˆ„μ–΄μ„œ ν¬μŠ€νŒ… ν•  μ˜ˆμ •μž…λ‹ˆλ‹€! 아직 λ―Έν‘ν•œ 점이 λ§Žμ•„μ„œ, 더 μ •ν™•ν•œ 정보λ₯Ό μ•Œκ²Œ 되면 λ³Έ κ²Œμ‹œκΈ€μ„ μˆ˜μ •ν•  μ˜ˆμ •μž…λ‹ˆλ‹€. βœ”οΈ λ™κΈ°ν™”λž€ λ¬΄μ—‡μΌκΉŒ? ν˜„μž¬ μž”μ•‘μ΄ 10000원이고, 각각 1000원씩 μž…κΈˆν•˜λŠ” ν–‰μœ„λ₯Ό 5000번, 1000원씩 μΆœκΈˆν•˜λŠ” ν–‰μœ„λ₯Ό 5000번 λ°˜λ³΅ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μž. λ™μΌν•œ κΈˆμ•‘μ— λŒ€ν•΄ λ™μΌν•œ 횟수둜 5000λ²ˆμ”© μ§„ν–‰ν–ˆκΈ° λ•Œλ¬Έμ—, 우리의 μž”μ•‘μ—λŠ” λ³€ν™”κ°€ μ—†λ‹€κ³  생각할 수 μžˆλ‹€. [synchronized ν‚€μ›Œλ“œ 뢙이기 μ „] public class Main { public stati..

πŸ“–/Effective Java 2023. 3. 26. 21:24
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 01. μƒμ„±μž λŒ€μ‹  정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” 챕터 1을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλž€? μš°ν…Œμ½” λ―Έμ…˜μ„ μ§„ν–‰ν•˜λ©΄μ„œ, 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό 정말 많이 μ‚¬μš©ν•˜μ˜€λ‹€. 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλž€, 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” 정적 λ©”μ„œλ“œμ΄λ‹€. 즉, μƒμ„±μž 역할을 ν•˜λ©΄μ„œλ„ 객체λ₯Ό μƒμ„±ν•˜κΈ° 전에 1차적으둜 ν†΅κ³Όν•˜λŠ” 'λ¬Έ' 같은 μ‘΄μž¬λΌκ³ λ„ λ³Ό 수 μžˆλ‹€. 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 점이 μ’‹μ„κΉŒ? πŸ’¬ λ™μΌν•œ μ‹œκ·Έλ‹ˆμ²˜λΌλ„, 이름에 따라 μƒˆλ‘­κ²Œ 생성해쀄 수 μžˆλ‹€. μ–΄λŠ λ‚ , μš°ν…Œμ½”μ— 크루 신청을 ν•˜κΈ° μœ„ν•΄ μ‹ μ²­μ„œλ₯Ό μž‘μ„±ν•˜κ³  μžˆμ—ˆλ‹€. μ΄λ•Œ, λ‹‰λ„€μž„μ„ 아직 μ •ν•˜μ§€ λͺ»ν•œ ν¬λ£¨λŠ” 이름과 λ‚˜μ΄, 그리고 κ³Όμ •λ§Œμ„ κ°€μ§€κ³  크루λ₯Ό μ‹ μ²­ν•˜κ³  μ‹Άμ—ˆλ‹€. public class Crew { private String name; private Strin..

πŸ“–/Effective Java 2023. 2. 28. 00:44
[λͺ¨λ˜μžλ°”μΈμ•‘μ…˜] λžŒλ‹€ ν‘œν˜„μ‹ : 읡λͺ… ν•¨μˆ˜λ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€κΈ°

πŸ’¬ λͺ¨λ˜ μžλ°” 인 μ•‘μ…˜ 챕터 3을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ λžŒλ‹€κ°€ λ­”λ°μš”? μ§€λ‚œ μ±•ν„°μ—μ„œλŠ” λ™μž‘ νŒŒλΌλ―Έν„°ν™”λ₯Ό ν†΅ν•΄μ„œ νŒŒλΌλ―Έν„°λ‘œ λ©”μ„œλ“œμ˜ λ™μž‘ 자체λ₯Ό μ „λ‹¬ν•΄μ£ΌλŠ” 것을 λ°°μ› λ‹€. μ΄λ•Œ, λ©”μ„œλ“œμ˜ λ™μž‘μ„ μ „λ‹¬ν•˜κΈ° μœ„ν•΄μ„œ λ³„λ„μ˜ @Override μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‚˜ μƒμ†λœ λ©”μ„œλ“œ 이름 λ“±, λ™μž‘ 외에 λ‹€λ₯Έ μ½”λ“œλ“€μ΄ λ°˜λ³΅λ˜μ–΄ μƒλ‹Ήνžˆ λΆˆνŽΈν–ˆλ‹€. λžŒλ‹€ ν‘œν˜„μ‹μ€ 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ, λ‹¨μˆœνžˆ 'λ™μž‘μ— λŒ€ν•œ μ½”λ“œλ§Œ' λ©”μ„œλ“œλ‘œ 전달할 수 μžˆλ„λ‘ 읡λͺ… ν•¨μˆ˜λ₯Ό λ‹¨μˆœν™”ν•œ 것이닀. λžŒλ‹€ ν‘œν˜„μ‹μ€ λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°€μ§„λ‹€. πŸ’¬ λ©”μ„œλ“œμ— 이름이 μ—†μœΌλ‹ˆκΉŒ “읡λͺ…”이닀. (λ©”μ„œλ“œμ— λŒ€ν•œ 넀이밍을 κ³ λ―Όν•  ν•„μš”κ°€ μ—†λ‹€!) - 이름은 μ—†μ§€λ§Œ, νŒŒλΌλ―Έν„° λ¦¬μŠ€νŠΈμ™€ λ°”λ””, λ°˜ν™˜ ν˜•μ‹, λ°œμƒ κ°€λŠ₯ν•œ μ˜ˆμ™Έ λ¦¬μŠ€νŠΈλŠ” κ°€μ§ˆ 수 μžˆλ‹€. πŸ’¬ ν•¨μˆ˜ : νŠΉμ • 클..

πŸ“–/Modern Java in Action 2023. 2. 27. 18:53
[λͺ¨λ˜μžλ°”μΈμ•‘μ…˜] λ™μž‘ νŒŒλΌλ―Έν„°ν™” : λ™μž‘ 자체λ₯Ό μ „λ‹¬ν•΄λ³΄μž!

πŸ’¬ λͺ¨λ˜ μžλ°” 인 μ•‘μ…˜ 챕터 2을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ λ™μž‘ νŒŒλΌλ―Έν„°ν™” μ‚¬λžŒμ˜ λ§ˆμŒμ€ 정말 κ°ˆλŒ€ κ°™λ‹€. 그리고, μš”κ΅¬μ‚¬ν•­μ€ μ†ŒλΉ„μžμ˜ μž…μž₯μ—μ„œ 늘 μƒκ°ν•˜κ²Œ λœλ‹€. μš°λ¦¬λŠ” μ½”λ“œλ₯Ό μ§œλŠ” ν”„λ‘œκ·Έλž˜λ¨Έμ§€λ§Œ, κ°ˆλŒ€ 같은 μ†ŒλΉ„μžμ˜ λ§ˆμŒμ„ λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄ μ΅œλŒ€ν•œ μœ λ™μ μœΌλ‘œ λŒ€μ‘ν•  ν•„μš”κ°€ μžˆλ‹€. μ–΄λŠ λ‚ , 포비가 μš°ν…Œμ½” 곡지사항에 λ‹€μŒκ³Ό 같은 μš”κ΅¬μ‚¬ν•­μ„ λ˜μ Έμ£Όμ—ˆλ‹€κ³  κ°€μ •ν•˜μž. πŸ’¬ λ°±μ—”λ“œ 크루 쀑에 25μ‚΄ μ΄ν•˜μΈ 크루만 보고 싢은데, λͺ¨μ—¬ μ£Όμ„Έμš”. 그러자 λ„€μ˜€κ°€ μ™€μ„œ λ§ν–ˆλ‹€. πŸ’¬ μ•„λ‹ˆμ—μš”, ν”„λ‘ νŠΈμ—”λ“œ 크루 μ€‘μ—μ„œ 23μ‚΄ 이상인 크루만 μ™€μ£Όμ„Έμš”. μ–΄λ–»κ²Œ ν•˜λ©΄ μš°λ¦¬λŠ” λ³€ν™”ν•˜λŠ” μš”κ΅¬μ‚¬ν•­ μ†μ—μ„œ μœ λ™μ μœΌλ‘œ λŒ€μ‘ν•  수 μžˆμ„κΉŒ? κ°€μž₯ λ¨Όμ €, κ·Έλƒ₯ μš”κ΅¬μ‚¬ν•­μ— λ§žλ„λ‘ κ°€λŠ₯ν•œ λͺ¨λ“  속성에 λŒ€ν•΄μ„œ μ „λΆ€ μ‹œλ„ν•˜λŠ” 방법이 μžˆλ‹€. 1) λ°±..

πŸ“–/Modern Java in Action 2023. 2. 27. 01:13