์ ์ฒด ๊ธ (112) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ํ๋ก๊ทธ๋๋จธ์ค SQL๋ฌธ LV. 1 (2) *Oracle ๊ธฐ์ค ํ์ด 13. ์กฐ๊ฑด์ ๋ง๋ ํ์์ ๊ตฌํ๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/131535 ) USER_INFO ํ ์ด๋ธ์์ 2021๋ ์ ๊ฐ์ ํ ํ์ ์ค ๋์ด๊ฐ 20์ธ ์ด์ 29์ธ ์ดํ์ธ ํ์์ด ๋ช ๋ช ์ธ์ง ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๋๋ณด๊ธฐ SELECT COUNT(*) AS USERS FROM USER_INFO WHERE AGE>=20 AND AGE=29 THEN '์ฅ๊ธฐ ๋์ฌ' ELSE '๋จ๊ธฐ ๋์ฌ' END AS 'RENT_TYPE' FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE TO_CHAR(START_DATE, 'YYYY-MM') = '2022-09' ORDER BY HISTO.. ํ๋ก๊ทธ๋๋จธ์ค SQL๋ฌธ LV. 1 (1) *Oracle ๊ธฐ์ค์ผ๋ก ์ ๋ต๋ฅ ๋์ ์์ผ๋ก 24๋ฌธ์ ์ค ์์ 12๋ฌธ์ ๋ง 1. ์ํ ๋๋ฌผ ์ฐพ๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59036 ) ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ ์ค ์ํ ๋๋ฌผ1์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์์ด๋ ์์ผ๋ก ์กฐํํด์ฃผ์ธ์. ๋๋ณด๊ธฐ SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick'; 2. ์ญ์ ์ ๋ ฌํ๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59035 ) ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋ชจ๋ ๋๋ฌผ์ ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ.. DAY 3 #2.0 ~ #2.3 #2.0 SocketIO vs WebSockets https://socket.io/ SocketIO : ์ค์๊ฐ, ์๋ฐฉํฅ, event ๊ธฐ๋ฐ์ ํต์ ์ ๊ฐ๋ฅ์ผ ํ๋ framework https://socket.io/docs/v4/ WebSocket๊ณผ์ ์ฐจ์ด์ ์, webSocket์ด socketIO๊ฐ ์์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋ถ๊ณผํ๋ฉฐ, ๋ง์ฝ WebSocket์ด ์ฌ์ฉ๋ชปํ๊ฒ ๋๋๋ผ๋ socketIO๋ http long-polling ๋ฑ์ ๋์ฒดํด ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ฌธ์์ ๋์์๋ค. ๋น์ฅ webSocket์ protocol, socketIO๋ framework์ด๋ผ๋ ์ ์์ ๋ค๋ฅด๋ค.. https://www.npmjs.com/package/socket.io #2.1 Installing Socke.. DAY 2 #1.3 ~ 1.9 #1.3 WebSocket Events https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket app.js // ์ด socket์ ์ด์ฉํด์ frontend์์ backend๋ก ๋ฉ์ธ์ง ์ ์ก ๊ฐ๋ฅ // ์ฌ๊ธฐ socket์ ์๋ฒ๋ก์ ์ฐ๊ฒฐ๋ก, window.location.host๋ pc๋ฟ๋ง ์๋ ๋ชจ๋ฐ์ผ์์๋ ์ ์์ด ๊ฐ๋ฅํ๊ฒ๋ ํด์ค // (http://localhost:3000์ด ์๋, ์์ ๊ธฐ๊ธฐ์ host์ location์ผ๋ก ์ ์) const socket = new WebSocket(`ws://${window.location.host}`); webSocket ์ฌ์ฉ - server : node.js ํ๊ฒฝ์์ ws์ ๊ฐ์ ๋ชจ๋์ ์ด์ฉํด webSo.. 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.. ์ด์ 1 ยทยทยท 8 9 10 11 12 13 14 ๋ค์