
List의 element를 삭제하는데 위와 같은 에러가 발생했다. 코드를 보면 별 내용은 없다. 리스트의 첫 번째 요소를 삭제하는 코드이다. List lines = Arrays.asList(str.split("\n")); lines.remove(1); 에러가 발생하는 이유는 Arrays.asList()로 생성된 리스트는 고정 크기 리스트이기 때문이다. 고정 크기 리스트이기 때문에, remove도 안되지만 add도 안된다. 해결법은 간단하다. 가변 크기의 리스트로 변환하면 된다. ArrayList는 가변크기의 리스트니까 아래와 같이 ArrayList로 재선언해주면 정상적으로 사용가능하다. List lines = new ArrayList(Arrays.asList(str.split("\n"))); lines...

문제의 발생 새로운 프로젝트를 시작하면서, 로그를 다시 붙여야할 일이 생겼다. 기존 프로젝트에 로그를 개발하면서 했던 파이프라인을 그대로 가져와서 붙여넣었는데, POST 요청에서 이상하게 동작하지 않았다. 원인을 분석하면서 생긴 일을 정리해보려고 한다. 우선 현재 시스템에서 로그를 어떻게 찍는지 간단히 정리해보고 가자. 1. Controller에서 API 요청을 받아서 서비스로직까지 처리한 후 return 2. 이 return 할 때 AOP AfterReturning을 통해 캐치 3. 이때 발생하는 return object와 요청 정보를 담고 있는 HttpServletRequest을 통해서 로그를 생성 이 과정 중 3번에서 문제가 발생했다. 사실 스프링부트에서 POST 요청의 RequestBody를 가져..

작은 프로젝트로 텍스트 기반 검색 기능을 구현할 일이 생겼다. 처음에는 너무 막연했는데 Elasticsearch에서 텍스트 유사도 검색이라는 기능을 제공하는 것을 알게되었다. https://www.elastic.co/kr/blog/text-similarity-search-with-vectors-in-elasticsearch 벡터 필드를 사용한 Elasticsearch의 텍스트 유사도 검색 Elasticsearch 7.3 릴리즈에서는 벡터를 사용하여 문서 점수를 매기는 기능을 제공합니다. 이 게시물에서는 텍스트 임베딩과 벡터 필드를 사용하여 유사도를 검색하는 방법을 살펴봅니다. www.elastic.co 이 문서를 기반으로 Elasticseach cloud + Springboot를 이용해 검색 기능을 구현..

GitHub의 Copilot이 코드를 자동생성해주듯이 같이 DBeaver에서도 쿼리를 자동생성해주는 툴이 있다고 한다. 정확히는 GPT 플러그인을 따로 설치해야되는데 일단은 무료니까 한번 사용해봤다. DBeaver에서는 아래와 같이 설명하고 있다. DBeaver에서는 OpenAI(ChatGPT, 더 정확하게는 GPT-3 언어 모델)와의 통합해 인간 언어를 사용하여 작업 중인 SQL 쿼리를 구축할 수 있습니다. DBeaver에서는 해당 기능의 이름을 AI Smart Assistance라고 부르고 있었다. 바로 사용해보자. 1. Help(도움말) > Install New Software > AI 검색 > 체크 후 설치 > 재시작 2. Windows(윈도우) > Preferences(설정) > 편집기 > AI..

이 문제는 아마도 모든 AWS JAVA SDK 1.0 에서 일어나는 문제일테니 주의가 필요하다.. S3 SDK를 처음 서버에 적용할 때도 발생했던 문제였는데, SQS 적용 과정에서도 똑같은 문제를 겪었다. 분명 로컬에서 테스트할 때는 잘 동작하는게, dev서버만 올라가면 제대로 동작하지 않는 문제가 있었다. 서버가 배포되는 과정에서 아래와 같은 WARNING을 띄웠다. { "@timestamp": "2023-08-04T09:26:57.140Z", "message": "Ignoring queue with name '[큐이름]': The queue does not exist or no access to perform action sqs:GetQueueUrl.; nested exception is com.am..

로컬 호스트 서버에서 댓글 서비스의 웹훅을 사용해야되는데 문제가 생겼다. 웹훅을 사용하기 위해 서버의 URL을 입력해야하는 상황이었는데, localhost를 입력할 수는 없으니 말이다. 그래서 중간다리로 AWS SQS를 써보기로 했다. 파이프라인은 댓글 서버 웹훅 -> AWS Lambda -> AWS SQS -> local(SQS Listener) 구조로 잡고 구현을 시작했다. 들어가기전에 SQS가 뭔지 짚고 넘어가자. Amazon Simple Queue Service (Amazon SQS)란? Amazon Simple Queue Service (Amazon SQS)는 분산 소프트웨어 시스템 및 구성 요소를 통합 및 분리할 수 있는 안전하고 안정적이며 사용 가능한 호스팅 대기열을 제공합니다. Amazon..

계속해서 쓸 곳이 생길 것 같길래 따로 분리해서 포스팅한다. 작업 환경은 Windwos 10에서 진행했다. AWS 외부에서 AWS 서비스에 접근하려면 액세스 키가 필요하다. 액세스 키 생성을 위해 AWS 로그인 후 우측 상단의 본인 계정을 클릭 한 후 보안 자격 증명을 클릭한다. 보안 자격 증명 클릭 그러면 내 보안 자격 증명 페이지에 들어와지는데 아래로 쭉 내리다보면 엑세스 키 탭이 있다. 액세스 키 만들기 버튼을 클릭한다. CLI를 사용할 것이기 CLI 선택후 다음 버튼 클릭 비밀 액세스 키를 표시한다음에 잘 저장해 두어야 한다. 이 페이지를 벗어나면 비밀 액세스 키를 다시는 볼 수 없으니 다운로드를 받아놓거나 복사를 잘 해놓자. 그리고 User > [pc 이름] > .aws 폴더 아래에 creden..

이전 글에서 자세히 다루지 못 했던 Redis Configuration을 뜯어보려고 한다. @Configuration public class RedisConfig { @Value("${spring.data.redis.host}") private String host; @Value("${spring.data.redis.port}") private int port; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration(); redisConfiguration.setHostName(host); redisCo..
- Total
- Today
- Yesterday
- cache
- 후쿠오카
- GIT
- serverless
- 스프링부트
- springboot
- EKS
- lambda
- CORS
- Log
- Kotlin
- CloudFront
- 람다
- S3
- ecs
- Spring
- AWS
- AWS EC2
- elasticsearch
- docker
- terraform
- Redis
- JWT
- AOP
- 인프런
- OpenAI
- ChatGPT
- 오블완
- java
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |