서론 [Clean Code 책 소개] IT 개발자들에게 거의 필수 교과서라고 할 수 있는 책이다. 코딩에 관심 좀 있다하면 다들 한 권씩은 소장하고 있는 것 같다. 거의 바이블인듯 (아닐 수도 있음 ㅎ) 나도 그 중에 한명이 되어보고자 책을 구매했지만 바로 초심 잃고 이제서야 읽기 시작함 ㅎㅎ 이 책을 공부하면서 얻은 중요한 것들과 내 생각을 정리해보고자 한다. 1장. 깨끗한 코드 협업을 하면서 다른 사람이 쓴 코드를 보면, 간혹 이게 뭔말인가 싶은 코드들이 있다. 또는 '굳이...? 이렇게...?' 라는 생각이 들 때가 있을 것이다. 물론 나도 예외는 아니다. 지금도 흑역사로 남은 코드들을 들킬 때면 머쓱머쓱 해진다. 나쁜 코드 귀찮아서, 혹은 지금 당장 돌아가기만 하면 되니까 라는 마음으로 코드를 짜..
의존성 추가 Maven 스프링 AOP를 사용하기 위해서는 아래와 같이 의존성을 추가해야 한다. org.springframework.boot spring-boot-starter-aop 하지만!!!!!! 나는 더 많은 조인포인트 사용을 위해 AspectJ를 활용할 것이다. (이에 대해 자세한 내용은 다음 포스팅에..
AOP (Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자이며 관점 지향 프로그래밍이라고 한다. 로직을 핵심적인 관점 및 부가적인 관점으로 나눠 그 관점(Aspect)을 기준으로 각각 모듈화하는 개발 방법이다. 핵심적인 관점은 핵심 비즈니스 로직을 말하며, 부가적인 관점은 어플리케이션에서 공통적으로 발생하는 부가적인 작업을 의미한다. 이러한 부가 작업에는 로깅, 트랜잭션 관리, 보안, 캐싱 등 다양한 측면을 포함할 수 있다. 개발을 진행하다 보면 반복해서 사용해야 하는 코드들이 있다. 아래 예시에서 사용자 정보를 불러오는 UserService와 메일 정보를 불러오는 MailService는 핵심 기능 관점에서는 공통 요소가 없다. 하지만 ..
문제 : https://leetcode.com/problems/unique-paths/description/ 난이도 : Medium 풀이 1) dp로 풀기 class Solution: def uniquePaths(self, m: int, n: int) -> int: if not m or not n: return 0 cur = [1] * n for i in range(1, m): for j in range(1, n): cur[j] += cur[j - 1] return cur[-1] 2) 수학적으로 풀기 class Solution: def uniquePaths(self, m: int, n: int) -> int: return factorial(m+n-2) // factorial(m-1) // factoria..
5월은 날 좋은 봄이기도 하고 가정의 달이라 그런가.. 정리하려고 보니 한게 너무 많은 것 같다. 연달아 연휴기도 하고 어버이날이이기도 해서 엄마랑 놀겸 집에 내려갔다. 요즘 엄마가 나 골프 시키려고 계속 꼬시는 데 돈 없다고 계속 거절 중... (진짜 없음;;) 그랬더니 내려가있던 사흘 내내 엄마가 연습장 데리고다니면서 골프 연습 시켰다ㅠ 근데 뭐 할 줄 알아야 재미가 있지ㅠㅠㅠ 한달 배우긴 했어도 다 까먹어서 채 잡는 법도 잊어버렸다.. 처음엔 공도 안 맞고 허리도 아프고 이걸 도대체 왜 재밌어하나 하면서 울면서 쳤다.. 근데 둘째날 되니까 공도 치기 시작하면서 타격감이 살짝 다른게 느껴짐ㅎ 공이 잘 맞았은 소리가 났을 때 그 쾌감이,,, 이래서 골프치나 흔들렸다ㅎㅎ 주말엔 담양까지 가서 밥은 먹었는..