본문 바로가기

개발

(30)
맥에서 파일 디렉토리 구조 json 형식으로 추출 후 엑셀파일로 만들기 발단은폴더의 트리 구조를 뽑아서 파일별로 설명을 써줘야 하는 작업이 필요함.같이 일하는 기획자분이 작업해주시는건데 파일 하나하나 다 써서 엑셀에 표로 기입하고 하는거 좀... 귀찮지 않은가.그래서 import 할 수 있는 방법을 찾아봄.방법대상 폴더를 다운받는다. (왜냐면 작업대상인 폴더가 깃에 올라가 있었음)tree 를 설치한다. (관련 링크 : https://oldmanprogrammer.net/source.php?dir=projects/tree)brew install tree터미널에서 폴더가 위치한 루트 디렉토리에서 다음 명령어 입력. ex) Desktop > target_folder 라면-J 옵션을 붙이면 json형식으로 저장되고 -X 는 xml형식으로 저장된다.#Desktop으로 이동cd Des..
[코틀린][Gradle] build.gradle.kts 파일을 알아보자 (feat. Gradle과 Gradle Wrapper) 기존 프로젝트의 dependency 최신화 작업을 하며 찾아본 내용들. 코틀린 프로젝트를 gradle로 build 하기 위해, Kotlin Gradle Plugin이 필요하며 build.gradle.kts 파일에 빌드 스크립트를 작성한다. 빌드 스크립트에 들어가는 내용 : 프로젝트의 dependency 가 명시된다. 호환성 확인 필요 - 그래들 버전 - jvmTarget 플러그인 적용하기 plugins { kotlin("") version "1.9.10" } JvmTarget 컴파일러 옵션이다. ( https://github.com/JetBrains/kotlin/blob/v1.9.10/libraries/tools/kotlin-gradle-compiler-types/src/generated/kotlin/o..
[인프런][아파치 카프카] 역사와 미래 탄생배경 아키텍처가 거대해 지면서 애플리케이션 사이 단방향 통신으로 모든걸 처리하기 어려워짐 기본구조 메시지 큐 구조 프로듀서 -> 카프카 -> 컨슈머 메세지를 컨슈머가 가져가도 카프카에서 메세지는 삭제되지 않는다. 컨슈머 커밋 : 토픽의 몇 번 메세지까지 읽었는지 저장한다. 카프카가 데이터 파이프라인으로 적합한 이유 1. 높은 처리량 네트워크 비용은 무시할 수 없음. 많은 양의 데이터를 묶음 단위로 처리(배치) 할수있음 -> 대용량 실시간 로그데이터 처리에 적합하다. 파티션을 이용해 병렬 처리할수 있다. 1 파티션 - 1 컨슈머 2. 확장성 카프카 브로커 개수를 필요에 따라 스케일 아웃 또는 스케일 인 할 수 있다. 스케일 아웃, 스케일 인 무중단으로 가능하다. 3. 영속성 전송받은 메모리를 파일 시스..
request에 null이 왔을때 empty list 로 받고싶어요 회사에 팀원분과 같이 코드를 보고 있는데 팀원분이 하고 싶으셨던 건 List 타입인 필드가 null로 왔을 때, null 그대로 받아서 쓰고 싶은데 찍어보면 자꾸 empty list로 나온다는 것이었다. 별다른 생각없이 코드를 작성해왔기에, 음... 그러면 스프링부트에서 뭔가 collection타입인애들이 null로 오면 empty list로 변환시켜주나본데요? 이렇게 생각하고 server request 코드를 파헤치는데 30분정도 삽질하니 음.. 아무래도 여기를 파는게 아닌것 같다는 느낌이 왔다. 일단 팀원분한테는 이건 왜 이런지 좀더 봐야할것 같은데 우선은 이렇게 어쩌구 해서 원하는 결과값 꺼내 쓰심 될것 같다고 얘기하고 혼자 검색해봤다. 옆에서 누가 보고 있으면 검색도 버벅거리기 마련...! 이번에..
[Spring Boot] No capture groups allowed in the constraint regex 에러 (feat. 정규식의 capture group) router에서 path에 바로 regex를 적용할수 있다는 걸 알고 다음과 같은 정규식을 넣어줬다. 하고 싶었던 것 orderRouter에서 path로 받는 orderNo가 orderNo 형식에 맞는 애들만 통과시켜주고 싶었다. orderNo형식 : prefix로 OD가 있을수도 있고 없을수도 있음 + 숫자 18자리 => 18자리 or 20자리 org.springframework.web.reactive.function.server.RouterFunction class OrderRouter( private val orderHandler: OrderHandler, ){ @Bean fun routeOrder(): RouterFunction { return coRouter { (accept(MediaType...
[mysql] mysql의 json 칼럼 업데이트 회사에서 사용하는 디비 일부에는 json 칼럼이 있다. json 칼럼 값들은 kotlin 으로 jpa, querydsl, jooq로 조작하면 뚝딱이지만 종종 리얼 디비 json 칼럼 값 수정 요청이 오곤 한다. 대부분의 경우 1개 row 만 변경하면 되는거여서 어찌저찌 해오거나 케이스가 몇개 없는 json array 칼럼의 경우는 케이스별로 그냥 다 만들어서 쿼리를 날리면서 지내왔다. (~어쩌고 생략) json array 값 업데이트 하기 칼럼 타입 : json 값 예시 : [ "RED", "ORANGE", "GREEN", "YELLOW"] .. etc 이렇게 들어가 있다. 전제 : 중복값은 없다 하고싶은것. 칼럼에 RED 값이 없으면 추가. 디비에 들어가 있는 순서는 중요 하지 않다. UPDATE {테..
[스프링][JPA] Custom Jpa Repository를 추가했는데 에러가 나요 팀원분이 새로운 api를 추가하면서 배포하려는데 빌드 에러가 난다며 에러로그를 공유해 주셨다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '{추가한 레파지토리}' defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException ...(생략)..
[Spring Boot] 헤더를 까서 필터링 할건데 actuator는 통과시키고 싶음 - (2) 1편 보러가기 : https://cindycho.tistory.com/75 2편이 왜 바로 나오지 않았냐,,, 하면 아직 수정한 내용에 대해 코드리뷰를 받지 못했다. 원하는 결과가 나오고 있으나 좀 찜찜해서 반영은 안하고 있는 중이다. 내가 해결한 방식 actutator 경로와 토큰 없을 때도 통과시켜줘야 하는 요청의 path를 저장해서 요청이 들어오면 통과시켜주는 path인지 아닌지 확인해서 통과시켜주고 있다. request 에서 path를 추출해서 (path in (토큰 없어도 되는 path 리스트)) == true 이면 바로 return, 아닌경우에 헤더에 토큰 여부 까서 익셉션 던지기. 가능한지 모르지만 내가 해결하고 싶은 방식 요청이 온다 -> uri 에 따라 웹 필터 적용 여부를 알아서 판단해..