목록전체 글 (114)
Hello, Android!
http 모듈을 사용하면 웹 브라우저의 요청을 처리할 수 있는 http 서버를 만들 수 있다 그 중에서도 createServer 함수를 사용하여 서버를 만들수 있다 매개변수로 콜백 함수를 받으며, 서버에 요청이 들어오면 콜백 함수가 실행된다 콜백함수의 매개변수로는 request, response를 받는다 request는 클라이언트의 요청에 대한 정보가 있고 response는 서버가 클라이언트에 보내주는 응답에 대한 정보가 있다 res에서 writeHead, write, end 세가지 함수를 사용하는데 - writeHead : HTTP 상태 코드, 응답에 대한 정보를 담고있으며, 이 부분을 헤더 라고 한다 - write : 응답의 본문이며 이번에는 HTML이지만, 이 외에 다른 형태의 데이터를 보낼수도 있..
지금까지의 노드 코드를 보면 .on() 으로 시작하는 부분들이 보였다 여기서 on은 특정 이벤트가 발생했을때 콜백 함수를 호출할수 있도록 이벤트를 등록한 것이다 이러한 이벤트를 사용자가 직접 만드는것도 가능하다 events 모듈을 사용하여 객체를 만들고 해당 객체에 이벤트와 리스너를 연결하며 모듈 내에 이벤트를 제어하기 위한 함수들이 존재한다 - on(이벤트명, 콜백) / addListener(이벤트명, 콜백) 이벤트와 콜백을 연결하며 on과 addListener은 기능이 동일하다 위의 frodo이벤트에 on, addListener를 따로 연결하였다 즉 이벤트 하나에 여러개의 콜백을 연결할수 있으며 한번 이벤트가 호출되면 위에서 아래로 모든 콜백이 실행된다 - emit(이벤트명) 매개변수로 이벤트명을 넣..
파일 읽기 쓰기를 할때에는 버퍼, 스트림 두 가지 방식을 사용한다 노드에서는 파일을 읽을 때 메모리에 파일 크기만큼의 공간을 준비한 뒤 파일 데이터를 메모리에 저장하여 조작이 가능하며, 메모리에 저장된 데이터가 버퍼 이다 그리고 노드에서는 Buffer를 사용하여 버퍼를 직접 조작할수 있다 Buffer에는 다양한 메서드를 지원한다 - from : 문자열을 버퍼로 바꿔준다. length를 사용하면 버퍼의 크기를 확인할수 있다 - concat : 배열의 버퍼들을 하나로 합쳐준다 - alloc : 매개변수의 크기만큼의 빈 버퍼를 만든다 - toString : 버퍼를 문자열로 바꿔준다 이전의 파일 입출력에서 파일을 읽을때 readFile을 사용하였는데 함수의 결과가 버퍼로 나와 toString()으로 다시 문자열..
자바스크립트에서 정말 많이 사용되는 콜백 함수 콜백 함수가 끝없이 중첩되는 콜백 지옥을 해결해기 위해 promise를 사용했다 promise를 사용한 결과 그냥 콜백 함수를 사용하였을때 보다는 훨씬 줄어들었고 한결 정렬된 모습으로 변했다 하지만 이것마저 장황하고, 일반적인 탑다운 형식보다는 읽기 힘든 모습이다 그래서 우리는 ES2017에서 추가되었으며, 노드 7.6 버전부터 지원하는 async / await을 사용해야 한다 특히 노드처럼 비동기 위주의 프로그래밍을 할때 비동기를 유지하면서 동기적인 모습을 적용할수 있다 위의 두 예제는 파일을 작성한 뒤 해당 파일을 다시 읽어 콘솔에 출력하기 위해서 첫번째는 콜백을 그대로 사용했을때 두번째는 promise를 사용하여 간결하게 만들었다 그리고 이번에는 pro..
자바스크립트에서는 대부분의 작업이 비동기로 처리된다 작업을 요청하면서 콜백 함수를 등록하면 결과를 나중에 콜백 함수를 통해 알려준다 한가지 작업의 결과를 받은 뒤, 순차적으로 다음 작업을 진행하고자 할때 콜백 함수를 사용한다 이런 콜백 함수가 점점 쌓이고 쌓여 콜백 지옥에 빠져 이를 해결하고자 promise를 사용한다 promise는 이름 그대로 약속 이다 지금 당장 결과를 알려줄수는 없지만 나중에 처리 결과 또는 이상이 생기면 알려준다 promise함수는 호출시 new Promise를 사용하여 promise 객체를 생성하여 반환한다 콜백 함수의 매개변수로 resolve와 reject를 받는다 promise의 결과가 성공일때는 resolve 함수를 통해 전달하고 실패했을 경우에는 reject함수를 통해 ..
파일에 대하여 읽기 쓰기등의 작업은 fs 모듈을 활용한다 파일이 있는지 체크, 생성, 이름 변경, 삭제, 읽기 경로를 만들거나 삭제도 가능하다 - 파일 존재 체크 fs모듈의 existsSync함수의 매개변수로 확인하고자 하는 파일의 경로를 문자열, 버퍼, url 세가지 중에 하나를 넣으면 확인 결과를 boolean값으로 반환한다 - 파일 이름 변경 rename함수는 첫번째 매개변수로 변경 전의 경로, 두번째 매개변수는 변경 후의 경로 그리고 콜백 함수를 넣어 변경 실패시에 에러 내용을 받는다 - 파일 삭제 unlink 함수는 매개변수로 삭제할 대상의 경로와 콜백함수를 넣어준다 실패하면 콜백함수는 에러를 받는다 - 파일 읽기 readFile 함수는 매개변수로 읽을 대상의 경로와 콜백함수를 받는다 콜백함수는..
thread모듈을 사용하여 워커 스레드를 만들수도 있지만 child_process를 활용하면 자식 프로세스를 만드는것도 가능하다 즉 노드에서 다른 프로그램을 실행하여 그 결과를 받는것이 가능하다 크게 child_process의 exec와 spawn이 있다 exec의 매개변수로 원하는 명령어를 넣으면 해당 명령어를 실행한다 이번에는 윈도우 cmd에서 현재 실행중인 프로세스 목록을 보는 tasklist를 사용하였다 만약 리눅스 환경이라면 ps 명령어를 사용하면 될 것이다 실행 결과는 성공하면 stdout의 data이벤트 리스너에 실패하면 stderr의 data이벤트 리스너에 전달된다 이번에는 spawn을 사용하여 외부의 파이썬 파일을 호출하였다 파이썬 파일에는 print("Hello, python!!") 즉..
노드에서는 worker_threads 모듈을 활용하여 멀티 스레드를 사용할수 있다 우선 예제에서는 모듈의 worker, isMainThread, parentPort를 사용했다 Worker는 어떤 파일에서 워커 스레드를 실행할 것이가에 대하여 지정한다 현재는 __filename으로 지금 코드가 있는 파일에서 워커 스레드가 실행되게 했다 isMainThread는 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 판단한다 우선 현재 파일에서 워커 스레드가 실행되게 지정한 뒤 worker.on에 message를 사용하였는데 이는 워커 스레드에서 보내온 메세지를 받는다 worker.postmessage는 메인 스레드에서 워커 스레드로 메세지를 보낸다 이와같이 워커 스레드에 대한 설정이 끝나면 워..