목록열심 (13)
함께 성장하는 프로독학러
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 Node.js 를 이해하는데 필수적인 개념인 콜백함수와 동기, 비동기적 처리에 대해서 알아보도록 하겠습니다. 저번 포스팅에서 Node.js 의 특징 중 첫 번째가 무엇이었는지 기억하시나요? 그것은 바로 '비동기적 I/O 처리, 이벤트 위주' 였습니다. * I/O 는 input, output 을 의미합니다. 동기 / 비동기 비동기적 I/O 처리. 저번 포스팅에서 Node.js 의 특징에 대해서 설명하면서 간단히 설명했지만 아직 감이 안 잡히시는 분들이 많을 것입니다. 비동기의 반댓말은 동기 입니다. 이를 영어로 표현하면 다음과 같습니다. Synchronous (동기) ASynchronous (비동기) 보통 프로그래밍에서 코드의 실행은 작성된 코드의 위에서 ..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 Document 를 검색하는 find() 메소드에 대해서 자세히 알아보도록 하겠습니다. Document 를 조회하는 find() 메소드 find() 메소드의 표현식은 다음과 같습니다. db.COLLECTION_NAME.find(query, projection) find() 메소드의 인자로 query 와 projection 이 들어옵니다.두 값 모드 Optional 파라메터입니다.query 의 데이터 타입은 document(객체) 입니다. 이는 다큐먼트를 조회하는 기준을 정하는 파라메터입니다. 이 값이 생략되거나 비어있는 객체 {} 를 전달하면 해당 컬렉션의 모든 다큐먼트들을 조회합니다.projection 의 데이터 타입 역시 document 로, 조회한 ..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 MongoDB 의 데이터를 모델링하는 방법에 대해 간단히 살펴보고, MongoDB Shell 안에서 Database, Collection, Document 를 생성하고 제거하는 명령어에 대해서 알아보겠습니다. 데이터 모델링 MongoDB 의 Document 를 모델링 하는 방법에 대해서 알아보겠습니다. 이해를 돕기위해 인스타그램을 위한 데이터베이스를 모델링한다고 가정해 봅시다. 인스타그램에서 게시물을 올릴 때 필요한 정보는 다음과 같습니다. 게시글에는 사진, 설명, 작성자, 작성일이 포함되어 있다.게시글에는 0개 이상의 해쉬태그를 가질 수 있다.게시글에 덧글을 달 수 있다. 만약 관계형 데이터베이스를 이용한다면 table 은 총 세개가 만들어 져야 할 것..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 리덕스를 사용하는 이유와 리덕스의 개념을 정리해 보겠습니다. * 이번 포스팅의 내용은 velopert 님의 '리덕스 왜 쓸까?' 포스팅을 정리한 내용입니다. 리덕스를 이해하기 위해서 먼저 리덕스를 사용하지 않는 환경의 단점을 먼저 파악해 보겠습니다. 간단한 예를 통해 살펴보겠습니다. 만약 다음 그림과 같이 세 개의 컴포넌트가 있다고 합시다.A 컴포넌트는 B 와 C 컴포넌트의 부모 컴포넌트입니다. B 컴포넌트는 A 의 상태를 변경하는 함수를 실행하는 컴포넌트입니다. (A의 상태를 변경하는 메소드 _increase 를 increNum 프롭스로 전달받습니다.) C 컴포넌트는 A 컴포넌트의 상태(state)를 렌더링하는 컴포넌트입니다.(A의 상태를 numValu..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 ES6의 삼항 조건 연산자(conditional ternary operator)에 대해서 알아보도록 하겠습니다. 삼항 조건 연산자는 if 문의 축약 형태 입니다.표현식 부터 살펴 보겠습니다. condition ? expr1 : expr2 condition 은 조건을 나타내는 표현식이 들어가는 자리입니다. (조건문의 결과는 true, false 둘 중 하나가 나오는 표현식)expr1 은 조건문이 참일때 반환되는 표현식이고, expr2 는 조건문이 거짓일 때 반환되는 표현식 입니다. 간단한 예를 살펴보겠습니다. 123var age = 29;var canDrinkAlcohol = (age > 19) ? "True, over 19" : "False, under ..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 배열과 문자열에서 사용가능한 메서드인 slice 메서드에 대해서 알아보도록 하겠습니다. slice 메서드는 단어에서 의미를 유추해 볼 수 있듯이 배열이나 문자열의 원소를 잘라내 추출하는 것입니다.먼저 표현식부터 살펴보겠습니다. arr/str.slice([beginIndex][, endIndex])배열이나 문자열에서 사용하는 메서드이며 파라메터로는 beginIndex 와 endIndex 가 옵니다.beginIndex 는 말 그대로 슬라이스를 시작하는 인덱스 번호를 의미합니다.배열과 문자열 공통으로 0부터 시작하는 인덱스를 의미합니다.* beginIndex 값이 생략되면 0 부터 슬라이스 하겠다는 의미입니다.* beginIndex 값이 음수라면 배열이나 문자..
죠>안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 비구조화 할당, destructuring assignment에 대해서 알아보겠습니다. 비구조화 할당 이라는 말이 쉽게 이해되는 말은 아니라고 생각합니다.간단히 말하자면 배열이나 객체의 요소를 해체하여 별개의 변수로 추출할 수 있도록 하는 것입니다.이 말도 와닿지 않으신가요? 괜찮습니다. 코드를 통해서 살펴보도록 하죠. var a, b, rest; [a, b] = [10, 20]; console.log(a); // 10 console.log(b); // 20위의 코드의 첫 줄에서 변수 a, b, rest를 선언했습니다. (선언만 하고 아직 할당하지 않은 상태)그리고 두 번째 줄에서 이름 없는 배열 두 개가 같다고 표현했습니다.왼쪽 항에 있는 배열은 a,..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 배열의 원소를 삭제하거나 삭제하고 새로운 원소들을 추가하는 메서드인 splice 메서드에 대해서 알아보겠습니다. 표현식은 다음과 같습니다. array.splice(start) array.splice(start, deleteCount) array.splice(start, deleteCount, item1, item2, ...)splice의 메서드의 인자로 들어오는 값은 차례로 start, deleteCount, items 입니다. start는 삭제할 배열의 요소의 index 번호를 의미합니다.그리고 뒤에 나오는 deleteCount 인자는 start 부터 몇 개의 요소를 삭제할지 결정하는 숫자입니다.즉, start 인덱스부터 deleteCount 갯수만큼 ..
안녕하세요, 프로독학러 입니다. 이번 포스팅에서는 ES6의 method shorthand에 대해서 알아보겠습니다. 표현식부터 살펴보도록 하겠습니다. // 단축 메서드명 (ES6) var o = { property([parameters]) {}, get property() {}, set property(value) {}, * generator() {} };위와 같이 객체 안에서 메서드를 지정할 때 function을 생략할 수 있습니다. 이해를 돕기위해 예제를 살펴보겠습니다. 1234567891011var obj = { add: function (a, b){ return a+b; }, mult: function (a, b){ return a*b; }} console.log(obj.add(10, 5)); //..
안녕하세요, 프로독학러 입니다. 오늘은 배열과 문자열에서 사용 가능한, 검색을 위한 메서드인 indexOf 메서드에 대해서 알아보도록 하겠습니다. 먼저, 표현식부터 살펴 보겠습니다. arr/str.indexOf(searchElement/searchValue[, fromIndex])메서드의 첫 번째 인자로는 검색할 대상이 들어옵니다.(배열일 경우 검색할 엘리먼트, 문자열일 경우 검색할 문자)그리고 생략 가능한 두 번째 인자는 검색을 시작할 index입니다.만약 배열이라면 배열의 index값 (0 부터 시작해서 하나씩 증가)을 의미하며,문자열이라면 문자열 각각의 문자 하나하나를 의미합니다. (마찬가지로 첫 번째 글자부터 0, 1, 2, 3 ...) indexOf 메서드의 리턴값은 배열일 경우에 검색된 엘리먼..