전체 글
-
나에게 필요한 클린 코드DEV 2022. 3. 9. 22:57
서론 클린 코드를 읽어봐야지 생각만 하다가 시간이 생긴 김에 처음으로 일독한 후 많은 내용을 모두 다 기억하고 적용하면 좋겠지만 지금 내가 코드를 작성할 때 중점을 두고 고민해볼 내용을 정리해보았다. 이름 정하기 지금도 클래스, 메소드, 변수 등의 이름을 지을 때 조금 길어지더라고 한눈에 보고 확인할 수 있는 이름을 정하려고 노력하고 있지만 서로 너무 비슷하거나 혼동되는 이름을 정하지 않도록 좀 더 고려해야 할 것 같다. 이름을 잘 정하고 싶은데 막상 이름이 잘 생각나지 않는 난제는 참 어렵다.. 함수에 대하여 함수는 하나의 일만! 하나의 함수에서 많은 일을 하게 되면 작성할 때는 잘 알지만 조금만 시간이 흐른 뒤에 보게 된다면 도대체 뭘 하고 싶은 건지 모르게 된다. 따라서 함수는 하나의 일만 해야 하..
-
Spring, Kotlin - InterceptorSpring 2021. 11. 25. 23:52
특정 Request 에 특정 기능을 적용하려는 경우에 Interceptor 를 사용할 수 있습니다. Request 를 가로채서(intercept) 실제 처리 이전, 이후의 작업을 추가할 수 있습니다. Method 설명 preHandle 실제 처리 부분 이전 작업 postHandle 실제 처리 부분 이후 작업 afterCompletion 전체 요청이 완료된 후 작업 Request 의 Log 를 찍어주는 Interceptor 를 생성하고 테스트를 통해 확인해보겠습니다. Spring Boot 2.6.0, Kotlin 1.6 버전을 사용하였습니다. class LogInterceptor : HandlerInterceptor { companion object { val log = LoggerFactory.getLo..
-
ZooKeeper 와 Spring Cloud ZooKeeperDEV 2021. 9. 16. 22:53
회사에서 사용하는 기술 중 ZooKeeper 가 무엇인지 궁금하여 공부하면서 정리했습니다. 부족한 부분은 댓글로 남겨주세요. ZooKeeper 란? ZooKeeper는 분산 애플리케이션을 위한 분산 오픈 소스 조정 서비스입니다. 주키퍼는 파일 시스템과 비슷한 namespace 를 제공합니다. 파일 시스템처럼 / 부터 시작하며 주키퍼의 네임스페이스에 있는 모든 노드는 경로로 식별됩니다. 실행 docker compose 를 이용하여 zookeeper 를 실행합니다 version: '3.1' services: zoo1: image: zookeeper restart: always ports: - "2181:2181" 실행이 완료되면 docker exec -it {CONTAINER ID} bin/z..
-
프로그래머스 [위클리 7주차] - 입실 퇴실알고리즘 문제 풀이 2021. 9. 14. 14:35
import java.util.Arrays; import java.util.HashMap; /** * https://programmers.co.kr/learn/courses/30/lessons/86048 * 2021-09-14 */ public class Weekly7 { public int[] solution(int[] enter, int[] leave) { /* 뒤에 들어온 사람보다 늦게 나가면 무조건 만난다. and 1, 2, 3 들어오고 3, 1, 2 로 나갈 때 2 가 1 보다 늦게 들어오고 늦게 나가지만 순서상 3이 나갈 때 까지 나갈 수 없기 떄문에 만날 수 밖에 없다. 따라서 나보다 늦게 들어온 사람이 나보다 먼저 나갈 때 그 사이에 들어온 사람은 만난다 */ // 사람 번호 to inde..
-
heroku 에 spring boot 프로젝트 배포시 발생한 문제들 해결 방법DEV 2021. 8. 16. 18:55
heroku 에 spring boot 프로젝트를 배포하면서 발생한 문제들과 찾은 해결 방법을 공유합니다. heroku 빌드시 서브폴더를 경로로 사용해야 하는 경우 → https://github.com/timanovsky/subdir-heroku-buildpack 위의 링크의 빌드팩을 이용하여 서브 폴더를 경로로 지정합니다. heroku 에 배포해서 접속했는데 503 에러 (No web processes running) 가 뜬다면 Procfile 이 추가, 설정되었는지 확인합니다. https://devcenter.heroku.com/articles/procfile 빌드시 java 를 찾을 수 없는 경우 → java 빌드팩 또는 gradle 빌드팩을 추가합니다. heroku 자바 버전 설정 → https:/..
-
Kotlin - Reflection 과 생성자Kotiln 2021. 8. 4. 15:56
Reflection 을 이용하여 인스턴스를 생성하는 방법을 알아봅시다. 간단한 Person data class 를 생성했습니다. data class Person( var name: String, var age: Number = 20 ) age 프로퍼티에 기본 값으로 20 을 주었습니다. println("생성자 조회") println(Person::class.constructors) 생성자 조회 [fun (kotlin.String, kotlin.Number): chung.study.Person] 먼저 생성자를 조회해보겠습니다. Person 클래스를 생성한 것 과 같이 파라미터가 2개인 생성자가 조회됐습니다. 생성자는 KFunction 인터페이스이며 KCallable 인터페이스를 상속받고 있습니다. KCal..
-
docker-compose : default network subnet 설정DEV 2021. 7. 21. 09:52
내부망에서 서비스를 올리고 사용하다가 자리를 이동하게 되어 ip 가 변경되었고 사용하던 서비스가 접속이 안되는 현상이 발견되었다. 원인을 찾아보니 도커가 생성한 네트워크가 새로운 ip 와 겹치게 되어 충돌이 일어나는 상황이었다. docker-compose 를 다시 실행해보니 ERROR: pool overlaps with other one on this address space 라는 에러를 출력하였고 docker-compose 가 기본으로 생성하는 네트워크를 변경하기로 했다. compose file 3버전을 기준으로 아래와 같이 설정하면 기본 네트워크의 서브넷을 설정할 수 있다. services: ... networks: default: driver: bridge ipam: driver: default c..
-
MSSQL(SQL Server) - IN 구문 사용시 매개변수 최대 값 에러DEV 2021. 7. 5. 17:28
평소에 mariadb 를 사용하다 mssql 을 사용해야해서 디비 접속 후 잘 되던 동작도 실행을 시켰다. 그런데 매개변수 수가 너무 많다는 에러가 출력되었다. Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request. 좀 찾아보니 mssql 의 IN 구문의 매개변수 수가 2100 개가 최대값이었기 때문에 발생한 에러였다. id list 를 받아서 삭제하는 부분이었는 데 평소 테스트할 때 ..