과제 내용 저는 이번 포스트에 실제 상용화된 챗봇 서비스 2가지를 들고 왔습니다. 바로 카카오뱅크와 OpenAI의 사례입니다. 이 둘을 보고 저희가 만들어야 할 챗봇의 방향성을 결정할 수 있다 생각했기 때문입니다. 카카오 뱅크 상담 챗봇 카카오뱅크의 상담챗봇은 카카오의 봇빌더를 기반으로 출시된 인공지능 챗봇입니다. 이 챗봇은 고객이 편리하게 이용할 수 있도록 모바일 채팅을 통해 24시간 실시간으로 상담 서비스를 제공하고 있습니다. 금융 서비스의 특성상 일상생활과 쓰이는 용어가 상이하여 봇이 사용자의 질문 의도를 파악하기가 쉽지 않는데요, 그렇기에 카카오뱅크는 봇빌더만 사용하지 않고 카카오의 인공지능 기술팀과 협업하여 ML기술을 도입해 자연스러운 챗봇 대화가 가능하도록 만들었습니다. 카카오뱅크 상담챗봇은 ..
웹 서비스가 다룰 데이터의 양은 방대하다. 이러한 데이터를 웹서버에서 처리하는 것은 굉장히 부담스러운 일이기에 이러한 데이터에 관한 보관 및 처리는 데이터베이스 서버에 위임한다. 그렇기에 웹서버는 데이터베이스 서버와 끊임없이 소통해야 한다. 이러한 소통은 일반적으로 데이터베이스 언어인 SQL문을 이용하는데 웹서버를 구축하면서 따로 또 데이터베이스 언어를 배우는 것은 어려운 일이다. 그렇기에 SQL문을 자동으로 생성해주어 웹서버의 문법만으로도 데이터베이스와 소통할 수 있도록 하는 기술이 있는데 이를 ORM이라고 한다. ORM을 이용할 경우 프로그래머는 하나의 문법만으로 끊김없이 코드를 작성할 수 있다는 장점이 있다. ORM - 다음은 question이라는 테이블에 데이터를 새로 삽입하는 쿼리이다. inse..
우리는 보통 웹브라우저를 통해 하루에도 수백번씩 서버에 요청을 보내고 있다. 예를 들어 우리가 https://www.naver.com/ 로 요청을 보냈을 때 네이버 서버에서 네이버 홈페이지를 보내주는 것처럼 말이다. 그렇다면 스프링부트 서버에서 URL에 따라 다른 결과값을 전송해주는 역할은 누가 할까? 바로 컨트롤러이다. 페이지 요청이 들어왔을 때 스프링부트는 가장 먼저 해당 페이지에 대한 URL매핑이 있는 지 컨트롤러에 확인한다. 컨트롤러를 이용해 템플릿 파일 리턴하기 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframew..
src/main/java 디렉토리 - 이 디렉토리 안에서 일반적으로 우리가 스프링 부트 프로젝트를 진행함에 있어 사용될 주요 자바파일들을 작성해준다. - 컨트롤러, 폼, DTO, 엔티티, 서비스 파일등을 작성해준다. Application.java - 이 프로젝트에서 생성한 애플리케이션의 시작을 담당하는 파일이다. 프로젝트를 생성하면 src/main/java 디렉토리 내에 자동으로 생성된다. - 이 파일의 이름은 " + Application.java"이다. 예를 들어, Myboard라는 프로젝트에서는 MyboardApplication.java이다. package com.mysite.myboard; import org.springframework.boot.SpringApplication; import org..
사용자로부터 입력받은 데이터를 우리가 의도한 대로 사용하기 위해서는 적절한 변환이 필요하다. 특히 웹개발에서는 요청된 데이터를 메인모델에 맞게 변환하는 과정이 필수적이다. Spring에서는 WebDataBinder를 통해 사용자로부터 입력받은 데이터를 변환하고 검증할 수 있다. PropertyEditor을 이용한 변환 메서드 - PropertyEditor를 이용하여 데이터를 변환할 수 있다. 이는 양방향 타입 변환을 제공한다. - 보통 컨트롤러내에 변환 메서드를 만들어 데이터를 변환시킨다. @InitBinder public void toDate(WebDataBinder binder) { SimpleDateFromat df = new SimpleDateFormat( [패턴] ); // 예: "yyyy-mm..
@ExceptionHandler - @ExceptionHandler( { [처리할 예외1].class, [처리할 예외2].class ... } ) 어노테이션을 이용하여 예외처리 메서드를 작성해준다. @ExceptionHandler( { [처리할 예외1].class, [처리할 예외2].class ... } ) // 여러개는 {}로 묶어줌 public String catcher( Exception ex, Model m ) { m.addAttribute("ex", ex); return "error"; } - 이때 이 예외에 대한 정보를 모델에 저장해주어야 하는 번거로움이 있는데 JSP의 페이지 속성에 isErrorPage 속성을 부여하여 모델 저장코드를 생략시킬 수 있다. ${ex.message} // Bef..
JSP란? JSP(JavaServer Pages)는 자바를 기반으로 하는 서버 사이드 스크립트 언어입니다. HTML 코드 안에 자바 코드를 삽입하는 방식으로 웹 페이지를 동적으로 생성하게 해줍니다. 서버에서 실행되며, 결과적으로 클라이언트에게는 HTML을 전송하게 됩니다. JSP는 Servlet 기술을 기반으로 하며, 사실상 Servlet의 특별한 형태라고 할 수 있습니다. Servlet은 자바 코드 내에 HTML을 삽입하는 반면, JSP는 HTML 코드 안에 자바 코드를 삽입합니다. 이는 웹 개발자들에게 더 친숙하며 직관적인 개발 방식을 제공합니다. JSP의 작동 원리 클라이언트가 JSP 페이지를 요청합니다. JSP 엔진이 이 요청을 받아들입니다. 만약 이 JSP 페이지가 최초 요청이라면, JSP 엔진..
안녕하세요, 여러분. 이전 포스트에서는 쿠키에 대해 자세히 알아봤습니다. 오늘은 그와 밀접하게 연관된 또 다른 개념, 세션(Session)에 대해 알아보려고 합니다. 세션도 웹 개발에서 중요한 역할을 하는 컴포넌트로, 사용자마다 개별적으로 상태 정보를 유지하기 위한 도구입니다. 1. 세션(Session)이란 무엇인가? 세션은 서버에서 사용자의 정보를 저장하는 기술입니다. HTTP 프로토콜은 본질적으로 상태를 유지하지 않는(stateless) 프로토콜이기 때문에, 사용자가 페이지를 이동하거나 재방문할 때마다 기존의 상태 정보가 유지되지 않습니다. 세션은 이런 상태 유지 문제를 해결하기 위해 도입된 기술입니다. 기본적으로 세션은 서버에서 제공하는 저장소입니다. 쿠키는 브라우저에 저장되어있고, 세션은 서버에 ..