에러 원인 요약 : 요청을 받을 때, 요청 객체에 디폴트 생성자가 없어서 발생하는 문제 분명 요청을 보낼 때는 문제가 없는데, 서버에서 받을 때 아래와 같은 에러가 발생하는 경우가 있다. { "timestamp": "2023-04-26T08:26:19.146+00:00", "status": 400, "error": "Bad Request", "path": "/v1/message" } 대충 이렇게 생긴 객체가 하나 있다. 요청 객체로 쓰기에 별 문제가 없어보인다. @AllArgsConstructor @Getter @Setter public class RequestMessageDto { @NotNull @NotEmpty private String message; } 하지만 이 요청 객체도 위 에러를 발생시킨..
Chat API란? https://platform.openai.com/docs/api-reference/chat 정확히는 OPEN API에서 제공하는 GPT 모델과 chat을 할 수 있게끔 요청하는 API다. 얼마전만해도 completion만을 이용해서 GPT에게 질문하고 결과를 받아올 수 있었는데, 조금 더 다양한 기능을 제공하는 API가 생겼다. 기존에 제공하던 completion보다 더 많은 파라미터를 전달 받고, 조금 더 다양한 데이터를 response에 담아준다. 이전에는 GPT와 메시지를 주고 받는 API로는 Completion만 제공했었다. 그런데 Completion API는 간단한 질답은 가능하지만, 바로 직전의 대화도 기억하지 못한다는 단점이 있었다. 웹에서 제공하는 ChatGPT는 이전..
https://medium.com/javarevisited/basic-memory-saving-techniques-for-java-programming-6677a7237a69 위 글을 번역하면서, 조금씩 내용을 추가했다. 1. 프리미티브 타입(primitive type)을 사용하자 Integer x = 42; => int x = 42; Double d = 3.14; => double d = 3.14; Boolean b = true; => boolean b = true; Integer, Double, Boolean과 같은 프리미티프 타입을 Wrapping한 Object들을 사용하면 불필요한 오버헤드를 만들 수 있으니, 사용을 피하는게 좋다. 2. 스트링을 결합할 때 StringBuilder를 사용하자 St..
들어가기 전에.. intellij 내에서 datagrip을 사용하려면 Ultimate 버전이어야 합니다. community 버전에서는 사용할 수 없어요.. DataGrip이 그렇게 좋다던데...? IntelliJ 학생 계정을 사용하고 있다고하니, 팀원이 지나가면서 이야기해줬다. 그래서 한번 써보려고 설정방법을 알아봤다. 우선 JetBrains에서는 DataGrip을 아래와 같이 소개했다. DataGrip은 개발자를 위한 데이터베이스 관리 환경입니다 . 데이터베이스를 쿼리, 생성 및 관리하도록 설계되었습니다. 데이터베이스는 로컬, 서버 또는 클라우드에서 작동할 수 있습니다. MySQL, PostgreSQL, Microsoft SQL Server, Oracle 등을 지원합니다. 평소에는 Dbeaver를 주로..
갑자기 DB 접속이 안돼요.. DB 접속이 갑자기 안되서, MySQL을 띄워둔 AWS EC2에 접속해보니 MySQL Docker가 내려가 있었다. 원인은 알 수가 없어서 일단 Docker를 재시작했다. 그런데 기존에 만들어놓은 테이블이 날아가서 다시 만들어주려고 하니까 아래와 같은 에러가 발생했다. 분명 루트로 접속했는데, 테이블 생성부터 아무것도 안된다. 그냥 권한이 없다는 에러메시지만 반복된다. 이럴 때는 권한을 다시 지정해주면 된다. 일단 사용자 확인. mysql> select user, host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | ..
DB가 필요해... 이직을 하기 전에는, 사내 DB를 개인용 프로젝트에 써먹었었다. 이직이 결정된 이후에 인프라를 만지작 거리려니까 DB가 문제가 됐다. 어떻게 써야할까 고민하다가 그냥 인프라 구축을 위해 띄워놓은 EC2에 MySQL 서버를 띄우기로 했다. 아쉬운 점은, 난 그동안 오라클만 써왔다는 것이다. 하지만 오라클은 유료라 과감히 버린다. (Oracle 이미지는 Docker Hub에서도 내려버렸다...) AWS EC2 / Docker 설정 및 설치 멈춰버린 인프라 관련 글에 잘 써놨다. MySQL Docker 설치 Docker Hub에 저장된 공식 이미지를 사용하면, 별도의 설치파일 없이 편하게 사용할 수 있다. docker pull mysql:latest 설치 후 아래와 같이 뜨면 정상적으로 설..
RestTemplate이란? 이 전에 썼던 글을 참고 다른 매서드에서도 반복적으로 RestTemplate을 사용한다면? RestTemplate 예시를 보면 아래와 같이 매번 객체를 새로 생성해서 사용한다. RestTemplate restTemplate = new RestTemplate(); String url = "http://example.com/users/{id}"; Map params = new HashMap(); params.put("id", "123"); User user = restTemplate.getForObject(url, User.class, params); 이렇게 사용하게 되면 모든 매서드에서 new를 써서 RestTemplate 객체를 생성해서 사용해야 한다. 트래픽이 작은 작업들에..
이직 전 마지막 작업.. 이 작업이 이직 전 마지막 작업이다. 슬프게도 성공적으로 마무리된 것을 보고 나오진 못했다. Harbor 앞에 별도의 reverse proxy를 두고 내부적으로 redirect해서 사용하는 방식으로 인프라를 구축하는 건데 문제가 생겼기 때문이다. Harbor의 reverse proxy Harbor는 reverse proxy가 nginx를 사용한다. nginx 쪽에서 외부 연결을 받아주고 내부의 component들에게 전달한다. 문제는 사내 서버는 Apache Httpd를 별도의 reverse proxy를 사용하고 있다는 점이다. 그래서 아래와 같은 구조로 동작하도록 구성해야했다. Apache Httpd에서 Redirect 설정을 하고 nginx에서 다시 뿌리도록 구성해야했다. 이..
- Total
- Today
- Yesterday
- Log
- AWS EC2
- springboot
- OpenFeign
- 오블완
- openAI API
- 티스토리챌린지
- docker
- JWT
- terraform
- Spring
- 람다
- MySQL
- java
- AWS
- serverless
- CloudFront
- 후쿠오카
- EKS
- OpenAI
- ChatGPT
- elasticsearch
- GIT
- Kotlin
- cache
- S3
- 스프링부트
- Elastic cloud
- AOP
- lambda
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |