본문 바로가기

JavaScript

(8)
[TIL] node.js 서버 구성 MAIN ACTIVITY : Node.js 환경에서 서버를 만들고, 기존에 만들었던 채팅앱에서 GET 과 POST 를 써서 데이터를 주고 받을 수 있도록 만들었다. 아래 코드는 다른 모듈을 사용하지 않고 node.js만을 이용해 클라이언트의 요청에 따라 처리할 수 있도록 서버를 만든 것이다. 아주 간단한 어플리케이션 서버이고 이러한 구성으로 만들어 나갈 수 있다. 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 const http = require('http'); const port = 3000; const ip = '127.0.0.1'; const server = http.createServer((request,..
Node.js 서버사이드 자바스크립트를 사용하는 프론트엔드 개발자들도 이 자바스크립트를 사용하여 백엔드 서비스 개발을 할 수 있도록 만들어준게 바로 이 Node.js이다. 여기서 말하는 백엔드 서비스란, API(Application Programming Interface) 라고도 불린다. 유저들과 직접적으로 액션이 일어나는 Web App 이나 Mobile App 도 이 백엔드 서비스를 통해서 데이터를 주고 받아 보여지게 된다. 왜 Node.js 인가? 1. 프로토타입핑과 애자일 개발에 효과적이다. 애자일 소프트웨어 개발이란 : 완전한 무계획이나 너무 완벽한 계획에서 벗어나 일정한 주기로 프로토타입을 만들어 이를 발전시켜가는 방법론이다. (출처: 위키피디아) 2. 시스템적으로 빠르고 예상한 결과를 쉽게 측정하고 얻어낼 수 있다. ..
setTimeout() && setInterval() 자바스크립트 setTimeout(func, millisec) setTimeout()은 어디선가 그리고 아무래도 익숙한 느낌이다. 뭔가 시간과 관련된 함수일 것 같은 그런 느낌. 그리고 그 느낌이 맞다. 원하는 시간을 설정하면 그 시간이 지난 후 함수를 실행하게 된다. 포인트 setTimeout() 과 setInterval() 은 비동기적으로 작동하는 함수이다. 자바스크립트는 동기적으로, 즉, 스크립트를 순차적으로 읽으며 실행된다. 이 말은 윗라인의 실행이 끝나기 전까지는 아래라인은 실행할 엄두도 내지 못한다는 것이다. 예를 들어보자. 1 2 3 4 5 6 7 console.log('start working'); console.log('still working'); console.log('end working'); /..
[Algorithms]N-queens (Chess Puzzle) 알고리즘, 연습 또 연습 알고리즘적 사고를 한다는건 정말 어려운 일이다. 인간은 컴퓨터와는 다르게 생각하기 때문이다. 일련의 모든 과정들을 일일이 명령하고 알려줘야만 컴퓨터는 사고할 수 있다. 이번에 다룰 알고리즘 또한 만만치 않은 퍼즐이다. 지난 세기의 대결, 이세돌과 알파고와의 대결은 엄청났다. 알파고는 어떻게 바둑을 뒀을까? 물론 딥러닝과 같은 컴퓨터 기술을 구현하는건 아니지만 체스보드를 활용해서 꽤 유명한 알고리즘 퍼즐을 풀어봤다. 우리는 체스의 규칙을 알지만 컴퓨터는 모른다. 그렇기 때문에 각각의 경우마다 어떻게 체스를 둬야할 지 하나하나 길을 알려주어야 하는 것이다. 그 중, 체스의 가장 강력한 말인 퀸을 구현해본다. 여기서 말하는 N은 체스보드의 크기이며, 어떠한 보드의 사이즈(NxN)가 오..
Prototype? __proto__? constructor? 1. Prototype(프로토타입)과 __proto__(언더바언더바 프로토 언더바언더바) 여러 다른 언어들과 비슷하게 자바스크립트도 객체지향 프로그램 언어 중 하나이다. 사실 이해하는데 있어서 쉽지 않은 부분이기 때문에 콘솔창을 열고 직접 객체를 만들어가면서 공부하면 조금 더 쉽게(?) 이해할 수 있다. 자바스크립트에서 생성되는 모든 객체는 부모의 형태를 본따서 생성되게 된다. 자바스크립트를 객체지향 언어라고 하는 이유는 어떤 객체든 Object.prototype을 최초의 조상으로 이어져 생성되기 때문이다. 그 말은, 즉, 부모 객체의 부모 객체의 부모 객체로부터 프로퍼티나 메소드를 상속받게 된다는 것이다. 이것을 자바스크립트의 Inheritance(상속) 라고 한다. 먼저 생성자 함수를 사용하지 않고,..
자료구조의 이해 자료구조의 이해 1. 알고리즘이란? 알고리즘이란, 어떠한 문제를 해결하기 위한 여러 순차적인 동작들의 모임을 말한다. 그 문제가 해결되기 까지의 유한성을 가진 프로세스며, 의사코드(Pseudo Code)로 표현될 수 있다. 또한, 특정언어에 구속되지 않는다. 2. 왜 알고리즘은 중요한가? 프로그램의 성능에 큰 영향을 미친다. 알고리즘 설계시 다음 요소들을 고려해야 한다. 1) Time Complexity : 알고리즘을 수행하는데 걸리는 시간 2) Space Complexity : 알고리즘을 수행하는데 필요한 공간 3. 자료구조란? 데이터를 어떤 공간에 어떻게 저장할 것인지를 표현한 설계구조다. 자바스크립트의 배열(Array)과 객체(Object)는 대표적인 자료구조의 예라고 볼 수 있다. 적절한 자료구조..
조건문(if...statement)과 함수(function) 1. 조건문(if...statement) 모든 조건문은 Boolean 값이 true 인지 false 에 따라 실행되거나 실행되지 않는다. Boolean 이란, JavaScript 타입 중 하나로 true 혹은 false 의 반환 값을 갖는다. 아래와 같이 비교 연산자(comparison operator)를 통해 값을 반환할 수 있다. Comparison operators Description === equal to !== not equal to > greater than = greater than or equal to = 10) { return name + ', 나가서 먹자!'; } else { return name + ', 그냥 집에서 먹어.'; } } console.log(eatOut('Daniel'..
변수(variable)와 타입(type) 1. 변수_variable 변수(variable)란? = 이름(label)이 붙은 값. 다음과 같이 원하는 변수에 값을 대입시킬 수 있다. let myname = 'Daniel'; 여기서 말하는 " = " 는 " 같다. " 라는 개념이 아닌 " 대입한다(assign). " 라는 개념이다. 예를 들어, let pi = 3.141592; let r = 5; 이렇게 변수를 정의하고 원의 넓이를 표현식으로 쓰면 다음과 같다. let areaOfCircle = pi * r * r; 만약 할당값이 없다면 결과는 undefined를 얻게된다. 2. 타입_type JavaScript에는 여러종류의 형식이 존재한다. Type Examples Number(숫자열) 1, 3.141592, 505 String(문자열) 'Da..