일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- OOP
- node.js
- typescript
- GraphQL
- 탐욕법
- Interceptor
- Spring
- javascript
- 인접행렬
- 알고리즘
- css
- dfs
- JWT
- java
- winston
- 변수
- TIL
- 자료구조
- 프로그래머스
- bean
- 인접리스트
- LifeCycle
- html
- nestjs
- MySQL
- logger
- 코딩테스트
- REST API
- queue
- Deep Dive
- Today
- Total
목록전체 글 (227)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n4bsV/btsjtA31ZZ1/93KGK1o6tyDJXFNikIGovk/img.png)
DOM이란?? DOM : Document Object Modeling 이것만 가지고는 이해하기 힘들다. DOM의 기본 개념부터 알아보자. DOM의 기본 개념 DOM을 이해하기 위해서는, 웹 브라우저가 어떻게 동작하는지 알아야 한다. 1. Javascript가 왜 생겼는가?? - 브라우저에서 쓰려고 만들어진 언어 - 본연의 역할 : 웹 페이지를 동적으로 만들기 위해! (클릭하면 버튼이 이동한다던가, 리스트가 변한다던가..) → 즉, HTML문서를 조작해서 생명력을 불어넣어주기 위해 만들어진 언어. 2. 웹 페이지가 뜨는 과정 1) 사용자가 브라우저에 어떠한 주소를 입력한다. (여기서 사용자 = 브라우저 = 클라이언트, 같은 의미로 생각하면 된다) → 클라이언트가 서버에게 요청(request) 2) HTML..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQj7gg/btsjjBvtKsU/ZWOUF24vkICVDVWK4wFUB1/img.png)
Callback(콜백함수)이란?? 프로그래밍에서 Callback 또는 Callback function이란 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받은 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 나중에 실행할 수도 있다. 간단한 예시로, setTimeout, 혹은 forEach 메소드를 통해 알아보자. // setTimeout setTimeout(function() { console.log("Hello, world!"); }, 1000); // forEach const numbers = [1, 2, 3, 4, 5]; numbers.forEach(function(number) { console.log(number); }); 여기서 봤을 때 Callback은 Call..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dhbwVA/btsjlWE0P0T/oghsQ5Rb54tOgpGIffNc0k/img.png)
다른 객체지향 언어에서의 this : 클래스로 생성한 인스턴스 객체를 의미한다. Javascript에서의 this : 어디에서든지 사용가능하다. This : '이것' 이란 뜻. this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수(self-reference variable)이다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. this는 자바스크립트 엔진에 의해 암묵적으로 생성된다. this는 코드 어디서든 참조할 수 있다. 자바스크립트의 this는 기본적으로 실행 컨텍스트가 생성될 때 결정된다. 즉, 함수를 호출할 때 결정된다. 하지만 this는 객체의 프로퍼티나 메서드를 참조하기 위한 자기 참조 변수이므로 일반적으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EZxHi/btsiM96h7RZ/wyvTA8fjmi5SxwXm1ppkCK/img.png)
실행 컨텍스트란?? 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이며, 실행 컨텍스트가 활성화되는 시점에 다음과 같은 일을 진행한다. 선언된 변수를 위로 끌어올리기(호이스팅) 외부 환경 정보를 구성 this 값을 설정 이러한 특징으로 인해 JS는 타 언어랑 다른 특징이 발생. Call stack에 대한 이해 동일 환경에 있는 코드를 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이것을 위에서 설명한 '스텍'의 한 종류인 Call stack으로 쌓아 올린다. 가장 위에 쌓여있는 컨텍스트와 관련된 코드를 실행하는 방법으로 코드의 환경 및 순서를 보장한다. 컨텍스트의 구성 1) 실행 컨텍스트를 구성할 수 있는 방법 전역공간 eval()함수 함수(우리가 흔히 실행컨텍스트를 구성하는 방법) 2) 실..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/O5Yj1/btsigE7I2pX/GnD4J7pAbn4uEaiOFrPKaK/img.png)
UNION 이란?? - 결과물 합치기 이다. 그림과 같이 위쪽은 JOIN이라면, 아래쪽은 UNION을 뜻한다. UNION 중복을 제거한 집합 UNION ALL 중복을 제거하지 않은 집합 SELECT CustomerName AS Name, City, Country, 'CUSTOMER' FROM Customers UNION SELECT SupplierName AS Name, City, Country, 'SUPPLIER' FROM Suppliers 두 Table을 위 아래로 합쳐준다. 1. 합집합 나타내기 SELECT CategoryID AS ID FROM Categories WHERE CategoryID > 4 UNION SELECT EmployeeID AS ID FROM Employees WHERE Emp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cg7oLE/btsioohARos/FHJhl6qZcTAuLNXCP8tyKK/img.png)
JOIN이란?? 두 테이블의 공통된 정보(key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는것을 의미 1. JOIN(INNER JOIN) - 내부 조인 양쪽 모두에 값이 있는 행(NOT NULL) 반환 'INNER'는 선택사항 교집합이라고 생각하면 편하다. SELECT * FROM Categories C JOIN Products P ON C.CategoryID = P.CategoryID; 왼쪽은 Category의 항목, 오른쪽은 Products의 항목을 나타낸다. SELECT C.CategoryID, C.CategoryName, P.ProductName FROM Categories C JOIN Products P ON C.CategoryID = P.CategoryID; SELECT CONCAT( ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSt2FM/btsil0842DY/CgnaKs1wUEHokIuRIZOBH0/img.png)
0. Subquery 사용법 - Subquery란? 하나의 SQL 쿼리 안에 또다른 SQL 쿼리가 있는것을 의미한다. 자주 쓰이는 SubQuery 유형 살펴보기 1. Where에 들어가는 Subquery WHERE (필드명) in (or 조건식) (subquery) 2. Select에 들어가는 Subquery 기존 테이블과 함께 보고싶은 통계 데이터를 손쉽게 붙일때 사용 SELECT 필드명, 필드명, (SELECT...) FROM 3. FROM에 들어가는 Subquery 내가 만든 Table을 바로 사용하거나, 혹은 서브쿼리로 만든 Table을 Join할때 사용 1. 비상관 서브쿼리 SELECT CategoryID, CategoryName, Description, (SELECT ProductName FR..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c3JXb7/btsij6hBruT/qyn64q52BL6KXZUCQ89gqk/img.png)
1. Group BY - 조건에 따라 집계된 값을 가져옵니다. 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미한다. SELECT Country FROM Customers GROUP BY Country; SELECT CategoryID FROM Products GROUP BY CategoryID; ※ 여러 컬럼을 기준으로 그룹화할 수도 있다. SELECT Country, City, CONCAT_WS(', ', City, Country) FROM Customers GROUP BY Country, City; Group by - 그룹 함수 활용하기! 주로 COUNT() 함수와 같이 사용된다. SELECT COUNT(*), OrderDate FROM Orders GROUP BY Ord..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/deqjkT/btsikCgsMPz/vkEZ15rcihkXj6SBE9bZk0/img.png)
1. 시간/날짜 관련 함수들 CURRENT_DATE, CURDATE 현재 날짜 반환 CURRENT_TIME, CURTIME 현재 시간 반환 CURRENT_TIMESTAMP, NOW 현재 시간과 날짜 반환 SELECT CURDATE(), CURTIME(), NOW(); DATE 문자열에 따라 날짜 생성 TIME 문자열에 따라 시간 생성 SELECT '2021-6-1' = '2021-06-01', // 문자열이기 때문에 다르다고 판단 DATE('2021-6-1') = DATE('2021-06-01'), // 날짜로 변경 후 판단 '1:2:3' = '01:02:03', TIME('1:2:3') = TIME('01:02:03'); SELECT '2021-6-1 1:2:3' = '2021-06-01 01:02:0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bn1HXO/btsh33L3G86/qojZwH5oEwYIKDsU8hsYqK/img.png)
1. 입력정보와 관련된 보안 Nodejs path parse를 검색해보면 path.parse() 메소드는 파일의 경로와 정보를 객체로 전달해준다. 이를 감추기 위해 path.parse().base를 입력하면 입력 정보를 세탁해줄 수 있다. 오염된 정보를 세탁하는 방법으로는 var filteredId = path.parse(queryData.id).base; 이 부분을 통해 입력정보에 대해 보안을 지킬 수 있다. else { fs.readdir('./data', function(error, filelist){ var filteredId = path.parse(queryData.id).base; fs.readFile(`data/${filteredId}`, 'utf8', function(err, descrip..