방구석개발일지
article thumbnail
[Springboot + Kafka] 간단한 pub/sub 구현 예제
Java 2023. 7. 22. 21:40

지난번에 터미널을 활용해 kafka 를 활용한 메시지 발행/구독 을 간단하게 살펴 보았다. 카프카를 설치하고 구동되어 있다는 전제 하에 Springboot 에서 Kafka 메시지를 발행/구독 하는 예제를 살펴보자. 혹시 위의 내용이 궁금하다면 터미널을 활용한 카프카 설치 및 테스트 에서 확인할 수 있다. Spring project 생성 프로젝트를 생성하고 라이브러리들을 받아왔다면 다음으로 넘어가자. application.yml 파일 작성 spring: kafka: consumer: bootstrap-servers: localhost:9092 group-id: test-group-id auto-offset-reset: earliest key-deserializer: org.apache.kafka.commo..

article thumbnail
[자료구조] 기본개념과 예제 코드
자료구조 2023. 7. 22. 15:44

자료구조의 정의 및 중요성정의자료구조(data structure)는 컴퓨터 과학에서 데이터를 효율적으로 저장하고 관리하는 방법을 의미합니다. 이는 데이터를 조직, 처리, 저장, 검색하는 다양한 방법을 포함합니다.중요성효율적인 자료구조의 사용은 알고리즘의 성능을 크게 향상시킬 수 있습니다. 적절한 자료구조를 선택하면 메모리 사용량을 줄이고, 데이터 처리 속도를 높일 수 있습니다.기본 자료구조 유형배열(Array)정의: 동일한 데이터 타입의 요소들이 연속적으로 메모리에 저장된 자료구조입니다.특징:인덱스를 통해 빠르게 접근할 수 있습니다.크기가 고정되어 있으며, 요소의 추가나 삭제가 어렵습니다.시간 복잡도:접근: O(1)삽입/삭제: O(n) (최악의 경우)예시 코드 (Java):int[] array = {1,..

article thumbnail
[React-native] EXPO 를 활용한 샘플 앱 구현
카테고리 없음 2023. 7. 20. 14:13

expo 와 react native cli 비교 - expo 쉬운 배포 및 버전 업데이트, android/xcode 없이 휴대폰으로 테스트 가능, 빠르고 간단한 설치 및 환경 설정, expo에서 제공하는 기능만 사용 가능, 모듈 사용 불가, native 파일 제어 불가, 간단하고 편리한 대신 복잡하고 섭세하게 제어를 못한다는 단점이 있다. - react native cli 네이티브 파일 및 모듈 사용 가능, 네이티브 소스 코드 작성 가능, 편의성 부족, 사용자가 직접 기본 구성을 해야 하는 비용이 든다. android/xcode 모두 설치해 빌드 배포 해야 함 node.js 설치 크롬 V8 자바스크립트 엔진으로 빌드한 자바스크립트 런타임이다. 웹 브라우저 환경이 아닌 곳에서도 자바스크립트를 사용하여 연산..

article thumbnail
[Spring] webclient + 406 error 문제 해결
Java 2023. 6. 26. 17:02

MS to MS 간 통신을 하기 위해 webClient 를 사용해 get 요청을 보내던 중 예상치 못한 에러가 발생했다. 데이터를 요청할 때 Content-Type 을 application/json 로 명시해 데이터를 받으려 했으나, 406 에러가 발생하면서 데이터를 받아오지 못했다.. 디버깅을 진행해 보니 요청을 받는 MS 측에서 요청을 받고 로직을 수행하는데는 문제가 없었다. 문제가 되던 기존 코드는 아래와 같다. - Request MS @Override public UserRdo findCodeByCategoryCode(String userId){ return this.webClient.get() .uri("/user/query/find-by-id?user-id={userId}", userId) ...

article thumbnail
[JavaScript] 프로젝트 빌드를 위한 스크립트
JavaScript 2023. 6. 22. 11:04

package.json JavaScript 프로젝트에서 사용되는 프로젝트의 메타데이터와 의존성 관리를 위한 정보를 담고 있는 파일이다. 주로 Node.js 프로젝트에서 사용되며, 프로젝트의 설정, 스크립트, 의존성 패키지 등을 정의하는 데 사용된다. npm (Node Package Manager) 이나 yarn 과 같은 패키지 관리자를 사용하여 프로젝트의 의존성을 설치하고 관리하는 데 사용된다. 의존성 패키지의 버전을 기반으로 프로젝트를 빌드하고 실행하는 데 필요한 모듈을 가져올 수 있다. 또한, scripts 섹션에서 정의한 스크립트를 실행하여 테스트, 빌드, 배포 등을 자동화 할 수 있다. { "name": "sample-project", // 프로젝트의 이름 "version": "1.0.0", //..

article thumbnail
[SpringBoot] 스프링부트 프로젝트 빌드를 위한 스크립트 파일
Java 2023. 6. 22. 11:04

프로젝트를 진행하면서 코드를 클론해 받아오면 빌드가 잘 되지 않아 고역을 치룬 경험이 많다. 프로젝트에서 빌드에 필요한 파일과 그 역할을 분석해 보자. 빌드 툴은 Gradle 을 기반으로 한다. build.gradle 프로젝트에서 필요한 종속성과 빌드 설정을 위해서 build.gradle 파일을 작성해야 한다. build.gradle 파일은 프로젝트의 컴파일, 패키징, 테스트 등의 빌드 과정을 정의한다. DSL(Domain-Specific Language) 을 사용하여 빌드 스크립트를 작성하며, 다양한 플러그인과 태스크를 구성할 수 있다. Gradle 빌드 스크립트의 주요 역할을 수행하며, 프로젝트의 구성, 종속성 관리, 작업 정의 등을 다룬다. // build.gradle buildscript{ /* ..

article thumbnail
[Docker] docker-compose 를 사용하지 않고 redis server 에 연결하기
Dev Ops/Docker 2023. 6. 16. 13:22

문제 상황 node.js 와 redis 서버를 각각의 컨테이너로 실행하는 예제에서 docker-compose 를 활용해 컨테이너를 실행하면 node.js 서버와 redis 컨테이너가 자동으로 연결이 되었다. 그런데 docker-compose 를 활용해 한번에 여러개의 컨테이너를 실행하는 것이 아닌 각각의 컨테이너를 따로 실행해도 컨테이너 간에 통신을 할 수 있지 않을까 하는 생각에 docker run 을 활용해 node.js 와 redis 의 이미지를 실행해 본 결과 node.js 컨테이너와 redis 서버 컨테이너가 연결되지 않는 문제를 마주하게 된다. - 에러 메세지는 아래와 같다. Error: Redis connection to redis-container:6379 failed - getaddrin..

article thumbnail
[Kafka] 터미널을 활용한 카프카 설치 및 테스트
카테고리 없음 2023. 5. 24. 15:04

kafka 설치하기 kafka 다운로드 - apache kafka 는 아파치 사이트를 통해서 다운로드 할 수 있다. Apache Download Mirrors Copyright © 2020 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. www.apache.org - MacOS 에서 다운로드 $ wget https://archive.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz # wget 명령어를 찾을 수 없는 경우 h..

article thumbnail
[JPA] 영속성 컨텍스트 (Persistence context)
Java 2023. 5. 16. 14:27

영속성 컨텍스트(Persistence context) 란 ? 엔티티를 영구적으로 저장하는 환경입니다. App 과 DB 사이에서 영속객체를 보관하는 가상의 DB 역할을 합니다. EntityManager 를 통해 Entity 를 저장하거나 조회하면 Entity Manager 는 영속성 컨텍스트에 Entity 를 보관하고 관리합니다. flush() 는 영속성 컨텍스트의 내용을 DB 와 동기화 하는 것을 의미합니다. 1. EntityManager.flush() 직접 호출을 통한 플러시 2. 트랜잭션의 커밋을 통한 자동 플러시 3. JPQL 쿼리 실행을 통한 자동 플러시 flush() 가 실행되어 DB와 동기화가 되었다고 해서 DB 에 데이터 변경이 반영되었다는 것은 아닙니다. public class Custom..

검색 태그