Go로 실시간 채팅앱 만들기! 🚀💬
안녕하세요, 여러분! 오늘은 정말 핫한 주제로 찾아왔어요. 바로 Go 언어를 사용해서 실시간 채팅 애플리케이션을 개발하는 방법에 대해 알아볼 거예요. 😎 이거 완전 꿀잼 아니겠어요? ㅋㅋㅋ
요즘 채팅 앱이 대세잖아요? 카톡, 라인, 슬랙... 어디서든 채팅으로 소통하는 시대죠. 그래서 오늘은 우리가 직접 채팅 앱을 만들어볼 거예요! 그것도 Go라는 쿨한 언어로요. 👍
Go는 구글에서 만든 프로그래밍 언어인데, 동시성 처리가 끝내주게 좋아요. 실시간 채팅 앱 같은 거 만들 때 딱이죠!
자, 그럼 이제부터 Go로 채팅 앱을 만드는 여정을 함께 떠나볼까요? 준비되셨나요? 고고씽~ 🏃♂️💨
1. Go 언어, 뭐가 그렇게 특별해? 🤔
먼저 Go 언어에 대해 알아볼까요? Go는 2009년에 구글에서 만든 언어예요. 왜 만들었냐고요? 기존 언어들의 단점을 보완하고 장점은 살리려고요!
Go 언어의 특징:
- 심플하고 읽기 쉬운 문법 👀
- 빠른 컴파일 속도 ⚡
- 강력한 동시성 지원 🔄
- 효율적인 가비지 컬렉션 🗑️
- 정적 타입 언어지만 동적 언어처럼 사용 가능 🔢
이 중에서 우리가 주목할 건 바로 '강력한 동시성 지원'이에요. 채팅 앱에서 엄청 중요하거든요! 왜 중요한지는 나중에 자세히 설명할게요. 😉
Go는 '고루틴(goroutine)'이라는 걸로 동시성을 처리해요. 이게 뭐냐고요? 쉽게 말해서 여러 작업을 동시에 처리할 수 있게 해주는 마법 같은 기능이에요! ✨
예를 들어볼까요? 채팅방에 100명이 있다고 해봐요. 각자 메시지를 보내고 받고 하잖아요? 이걸 Go의 고루틴으로 처리하면 100명이 동시에 채팅해도 아주 부드럽게 돌아간다는 거죠. 완전 개꿀 아니에요? ㅋㅋㅋ
위 그림을 보세요. 중앙의 큰 원이 Go 런타임이고, 주변의 작은 원들이 각각의 고루틴이에요. 이 고루틴들이 동시에 돌아가면서 여러 작업을 처리하는 거죠. 멋지지 않나요? 😍
그런데 말이에요, Go로 채팅 앱을 만드는 게 어렵지 않을까 걱정되시나요? 걱정 마세요! Go는 초보자도 쉽게 배울 수 있게 설계됐거든요. 문법도 간단하고, 표준 라이브러리도 강력해서 금방 익힐 수 있어요.
사실, Go로 채팅 앱 만드는 거, 생각보다 훨씬 재밌어요! 마치 레고 블록 조립하는 것처럼요. 🧱
그리고 요즘 IT 업계에서 Go 개발자 수요가 늘고 있다는 것도 아시나요? 재능넷 같은 플랫폼에서도 Go 관련 재능 거래가 활발하대요. 한 번 배워두면 나중에 큰 도움이 될 거예요!
자, 이제 Go에 대해 조금은 알게 되셨죠? 다음 섹션에서는 본격적으로 채팅 앱 개발을 시작해볼게요. 기대되지 않나요? 저는 벌써 두근두근하네요! 💓
2. 개발 환경 세팅하기 🛠️
자, 이제 본격적으로 채팅 앱을 만들어볼 건데요. 그 전에 먼저 개발 환경을 세팅해야겠죠? 걱정 마세요, 어렵지 않아요! 차근차근 따라오세요. 👣
개발 환경 세팅 순서:
- Go 설치하기
- IDE(통합 개발 환경) 선택하기
- 프로젝트 폴더 만들기
- 필요한 패키지 설치하기
1. Go 설치하기 🔧
먼저 Go를 설치해야겠죠? Go 공식 웹사이트(https://golang.org)에 가서 자신의 운영체제에 맞는 버전을 다운로드하세요.
설치가 끝나면 터미널(맥OS, 리눅스) 또는 명령 프롬프트(윈도우)를 열고 다음 명령어를 입력해보세요:
go version
만약 Go가 제대로 설치됐다면, 설치된 Go의 버전 정보가 나올 거예요. 짜잔~ 🎉
2. IDE 선택하기 💻
IDE는 코드를 편집하고 디버깅하는 데 사용하는 프로그램이에요. Go 개발에 많이 사용되는 IDE로는 Visual Studio Code, GoLand, Sublime Text 등이 있어요.
저는 개인적으로 Visual Studio Code를 추천해요. 무료인데다가 Go 개발을 위한 플러그인도 잘 되어 있거든요. 여러분의 취향에 맞는 걸로 골라보세요!
3. 프로젝트 폴더 만들기 📁
이제 우리 채팅 앱을 만들 폴더를 만들어볼까요? 터미널에서 다음 명령어를 실행해보세요:
mkdir go-chat-app
cd go-chat-app
이렇게 하면 'go-chat-app'이라는 폴더가 만들어지고 그 폴더로 이동하게 돼요.
4. 필요한 패키지 설치하기 📦
Go에는 정말 유용한 표준 라이브러리들이 많아요. 하지만 우리는 추가로 몇 가지 패키지를 더 설치할 거예요. 채팅 앱을 더 쉽고 효율적으로 만들기 위해서죠!
다음 명령어로 필요한 패키지들을 설치해보세요:
go get github.com/gorilla/websocket
go get github.com/gin-gonic/gin
여기서 'gorilla/websocket'은 웹소켓 연결을 쉽게 만들어주는 패키지고, 'gin-gonic/gin'은 웹 프레임워크예요. 이 두 개만 있으면 우리 채팅 앱의 뼈대를 만들 수 있어요!
패키지 설치가 끝났다면, 이제 정말 개발 준비 완료! 🎊
위 그림을 보세요. 이게 바로 우리가 지금 만든 Go 개발 환경이에요! Go 설치부터 시작해서 IDE 선택, 프로젝트 폴더 생성, 그리고 필요한 패키지 설치까지. 이 모든 게 합쳐져서 우리의 멋진 개발 환경을 만들어냈죠. 👏
여기까지 따라오느라 고생 많으셨어요! 이제 진짜 코딩을 시작할 준비가 됐어요. 어때요, 벌써 프로 개발자가 된 것 같지 않나요? ㅋㅋㅋ
다음 섹션에서는 드디어 채팅 앱의 서버 부분을 만들어볼 거예요. 기대되시죠? 저도 너무 신나요! 🤩 Go로 코딩하는 게 얼마나 재밌는지 곧 알게 될 거예요!
그리고 혹시 개발 환경 세팅하다가 막히는 부분이 있으면 언제든 재능넷에서 도움을 받을 수 있다는 거 알고 계셨나요? 거기엔 Go 전문가들이 많이 있대요. 참고로 알아두세요! 😉
자, 이제 정말 채팅 앱 개발을 시작해볼까요? 다음 섹션에서 만나요! 👋
3. 채팅 서버 만들기 🖥️
드디어 진짜 코딩을 시작할 시간이에요! 😆 우리가 만들 채팅 앱의 서버 부분을 구현해볼 거예요. 긴장되나요? 걱정 마세요, 제가 step by step으로 설명해드릴게요!
채팅 서버 구현 단계:
- 기본 서버 구조 만들기
- 웹소켓 연결 처리하기
- 클라이언트 관리하기
- 메시지 브로드캐스팅 구현하기
1. 기본 서버 구조 만들기 🏗️
먼저 'main.go' 파일을 만들고 다음 코드를 입력해보세요:
package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
CheckOrigin: func(r *http.Request) bool {
return true // 보안을 위해 나중에 수정해야 해요!
},
}
func main() {
router := gin.Default()
router.GET("/ws", handleConnections)
log.Println("서버 시작! 포트 8080에서 실행 중...")
router.Run(":8080")
}
func handleConnections(c *gin.Context) {
// 여기에 웹소켓 연결 처리 코드가 들어갈 거예요.
}
우와, 벌써 서버의 기본 구조가 만들어졌어요! 👏 이 코드가 하는 일을 간단히 설명해드릴게요:
- 필요한 패키지들을 import 해요.
- websocket.Upgrader를 설정해요. 이건 HTTP 연결을 웹소켓 연결로 업그레이드하는 데 사용돼요.
- main 함수에서 Gin 라우터를 설정하고 서버를 시작해요.
- "/ws" 경로로 오는 요청을 handleConnections 함수로 처리하도록 설정해요.
이렇게 하면 기본적인 서버 구조가 완성돼요! 근데 아직 채팅 기능은 없죠? ㅋㅋ 걱정 마세요, 이제부터 하나씩 추가해볼 거예요.
2. 웹소켓 연결 처리하기 🔌
이제 handleConnections 함수를 채워볼 거예요. 이 함수는 클라이언트의 웹소켓 연결 요청을 처리해요.
func handleConnections(c *gin.Context) {
ws, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
log.Fatal(err)
}
defer ws.Close()
for {
messageType, p, err := ws.ReadMessage()
if err != nil {
log.Println(err)
return
}
log.Printf("받은 메시지: %s", p)
if err := ws.WriteMessage(messageType, p); err != nil {
log.Println(err)
return
}
}
}
이 코드는 다음과 같은 일을 해요:
- HTTP 연결을 웹소켓 연결로 업그레이드해요.
- 무한 루프를 돌면서 클라이언트로부터 메시지를 받아요.
- 받은 메시지를 그대로 다시 클라이언트에게 보내요 (에코 기능).
이제 기본적인 웹소켓 연결이 가능해졌어요! 🎉 근데 이대로는 1:1 채팅밖에 안 되겠죠? 우리는 여러 명이 참여하는 채팅방을 만들고 싶으니까, 다음 단계로 넘어가볼게요!
3. 클라이언트 관리하기 👥
여러 클라이언트를 관리하려면 연결된 모든 클라이언트의 정보를 저장해야 해요. 이를 위해 전역 변수와 구조체를 사용할 거예요.
main.go 파일의 상단에 다음 코드를 추가해주세요:
var clients = make(map[*websocket.Conn]bool)
var broadcast = make(chan Message)
type Message struct {
Username string `json:"username"`
Message string `json:"message"`
}
이 코드는 다음과 같은 역할을 해요:
- clients: 연결된 모든 클라이언트를 저장하는 맵이에요.
- broadcast: 모든 클라이언트에게 메시지를 보내기 위한 채널이에요.
- Message: 주고받을 메시지의 구조를 정의해요.
4. 메시지 브로드캐스팅 구현하기 📢
이제 모든 클라이언트에게 메시지를 보내는 기능을 구현해볼게요. main 함수에 다음 코드를 추가해주세요:
func main() {
// ... (기존 코드)
go handleMessages()
// ... (기존 코드)
}
func handleMessages() {
for {
msg := <-broadcast
for client := range clients {
err := client.WriteJSON(msg)
if err != nil {
log.Printf("error: %v", err)
client.Close()
delete(clients, client)
}
}
}
}
그리고 handleConnections 함수를 다음과 같이 수정해주세요:
func handleConnections(c *gin.Context) {
ws, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
log.Fatal(err)
}
defer ws.Close()
clients[ws] = true
for {
var msg Message
err := ws.ReadJSON(&msg)
if err != nil {
log.Printf("error: %v", err)
delete(clients, ws)
break
}
broadcast <- msg
}
}
우와! 이제 우리의 채팅 서버가 완성됐어요! 🎉🎉🎉 이 서버는 다음과 같이 동작해요:
- 새로운 클라이언트가 연결되면 clients 맵에 추가돼요.
- 클라이언트가 메시지를 보내면 broadcast 채널로 전송돼요.
- handleMessages 함수가 broadcast 채널에서 메시지를 받아 모든 클라이언트에게 전송해요.
위 그림을 보세요. 이게 바로 우리가 만든 채팅 서버의 구조예요! 서버가 중앙에 있고, 여러 클라이언트가 연결되어 있죠. 멋지지 않나요? 😎
축하해요! 여러분은 방금 Go로 실시간 채팅 서버를 만들었어요! 🎊🎊🎊
어때요? 생각보다 어렵지 않죠? Go의 동시성 기능 덕분에 여러 클라이언트의 연결을 효율적으로 관리할 수 있었어요. 이게 바로 Go의 매력이에요!
다음 섹션에서는 이 서버와 통신할 수 있는 간단한 웹 클라이언트를 만들어볼 거예요. 그러면 우리의 채팅 앱이 완성될 거예요! 😃
그리고 혹시 Go로 더 복잡한 프로젝트를 해보고 싶다면, 재능넷에서 관련 강의나 멘토링을 찾아보는 것도 좋은 방법이에요. 실제 프로젝트 경험이 있는 전문가들에게 배우면 정말 많은 도움이 될 거예요!
자, 이제 클라이언트 부분을 만들어볼 차례네요! 정말 흥미진진하죠? 😃 Let's go!
서버는 다 만들었으니, 이제 클라이언트를 만들 차례예요! 우리는 간단한 웹 클라이언트를 만들 거예요. HTML, CSS, JavaScript를 사용할 건데요, 걱정 마세요. 아주 기본적인 수준으로만 사용할 거예요! 😉 클라이언트 구현 단계: 먼저 'index.html' 파일을 만들고 다음 코드를 입력해주세요: 이 HTML 구조는 채팅 메시지를 표시할 영역, 사용자 이름 입력 필드, 메시지 입력 필드, 그리고 전송 버튼을 포함하고 있어요. 심플하지만 효과적이죠? 👍 이제 'style.css' 파일을 만들고 다음 코드를 입력해주세요: 우와! 이제 우리 채팅앱이 훨씬 예뻐졌어요! 😍 모던하고 깔끔한 디자인이죠? 마지막으로 'app.js' 파일을 만들고 다음 코드를 입력해주세요: 이 JavaScript 코드는 다음과 같은 일을 해요: 축하해요! 🎉🎉🎉 여러분은 방금 완전한 기능을 갖춘 실시간 채팅 애플리케이션을 만들었어요! 위 그림을 보세요. 이게 바로 우리가 만든 채팅 애플리케이션의 전체 구조예요! Go 서버가 중앙에 있고, 여러 웹 클라이언트가 연결되어 있죠. 정말 멋지지 않나요? 😎 이제 서버를 실행하고 브라우저에서 index.html 파일을 열어보세요. 여러 탭에서 열어서 테스트해보면 실시간으로 채팅이 가능한 걸 확인할 수 있을 거예요! 와우! 여러분은 방금 Go와 웹 기술을 이용해 완전한 실시간 채팅 애플리케이션을 만들었어요! 🚀 이게 바로 풀스택 개발의 맛이죠! 어떠세요? 생각보다 어렵지 않았죠? Go의 강력한 동시성 기능과 웹소켓 덕분에 실시간 애플리케이션을 쉽게 만들 수 있었어요. 이런 기술들은 실제 업무 환경에서도 많이 사용되고 있답니다. 이제 여러분은 이 프로젝트를 기반으로 더 많은 기능을 추가해볼 수 있어요. 예를 들면: 이런 추가 기능을 구현하면서 더 깊이 있는 Go 프로그래밍을 경험해볼 수 있을 거예요. 그리고 이런 경험들이 쌓이면 여러분도 곧 Go 전문가가 될 수 있답니다! 💪 그리고 혹시 더 깊이 있는 Go 학습이나 실전 프로젝트 경험을 원하신다면, 재능넷에서 관련 강의나 멘토링을 찾아보는 것도 좋은 방법이에요. 실제 현업에서 일하는 개발자들의 노하우를 배울 수 있거든요. 자, 이제 여러분만의 채팅앱이 완성됐어요! 친구들에게 자랑해보는 건 어떨까요? 😉 Go로 이런 멋진 앱을 만들 수 있다는 걸 보여주세요! Go 프로그래밍의 세계에 오신 것을 환영합니다. 이제부터 여러분의 상상력이 곧 현실이 되는 마법 같은 경험을 하게 될 거예요. 화이팅! 👍👍👍4. 채팅 클라이언트 만들기 💻
1. HTML 구조 만들기 🏗️
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Go 채팅앱</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="chat-container">
<div id="chat-messages"></div>
<form id="chat-form">
<input type="text" id="username" placeholder="닉네임" required>
<input type="text" id="message" placeholder="메시지 입력..." required>
<button type="submit">전송</button>
</form>
</div>
<script src="app.js"></script>
</body>
</html>
2. CSS로 스타일 입히기 🎨
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
#chat-container {
width: 400px;
height: 600px;
background-color: white;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
display: flex;
flex-direction: column;
}
#chat-messages {
flex-grow: 1;
overflow-y: auto;
padding: 20px;
}
#chat-form {
display: flex;
padding: 20px;
}
#username, #message {
flex-grow: 1;
padding: 10px;
margin-right: 10px;
border: 1px solid #ddd;
border-radius: 5px;
}
button {
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
3. JavaScript로 웹소켓 연결 및 채팅 기능 구현하기 🚀
const chatForm = document.getElementById('chat-form');
const chatMessages = document.getElementById('chat-messages');
const usernameInput = document.getElementById('username');
const messageInput = document.getElementById('message');
const socket = new WebSocket('ws://localhost:8080/ws');
socket.onmessage = function(event) {
const message = JSON.parse(event.data);
displayMessage(message);
};
chatForm.addEventListener('submit', function(e) {
e.preventDefault();
const message = {
username: usernameInput.value,
message: messageInput.value
};
socket.send(JSON.stringify(message));
messageInput.value = '';
});
function displayMessage(message) {
const messageElement = document.createElement('div');
messageElement.textContent = `${message.username}: ${message.message}`;
chatMessages.appendChild(messageElement);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
4. 채팅 클라이언트 만들기 💻
서버는 다 만들었으니, 이제 클라이언트를 만들 차례예요! 우리는 간단한 웹 클라이언트를 만들 거예요. HTML, CSS, JavaScript를 사용할 건데요, 걱정 마세요. 아주 기본적인 수준으로만 사용할 거예요! 😉
클라이언트 구현 단계:
- HTML 구조 만들기
- CSS로 스타일 입히기
- JavaScript로 웹소켓 연결 및 채팅 기능 구현하기
1. HTML 구조 만들기 🏗️
먼저 'index.html' 파일을 만들고 다음 코드를 입력해주세요:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Go 채팅앱</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="chat-container">
<div id="chat-messages"></div>
<form id="chat-form">
<input type="text" id="username" placeholder="닉네임" required>
<input type="text" id="message" placeholder="메시지 입력..." required>
<button type="submit">전송</button>
</form>
</div>
<script src="app.js"></script>
</body>
</html>
이 HTML 구조는 채팅 메시지를 표시할 영역, 사용자 이름 입력 필드, 메시지 입력 필드, 그리고 전송 버튼을 포함하고 있어요. 심플하지만 효과적이죠? 👍
2. CSS로 스타일 입히기 🎨
이제 'style.css' 파일을 만들고 다음 코드를 입력해주세요:
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
#chat-container {
width: 400px;
height: 600px;
background-color: white;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
display: flex;
flex-direction: column;
}
#chat-messages {
flex-grow: 1;
overflow-y: auto;
padding: 20px;
}
#chat-form {
display: flex;
padding: 20px;
}
#username, #message {
flex-grow: 1;
padding: 10px;
margin-right: 10px;
border: 1px solid #ddd;
border-radius: 5px;
}
button {
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
우와! 이제 우리 채팅앱이 훨씬 예뻐졌어요! 😍 모던하고 깔끔한 디자인이죠?
3. JavaScript로 웹소켓 연결 및 채팅 기능 구현하기 🚀
마지막으로 'app.js' 파일을 만들고 다음 코드를 입력해주세요:
const chatForm = document.getElementById('chat-form');
const chatMessages = document.getElementById('chat-messages');
const usernameInput = document.getElementById('username');
const messageInput = document.getElementById('message');
const socket = new WebSocket('ws://localhost:8080/ws');
socket.onmessage = function(event) {
const message = JSON.parse(event.data);
displayMessage(message);
};
chatForm.addEventListener('submit', function(e) {
e.preventDefault();
const message = {
username: usernameInput.value,
message: messageInput.value
};
socket.send(JSON.stringify(message));
messageInput.value = '';
});
function displayMessage(message) {
const messageElement = document.createElement('div');
messageElement.textContent = `${message.username}: ${message.message}`;
chatMessages.appendChild(messageElement);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
이 JavaScript 코드는 다음과 같은 일을 해요:
- 웹소켓 연결을 설정해요.
- 서버로부터 메시지를 받으면 화면에 표시해요.
- 사용자가 메시지를 입력하고 전송하면 서버로 보내요.
축하해요! 🎉🎉🎉 여러분은 방금 완전한 기능을 갖춘 실시간 채팅 애플리케이션을 만들었어요!
위 그림을 보세요. 이게 바로 우리가 만든 채팅 애플리케이션의 전체 구조예요! Go 서버가 중앙에 있고, 여러 웹 클라이언트가 연결되어 있죠. 정말 멋지지 않나요? 😎
이제 서버를 실행하고 브라우저에서 index.html 파일을 열어보세요. 여러 탭에서 열어서 테스트해보면 실시간으로 채팅이 가능한 걸 확인할 수 있을 거예요!
와우! 여러분은 방금 Go와 웹 기술을 이용해 완전한 실시간 채팅 애플리케이션을 만들었어요! 🚀 이게 바로 풀스택 개발의 맛이죠!
어떠세요? 생각보다 어렵지 않았죠? Go의 강력한 동시성 기능과 웹소켓 덕분에 실시간 애플리케이션을 쉽게 만들 수 있었어요. 이런 기술들은 실제 업무 환경에서도 많이 사용되고 있답니다.
이제 여러분은 이 프로젝트를 기반으로 더 많은 기능을 추가해볼 수 있어요. 예를 들면:
- 사용자 인증 기능 추가하기
- 여러 채팅방 만들기
- 이모지나 파일 전송 기능 추가하기
- 메시지 암호화하기
이런 추가 기능을 구현하면서 더 깊이 있는 Go 프로그래밍을 경험해볼 수 있을 거예요. 그리고 이런 경험들이 쌓이면 여러분도 곧 Go 전문가가 될 수 있답니다! 💪
그리고 혹시 더 깊이 있는 Go 학습이나 실전 프로젝트 경험을 원하신다면, 재능넷에서 관련 강의나 멘토링을 찾아보는 것도 좋은 방법이에요. 실제 현업에서 일하는 개발자들의 노하우를 배울 수 있거든요.
자, 이제 여러분만의 채팅앱이 완성됐어요! 친구들에게 자랑해보는 건 어떨까요? 😉 Go로 이런 멋진 앱을 만들 수 있다는 걸 보여주세요!
Go 프로그래밍의 세계에 오신 것을 환영합니다. 이제부터 여러분의 상상력이 곧 현실이 되는 마법 같은 경험을 하게 될 거예요. 화이팅! 👍👍👍