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

javascript

(20)
DAY 1 #0.2 ~ #1.2 ํ”„๋ก ํŠธ, ๋ฐฑ์—”๋“œ ์ค€๋น„๋ฅผ ์œ„ํ•ด ๋ฏธ๋ฆฌ 0.0~0.4๋ฅผ ๋“ค์–ด์•ผํ•œ๋‹ค... ์•ˆ๋“ค์—ˆ๋‹ค๊ฐ€ ์ง€๊ธˆ 1์‹œ๊ฐ„์งธ ํ—›ํƒ•์ณค๋‹ค... https://ssocoit.tistory.com/188 ์ฐธ๊ณ  #0.2 server Setup https://www.npmjs.com/package/ws ๋จผ์ € node, ws, express, pug ์„ค์น˜ ๋‚˜๋Š” ์ด๋ฏธ ๋…ธ๋“œ๋Š” ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ์„ธ๊ฐœ๋งŒ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•จ.. npm i ws npm i express npm i pug github์— ์˜ฌ๋ฆฐ๋‹ค๋ฉด readme ํŒŒ์ผ๋„ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ„ฐ๋ฏธ๋„์— npm init-y ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ญ”๊ฐ€ ์žˆ์–ด๋ณด์ด๋Š” ๊ธฐ๋ณธ package.json ํŒŒ์ผ์„ ์ž‘์—…ํ•ด์ค€๋‹ค. ๊ฑฐ๊ธฐ์— ์ถ”๊ฐ€๋กœ ๋ง๋ถ™์ด๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. nodemon๊ณผ babel์„ ์‚ฌ์šฉํ• ๊ฒƒ์ด๋‹ˆ ํ„ฐ๋ฏธ๋„..
DAY 14 #8.0 Geolocation ์šฐ์„  ๋‚ ์”จ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ index.html์— ์ค€๋น„๋ฅผ ํ•ด์ค€๋‹ค. function onGeoOk(position){console.log(position);} function onGeoError(){alert("Can't find you. no Weather for you.");} navigator.geolocation.getCurrentPosition(onGeoOk, onGeoError); ์œ„์˜ ์ฝ”๋“œ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋‚ด ์œ„์น˜๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. ๋‹ค๋งŒ getCurrentPosition()์—๊ฒŒ๋Š” 2๊ฐœ์˜ argument๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ํ•˜๋‚˜๋Š” ๋ชจ๋“  ๊ฒŒ ์ž˜ ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ์‹คํ–‰๋œ ํ•จ์ˆ˜(onGeoOk), ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰๋  ํ•จ์ˆ˜(onGeoError)์ด๋‹ค. ์„ฑ๊ณตํ–ˆ์„ ์‹œ์—๋Š” ํ•ด๋‹น ..
DAY 13 7.6 ~ 7.8 TO DO LIST #7.6 Deleting To Dos part One ์ €๋ฒˆ ์ฝ”๋“œ์—์„œ ์‚ญ์ œ ๊ธฐ๋Šฅ์€ ์ž˜ ์‹คํ–‰๋์œผ๋‚˜, ๋ฌธ์ œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•ญ๋ชฉ์ด ์žˆ์„ ๋•Œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด '๋‚˜๋ฃจํ†  ๋ณด๊ธฐ'๊ฐ€ ๋‘๊ฐœ๊ฐ€ ์žˆ์„ ๋•Œ, ๋‚˜๋ฃจํ†  ๋ณด๊ธฐ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ–ˆ์„ ๋•Œ ์–ด๋–ค ๊ฒƒ์„ ์‚ญ์ œํ–ˆ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค. ๋•Œ๋ฌธ์— array์˜ ๊ฐ item์— id๋ฅผ ๋ถ€์—ฌํ•ด ๊ณ ์œ ์„ฑ์„ ๊ฐ–๊ฒŒํ•  ๊ฒƒ์ธ๋ฐ, ์ด ๊ณ ์œ ์„ฑ์€ Date.now() ํ•จ์ˆ˜๋กœ ๋ถ€์—ฌํ•  ๊ฒƒ์ด๋‹ค. Date.now()๋Š” ๋ฐ€๋ฆฌ์ดˆ(1000/1์ดˆ)๋ฅผ ์ฃผ๋Š” ํ•จ์ˆ˜๋กœ, ์ด๋ฅผ ๊ฐ item์—๊ฒŒ ๊ณ ์œ ํ•œ ์•„์ด๋”” ๊ฐ’์œผ๋กœ ๋ถ€์—ฌํ•  ๊ฒƒ์ด๋‹ค. handleToDoSubmit function handleToDoSubmit(event) { event.preventDefault(); const newTodo = toDo..
DAY 12 7.0 ~ 7.5 TO DO LIST (์–‘์ด ๋งŽ์•„ DAY 12์—๋Š” 7.0~7.5, DAY 13์—๋Š” 7.6~7.8, DAY 14์—๋Š” 8.0~8.2๋กœ ๋‚˜๋ˆˆ๋‹ค.) #7.0 Setup index.html todo-form ๋‚ด์˜ input์—๋Š” ํ•  ์ผ์„ ์ž…๋ ฅ๋ฐ›๊ณ , ul ํƒœ๊ทธ์—๋Š” ์ €์žฅํ•œ text๊ฐ€ ๋‚˜์—ด๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. todo.js const toDoForm = document.getElementById("todo-form"); const toDoInput = document.querySelector("#todo-form input"); // const toDoInput = toDoForm.querySelector("input"); // ์ด๋Ÿฐ ์‹์œผ๋กœ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. const toDoList = document.g..
DAY 11 6.0 - 6.2 background.js // img ํŒŒ์ผ ๋ช…์„ ๋‹ด์€ ๋ณ€์ˆ˜ const images = ["0.jpeg", "1.jpeg", "2.jpeg"]; // ์ด๋ฏธ์ง€ ๋žœ๋ค ์ถœ๋ ฅ const chosenImage = images[Math.floor(Math.random() * images.length)]; // document์— img ํƒœ๊ทธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ณ€์ˆ˜ ์ƒ์„ฑ const bgImage = document.createElement("img"); // bgImage์˜ src์— ์ฃผ์†Œ๋ฅผ ๋žœ๋ค์œผ๋กœ ๋Œ€์ž… bgImage.src = `img/${chosenImage}`; // html์— img ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. document.body.appendChild(bgImage); img๋ฅผ ๋ฐฐ๊ฒฝ์œผ๋กœ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด body >..
DAY 10 5.0 ~ 5.3 ์ด๋ฒˆ ๊ธ€์€ ๊ฑฐ์˜ ๋‹ค ์ผ์„ ๋•Œ์ฏค์— ๊ฐ‘์ž๊ธฐ ์ปดํ“จํ„ฐ๊ฐ€ ๋ฉˆ์ถ”๋Š”๋ฐ”๋žŒ์—... ๊ฐ„๋žตํ•˜๊ฒŒ ์จ์•ผ์ง€ ใ… ...ํ•˜ index.html 00:00 app.js const clock = document.querySelector("h2#clock"); function getClock() { const date = new Date(); // date.getHours()๋“ฑ ์‹œ๊ฐ„ ๊ฐ’์€ ์ˆซ์ž ๊ฐ’์ด๋‹ค. // padStart๋Š” string ๊ฐ’์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค. const hours = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getMinutes()).padStart(2, "0"); const seconds = Str..
DAY 8 #4.4 Getting Username submit ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, form ์ž์ฒด๋ฅผ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 2๊ฐœ๊ฐ€ ์žˆ๋‹ค. โ‘  form ํƒœ๊ทธ ์ž์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ โ‘ก css์—์„œ display:none; ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๊ฒƒ ์•„๋ž˜๋Š” form์—์„œ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„์˜ค๋ฉด form์€ ์ œ๊ฑฐํ•˜๊ณ , ๋ฐ›์•„์˜จ ์ž…๋ ฅ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋‹ค. index.html login-form์—์„œ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„์˜ค๋ฉด form ํƒœ๊ทธ๋Š” ์•„์˜ˆ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๊ณ , h1 ํƒœ๊ทธ๊ฐ€ ๋ณด์—ฌ์ง€๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. style.css ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. .hidden{ display:none; } /* ์ข€ ๋น„์Šทํ•œ ์†์„ฑ์—๋Š” display:hidden;์ด ์žˆ์ง€๋งŒ, ์ด๋Š” ๊ทธ๋ƒฅ ๋ณด์ด์ง€ ์•Š๊ฒŒ ์ˆจ๊ฒจ์ฃผ๋Š” ๊ฒƒ ๋ฟ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„๋„ ๊ทธ๋Œ€๋กœ์ด๋ฉฐ ๋”ฐ๋ผ์„œ html์—์„œ ..
DAY 5 #2.13 Conditionals prompt(); ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฐฝ์„ ๋„์›Œ ๊ฐ’์„ ๋ฐ›์•„์˜ค์ง€๋งŒ, ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ ๊นŒ์ง€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ์˜ค๋ž˜๋œ ๋ฐฉ์‹์œผ๋กœ css๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์—†๋‹ค. typeof ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋Š” variable์˜ type์„ ๋ณผ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ์ธ๋ฐ, prompt()์—์„œ๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์ด๋ฅผ typeof๋กœ ์ถœ๋ ฅํ•ด๋„ string์ด๋ผ๊ณ  ์ž…๋ ฅ๋œ๋‹ค. prompt์˜ type์€ string์ด default์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. parseInt(); ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ string type์„ number type์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค. console.log(typeof "15", typeof parseInt("15")); // string number const age = parseInt(prompt("Please write y..