전체 글 261

[Spring]Web - Service Layer 간 상호 의존 문제(Circular Dependency)

Introduction 지난주에 첫 PR을 올렸다! 책을 참고해 작성한 POST 로직 관련 기능이었다. 기대 반 걱정 반으로 PR을 올렸는데 아니나 다를까 피드백이 줄줄이 달리기 시작했다. 그 중에서 꽤나 인상적인 리뷰가 있었다. nit: How about thinking this? 🙇‍♂️ but, You don't need to fix it now (N)ot (I)mportant, (T)hough Controller(package-web) has a dependency on Service(business logic/package-service) Service(business logic/package-service) has a dependency on DTO(package-web) what is the..

Spring 2022.07.16

[LeetCode][Java/Python]217. Contains Duplicate

Python Solution ''' 시간 복잡도: O(n) -> items 쓰고 for문 돌면서 O(n) 공간 복잡도: O(n) -> counter 변수에 Counter 배정 Runtime: 482 ms, faster than 81.08% of Python3 online submissions for Contains Duplicate. Memory Usage: 25.9 MB, less than 94.00% of Python3 online submissions for Contains Duplicate. ''' from collections import Counter class Solution: def containsDuplicate(self, nums: List[i..

애자일을 하기 위해 애자일을 도입하는 건 애자일이 아니다(feat. 함께 자라기)

애자일을 하기 위해 애자일을 도입하는 건 애자일이 아니다. 이 무슨 말 같지도 않은 말인가 싶겠지만, 애자일(Agile)이라는 개념을 온전히 받아들이기에 앞서 반드시 명심해야 할 구문이다. 대체 애자일이라는 게 무엇이길래 이토록 아리송한 말을 꺼내는 것일까? 열정 넘치는 PM 친구의 이야기를 하나 들어보자. 열정 넘치는 3년 차 PM인 A는 그간 열심히 공부했던 애자일 프로세스를 새로 들어간 회사에 전파하려 한다. 날마다 팀원들과 모여 업무를 공유하는 데일리 스크럼, 1~2주 단위의 짧은 주기로 제품을 개발 및 개선하는 스프린트와 매 스프린트가 끝난 후 어땠는지를 논하는 회고까지. 공지를 올려 팀원 및 팀장 앞에서 세미나를 연다. 하지만 뭔가 이상하게 흘러간다. 실무에 적용하려는데 상사나 동료의 지원 없..

독서일기 2022.07.11

인생을 잘 사는 단 한 가지 방법(feat.인생 거울)

세상에는 변치 않는 마음과 굴하지 않는 정신이 있다 순수하고 진실한 영혼들도 있다 그러므로 자신이 가진 최상의 것을 세상에 주라 최상의 것이 너에게 돌아오리라 사랑을 주면 네 삶으로 사랑이 모이고 가장 어려울 때 힘이 될 것이다 삶을 신뢰하라 그러면 많은 이들이 너의 말과 행동에 신뢰를 보일 것이다 마음의 씨앗들을 세상에 뿌리는 일이 지금은 헛되이 보일지라도 언젠가는 열매를 거두게 되리라 왕이든 걸인이든 삶은 다만 하나의 거울 우리의 존재와 행동을 배춰줄 뿐 자신이 가진 최상의 것을 세상에 주라 최상의 것이 네게 돌아오리라 시를 선물로 받았다. 100년도 더 전에 쓴 시라는데 예나 지금이나 똑같다. 먼저 주고, 이왕 줄 거 더 주고, 잘 주고. 그러면 돌아온다. 어떻게든 어떤 방법으로든. 세상 만사가 같..

인사이트 일기 2022.07.10

2022 상반기(H1) 회고

상반기(H1) 회고 내 인생의 미션은 당연함을 깨부수는 영감을 주는 사람이다. 내가 만든 결과물은 사람들이 기존과 다르게 생각하거나 행동하게 하는 영감을 준다는 믿음이 있다. 항상 이 마음가짐으로 살아왔다. PD, 디자이너를 꿈꿀 때도, 대학원에서 연구를 할 때도 마찬가지였다. 이와 부합한 결과물을 만들었을 때, 그것이 실질적으로 상대방에게 가치를 주는 것을 확인할 때 행복감을 느꼈다. 가장 최근 커리어였던 창업을 시작한 이유도 여기에 기인했다. 미션에 가장 부합하는 방향이 IT 분야에서 스타트업을 할 때임을 몸으로 깨달았다. 미션을 추구하는 과정에서 패션 디자인, 제조업(반도체, 배터리) 연구를 비롯해 창업할 때 타깃했던 IT 등 다양한 도메인을 경험했다. 그 중에서도 , 빠르게 고객의 니즈를 파악하고..

[SpringBoot] Error: Unable to find a @SpringBootConfiguration 에러 원인 및 해결

Current status 첫 실무로 기존 프로젝트(프로젝트명 DR)를 개선하는 업무를 받았다. 그러나 기존 프로젝트의 구조가 워낙 복잡한지라.. 일단 형태 자체는 CRUD 기반의 게시판이었기에 책을 참고해가며 클론 코딩하기로 결정했다. 기존 프로젝트 DR 역시 엔티티 클래스와 이에 대응하는 Repository 인터페이스를 갖고 있었다. 책의 진행 흐름(3장)을 보면 프로젝트를 진행할 때 가장 먼저 Posts 클래스와 PostsRepository 인터페이스를 만드는 것을 확인할 수 있다. (여기가 문제의 시작..) 클론 코딩에서 역시 기존 코드에 있는 엔티티 클래스와 Jpa Repository 인터페이스를 만들고 DB와 잘 연동하는지 테스트코드까지 작성을 완료했다. 정리하면 DR 클래스 & DRRepos..

Spring 2022.07.03

6월 4주차 회고(6/20 - 6/24)

이번주 점수는? ⭐⭐⭐ 😍 좋았던 것(Liked) 스스로 어떤 가치를 지니고 있는지 알아가는 요즘 개발자를 시작하면서 이게 맞는 선택일까 고민하고 좌절하던 날이 많았다. 정글에 있을 때 동굴을 깊은 바닥까지 찍고 나서일까, 요즘은 내가 개발자에 어울리는 사람인지에 대한 고민이 옅어졌다. 정확히는 맞지 않는다는 걸 잘 알아서인듯(?). 보다 정확히 말하면, 모든 면에서 개발자에 적합한 사람은 아니라는 걸 깨달았기 때문이다. 뭔가 역설적인데, 반대로 말하면 내가 어떤 가치를 가진 사람인지를 가면 갈수록 깨닫고 있는 요즘이랄까. 요근래 다양한 업계 사람들과 만나는 일이 잦다. 천성이 사람들과 이야기하는 걸 좋아하는지라 어딜 가나 왁자지껄 분위기를 띄운다. 그렇게 자리를 좋게 만들고 나면, 덕분에 긍정적인 에너..

[Java]String pool: String에서도 캐싱 기능을 제공한다고?

Intro: String에서 객체 비교 예제를 하나 만들어보자. //case 1 String name1 = new String("BHK"); String name2 = new String("BHK); boolean result1 = name1.equals(name2) boolean result2 = name1 == name2 // 위에서 공부한 내용과 같이 결과는 다음과 같다. true // .equals() name1, name2 값만 비교 false // == name1, name2의 객체 주소를 비교 아래 예제는 어떨까? //case 2 String name1 = "BHK"; String name2 = "BHK"; System.out.println(name1 == name2); 결과는 참이다. tr..

Java 2022.06.22

6월 3주차 회고(6/13~6/17)

이번주 점수는? ⭐⭐⭐⭐ 😍 좋았던 것(Liked) 1권 막바지에 도달! 입사 후 얼마 지나지 않아 공부를 시작했던 1권이 거의 막바지에 다다랐다. 10장 예외 처리 챕터까지 마쳤다. 다음주 중으로 11장을 끝내면 2권으로 간다! 이 책만 조졌으면 훨씬 빨리 끝났을 일이지만..스프링부트도 공부해야 하고 사내 다른 업무도 수행하다 보니 예상보다는 늦게 끝나지만..그래도 뭔가를 마친다는 건 늘 뿌듯한 일이다. 특히 시작은 창대하나 끝은 미약한 나한테는 더더욱! 드디어 실무 코드 보기 시작! → 테스트 코드 작성까지! 이전에도 틈틈이 실무 코드를 보긴 봤으나 구조에 대한 이해도가 떨어지다 보니 눈에 잘 들어오지 않았다. 그런데 자바도 얼추 익혔겠다, 스프링부트 책도 챕터 4장 정도까지 떼고 나니 안 보이던 게..

[Java] == 연산자와 .equals()의 차이는?

==과 .equals()의 차이는? 저번 글에서 썼던 예제를 살짝 바꿔보자. public static void main(String[] args) { Integer a = 128; Integer b = 128; System.out.println(a == b); System.out.println(a.equals(b)); } 결과는 어떻게 나올까? false // == true // .equals() == 연산자야 둘을 비교하는 연산자인 건 워낙 많이 봤고, .equals() 메소드도 보면 두 객체를 비교하는 메소드인 것 같은데 무엇이 다르길래 하나는 false이고 하나는 true일까? 바로 무엇을 비교하느냐의 차이다. == 연산자는 객체 자체를 비교한다. 정확히는 비교하려는 두 객체 각각의 메모리 내 주소..

Java 2022.06.17