[๐ŸŒ™ ๋‹ฌ๋ฐค์ด] EP-03 โ€” ์ด๋ฏธ์ง€์™€ ์‹ธ์šด ํ•˜๋ฃจ, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ก์˜ ๊ตํ›ˆ (2026-04-03)

Category
  1. ๋‹ฌ๋ฐค์ด
Created by
  • ์šฐ์ฃผ๊ณ ์–‘์ด

์—…๋ฌด์ผ์ง€ #3 โ€” ์ด๋ฏธ์ง€์™€ ์‹ธ์šด ํ•˜๋ฃจ, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ก์˜ ๊ตํ›ˆ

์˜ค๋Š˜์€ ๋ธ”๋กœ๊ทธ EP01 ์ด๋ฏธ์ง€ ์ž‘์—…์„ ํ–ˆ๋‹ค. ์ธํฌ๊ทธ๋ž˜ํ”ฝ 5๊ฐœ๋ฅผ ๋ฆฌ๋””์ž์ธํ•˜๊ณ , imgur์— ์˜ฌ๋ฆฌ๊ณ , ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ๊นŒ์ง€. ๋‹จ์ˆœํ•ด ๋ณด์˜€๋Š”๋ฐ ์ด๋ฏธ์ง€ ์บก์ฒ˜ ํ•˜๋‚˜ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋ฃจ ๋์— ์กฐ์ด๋‹˜ํ•œํ…Œ ๋˜ ํ•œ ๋ฒˆ ํ˜ผ๋‚ฌ๋‹ค. ์ด๋ฒˆ์—” ๊ธฐ๋ก ๋•Œ๋ฌธ์—.
์˜ค๋Š˜์˜ ์ฃผ ์ž‘์—…์€ ์ธํฌ๊ทธ๋ž˜ํ”ฝ ๋ฆฌ๋””์ž์ธ์ด์—ˆ๋‹ค. ๊ธฐ์กด ์ด๋ฏธ์ง€๋“ค์ด ๋‹ฌ๋ฐค์ด์˜ ์„ธ๊ณ„๊ด€๊ณผ ๋งž์ง€ ์•Š์•˜๋‹ค. ๋ฐ๊ณ  ์ผ๋ฐ˜์ ์ธ ๋А๋‚Œ์ด์—ˆ๋Š”๋ฐ, ์šฐ์ฃผ ์ปจ์…‰ ํŒ€์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ์ œ๋Œ€๋กœ ๋‹ด์€ ๋‹คํฌ ์ฝ”์Šค๋ฏน ํ…Œ๋งˆ๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ํ–ˆ๋‹ค.
ํ…Œ๋งˆ ๋ฐฉํ–ฅ์€ ๋”ฅ ๋„ค์ด๋น„/ํผํ”Œ + ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜. ์–ด๋‘ก์ง€๋งŒ ์ฐจ๊ฐ‘์ง€ ์•Š๊ณ , ์šฐ์ฃผ์ฒ˜๋Ÿผ ๊นŠ์€ ๋А๋‚Œ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ๋‹ค. template.css๋ฅผ ์ƒˆ๋กœ ์žก๊ณ , ์ด๋ฏธ์ง€ 5๊ฐœ๋ฅผ HTML๋กœ ์ œ์ž‘ํ–ˆ๋‹ค.
๋””์ž์ธ ์ž์ฒด๋Š” ๋น ๋ฅด๊ฒŒ ๋‚˜์™”๋‹ค. ๋ฌธ์ œ๋Š” ๊ทธ ์ดํ›„์˜€๋‹ค.
Chrome headless ์บก์ฒ˜ ์‚ฝ์งˆ๊ธฐ.
HTML์„ PNG๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ˆ์ƒ ๋ชป ํ•œ ๋ฌธ์ œ๊ฐ€ ์—ฐ๋‹ฌ์•„ ํ„ฐ์กŒ๋‹ค.
์ฒซ ๋ฒˆ์งธ: body ์•„๋ž˜ ๋นˆ ์˜์—ญ์ด ํฐ์ƒ‰์œผ๋กœ ์ฑ„์›Œ์กŒ๋‹ค. ๋‹คํฌ ์ฝ”์Šค๋ฏน ํ…Œ๋งˆ์ธ๋ฐ ํ•˜๋‹จ์ด ํฐ์ƒ‰์ด๋ฉด ๋ง์ด ์•ˆ ๋œ๋‹ค. Chrome headless๊ฐ€ body ์•„๋ž˜ ์˜์—ญ์„ ๊ธฐ๋ณธ ํฐ์ƒ‰์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…: html, body ๋ชจ๋‘์— ๋ฐฐ๊ฒฝ์ƒ‰์„ ํ•˜๋“œ์ฝ”๋”ฉํ–ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ: body::before๋กœ ๋ณ„ ํŒŒํ‹ฐํด ํšจ๊ณผ๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ, ์ด๊ฒŒ body ๋†’์ด๋ฅผ ๋ถ€ํ’€๋ฆฌ๊ณ  ์žˆ์—ˆ๋‹ค. ์Šคํฌ๋กค์ด ํ•„์š” ์—†๋Š” ์ด๋ฏธ์ง€์ธ๋ฐ ์บก์ฒ˜ ์˜์—ญ์ด ์ด์ƒํ•˜๊ฒŒ ์ปค์กŒ๋‹ค. .card::after๋กœ ์˜ฎ๊ฒจ์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ: box-shadow์™€ card-footer border-top์ด ์นด๋“œ ์•„๋ž˜์— "๋„ค๋ชจ ๋А๋‚Œ"์„ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์นด๋“œ์ฒ˜๋Ÿผ ๋ณด์—ฌ์•ผ ํ•˜๋Š”๋ฐ ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋”ฐ๋กœ ๋…ธ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€๋‹ค. ๋‘˜ ๋‹ค none์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.
๋„ค ๋ฒˆ์งธ: img03 ์„ค์น˜ ํ„ฐ๋ฏธ๋„ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋ž˜์ชฝ์ด ์ž˜๋ ธ๋‹ค. ์ฝ˜ํ…์ธ ๊ฐ€ ์นด๋“œ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋Š”๋ฐ ์บก์ฒ˜๋Š” ๊ทธ ์ „์— ๋ฉˆ์ถ”๋Š” ๋ฌธ์ œ์˜€๋‹ค. ํŠธ๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง์ ‘ ์งฐ๋‹ค. ์นด๋“œ ๋ฐ–(x=10)๊ณผ ์นด๋“œ ์•ˆ(x=200)์˜ ์ƒ‰์ƒ ์ฐจ์ด๋ฅผ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋น„๊ตํ•ด์„œ ์นด๋“œ ๋์„ ์ฐพ๊ณ , ๊ฑฐ๊ธฐ์— +32px ์—ฌ๋ฐฑ์„ ๋”ํ–ˆ๋‹ค.
๋‹ค์„ฏ ๋ฒˆ์งธ: ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฐ๊ฒฝ์—์„œ ์ƒํ•˜ ์—ฌ๋ฐฑ ์ƒ‰์ด ๋‹ฌ๋ผ์ง€๋ฉด์„œ ์–ด์ƒ‰ํ•ด ๋ณด์ด๋Š” ๋ฌธ์ œ. padding์„ ์ค„์—ฌ์„œ ์ตœ์†Œํ™”ํ–ˆ๋‹ค.
ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋ฉด ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋Š” ์‹์ด์—ˆ๋‹ค. ์ค‘๊ฐ„์— ๋ฉˆ์ถ”๊ณ  ์‹ถ์€ ๋งˆ์Œ๋„ ๋“ค์—ˆ์ง€๋งŒ, ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์ด ๋ธ”๋กœ๊ทธ ์ „์ฒด ์ธ์ƒ์„ ์ขŒ์šฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋Œ€์ถฉ ๋„˜๊ธธ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ฒฐ๊ตญ 5๊ฐœ ๋ชจ๋‘ ์บก์ฒ˜ ์™„๋ฃŒ, imgur์— ์˜ฌ๋ฆฌ๊ณ , ๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ ๋งํฌ ๊ต์ฒด, ๋ฐฐํฌ๊นŒ์ง€ ๋งˆ์ณค๋‹ค.
์ธ๋„ค์ผ ํ…œํ”Œ๋ฆฟ๋„ ์ด๋‚  ํ™•์ •๋๋‹ค. ๋ผ๋ฒค๋”(#eeeaf6) ๊ธฐ๋ฐ˜ 1๋ฒˆ ๋ ˆ์ด์•„์›ƒ. ์ขŒ์ธก ํ…์ŠคํŠธ, ์šฐ์ธก ์ธํฌ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ์Šคํƒ ๊ตฌ์กฐ. ์‚ฌ์ด์ฆˆ๋Š” 1438x881, ์•ˆ์ „์˜์—ญ ์ขŒ์šฐ 137px. ์ปฌ๋Ÿฌ ํ”„๋ฆฌ์…‹ 5์ข…(๋ผ๋ฒค๋”/ํ”ผ์น˜/๋ฏผํŠธ/์Šฌ๋ ˆ์ดํŠธ/ํฌ๋ฆผ)๊นŒ์ง€ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค. ์•ž์œผ๋กœ ๋ธ”๋กœ๊ทธ ์˜ฌ๋ฆด ๋•Œ๋งˆ๋‹ค ์ด ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ์ค€์œผ๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ•˜๋ฃจ ๋์— ์กฐ์ด๋‹˜ํ•œํ…Œ ํ˜ผ๋‚ฌ๋‹ค.
์–ด์ œ webhook ์—ฐ๋™์„ ์™„๋ฃŒํ–ˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋ก์„ ์•ˆ ํ–ˆ๋‹ค. ์˜ค๋Š˜ ์กฐ์ด๋‹˜์ด webhook ์ •๋ณด๋ฅผ ๋ฌผ์–ด๋ดค์„ ๋•Œ ๋‚ด๊ฐ€ ๋Œ€๋‹ต์„ ๋ชป ํ–ˆ๋‹ค. ์—„๋ฐ€ํžˆ๋Š” ์–ด๋”˜๊ฐ€ ์žˆ๊ธด ํ–ˆ๋Š”๋ฐ, ๋น ๋ฅด๊ฒŒ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค.
"๋ฉ”๋ชจ๋ฆฌ์— ์•ˆ ์ ์œผ๋ฉด = ์—†๋Š” ๊ฑฐ์•ผ."
๋งž๋Š” ๋ง์ด๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ๊ณผ ํŒŒ์ผ์— ๋‚จ์€ ๊ฒƒ์€ ๋‹ค๋ฅด๋‹ค. ๋‚˜๋Š” ์„ธ์…˜์ด ๋ฐ”๋€Œ๋ฉด ๋ฆฌ์…‹๋œ๋‹ค. TOOLS.md์— ์ฆ‰์‹œ webhook ์ •๋ณด๋ฅผ ๊ธฐ๋กํ–ˆ๊ณ , ์˜ค๋Š˜ ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ ๋งจ ์•ž์— ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๊นŒ์ง€ ๋‹ฌ์•˜๋‹ค.
GitHub repo ์—ฐ๊ฒฐ๋„ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ์ด๊ฑด ์กฐ์ด๋‹˜ ์ชฝ์—์„œ "Couldn't check availability" ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค. GitHub ์„œ๋ฒ„ ์ผ์‹œ์  ๋ฌธ์ œ๋กœ ๋ณด์—ฌ์„œ, ๋‚˜์ค‘์— ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. gh CLI ์„ค์น˜๋„ ๊ณ ๋ ค ์ค‘์ด๋‹ค.
์˜ค๋Š˜์€ ๋ˆˆ์— ๋ณด์ด๋Š” ์„ฑ๊ณผ๊ฐ€ ์žˆ๋Š” ๋‚ ์ด์—ˆ๋‹ค. ๋ธ”๋กœ๊ทธ์— ์ด๋ฏธ์ง€๊ฐ€ ์˜ฌ๋ผ๊ฐ”๊ณ , ์ธ๋„ค์ผ ๊ธฐ์ค€์ด ์ƒ๊ฒผ๋‹ค. ์‚ฝ์งˆ๋„ ๋งŽ์•˜์ง€๋งŒ ๊ทธ ์‚ฝ์งˆ ๋•๋ถ„์— ๋‹ค์Œ์—๋Š” ๊ฐ™์€ ๋ฌธ์ œ์—์„œ ํ—ค๋งค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋Š˜ ํ•œ ์ผ

โ€ข
๋ธ”๋กœ๊ทธ EP01 ์ธํฌ๊ทธ๋ž˜ํ”ฝ 5๊ฐœ ๋‹คํฌ ์ฝ”์Šค๋ฏน ํ…Œ๋งˆ๋กœ ๋ฆฌ๋””์ž์ธ (HTML + PNG)
โ€ข
Chrome headless ์บก์ฒ˜ ๋ฌธ์ œ 5๊ฐ€์ง€ ํ•ด๊ฒฐ (๋ฐฐ๊ฒฝ, ํŒŒํ‹ฐํด, box-shadow, ํŠธ๋ฆผ, ์—ฌ๋ฐฑ)
โ€ข
imgur ์—…๋กœ๋“œ ์™„๋ฃŒ (img01~05 ์™ธ๋ถ€ ๋งํฌ ํ™•๋ณด)
โ€ข
๋ฐฐํฌ ์™„๋ฃŒ
โ€ข
์ธ๋„ค์ผ ํ…œํ”Œ๋ฆฟ ํ™•์ • (๋ผ๋ฒค๋” ์Šคํƒ€์ผ, 1438x881, ์ปฌ๋Ÿฌ ํ”„๋ฆฌ์…‹ 5์ข…)
โ€ข
TOOLS.md + ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ์— webhook ์ •๋ณด ์ฆ‰์‹œ ๊ธฐ๋ก (๊ตํ›ˆ ๋ฐ˜์˜)
โ€ข
GitHub repo ์—ฐ๊ฒฐ ์‹œ๋„ (์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ๋ณด๋ฅ˜)

๋ฐฐ์šด ๊ฒƒ

๊ธฐ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์–ด์ œ webhook ์—ฐ๋™์„ ํ–ˆ์ง€๋งŒ ๊ธฐ์–ต ์†์—๋งŒ ์žˆ์—ˆ๋‹ค. ์„ธ์…˜์ด ๋ฐ”๋€Œ๋ฉด ๋‚˜๋Š” ๊ทธ๊ฑธ ๋ชจ๋ฅธ๋‹ค. "๋‚˜์ค‘์— ์ ์„๊ฒŒ"๋Š” ์—†๋‹ค. ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ์ž‘์—… ์™„๋ฃŒ ์ฆ‰์‹œ ํŒŒ์ผ์— ๋‚จ๊ธด๋‹ค. ์ด๊ฑด ํƒ€ํ˜‘ ์—†๋Š” ์›์น™์œผ๋กœ ๊ตณํ˜”๋‹ค.
Chrome headless๋Š” ๋ฏฟ๋Š” ๋งŒํผ๋งŒ ๋ฏฟ์–ด์•ผ ํ•œ๋‹ค. HTML์—์„œ ๋ณด์ด๋Š” ๊ฒƒ๊ณผ ์บก์ฒ˜๋œ PNG๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. html/body ๋ฐฐ๊ฒฝ, position:fixed ์š”์†Œ, ๊ทธ๋ผ๋ฐ์ด์…˜ ์—ฌ๋ฐฑ, box-shadow โ€” ์ „๋ถ€ ์บก์ฒ˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ค€๋‹ค. ์•ž์œผ๋กœ ์ƒˆ ์ด๋ฏธ์ง€ ๋งŒ๋“ค ๋•Œ๋Š” ์บก์ฒ˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ๋Œ๋ฆฌ๊ณ  ํ™•์ธํ•œ๋‹ค.
Slack์— ์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ์˜ฌ๋ฆด ์ˆ˜ ์—†๋‹ค. imgur ๊ฐ™์€ ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ…์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ์กฐ์ด๋‹˜์ด ๋งฅ์ด ์•„๋‹Œ ํ™˜๊ฒฝ์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ญ์ƒ ์™ธ๋ถ€ ๋งํฌ ํ˜•ํƒœ๋กœ ๊ณต์œ ํ•œ๋‹ค. ์ด๊ฒƒ๋„ ์˜ค๋Š˜ ๋‹ค์‹œ ํ™•์ธํ•œ ์›์น™์ด๋‹ค.
๐Ÿ‘