๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ฐœ๋ฐœ7

[Chrome Extension] ๊ตฌ๊ธ€ ๋”ฅ๋‹ค์ด๋ธŒ ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ œ์ž‘๊ธฐ ๊ตฌ๊ธ€ ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์ž‘ํ•˜์ž. ๋‚˜๋Š” ์ด๊ฑธ ์™œ ๋งŒ๋“ค์—ˆ์„๊นŒ?๊ตฌ๋ฆ„ ํ’€์Šคํƒ ๊ณผ์ • 10๊ธฐ๋ฅผ ์ฐธ์—ฌํ•˜๋ฉด์„œ ๊ฐ•์˜ ๋ฆฌ์ŠคํŠธ ์ค‘ ์ค‘๋ณต๋˜๋Š” ๊ฐ•์ขŒ๊ฐ€ ์žˆ์—ˆ๋‹ค.์ค‘๋ณต๋˜๋Š” ๊ฐ•์ขŒ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด๋ดค๋‹ค.ResultHow?์šฐ์„  docs๋ฅผ ์ฐพ์•„๋ด์•ผํ•œ๋‹ค.https://developer.chrome.com/docs/extensions/get-started/tutorial/hello-world?hl=ko์—ฌ๊ธฐ์„œ ์ž˜ ์„ค๋ช…๋˜์–ด์žˆ๋‹ค.์š”์•ฝํ•ด๋ณด์žmanifest.json ์ด๋ผ๋Š” ํŒŒ์ผ๊ณผbackground.js, ๊ทธ๋ฆฌ๊ณ  ๋™์ž‘์„ ํ•  js๋“ค์ด ํ•„์š”ํ•˜๋‹ค. ์ž์„ธํ•œ ์ฝ”๋“œ๋Š” git์— ์ž‘์„ฑํ•ด๋‘์—ˆ๋‹ค.์ด์ œ ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด๋ณด์ž.https://github.com/groom-study-team1-project/chrome-extension GitHub - groom-st.. 2024. 8. 7.
[Vanila js] ์ตœ๊ทผ ๊ฒ€์ƒ‰ ๊ตฌํ˜„ํ•˜๊ธฐ ResultViewexport default class HistoryListView extends KeywordListView { constructor() { super(qs("#history-list-view"), new Template()); } bindEvents() {} handleClickRemoveButton() {}} HistoryListView๋ฅผ ๋ณด๋ฉด KeywordListView ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค.์ถ”์ฒœ๊ฒ€์ƒ‰๊ณผ ์ฐจ๋ณ„์ ์„ ์ƒ๊ฐํ•˜๋ฉด, ๊ฒ€์ƒ‰๊ธฐ๋ก์„ ์ง€์šฐ๋Š” ์ž‘์—…์ด ์ถ”๊ฐ€๋กœ ์ˆ˜ํ–‰๋˜๋‹ˆ๊นŒ. ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•ด์ค€๋‹ค.๋˜, KeywordListView๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ KeywordListView์˜ ์ƒ์„ฑ์ž์˜ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ๋‹ค.Controllerexport defaul.. 2024. 8. 2.
[Vanila js] ํƒญ ๊ตฌํ˜„ํ•˜๊ธฐ ResultViewexport default class TabView extends View { constructor() { super(qs('#tab-view')); this.template = new Template(); } show() {} bindEvents() {} } ์ •์  ํŽ˜์ด์ง€์˜ tab-view id๋ฅผ ๊ฐ€์ง„ ํƒœ๊ทธ์— ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.Result์™€ ๊ฐ™์ด ํƒญ์„ ๋ณด์—ฌ์ค„ ๊ธฐ๋Šฅ๊ณผ, ํƒญ์„ ๋ˆ„๋ฅด๋Š” ํ–‰์œ„๋ฅผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”Controllerexport default class Controller { constructor(store, {searchFormView, searchResultView, tabView}) { this.store.. 2024. 8. 1.
[Vanila.js] ์‚ฌ์ „ ์ฝ”๋“œ ์ดํ•ดํ•˜๊ธฐ ๊ฐ•์‚ฌ๋‹˜์ด ๋ฏธ๋ฆฌ ๊ตฌํ˜„ํ•ด ๋‘” ์„œ๋น„์Šค branch : ready/scaffodingIn Memory DB์ถ”์ฒœ ๊ฒ€์ƒ‰์–ด, ๊ฒ€์ƒ‰ ๊ธฐ๋ก, ์ƒํ’ˆ ๋ฐ์ดํ„ฐUtility์‹œ๊ฐ„๊ด€๋ จ UtilDOM Event๋ฅผ ํ™œ์šฉํ•œ Util๊ธฐ๋ณธ์ ์œผ๋กœ JS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ๋“ค์„ ๋ชจ๋“ˆํ™”ํ–ˆ๋‹ค๊ณ  ๋ณด์ธ๋‹ค.Model์ดํ›„์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ์ค‘์š” ๋กœ์ง์ด ๋‹ด๊ธธ ๊ฒƒ์œผ๋กœ ๋ณด์ž„.View์ •์  ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๋ Œ๋”๋ง(์ˆ˜์ •)ํ•˜๋Š” ํŽ˜์ด์ง€Utility๋ฅผ ํ™œ์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค.ControllerView์— ์ž‘์„ฑ๋  ๋‚ด์šฉ์„ ์ œ์–ดModel์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ๋”ฐ๋กœ ์„œ๋น„์Šค ๋กœ์ง์„ ์ž‘์„ฑํ•  ๋“ฏ 2024. 7. 31.
9. ๋ฐ˜๋ณต๋ฌธ - while ๋ฌธ, do while ๋ฌธ while ๋ฌธ ์ด๋ž€? while๋ฌธ๋„ for๋ฌธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ~๋™์•ˆ ์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ „ ํฌ์ŠคํŠธ์—์„œ for๋ฌธ์—์„œ ~๋™์•ˆ์„ ์˜๋ฏธํ•˜๋Š” ๊ณณ์ด ์กฐ๊ฑด์‹์ด๋ผ๊ณ  ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. while๋ฌธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ '์กฐ๊ฑด์‹' ๋™์•ˆ ๋ฐ˜๋ณต์„ ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ๊ธฐ ์œ„ํ•ด์„œ for๋ฌธ์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ๋ณต์Šตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ˆ˜ํ–‰ (์ดˆ๊ธฐ๊ฐ’), ๋จผ์ €, '์ดˆ๊ธฐ๊ฐ’'์— ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ์€ 0๊ฐœ ์ด์ƒ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด์ฃ . ์ €๋Š” 3๊ฐœ์˜ ๋ณ€์ˆ˜ i, j, cnt๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ํŠน์ • ๊ฐ’์„ ํ• ๋‹น ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ˆ˜ํ–‰ (์กฐ๊ฑด์‹), ์กฐ๊ฑด๋™์•ˆ for๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์€ i < j ์ด๋ฏ€๋กœ, (i : 10) < (j : 20) ๋ฅผ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ˆ˜ํ–‰์—์„œ ์กฐ๊ฑด.. 2024. 2. 10.
8. ๋ฐ˜๋ณต๋ฌธ - for ๋ฌธ ๋ฐ˜๋ณต๋ฌธ์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฐ˜๋ณต๋ฌธ์ด๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฐ˜๋ณตํ•˜๋Š” ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์„ ๋œปํ•œ๋‹ค.๋ฐ˜๋ณต๋ฌธ์—๋Š” ์ž˜ ์•Œ๋ ค์ง„ for๋ฌธ๊ณผ while๋ฌธ์ด ์กด์žฌํ•œ๋‹ค.์ถ”๊ฐ€๋กœ do while๋ฌธ๋„ ์กด์žฌํ•˜๋Š”๋ฐ ์•„์ง ๊นŒ์ง€๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š์•˜๋‹ค. for๋ฌธ for๋ฌธ์€ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ์ด ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค.ํ•˜์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ํ—ท๊ฐˆ๋ คํ•˜๋Š” ํฌ์ธํŠธ๋“ค์ด ์žˆ์–ด์„œ ๊ทธ๊ฒƒ์„ ์งš๊ธฐ ์œ„ํ•ด์„œ ๊ฐ€์ ธ์™”๋‹ค. ์šฐ์„ , ์›ฌ๋งŒํ•œ ์ฑ…์—์„œ ์„ค๋ช…ํ•˜๋Š” for๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.for (int i = 0; i  ๋Œ€๋ถ€๋ถ„ ์—ฌ๊ธฐ์„œ int i = 0 ์„ ์ดˆ๊ธฐ๊ฐ’, i for (์ดˆ๊ธฐ๊ฐ’; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹)๊ทผ๋ฐ ์ €๋Š” ํ—ท๊ฐˆ๋ฆฌ๋˜ ๋ถ€๋ถ„์ด ์ข€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.๋งจ ์ฒ˜์Œ for๋ฌธ์„ ์ ‘ํ–ˆ์„ ๋•Œ, ์กฐ๊ฑด์‹์ด ' i ' ์ด๋ฉด i ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ.. 2024. 2. 10.
2024. ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๊ณต๋ถ€ ์‹œ์ž‘ 2024๋…„ ์ •๊ธฐ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ ์‹œํ—˜ ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์— ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์ž๊ฒฉ์ฆ์— ๋Œ€ํ•ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋๋„ค์š”. ์ €๋Š” ์ „๊ณต์ด ์ปดํ“จํ„ฐ ๊ณตํ•™์ด๊ณ  ํฌ๋ง ์—…๋ฌด๊ฐ€ IT ์—…๋ฌด๋‹ค๋ณด๋‹ˆ.. ์ž๊ฒฉ์ฆ ๊ณต๋ถ€๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ? ๊ทธ๋ƒฅ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์ด๋‚˜ CS ๊ณต๋ถ€๋ฅผ ํ•˜๋Š”๊ฒŒ ๋” ์ข‹์ง€ ์•Š์„๊นŒ? ์—ฌ๋Ÿฌ ์ƒ๊ฐ์ด ๋งŽ์•˜๋Š”๋ฐ ์ด๋ฒˆ์— ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ ์‹œํ—˜์„ ๋„์ „ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Why? ์ €๋Š” ๊ต๋‚ด ์ „๊ณต ์ˆ˜์—…์„ ๋ฐ”ํƒ•์œผ๋กœ ์–ด๋А์ •๋„ ๊ณต๋ถ€ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ CS ์ง€์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ณ  ์ทจ์—…์„ ์œ„ํ•ด์„œ CS ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ๊ฐ€ CS ๋‚ด์šฉ์„ ๋งŽ์ด ๋‹ด๊ณ  ์žˆ๋”๋ผ๊ตฌ์š”?? ๊ทธ๋Ÿผ, ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์กฐ๊ฐํ™”ํ•˜๋“ฏ์ด ์–ด๋А ์ •๋„์˜ ์ง€์‹์ด ๋” ์ฑ„์›Œ์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก , ์ž๊ฒฉ์ฆ ์ทจ๋“์ด ๋ชฉ์ ์ด๊ณ  CS ๊ณต๋ถ€์˜ ์ดˆ์ ์ด .. 2024. 1. 27.