본문 바로가기

Programming

(340)
4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 3 앞의 아티클에서는, 동기-블로킹 방식으로 readFile을 구현하는 예제를 살펴보았었습니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 2앞선 아티클에서 설명했다시피, 동기 / 비동기는 블로킹 / 논 블로킹과 비슷해 보이지만 엄연히 다른 개념이라는 것을 알아둬야 합니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 1우nozeroslope.tistory.com  const fs = require('fs');console.log('**START**');let data = fs.readFileSync('./readme2.txt');console.log('1번', data.toString());data = fs.readFileSync('./readme2.txt'..
4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 2 앞선 아티클에서 설명했다시피, 동기 / 비동기는 블로킹 / 논 블로킹과 비슷해 보이지만 엄연히 다른 개념이라는 것을 알아둬야 합니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 1우리는 이제까지 노드에 대해서 학습하면서 동기 방식, 비동기 방식 메서드에 대해서 살펴보았습니다. 개념적으로 동기 / 비동기 방식에 대해서 살펴보았는데, 지금부터는 동기 / 비동기 메서드nozeroslope.tistory.com   기본적으로 동기, 블로킹에 따른 구분은 아래와 같이 요약할 수 있습니다.  · 동기, 비동기 : 백그라운드 작업의 완료 상태를 확인하는지 여부· 블로킹, 논-블로킹 : 함수가 바로 return 되는지 여부      위의 아티클에서 살펴보았던 fs.readFile( ) 메서드는..
4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 1 우리는 이제까지 노드에 대해서 학습하면서 동기 방식, 비동기 방식 메서드에 대해서 살펴보았습니다. 개념적으로 동기 / 비동기 방식에 대해서 살펴보았는데, 지금부터는 동기 / 비동기 메서드에 대해서 좀 더 심도 깊게 살펴보도록 하겠습니다.  우선 예제 폴더에 [readme2.txt]를 생성합니다.  [readme2.txt]반복 조회 테스트 중  const fs = require('fs');console.log('**START**');fs.readFile('./readme2.txt', (err, data) => { if (err) { throw err; } console.log('1번', data.toString());});fs.readFile('./readme2.txt', (e..
4. Node 기능 살펴보기 (5) - 파일 시스템 접근하기 [fs] 2 앞선 아티클에서 살펴보았듯이, fs 모듈은 콜백을 중심으로 구현되는 모듈입니다. 익숙한 형태이지만, 콜백 중심의 형식은 다소 사용하기 불편한 감이 있으니 이 역시 프로미스 형식으로 바꾸어 보겠습니다.  /*const fs = require('fs');fs.readFile('./readme.txt', (err, data) => { if (err) { throw err; } console.log(data); console.log(data.toString());});*/const fs = require('fs').promises;fs.readFile('./readme.txt') .then((data) => { console.log(data); c..
4. Node 기능 살펴보기 (5) - 파일 시스템 접근하기 [fs] 1 fs 모듈에 대해서 살펴보겠습니다. fs 모듈은 파일 시스템에 접근하는 모듈입니다. 좀 더 풀어서 설명하자면, 파일을 생성하거나 삭제하고, 읽거나 쓸 수 있으며 폴더를 만들거나 지우기도 합니다.  fs 모듈을 제대로 학습하려면 동기와 비동기, 버퍼와 스트림, 스레드 풀에 이르기까지 다양한 개념들에 대해서 심도있는 이해가 필요합니다. 이는 차근차근 살펴볼테니 이번 예제에서는 fs 모듈을 통해 텍스트 파일을 간단히 읽고 출력하는 정도를 실습해 보겠습니다.  우선은 임의의 텍스트를 담은 [readme.txt] 파일을 실습 폴더 내에 만들어보겠습니다. 그리고 아래 예제를 작성해 보죠. const fs = require('fs');fs.readFile('./readme.txt', (err, data) => { ..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 10 [child_process] child_process는 모듈 이름에서 유추할 수 있듯이, 현재 노드가 실행되는 프로세스 이외에 새로운 프로세스를 띄워 명령 수행 및 결과를 드 프로세스에 전달합니다. 결국 이를 통해 노드에서 다른 프로그램이나 명령어를 실행할 수 있게 됩니다. 즉, 다른 언어의 코드도 실행하고 결괏값을 받을 수 있죠. const exec = require('child_process').exec;// 대상 명령어 전달('dir')const process = exec('dir');process.stdout.on('data', function(data){ console.log(data.toString());});process.stderr.on('data', function(data){ console.error(d..
3. 사용자 인터페이스 구현 (3) - 뷰의 기초 공통 속성 3 ○ margin, padding  잘 알고 있겠지만, margin은 뷰와 뷰 사이의 간격을 지정하는 속성입니다. 그리고 padding은 뷰 내부에서 뷰의 콘텐츠(내용)와 뷰의 테두리 사이의 간격을 지정하는 속성입니다. 뷰는 기본적으로 margin과 padding이 디폴트로 정해져 있는 값이 있는데, 해당 속성을 직접 지정함으로써 이를 변경할 수 있는 것이죠.  기본적으로 margin과 padding 속성 값을 지정하게 되면 네 방향 간격이 모두 같은 크기로 설정됩니다. 상/하/좌/우를 각각 단일 방향으로 조정하고 싶다면, 아래와 같이 속성을 지정해야 합니다.  · 단일 방향 margin 속성 - layout_marginLeft, layout_marginRight, layout_marginTop, layo..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 9 [worker_threads] 4(★) 앞서서 워커 스레드를 사용해 보기 위한 예제로, 2부터 10000000 사이의 숫자 중 소수(prime number)를 구하는 코드를 만들어 보았습니다. 중첩 for문을 활용한 예제였는데, 이제 이것을 스레드를 활용하여 구현해 보도록 하겠습니다.    4. Node 기능 살펴보기 (4) - 노드 내장 모듈 9 [worker_threads] 3앞의 아티클까지 살펴본 메인/워커 스레드 사용 방식을 조금 더 응용하여, 더 복잡한 내용을 다루어보도록 하겠습니다. 꽤 어려운 내용이 될 것이니 감안하고 읽어나가시기 바랍니다.  우선,nozeroslope.tistory.com  const min = 2;const max = 10000000;const primes = [];function findPrimes(start..