전체 글 210

Spring - 용어 정리 (파싱, 바인딩, 직렬화, 역직렬화, 맵핑)

Spring파싱 (Parsing)파싱은 텍스트나 문자열을 의미 있는 구조로 분석하는 과정예를 들어, 문법적으로 정확한 형태로 분해 해구조체나 트리와 같은 형태로 데이터를 변환하는 작파싱은 주로 텍스트 데이터를 컴퓨터가 이해할 수 있는 구조로 변환하는 데 사용됨EX)JSON 문자열을 객체로 변환하는 과정 등바인딩 ( Binding)바인딩은 프로그램에서 변수, 함수, 객체 등을 실제 값이나 메모리 주소와 연결하는 과정즉, 변수가 값이나 객체를 참조하도록 설정하는 것바인딩은 컴파일 시 또는 메서드 호출 시에 이루어짐특히 객체 지향 프로그래밍에서 중요한 개념EX)변수와 값 간의 연결함수 호출과 함수 구현이 연결되는 과정 등직렬화 (Serialization)직렬화는 객체나 데이터를 특정 형식(주로 텍스트나 바이너..

javaboiii의 Spring 2024.11.13

프로젝트 - 비동기처리와 멀티스레드(OpenAI Assistant API)

본인은 OpenAI Assistant API를 이용한 챗봇 구현에비동기 처리를 이용함 동기처리를 사용했을 때 문제점은서버가 하나의 작업을 처리하는 동안다른작업을 처리하지 못하는 상황(서버 블로킹)이발생할 수 있음ex) 사용자가 질문을 하면 응답이 올 때 까지 아무것도 못하고 기다려야됨 또한 본인이 구현한 로직에서는챗봇과의 대화는 따로 저장하지 않기 때문에대화 내용이 사라지거나 누락될 수 있는 위험이 있음 따라서 비동기 방식을 이용함 챗봇과의 대화 요청이 오면 서버로 비동기 요청을 함서버에선 API요청 -> openAI 서버 내에서 생성된 스레드 id를 응답 받음-> 해당 스레드에 메세지를 삽입-> 해당 스레드를 실행-> 실행된 스레드 내의 assistant 응답을 가져옴 위 로직이 하나의 비동기 요청에서..

프로젝트_리뷰 2024.11.11

프로젝트 - 바인딩 왜 안됨 ? (커맨드 객체)

본인은 이미지 파일 업로드 요청 시 MultipartFile 타입 DTO 변수에 커맨드 객체를 이용해 자동 바인딩을 하고 싶었음하지만 바인딩이 되지않고 415에러나 nullPointer예외가 발생함 자료를 찾아보니 아래와 같은 내용을 찾을 수 있었고또한@RequestBody와 MultipartFile과는 호환되지 않는다는 내용을 찾아볼 수 있었음 그 방법중 하나가 Spring이 제공하는 Converter 설정이였고자료를 찾아보며 어노테이션의 차이점을 알 수 있었음 @RequestBody와 @ModelAttribute@RequestBody와 @ModelAttribute 모두 클라이언트에서 보낸 데이터를JAVA에서 사용할 수 있는 오브젝트로 만들어주는 공통점이 있음하지만두 어노테이션은 세부 수행 동작에서 차..

프로젝트_리뷰 2024.11.09

API - OpenAi Assistant API (feat.JAVA) - 사용하기

WEB생성한 Assistant 사용하기현재 Assistant API는 베타버전이기 때문에요청 시 헤더에 "OpenAI-Beta : assistant=v2" 를 붙여줘야됨 1. Assistant 생성2. Thread 생성  // 스레드 생성 요청public static SimSimeDTO getThread(SimSimeDTO simsimeDTO, JSONParser parser) { System.out.println("KosimeFunction.java getThread() 시작"); HttpClient client = HttpClient.newHttpClient(); // 스레드 생성 요청 본문 (assistant ID 포함) String threadRequestBody = "{}"..

javaboiii의 Web 2024.11.06

API - OpenAi Assistant API (feat.JAVA) - 사전 준비

WEBAssistant API란OpenAI의 Assistant API는 애플리케이션 내에 AI기반 어시스턴트를 만들 수 있는 API 도구로사용자가 질문을 던지거나, 특정 작업을 요청할 때, 자연어 처리 기술을 기반으로답변을 제공하는 API임 Assistant API를 이용해 사용자의 요구사항을 이해하고 상호작용적으로 참여하는AI Assistant를 구축할 수 있으며어시스턴트를 특정 목적에 맞게 맞춤 설정하고 해당 용도에 필요한 관련 데이터를 제공할 수 있음예를 들어 날씨 관려 정보를 제공하는 AI 날씨 assistant나 여행 관련 질문에답변 하는 AI 여행 assistant 등이 있음 본인은 현재 진행중인 프로젝트에 AI 챗봇 용도로 API를 활용함 Assistant 동작 흐름 Assistant 생성 ..

javaboiii의 Web 2024.11.05

Spring - 성능 개선(MyBatis맛)

Spring마이바티스(MyBatis)는 XML이나 Annotation을 통해 SQL문을 작성하고객체들을 연결시키는 프레임워크임 XML 방식은 SQL매퍼를 XML파일에 작성하며 , 등의 요소로 작성함어노테이션 방식은 @Select와 같은 자바 어노테이션을 활용해 SQL 매퍼를 작성함 MyBatis의 장점자바 코드가 짧아짐 >> 가독성이 좋음SQL 구문을 전부 .xml로 분리해서 관리    >> 결합도가 낮아짐    >> 응집도 높아짐    >> 유지보수 용이SQL 구문에 변경사항이 발생했을 때 과거에는 .java가 변경 -> 재컴파일지금은 xml이 변경됨 -> 컴파일 xxx MyBatis의 단점복잡한 매핑    개발자가 직접 객체와 관계 매핑을 처리해야됨반복적인 코드    CRUD 작업을 자주 수행 시, ..

javaboiii의 Spring 2024.11.04

[OpenAI API]Error -openai api You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.

OpenAI API를 이용해 심심이 서비스 진행 중API 요청시 응답을 제목처럼 받음 위 오류는현재 사용 중인 OpenAI API 요금제의 할당량을 초과했다는 오류 메시지임https://platform.openai.com/docs/guides/error-codes/api-errors.',해결방법 OpenAI사에서 제시하고 있는 솔류션은 유료계정으로 전환하고신용카드 또는 직불카드를 등록한 다음, 새로운 API키 생성 새로운 계정을 만들어 해결한 사람도 있고, 신용카드 등을 새롭게 등록하여 해결한 사례도 있음 본인은 New API-KEY를 생성 후 API request를 성공

Git Error - fatal: refusing to merge unrelated histories

원격 저장소에 저장한 파일들을 로컬 저장소로 가져올 때 발생하는 에러[에러내용] fatal: refusing to merge unrelated histories[발생이유] 로컬 저장소와 원격 저장소 간 서로 다른 히스토리를 갖고 있을 때 발생함1) 빈 저장소에서 git init 명령어를 사용하여 새로운 저장소를 만들었을 때2) 로컬 저장소를 초기화하고 리모트 저장소를 추가한 후에 리모트 저장소에서 변경사항을 가져올 때[해결방안] git pull origin main --allow-unrelated-histories* 이 작업을 수행하기 전에 현재의 변경 내용을 백업

Git - 기초2

GIT복습 Git과 Git-Hub Git 분산형 버전관리 시스템 커멘드라인 도구로 git 모든 기능을 사용할 수 있으며 GUI 클라이언트 제공되고 있음 GitHub Git기반 웹 호스팅 플랫폼 git 레포지토리 호스팅하고 웹 인터페이스를 통해 프로젝트를 관리하고 협업할 수 있게함 => Git은 소스코드의 버전관리를 위한 분산형 버전관리 시스템 GitHub는 Git 레포지토리를 호스팅하고 협업을 지원하는 웹 플랫폼 Git 구조 3가지 영역으로 나뉘며 각 영역에 순차적으로 파일을 올려줘야함 1) Working Directory(작업폴더, 깃 저장소) 설정하게 되면 해당 폴더에 .git 폴더가 생성됨 - 파일의 상태 git의 관리대상이 아님 관리대상이 아닌 파일을 untracked 상태 2) Staging A..

javaboiii의 Git 2024.10.30

Git - 기초1

GIT버전(version)프로그램을 수정하여 개선된 것이다 정식 버전은 1부터 시작하며, 수정이 이루어지면 버전 숫자가 늘어난다 버전번호소프트웨어 또는 프로젝트의 업데이트 레벨을 식별하는데 사용됨 메이저 버전번호.마이너 버전번호.패치 버전번호 버전 관리(Version Control) 버전 별로 기록하고 관리하는 것을 말한다 버전을 관리하며 백업이나 복구가 용이하며, 언제 누가 해당 버전을 만들고 수정했는지 알기 쉽다 로컬 버전 관리 로컬(내 컴퓨터)에서 버전을 관리하는 방식이다 작업하는 내용물을 현재 시점에서 복사해두고 압축하여 관리한다 간단하게 누구나 할 수 있으므로 자주 사용하지만 실수로 지우거나 잘못 수정하는 경우가 많다 버전 관리 시스템(Version Control System) 파일 변화 내용을..

javaboiii의 Git 2024.10.29