Search
๐Ÿšง

[WIP] Algorithm Graphic

subtitle
์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•ด์•ผ๊ฒ ๊ณ , ๊ทธ๋ž˜ํ”ฝ์€ ํ•˜๊ณ  ์‹ถ๊ณ 
Tags
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
CS
css
front-end
Created
2021/04/26
2 more properties
Search
์ผ์ •
August 2026
Today
S
M
T
W
T
F
S

stacks

โ€ข
Typescript
โ—ฆ
ํƒ€์ž… ์ฒดํ‚น
โ€ข
React, gatsbyJS
โ—ฆ
๊ฐœ์ธ ๋น„ static site generation์ด next.js๋ณด๋‹ค ํผํฌ๋จผ์Šค๊ฐ€ ๋” ์ข‹๋‹ค๊ณ  ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ด„
โ€ข
Tailwind-css, Emotion
โ—ฆ
Atomic css ์จ๋ณด๊ณ  ์‹ถ์–ด์„œ. ๋Œ€์‹  atomic css๋Š” ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” @emotion/styled ๋กœ semanticํ•˜๊ฒŒ ๊ด€๋ฆฌ
โ€ข
D3
โ—ฆ
Network Graph ๋ Œ๋”๋ง
โ€ข
Jest
โ—ฆ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ

TODO

BFS, DFS
BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
Graph Visualization
D3๋กœ network graph ๋งŒ๋“ค๊ธฐ
Graph Search ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ (๋…ธ๋“œ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์ƒ‰๊น” ๋ฐ”๋€Œ๊ฒŒ)

D3 in React

d3์™€ react ๋ชจ๋‘ DOM์˜ ๋ Œ๋”๋ง์„ ์กฐ์ž‘ํ•œ๋‹ค. d3๋Š” DOM์— ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์†์„ฑ์„ ๋ฐ”๊พธ๋Š” ๋“ฑ ์ง์ ‘์ ์œผ๋กœ DOM์„ ์กฐ์ž‘ํ•œ๋‹ค. react๋Š” ๊ฐ€์ƒ DOM์„ ๋งŒ๋“ค์–ด props๋‚˜ state๊ฐ€ ๋ฐ”๋€Œ๋ฉด DOM์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
์ด ๊ธ€์˜ ๊ธ€์“ด์ด ์˜๊ฒฌ์— ๋”ฐ๋ฅด๋ฉด react, d3๋ฅผ ๊ฐ™์ด ์“ฐ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ react์—์„œ๋Š” ์ •์ ์ธ ์ปดํฌ๋„ŒํŠธ, ์ฆ‰ d3 ์ฐจํŠธ์— ๊ทธ๋ฆด ์ปดํฌ๋„ŒํŠธ๋“ค์„ react์—์„œ ๋ Œ๋”๋งํ•˜๊ณ  d3๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์กฐ์ž‘ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.
react๋งŒ ์“ฐ๋ฉด ๊ฐ€๋…์„ฑ์€ ์ข‹์€ ๋Œ€์‹ ์— d3์˜ transition์„ ์“ฐ์ง€ ๋ชปํ•˜๊ณ , d3๋งŒ ์“ฐ๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ๋ชปํ•˜๊ณ  ํ•˜๋‚˜์˜ ํƒœ๊ทธ ์•ˆ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์กฐ์ž‘ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์กฐํ™”๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ถ€๋ถ„์„ ์ œ์™ธํ•œ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์€ react๋กœ, ๊ทธ ์™ธ์— ์—˜๋ฆฌ๋จผํŠธ์˜ ์œ„์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ํ˜•ํƒœ๋ฅผ ๋ณ€ํ˜•์‹œํ‚ค๋Š” ๋“ฑ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ d3๋กœ ์กฐ์ž‘ํ•œ๋‹ค.

Typescript: type vs interface

1.
interface๋Š” Object ํƒ€์ž…์œผ๋กœ ์ œํ•œ๋œ๋‹ค
โ€ข
๋ฐ˜๋ฉด type์€ ์›์‹œ ํƒ€์ž…(string, null)๋กœ ๋ฐ”๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
type์€ interface๋‚˜ type์„ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
type info = string | { name: string };
TypeScript
๋ณต์‚ฌ
2. interface๋Š” ํ•ฉ์ณ์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ type์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค
โ€ข
๊ฐ™์€ ์ด๋ฆ„์˜ interface๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ํ•ฉ์ณ์งˆ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
๊ฐ™์€ ์ด๋ฆ„์˜ type์„ ์—ฌ๋Ÿฌ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
interface DudeInterface { name: string; } interface DudeInterface { age: number; } const pawel: DudeInterface = { name: "Pawel Grzybek", age: 31 };
TypeScript
๋ณต์‚ฌ
3. type์€ computed type์„ key๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
computed type์ด๋ž€ ํ‰๊ฐ€๋œ ํƒ€์ž…์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [key in Keys] ๋Š” Keys ํƒ€์ž…์˜ ํ‚ค๋“ค ์ค‘ ํ•˜๋‚˜๋กœ ํ‰๊ฐ€๋œ๋‹ค. ๋Œ€์‹  ํ‰๊ฐ€๋œ ํƒ€์ž…์„ ํ‚ค๋กœ ์“ธ ๋•Œ๋Š” ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์จ์ค˜์•ผ ํ•œ๋‹ค.
โ€ข
interface์—์„œ๋Š” computed type์„ ํ‚ค๋กœ ์“ธ ์ˆ˜ ์—†๋‹ค.
type Keys = "firstname" | "surname" type DudeType = { [key in Keys]: string } const test: DudeType = { firstname: "Pawel", surname: "Grzybek" }
TypeScript
๋ณต์‚ฌ

References

โ€ข
css-graph-node (Collatz Graph)