정말 많은 것이 하고싶다.


그 모든 것들을 다 하기엔


하루가 짧을 정도로 시간이 너무 빨리간다.


그러고 보니 제대로 된 계획을 세워본적이 잘 없다.


항상 두리뭉실하게 뭘 해야겠다 라고만, 


생각한 것들이 모이고 모여


점점 커져만 가고 있다.


매월 주단위 / 매주 일단위 로 계획을 세우고 


실천할 수 있도록 노력해봐야겠다.



'생각' 카테고리의 다른 글

하루에 하나씩  (0) 2019.05.27
무엇을 해야할까.  (0) 2016.08.31
아쉬운 1분1초  (0) 2016.08.23
행복  (1) 2016.08.18
새로운시작  (0) 2016.08.17

Node js는 모듈을 설치하여 복잡한 기능을 쉽게 구현할 수 있게 해놨다.

npm 명령어를 통해 설치하여 사용할 수 있는 모듈들은 점점 늘어나고 있다.


그 중 Node js 에서 서버를 구동할 때 , 사용하는 두 가지의( 현재 내가 아는건 두 가지 ) 모듈들이 있는데 http 와 express 이다.


http 모듈보다 express 모듈이 더 많은 기능을 미들웨어등을 통해 구현하고 있기때문에 express 모듈로 진행한다.



요구사항 : express, fs (file-system), connect-multiparty


connect-multiparty 가 파일 업로드에 있어서 꼭 필요한 모듈이다.


body-parser로 읽을 수 있는 정보는 application/x-www-form-urlencoded 방식.

파일 업로드를 할 때에는 enctype 이 multipart/form-data 이기 때문에

connect-multiparty 가 필요하다.



순서 : 


var express = require('express'); //익스프레스 모듈을 가져온다.

var fs = require('fs'); // 파일시스템 모듈을 가져온다.

var multiparty = require('connect-multiparty'); // 멀티파티 모듈을 가져온다.


var test = express(); // 서버를 생성한다.


test.use(multiparty({uploadDir: __dirname +'/upload'})); // 멀티파티 모듈설정 . 

//위의 모듈 설정을 통해 업로드된 파일은 해당파일이있는 경로/upload 디렉토리에 

//저장된다.


__dirname, __filename 은 REPL에서는 확인할 수 없는 전역변수로 

현재경로, 현재경로와 파일명에 대한 정보를 갖고있다.



서버가 get요청을 받았을 때 처리, 

req 는 요청메세지, res는 응답메세지 객체이다.


test.get('/',function(req,res){

fs.readFile('upload.html',function(err,data){

res.send(data.toString()); //클라이언트로부터 '/' 경로에서 get방식으로 

//요청받으면 현재디렉토리의 upload.html 파일을 읽어 

//응답객체에 담아보낸다.

});

});


test.post('/',function(req,res){    // '/' 경로에 post요청을 받았을때,

var file = req.files.file; //  '요청메세지'.'files'.'폼태그input name 키값' 

var type = file.type; // image인지 application 인지 파일의 타입을 확인가능.

var name = file.name //업로드하는 파일의 파일명.확장자 확인

var path = file.path

var filePath = __dirname+'/upload/'+name; // 저장할 파일명 지정.

//위의 정보들을 DB에 저장하여 업로드한 유저의 프로필사진등으로 지정가능.


// 업로드폴더의 파일의 이름을 지정한이름으로변경

fs.rename(path,filePath,function(err){ 


res.redirect('/'); //업로드된 파일명 변경 후 다시 업로드 웹페이지로 이동

});

});


test.listen(포트번호,function(){

//'서버 구동시 동작시킬 코드'

//ex) console.log('server is running now');

});



외부에서 들어온 패킷은 먼저 T센서를 거친다.
T센서는 전기적신호, OSI L1 물리계층에서 디지털신호를 복제하기때문에 손실의발생이 없다. 센서를 통해 복제된 패킷은 IPS intrusion prevention system 으로 전달되어 로그로 기록된다. 기록된 로그의 패턴이 미리 설정한 정책과 일치하면 IPS는 스스로 해당 ip를 차단하거나 센서와 연결된 라우터에 명령을 보내 차단한다.

 

 

 

 

**학습 중 작성한 내용이며 정확한 내용이 아닙니다. 혹시나 틀린 부분을 보시면 댓글 부탁드리겠습니다. **

 

-- 컴퓨터의 구조는 기본적으로 3가지로 구성되어 있다. 

 

중앙처리장치인 CPU,

주기억장치인 MEMORY,

보조기억장치인 DISK

 

공간개념

CPU : WORD (4BYTE)

MEM : FRAME

DISK : SECTOR

SDD : CHUNK

 

처리 속도는 CPU > MEM > DISK 순으로 CPU가 가장 빠르다.

CPU가 산술논리연산을 하기위해서는 메모리를 참조해야하는데

상호간의 속도 차이가 많이 나기때문에 캐시메모리가 그 사이에서 완충작용한다.

 

각 장치 사이에는 데이터 통신을 위한 길이 존재하는데 이것을 버스라고 한다.

 

MAR : CPU가 참조할 메모리 주소가 기억되있는 부분.

IR : 메모리에서 가져온 데이터 중, 산술/논리 기호를 저장.

MBR : 메모리에서 가져온 데이터 중, 연산 할 데이터를 저장.

 

-- CPU 인스트럭션 싸이클 ( 메이저 스테이트 )

 

패치 : 메모리에서 읽어온다.

인다이렉트 : 간접 참조를한다. *

익스큐션 : 실행한다.

인터럽트 : 예외상황 발생시 우선적으로 처리한다.

 

*간접참조는 직접참조인 다이렉트보다 당연히 속도가 느리다.

하지만 트리구조를 통해서 더 많은 공간을 활용할 수 있다.

 

 

 

-- 가상메모리

 

디스크상에 일정 부분을 가상메모리로 사용할 수 있다.

 

페이징 : 고정공간인 페이지를 할당

세그멘테이션 : 가변공간 세그먼트를 할당

 

페이지테이블을 참조하여 접근한다.

가상메모리설정 크기만큼 활용할 수 있는 메모리 크기는 커지지만

본질은 디스크에 있기때문에 큰 속도향상은 기대하기 어렵다.

 

 

 

-- 메모리 플레이스먼트

 

메모리에 데이터를 로드할 때, 5K 공간에 5K 데이터를 넣으면 BEST FIT

5K 공간에 1K 데이터를 넣으면 WORST FIT이며 여기에는 4K 가 남기 때문에

다른 데이터를 또 넣을 수 있다.

 

 

 

-- 메모리 리플레이스먼트

 

메모리의 모든 공간이 데이터로 찼을 때,

언로드할 데이터 우선순위 산정 방법

LRU : 가장 최근에 사용된 데이터 순으로 점수를 주어 점수가 낮은 데이터 교체

LFU : 사용될 때마다 각 데이터에 카운터를 주고 가장 덜 사용된 횟수의 데이터를교체

NUR : 참조비트와 수정비트를 이용하여 셋이되면 언로드

SCR : 참조비트로 판단

+ Recent posts