Inventory
-
모듈 정의패턴@19.1 ~ /Nodejs 2020. 6. 3. 00:42
1. exports 지정하기 public API를 공개하는 가장 기본적인 방법은 export로 명기하는 것입니다 이것은 exports에서 참조하는 객체의 속성에 공개할 모든 값을 할당하는 것입니다 이렇게 하면 외부에 공개된 객체가 일련의 관련 기능들에 대한 컨테이너 또는 네임스페이스가 됩니다 //logger.js exports.info = (message)=>{ console.log('info:' + message); }; exports.verbose = (message) =>{ console.log('verbose:' + message); }; //아래처럼 사용이 가능하다 const logger = require('./logger'); logger.info('this is time'); logger.v..
-
콜백 규칙 및 예외처리@19.1 ~ /Nodejs 2020. 5. 31. 23:40
Nodejs에서 연속 전달 스타일(CPS)의 API 및 콜백은 일련의 특정한 규칙을 따릅니다 이 규칙은 Nodejs 코어 API에 적용되지만 대다수의 사용자 영역 모듈과 어플리케이션에도 적용됩니다 1. 콜백은 맨 마지막에 모든 Nodejs 함수에서 표준 규칙은 함수가 입력에서 콜백을 허용한다면 맨 마지막 인자로 전달되어야 한다는것 fs.readFile(filename, [options], callback) 함수 호출의 가독성을 좋게하기 위해서.. 2. 오류는 맨 앞에 CPS에서는 오류가 다른 유형의 결과처럼 전달되므로 콜백 사용이 필요합니다. Nodejs.에서 CPS함수에 의해 생성된 오류는 항상 콜백의 첫번쨰 인수로 전달되며 실제 결과는 두번쨰 인수에서부터 전달됩니다. 동작이 에러없이 성공하면 최초의 ..
-
Map, WeakMap@19.1 ~ /Nodejs 2020. 5. 31. 22:11
ES2015에서는 보다 안전하고 유연하며 ㅈ기관적인 방식으로 해시 맵 컬렉션으 ㄹ활용하도록 Map이라는 새로운 프로토타입을 도입했습니다 const profiles = new Map(); profiles.set('twitter', '@adalovelace'); profiles.set('facebook', 'adalovelace'); profiles.set('googleplus', 'ada'); profiles.size; //3 profiles.has('twitter'); // true profiles.get('twitter'); //"@adalovelace" profiles.has('youtube'); //false profiles.delete('facebook'); profiles.has('faceboo..
-
배열과 연산자카테고리 없음 2019. 4. 14. 21:10
C나 java의 배열은 메모리의 연속된 공간에 차례대로 배치되어 있으나 자바스크립트는 그렇지 못하다. 기능상으로만 흉내낸것이다. ECMAScript6 부터 TypeArray가 있는데 이건 C나 java처럼 메모리 연속된 공간에 존재한다. 관계연산자 === 피연산자를 평가한 후에 타입을 변한하지 않은 상태의 두값을 엄격하게 비교한다. 타입과 값이 모두 같으면 같다 아니면 같지 않다고 판정한다. NaN만큼은 NaN을 포함한 모든 값과 일치하지 않다고 판정한다. 여기선 undefined와 null이 다름으로 판정한다 ==, != 연산자는 내부적으로 좌우 피연산자의 타입을 변환한 다음에 좌변과 우변이 같은지를 느슨하게 비교한다. 좌우 피연산자가 다르면 타입을 변환한다 undefined 와 null은 같은것으로 ..
-
* 무엇인가?@19.1 ~ /리눅스 2019. 4. 14. 13:53
임의의 문자를 대체하는 메타문자이다 여러가지 파일을 특정폴더로 이동해야하는 상황에서 mv test* 특정폴더 test로 시작하는 모든 문자를 대체한다는 의미로 test로 시작하는 모든파일을 특정폴더로 옮긴다. test12 testabc test32ab 이런 파일 모두를 뜻한다. a*b일경우 a로 시작해서 b로 끝나는 모든 이름을 대체 *문자와는 다르게 ?문자는 정확히 한개의 문자만 대체한다. a?b일경우 a로시작하고 중간에 임의의 문자하나만 있고 b로 끝나는것 (a2b 이런것)
-
프로세스 관리하기@19.1 ~ /리눅스 2019. 4. 14. 13:45
프로세스 구분하는 기본적인 정보 PID : 프로세스 시작시 할당되는 유일한 프로세스 식별 번호 UID : 프로세스를 소유하는 사용자 계정을 식별하는 번호. 프로세스에 대한 사용자 권한을 알 수 있음 GID : 그룹 식별번호. 프로세스가 속해 있는 그룹을 알려줌 ps -ef 옵션은 부모 프로세스와의 관계를 파악하는데 사용한다. ps -aux : 프로세스의 시스템 자원 사용률 확인할 수있다. -a : 다른 사용자의 프로세스 상태도 표시 -x : 보이지 않는 프로세스까지 표시 -u : 프로세스를 사용한 사용자가 누구인지 그리고 프로세스의 실행시간을 표시 START : 시작시간 TIME : 총 사용시간 STAT : 프로세스 상태(R : 실행대기, S : 수면상태, D : 입출력 기다리는 상태, T : 멈춰 있거..
-
시스템 디렉터리@19.1 ~ /리눅스 2019. 4. 14. 12:56
/ : 최상위 디렉토리 루트. 모든 디렉터리가 시작하는 뿌리 /dev : 시스템에 설치된 주변 장치들(마우스, 모니터, 하드 디스크)이 파일로 등록되어 있는 디렉터리 /etc : 시스템 설정 파일. 사용자. 그룹 정보, 파일 시스템 테이블과 같이 기본적으로 시스템의 환경을 결정을 결정하는 매우 중요한 파일들이 모여 있다 /bin : 사용자가 사용하는 가장 기본적인 명령들이 실행 파일 형태로 저장되어 있다. /lib : 공유 라이브러리 파일들이 저장되어 있는 디렉터리. 시스템의 부팅과 응용 프로그램의 실행에 필요한 코드들이 있다. /home : 사용자 계정을 만들면 사용자 계정의 이름과 동일한 홈 디렉터리가 /home 디렉터리 아래에 만들어진다. 사용자는 각자의 파일을 사용자 홈 디렉터리에 저장한다. 일반..
-
메모리 락과 락없는 프로그래밍@ 17. 1 ~ 18/C# 멀티스레드 2018. 7. 3. 00:02
임계영역같은 스타일의 동기화가 아닌 형태로 수행할 수 있는 스레드 간의 읽기, 쓰기를 락 없는 프로그래밍이라고 불린다.(특히 읽기와 쓰기에 대해 만들어지는 원자성과 순서 보장을 잘 알아야한다) 제대로 구현했다면 임계영역은 다른 스레드에서 동시적으로 실행하는 영역의 원자성과 직렬성을 보장한다.이런보장은 근본적인 정확성의 속성이다. 메모리 동작은 규칙적으로 프로그램을 실행할 책임이 있는 소프트웨어와 하드웨어에 의해 재배치 된다. 1. 컴파일러는 소스를 컴파일된 프로그램 명령어로 변환하는 과정에서 종종 최적화를 수행한다.(읽기와 쓰기가 옮겨지거나 제거 또는 더해진다) 2. 프로세서는 명령어 파이프라인을 통해서 다른위치인 a와 b인 메모리 읽기쌍을 동시에 실행한다.예를들어 문자 그대로 a가 원래 소스코드의 b에..