Skip to content

dev-oddments/algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

49 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต

์ฝ”ํ…Œ ์—ฐ์Šต ๋ฐฉ์‹

  • WIP

VSCode๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ค‘๋ณต๋˜๋Š” ์ž‘์—…์ด ์žˆ์–ด ์ด ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ œ์ž‘ํ•˜์˜€๋‹ค. ๋„๊ทธ ํ‘ธ๋”ฉ ํ•ด๋ณด๊ณ  npm์— ํŒจํ‚ค์ง€ ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

npm init -y
npm i -D turndown cheerio puppeteer jest @types/jest

node๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ๋‹ค. ํ™˜๊ฒฝ ๊ตฌ์„ฑ์€ ์œ„์ฒ˜๋Ÿผ ํ•˜๋ฉด ๋œ๋‹ค. ์ดํ›„ template.js ํŒŒ์ผ์„ package.json์ด ์žˆ๋Š” ๋ฃจํŠธ ํด๋”์— ๋ณต์‚ฌํ•œ๋‹ค.

node template.js 42587

์ˆซ์ž๋Š” ๋ฌธ์ œ ๋ฒˆํ˜ธ์ด๋‹ค. ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฌธ์ œ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ œ ์ œ๋ชฉ์œผ๋กœ ํด๋”๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ํด๋” ๋‚ด๋ถ€์— README.md์™€ answer.test.js ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค.

jest --watchAll --coverage

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค. package.json scripts ํ•ญ๋ชฉ์— ์ถ”๊ฐ€ํ•˜๋ฉด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. jest๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋‹ˆ ๊ธฐํ˜ธ์— ๋”ฐ๋ผ TDD ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค!

ํฌ๋กค๋ง

์ฒซ ๋ฒˆ์งธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ robots.txt๋ฅผ ํ™•์ธํ–ˆ๋‹ค. ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ URL์—๋Š” ํฌ๋กค๋ง ํ•˜๋Š” ๋ถ€๋ถ„์— disallow๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ ํฌ๋กค๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ cheerio ๋งŒ์œผ๋กœ ํฌ๋กค๋ง์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ๋˜์–ด์žˆ์–ด puppeteer๋ฅผ ๋ณ‘ํ–‰ํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค. ํฌ๊ฒŒ ์ œ๋ชฉ, ๋ฌธ์ œ ์„ค๋ช…์— ๊ด€ํ•œ ๋ถ€๋ถ„, ์ดˆ๊ธฐ ์ฝ”๋“œ ์ด๋ ‡๊ฒŒ ์„ธ ๋ถ€๋ถ„์˜ ํฌ๋กค๋ง์„ ์‹œ๋„ํ•˜์˜€๊ณ  ์กฐ๊ธˆ์˜ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์ง€๋งŒ ๋ชจ๋‘ ์„ฑ๊ณตํ•˜์˜€๋‹ค.

jest์— --watch ์˜ต์…˜์„ ์ฃผ๊ณ  ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ•œ๋ฐ ์ด๊ฒƒ๋„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค. ํฌ๋กค๋ง์„ ํ†ตํ•ด ํ™•๋ณดํ•œ ์ž…์ถœ๋ ฅ ์˜ˆ์˜ result ์ „๊นŒ์ง€๋ฅผ expect ๋‚ด๋ถ€์— ์ธ์ž๋กœ ๋„ฃ๊ณ  result๋ฅผ toBe์— ๋„ฃ๋Š” ์‹์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜์˜€๋‹ค.

ํŒŒ์ผ ์ƒ์„ฑ

README.md ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ์ œ๋ชฉ, ๋ฌธ์ œ ์„ค๋ช…, ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋Š”์ง€, ํšŒ๊ณ  ๋“ฑ์˜ ํ•ญ๋ชฉ์„ ๊ฐ๊ฐ Markdown์œผ๋กœ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋„๋ก ํ•˜์˜€๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋ฅผ ํ‚ค์ง€ ์•Š๋”๋ผ๋„ VSCode๋งŒ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ œ ์„ค๋ช… ๋ถ€๋ถ„์€ table์„ ์ œ์™ธํ•˜๊ณ  TurnDown๋ฅผ ์ด์šฉํ•ด ๋ชจ๋‘ html์—์„œ markdown์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ์ €์ž‘๊ถŒ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์— ์žˆ๋‹ค๊ณ  ๋ช…์‹œํ•˜๋Š” ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

Releases

No releases published

Packages

No packages published