๐จ๏ธ ์์์ฆ ํ๋ฆฐํฐ ์๊ฒฉ ์ธ์ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
์น ํธ์๋ฅผ ์ฌ์ฉํด์ ํ ์ผ ๋ชฉ๋ก์ด๋ ์ผ์ ์ ์๊ฒฉ์ผ๋ก ์ธ์ํ ์ ์๋ค.
(์ค๋์ ์ด์ธ๋ ๋ฝ์ ์ ์๋ค)
์์์
- ๊ธฑ๋ด์ค ์์์ฆ ํ๋ฆฐํฐ๊ฐ ๋ด ๋ฏธ๋ฃจ๋ ๋ฒ๋ฆ์ ๊ณ ์ณ์ค
- ์์์ฆ ํ๋ฆฐํฐ๋ก ํ ์ผ ๊ด๋ฆฌ - ํ๋ฆฐํฐ ์ค๋น
์ ๊ธ์ ๋ณด๊ณ ์ธ์ ๊ฐ ์์์ฆ ํ๋ฆฐํฐ๋ฅผ ์ฌ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
์ ๋ง๋ค์๋๊ฐ
์ต๊ทผ์ ์ฝ๋ฉํ๋๋ฐ ์ง์คํ๋ค ๋ณด๋ ์ค๋งํธํฐ ์๋ฆผ์ ๋์ณ์ ๋ฏธํ ์ ๋ฆ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒผ๋๋ฐ
๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฆผ์ ๋ฐ์ ์ ์์ผ๋ฉด ๋ฏธํ ์ ์ ๋ฆ์ ๊ฑฐ ๊ฐ์์ ๋ง๋ค์๋ค.
๋ผ๊ณ ์ ๋ง๋ค์๋๋ ์ง๋ฌธ์ ๋๋ตํ๊ณ ์์ง๋ง
์ฌ์ค์ ๊ทธ๋ฅ ๋ง๋๋ ๊ฑฐ ์์ฒด๊ฐ ์ฆ๊ฑฐ์์ ๋ง๋ค์๋ค.
ํ๋ฆฐํฐ ๊ตฌ๋งคํ๊ธฐ

๋น ์๋ก B300 ์์์ฆํ๋ฆฐํฐ
์ด๋ํฐ ํฌํจ 63000์์ ๊ตฌ๋งคํ๋ค.
๋น ์๋ก ํ๋ฆฐํฐ๊ฐ ๊ตญ๋ด์์ ํ๋งคํ๋ ํ๋ฆฐํฐ ์ค ๋๋ฌผ๊ฒ ๋งฅ์ฉ ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ํ๋ค.
ํ๋ฆฐํฐ ๋๋ผ์ด๋ฒ ์ค์น
๋น ์๋ก B300 ์ํํธ์จ์ด ๋ค์ด๋ก๋ ์ผํฐ์์ ์ด์์ฒด์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๋ฉด ๋๋ค.
๋งฅ์ ๊ฒฝ์ฐ
- ๋๋ผ์ด๋ฒ๋ฅผ ์ค์น
- ์ค์ > ํ๋ฆฐํฐ ๋ฐ ์ค์บ๋ > ํ๋ฆฐํฐ, ์ค์บ๋ ๋๋ ํฉ์ค ์ถ๊ฐ ๋ฒํผ
- Bixolon ํ๋ฆฐํฐ ์ ํ > ์ฌ์ฉ > ์ํํธ์จ์ด ์ ํ > B300 ๊ฒ์ ํ ๋๋ผ์ด๋ฒ๋ฅผ ์ ํํ๋ฉด ๋๋ค.
์ด๋ ์ด๋ฆ์ bix์ฒ๋ผ ์งง๊ฒ ์ง๋ ๊ฒ ๋์ค์ ํฐ๋ฏธ๋์ด๋ SDK์์ ์ฌ์ฉํ๊ธฐ ํธํ๋ค.
CLI์์ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ
๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๊ณ ๋๋ฉด ํ๋ฆฐํฐ ์ํ๋ฅผ lpstat ๋ช
๋ น์ด๋ก ํ์ธํ ์ ์๋ค.
$ lpstat -p
bix ํ๋ฆฐํฐ๊ฐ ๋๊ธฐ ์ค์
๋๋ค. Fri Dec 5 01:58:04 2025 ์ดํ์ ํ์ฑํ๋จ
ํ ์คํธ๋ฅผ euc-kr๋ก ์ธ์ฝ๋ฉํ๊ณ ํ๋ฆฐํฐ์ ์ ๋ ฅํ๋ฉด ์ค์ ๋ก ์ถ๋ ฅ๋๋ค.
$ echo -e "์๋
ํ์ธ์\\n\\n\\n\\x1D\\x56\\x41" | iconv -f UTF-8 -t EUC-KR | lp -d bix
๋ ์ ์ฉํด์ง๊ธฐ ์ํด์
์ค๋งํธํฐ, ์ฌ๋, ์นํ ๋ฑ๋ฑ ๋งฅ๋ถ ์ธ๋ถ ์ด๋์๋ ํ๋ฆฐํฐ๋ฅผ ์ถ๋ ฅํ ์ ์์ด์ผ ํ๋ค.
์ฌ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ํ๋ฆฐํฐ์ ๊ทธ๋๋ก ์ถ๋ ฅ๋๊ณ
ํ์๊ฐ ์์ํ ๋๊ฐ ๋๋ฉด ๊ตฌ๊ธ ์บ๋ฆฐ๋ ์ผ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅ๋๊ฒ ํ๊ณ ์ถ์๋ค.
WebPrint SDK
๋น ์๋ก ํ๋ฆฐํฐ๊ฐ ์ข์ ๊ฒ ์๋์ฐ, ๋งฅ, ์น ๋ฑ ๊ฐ์ข ํ๊ฒฝ์์ ์ธ ์ ์๋ SDK๋ฅผ ์ ๊ณตํ๋ค.
SDK๋ฅผ ์ค์นํ๊ณ ํ๋ฆฐํฐ๋ฅผ ์ฐ๊ฒฐํ๋ฉด localhost:18080 ์ฃผ์๋ก ์๋ฒ๊ฐ ์คํ๋๋๋ฐ
ํ ์คํธ, ๋ฐ์ฝ๋ ์ถ๋ ฅ, ์ข ์ด ์ปคํ ๋ฑ๋ฑ ๋ช ๋ น์ด๋ฅผ API ์์ฒญ์ผ๋ก ์ ์กํ๋ฉด ํ๋ฆฐํฐ์ ์ ๋ฌ๋๋ค.
SDK ์ค์ & ํ ์คํธ
๋ก๊ทธ์ธ ์ ์๋ ์คํ ON, https ๋์ http ์ฐ๊ฒฐ์ ์ํด SSL ์ธ์ฆ์ ์ฌ์ฉ์ OFFํ๋ค.

์๋ ํ ์คํธ ํ์ด์ง์์ ํ๋ฆฐํฐ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ
์ถ๋ ฅ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์์์ฆ, ๋ฐ์ฝ๋, ๊ทธ๋ฆผ ๋ฑ๋ฑ์ด ์ถ๋ ฅ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
https://bixolon.com/common/WebPrintSDK/Sample_PosPrinter.html

SDK ๊ฐ๋จ ์ฌ์ฉ๋ฒ
ํ๋ฆฐํฐ SDK ์๋ฒ์ ํต์ ์ ์ฝ๊ฒ ๋์์ฃผ๋ JS ์ฝ๋๊ฐ ์๋ค.
Software Web Print SDK Sample ์ ๋ค์ด๋ก๋ํ๋ฉด js ํด๋์ ์์นํด์๋ค.

์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๊ฐ๋จํ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ๊ณ ์์์ฆ ์ข ์ด๋ฅผ ์๋ฅธ๋ค.
var issueID = 1;
// ๊ฐ ์ธ์ ์์
๋ง๋ค ๊ณ ์ ID๋ฅผ ๋ถ์ฌํ๋ค.
setPosId(issueID);
// ํ๋ฆฐํฐ ์ํ๋ฅผ ํ์ธํ๋ค. ํ๋ฆฐํฐ๊ฐ ๊บผ์ ธ์์ผ๋ฉด ์๋ฌ๊ฐ ๋๋ค.
checkPrinterStatus();
// ํ
์คํธ, ๋์ด, ๋๋น, ๋ณผ๋ ์ฌ๋ถ, ์๊ฐ/์๊ฐ, ๋ฐ์ค, ํฐํธ ํ์
, ์ผ์ชฝ/์ค๋ฅธ์ชฝ/๊ฐ์ด๋ฐ ์ ๋ ฌ์ ์ค์ ํด์ ์ถ๋ ฅํ๋ค.
printText("Hello World!\n", 0, 0, false, false, false, 0, 1);
// ์ข
์ด๊ฐ ์๋ฆฐ๋ค.
cutPaper(1);
// ํ์ ์์ธ ๋ช
๋ น์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ๋ฅผ ๋น์ด๋ค.
var strSubmit = getPosData();
// ๋ค์ ์ธ์ ์์
์ ์ํด ID๋ฅผ ๋ฐ๊ฟ์ค๋ค.
issueID++;
// ํ๋ฆฐํฐ๋ก ๋ช
๋ น์ ๋ณด๋ธ๋ค.
requestPrint("bix", strSubmit, function (result) {
console.log("Print result:", result);
});
ํ๊ธ์ด ์ ๋์จ๋ค..? EUC-KR ์ธ์ฝ๋ฉํ๊ธฐ
SDK์ printText() ํจ์๋ก ์์ด๋ ์ ์ถ๋ ฅ๋๋๋ฐ ํ๊ธ์ ์ธ์ฝ๋ฉ์ด ๊นจ์ ธ์ ์ธ๊ณ ๋ฌธ์๋ก ๋์จ๋ค.
iconv-lite๋ฅผ ์ฌ์ฉํด์ ์ ๋์ฝ๋๋ฅผ euc-kr(CP949) ํ์์ผ๋ก ์ธ์ฝ๋ฉ์ ํด์ผ ํ๋ค.
yarn์ ์ด๋ค๋ฉด buffer ํจํค์ง๋ ์ถ๊ฐ๋ก ์ค์นํด์ผ ๋ธ๋ผ์ฐ์ ์์ ๋ฐํ์ ์๋ฌ๊ฐ ์ ๋๋ค.
์ธ์ฝ๋ฉํ hex ๋ฌธ์์ด์ SDK์ directPrintHex() ํจ์์ ๋ฃ์ด์ฃผ๋ฉด ํ๊ธ์ด ์ ์ถ๋ ฅ๋๋ค.
import iconv from "iconv-lite";
import { Buffer } from "buffer";
function encodeToCP949String(text: string): string {
const buffer = iconv.encode(text, "cp949");
return Buffer.from(buffer).toString("hex");
}
function print(text) {
//...
const encodedText = encodeToCP949String(text);
directPrintHex(encodedText);
//...
}
์ปค์ ์์ด์ ํธ๋ก ํ
์คํธ ์
๋ ฅ์ ๋ฐ์ ๋ฒํผ ํด๋ฆญ ์ print()๋ฅผ ์ถ๋ ฅํ๋ UI๋ฅผ ๋ง๋ค์ด ๋ฌ๋ผ๊ณ ํ๋ฉด
๊ฐ๋จํ ์ธ ์ ์๋ ํ๋ฆฐํฐ GUI ์์ฑ์ด๋ค.

์ธ๋ถ์์ ์ด๋ฒคํธ ์์ ํ๊ธฐ, ์น ํธ์
์ธ๋ถ์์ ๋งฅ ๋ก์ปฌ์ ๋ ์๋ ํ๋ฆฐํฐ SDK ์๋ฒ ํต์ ํ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
๊ทธ๋์ผ ์ฌ๋์ด๋ ๊ตฌ๊ธ ์บ๋ฆฐ๋ ์ด๋ฒคํธ์ ์ฐ๋ํ ์ ์๋ค.
๋งฅ์ ๋ก์ปฌ ํฌํธ๋ฅผ ๊ณต๊ฐํ๋ ๊ฑด ๋ณด์์ ๋ฌธ์ ๊ฐ ์๊ณ ,
๋ณ๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์๋๊ณ N์ด๋ง๋ค ํด๋ง ํ๋ ๊ฑด ๋นํจ์จ์ ์ด๋ค.
์์ ์ ์๊ฐ์ ์ฒญ ์๋ฆผ ๋ง๋ค ๋ ์ผ๋ ์น ํธ์๊ฐ ๋ ์ฌ๋๋ค.
์น ํธ์๋ฅผ ์ฌ์ฉํ๋ฉด, ์ธ๋ถ์์ ๊ตฌ๊ธ ํธ์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ ๋งฅ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ก ์ง์ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
์น ํธ์ ์ฌ์ฉ๋ฒ
web-push npm ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์์ง๋ค.
์์ ํ๊ฒ ํธ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ ์กํ๊ธฐ ์ํด ๋๋ค ๋ฌธ์์ด์ 5๊ฐ๋ ์์ฑํด์ผ ํ๋๋ฐ
ํ๋ํ๋ ๋ค ์ดํดํ ํ์๋ ์๊ณ ํค์ ๋ง๋ ๊ฐ๋ง ์ ์ ๋ ฅํด ์ฃผ๋ฉด ๋๋ค.
์น ํธ์ ํ๋กํ ์ฝ ๊ธ์ ๊ฐ ํค์ ๋ํ ์ค๋ช ์ด ์ ๋์์๋ค.
1. VAPID ์์ฑํ๊ธฐ
VAPID(Voluntary Application Server Identification)๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ํธ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ์์ ์ ์๋ณํ๋ ํ์ค ๊ท๊ฒฉ์ด๋ผ๊ณ ํ๋ค.
npm i -g web-push๋ก web-push ํจํค์ง๋ฅผ ์ค์นํ๊ณ
์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๊ณต๊ฐํค, ๋น๋ฐํค๊ฐ ์์ฑ๋๋ค.
> web-push generate-vapid-keys --json
> {"publicKey":"AAAAAAAAAA","privateKey":"BBBBBBBBBB"}
2. ํธ์ ๊ตฌ๋ ํ๊ธฐ
๋ธ๋ผ์ฐ์ ์์ ์๋ฆผ ๊ถํ์ ์ป๊ณ ์๋น์ค ์์ปค๋ฅผ ๋ฑ๋กํด์ ์๋ฆผ์ ๊ตฌ๋ ํ๋ค.
์ด๋ applicationServerKey์ ์์์ ์์ฑํ ๊ณต๊ฐํค๋ฅผ ๋ฃ์ด์ค๋ค.
// 1. ๋ธ๋ผ์ฐ์ ์๋ฆผ ๊ถํ ์ป๊ธฐ
await Notification.requestPermission();
// ์๋น์ค ์์ปค ๋ฑ๋กํ๊ธฐ
const registration = await navigator.serviceWorker.register("/sw.js");
// ์น ํธ์ ๊ตฌ๋
ํ๊ธฐ
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: "AAAAAAAAAA",
});
console.log(subscription.toJSON());
๊ตฌ๋ ์ ๋ณด๋ ๊ฐ์ 3๊ฐ ๋ฐํํ๋ค.
{
"endpoint": "https://fcm.googleapis.com/fcm/send/CCCCCCCCCC",
"expirationTime": null,
"keys": {
"p256dh": "DDDDDDDDDD",
"auth": "EEEEEEEEEE"
}
}
3. ํธ์ ๋ณด๋ด๊ธฐ
ํฐ๋ฏธ๋์์ ์์ฑํ VAPID ํค์ ๋ธ๋ผ์ฐ์ ์์ ๋ฐํํ ๊ตฌ๋ ์ ๋ณด๊ฐ ์์ผ๋ฉด
์๋ ๋ช ๋ น์ด๋ก ํธ์๋ฅผ ๋ณด๋ผ ์ ์๋ค.
web-push send-notification \
--vapid-subject=mailto:example@test.com \
--vapid-pubkey=AAAAAAAAAA \
--vapid-pvtkey=BBBBBBBBBB \
--endpoint=https://fcm.googleapis.com/fcm/send/CCCCCCCCCC \
--key=DDDDDDDDDD \
--auth=EEEEEEEEEE \
--payload=์๋
ํ์ธ์
ํน์ ๋ ธ๋ ์๋ฒ์์ ์ด๋ ๊ฒ ์์ฑํ ์ ์๋ค.
import webpush from "web-push";
webpush.setVapidDetails(
"mailto:example@test.com",
"AAAAAAAAAA", // VAPID PUBLIC KEY
"BBBBBBBBBB" // VAPID PRIVATE KEY
);
const subscription = {
endpoint: "https://fcm.googleapis.com/fcm/send/CCCCCCCCCC",
keys: {
p256dh: "DDDDDDDDDD",
auth: "EEEEEEEEEE",
},
};
webpush.sendNotification(subscription, message);
4. ํธ์ ๋ฐ๊ธฐ
์๋น์ค ์์ปค(sw.js)์ ํธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํด๋์ผ๋ฉด ์น ํธ์๋ก ๋ณด๋ธ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋ค.
self.addEventListener("push", (event) => {
const text = event.data.text();
console.log("ํธ์๋ก ๋ฐ์ ํ
์คํธ: ", text);
});
ํธ์๋ฅผ ๋ฐ์ผ๋ฉด ํ๋ฆฐํฐ SDK ์๋ฒ๋ก ์ธ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋๋ค.
์๋น์ค ์์ปค์ ์ข์ ์
์น ํ์ด์ง๊ฐ ๋ซํ์์ด๋, ์ฌ์ง์ด ๋งฅ๋ถ์ด ์ ๊ธ ์ํ์ผ ๋๋
WIFI๊ฐ ์ฐ๊ฒฐ๋์ด ์๊ณ ํฌ๋กฌ์ด ์์ ํ ๊บผ์ง ์ํ๋ง ์๋๋ผ๋ฉด ํธ์๋ฅผ ๋ฐ์์ ๋ช ๋ น์ ์คํํ ์ ์๋ค.
์๋น์ค ์์ปค์์ SDK ์๋ฒ๋ก ์ธ์ ์์ฒญ ๋ณด๋ด๊ธฐ
๋์ ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ ๋ ์ ์ฝ์ด ์๋ค.
๋ฌธ์ 1: JS SDK๊ฐ ์๋น์ค ์์ปค์์ ์ง์ํ์ง ์๋ XMLHttpRequest๋ฅผ ์ฌ์ฉํ๋ค.
โ ์ปค์ ์์ด์ ํธ์๊ฒ fetch๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ์์ฑํด๋ฌ๋ผ๊ณ ํ๋ค.
๋ฌธ์ 2: ํ๊ธ ์ธ์ฝ๋ฉ์ ์ํ iconv-lite ํจํค์ง๋ฅผ ์ฐ๊ธฐ๊ฐ ์ด๋ ต๋ค. ๊ฐ๋จํ euc-kr ์ธ์ฝ๋ฉ์ ํด์ฃผ๋ ํจํค์ง๊ฐ ๊ฒ์ํด๋ ์ ๋์จ๋ค.
โ ์ปค์ ์์ด์ ํธ์๊ฒ euc-kr ์ธ์ฝ๋ฉ ํจ์๋ฅผ ์์ฑํด๋ฌ๋ผ๊ณ ํ๊ณ , vitest๋ฅผ ์ค์นํด ์ฃผ๊ณ ํ ์คํธํด๊ฐ๋ฉด์ ํ๋ฆฐ ๋ถ๋ถ์ ์ค์ค๋ก ํ์ ํ๊ณ ์์ ํ๋๋ก ํ๋ค.
ํธ์ ๊ตฌ๋ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํ ์๋ฒ ์์
ํธ์ ๊ตฌ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ ๋ง๋ฃ๋ ๋๊ฐ ์๋ค.
๊ทธ๋๋ง๋ค ๊ตฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์์ ์ถ๋ ฅํด์ ๋ค์ ์๋ฒ ํ๊ฒฝ ๋ณ์์ ๋ฃ์ด์ฃผ๊ธฐ ๊ท์ฐฎ์ผ๋ฏ๋ก
์ด๋๊ฐ์ ์ ์ฅํด์ ๊ฐ์ ธ๋ค ์จ์ผ ํ๋ค.
k8s PV์ sqlite๋ฅผ ์ฐ๊ฑฐ๋, ๋ณ๋ DB ์๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง
์ฑ๋ฅ์ด ์ค์ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ ๊ฐ๋จํ๋ฏ๋ก ๊นํ ๋น๊ณต๊ฐ ๋ ํฌ๋ฅผ ํ์ JSON ํ์ผ์ ํต์งธ๋ก ์ ์ฅํ๋ค.

์ ์ฒด ๊ตฌ์กฐ
์ธ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ํธ์๋ฅผ ๋ณด๋ด๋ API๋ค์ ๋ง๋ค๋ฉด ๋์ด๋ค.
์ ์ฒด ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.

zapier, ์ฌ๋์์ ์นํ ์ ํตํด ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด
๋ ธ๋ ์๋ฒ๊ฐ ๊ตฌ๊ธ ํธ์ ์๋ฒ์ ์ ๋ฌํด ์ฃผ๊ณ
ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์คํ๋๊ณ ์๋ ์๋น์ค ์์ปค๊ฐ ํ๋ฆฐํฐ SDK์ ์ธ์ ์์ฒญ์ ๋ณด๋ธ๋ค.
์ฌ์ฉ ์ฌ๋ก
๋ฏธํ 2๋ถ ์ ์ ํ๋ฆฐํธ ์ถ๋ ฅํ๊ธฐ
zapier์ ๊ตฌ๊ธ ์บ๋ฆฐ๋๋ฅผ ์ฐ๋ํด์ ํ์ 2๋ถ ์ ์ ์นํ ์ ์ ์กํ๋๋ก ์ค์ ํ๋ค.

๋๋ถ์ ํ์ ์ ์ ๋ฆ๋๋ค.
๋ ์ด์บ์คํธ๋ก ๋ฐ๋ก ์ถ๋ ฅํ๊ธฐ
๋ ์ด์บ์คํธ์์ ๋ฐ๋ก ๋ฉ๋ชจ๋ฅผ ์ถ๋ ฅํ๋ค.
์ค๋์ ์ด์ธ
๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋์ ์ด์ธ๊ฐ ๋์ค๊ฒ ํ๋ค.
ํ์ฌ ์ฌ๋๋ค์๊ฒ ํ๋ฆฐํฐ ์ถ๋ ฅ ๊ถํ์ ์ด์ด๋ดค๋ค
์ฌ๋์ print_yj ํ
์คํธ๋ฅผ ์
๋ ฅํ๋ฉด ํ๋ฆฐํฐ์์ ํ
์คํธ๊ฐ ์ธ์๋๋๋ก ํ๋ค.
๊ทธ๋ฌ๋๋

์ด์ํ ์ฌ๋๋ ์๊ณ (์ฐจ๋จํ๋ค)

๋ณดํต์ ์ด๋ฐ ๊ฑฐ ๋ณด๋ธ๋ค.

์ฝ๋๋ฆฌ๋ทฐ ์์ฒญ๋ ๋ณด๋ธ๋ค.

์ฌ์ฅ๋๋ ์ผ ์ด์ฌํ ํ๋ผ๊ณ ๊ฒฉ๋ ค์ ๋ง์์ ๋ณด๋ด์ จ๋ค

์ด๋ฆ์ผ๋ก ์ผํ์ ๋ณด๋ด๋ ์ฌ๋๋ ์๋ค

์ด์ํ ์ฌ๋ ์ฐจ๋จํ ๊ฑฐ ๊ฑธ๋ ธ๋ค. ๋ค์ ํ์ด์คฌ๋ค.
๋ง๋ฌด๋ฆฌ
- AI ์์ด์ ํธ ๋๋ถ์ ์๋ํ ์ ์๋ ํ๋ก์ ํธ๊ฐ ์ ์ ๋์ด๋๋ค. AI๋ ์ธ์ฐ์ง ๋ง๊ณ ์ด์ฌํ ์ด๊ฒ์ ๊ฒ ๋ง๋ค์ด๋ด์ผ๊ฒ ๋ค.
- ์ด๋ฐ ๊ฑธ ๋ญ ํ๋ฌ ๋ง๋ค์๋๋ฉฐ ์ฝ๊ฐ ์ด์ด์์ด ํ๋ ์ฌ๋์ ๋ณด๋ ๊ฒ ์ฆ๊ฒ๋ค.
