반응형

express 의 대한 내용을 그전에 설치법과 같이 포스팅을 하였지만 조금더 추가 설명하기 위해 포스팅을 시작한다.

◎ express의 라우팅 기본형식

▼ 내용

express 를 사용하여 라우팅을 할경우 기본방식으로 아래와 같이 쓴다.

const app = express(); app.get('/',(request,response) => { response.writeHead(200); response.end("응답하라 1997"); }); app.listen(포트번호);

◎ express 동적URL

▼ 내용

URL 경로를 동적으로 path를 파라미터로 가져올경우

요청주소 http://localhost:3000/id/asd/pass/password

app.get('/id/:id2/pass/:pw',(request,response) => { console.log(request.params); //{ id2: 'asd', pw: 'password' } }); //위의 경로중 : 붙은건 변수라 생각하면된다 어떤값이들어와도 된다

◎ express get 파라미터

▼ 내용

URL 주소를 get 방식으로 파라미터를 가져올경우

http://localhost:3000/page?id=abcd

app.get('/page',(request,response) => { console.log(request.query); //{ id: 'abcd' } });

여기서 get방식으로 http://localhost:포트번호/id?id=undefined


◎ res.send 와 res.end 차이

▼ res.send

res.send ([body])

express의 코어에서 작동되며 HTTP 응답 헤더 필드를 자동으로 지정하고 자동 HEAD 및 HTTP 캐시 최신 상태 지원을 제공합니다. 즉 http 헤더를 설정하지않으면 body의 객체에 따라 자동으로 헤더가 설정된다.

▼ res.send

res.send ([데이터],[인코딩])

node의 http.ServerResponse 의 response.end() 메소드를 사용합니다.응답을 신속하게 종료할때 사용됩니다.

▼ HTTP 헤더 설정

아래 소스코드와 같이 res.end 는 http 의 헤더를 writeHead로 작성하고

response.writeHead(300) response.end(template2);

아래 소스코드와 같이 res.send 는 http 의 헤더를 set로 작성한다

response.set(300); response.send(template2);


반응형
반응형

◎ ORACLE 다른계정 권한주기

▼ 내용

ONE 계정의 테이블을 TWO계정에 권한을 줄려면 ONE계정으로 접속을 해서 쿼리를 날려야한다.권한을 SELECT,UPDATE,DELETE,INSERT 각각 줄수 있다.

GRANT INSERT ON [테이블이름] TO [계정이름]; GRANT DELETE ON [테이블이름] TO [계정이름]; GRANT UPDATE ON [테이블이름] TO [계정이름]; GRANT SELECT, INSERT, DELETE, UPDATE ON [테이블이름] TO [계정이름] ; //ONE계정에 USER 테이블을 TWO계정에도 권한을 주려면 아래와같이 쿼리를 날리면된다. GRANT SELECT USER TO TWO; GRANT INSERT USER TO TWO; GRANT DELETE USER TO TWO; GRANT UPDATE USER TO TWO; GRANT INSERT, DELETE, UPDATE,SELECT USER TO TWO; //TWO 계정에서 테이블 조회를 할때는 아래처럼 날려야한다 SELECT * FROM ONE.USER

◎ 오라클 계정 생성

create user [계정이름] identified by [패스워드]; -- 계정생성 grant create session to [계정이름]; --세션 권한주기

◎ 오라클 패스워드 기간 확인 및 변경

▼ 내용

오라클은 11g 로 넘어오면서 계정의 패스워드 기간을 기본값으로 180일로 지정되있다. 계정생성후 180일이 지나면 패스워드가 만료됫다고 뜹니다. 이걸 없애기 위해선 아래와같이 명령문을 날려야합니다.

select * from dba_profiles where profile = 'DEFAULT'; //-- 패스워드기간확인 기본값은 180일 alter profile default limit password_life_time unlimited; //-- unlimited 변경 (패스워드 기간의 제한이 없다란 뜻)
alter user [유저명] identified by [패스워드]; //패스워드 변경 방법

◎ 오라클 Tablespace

▼ 내용

계정을 만들떄 테이블스페이스를 지정하는 이유는 테이블들의 데이터는 파일에 쌓이는데 이파일의 이름을 tablespace로 지정하는 것이다. 그리고 그 데이터들의 보안,권한,용량 이런 처리를 위해서 별도로 테이블 스페이스로 나누는 것 이다. 아래는 다른 블로그에서 설명한 글입니다.

테이블을 저장하는 공간이란 의미도 틀린것은 아니지만 정확한 의미는 아닙니다.

오라클은 데이터베이스 관리 시스템이고 말 그대로 데이터들을 관리합니다. 즉 어딘가에 데이터들을 저장, 추출, 삭제, 변경하는 작업을 할 수 있는 것입니다. 그렇다면 데이터는 어디에 저장되는 것일까요? 물론 파일에 저장됩니다.

오라클 데이터베이스는 데이터 파일들을 가지고 있으며, 이 파일들에 데이터가 저장됩니다. 그런데 파일은 데이터가 저장되는 물리적인 공간을 말하는 것입니다.



오라클 내부에서는 데이터 블록(data block), 익스텐트(extent), 세그먼트(segment), 테이블스페이스(tablespace)라는 논리적인 개념으로 데이터 들을 관리합니다.

오라클에서 데이터를 저장하는 가장 최소의 논리적인 단위가 데이터 블록이며, 데이터 블록이 모여서 익스텐트가 되고, 익스텐트가 모여서 세그먼트, 세그먼트가 모여서 테이블 스페이스가 됩니다. 실제로 물리적인 데이터 파일(확장자가 dbf 혹은 ora인 파일)은 테이블 스페이스와 대응됩니다.

하나의 테이블 스페이스는 최소 1개의 데이터파일로 구성됩니다.

테이블 이외에도 인덱스, 프로시저, 뷰 등 다른 여러 가지 오라클 객체들이 저장됩니다.



반응형
반응형


l oracle : 11g realse2 버전사용중


◎ sessions, processes 현재 사용중인 수


▼ 내용

processes : 프로세스 수

sessions : 세션 수

CURRENT_UTILIZATION : 현재 접속 수

MAX_UTILIZATION : 오라클 기동 시점부터 지금까지 최대 접속 수

INITIAL_ALLOCATION : init.ora 파라메터에서 설정한 수치

SELECT * from v$resource_limit where resource_name in ('processes', 'sessions', 'transactions')



◎ sessions, processes 현재 날리는 쿼리

▼ 내용

아래 쿼리문중 2중 아무거나 날리면 현재 실행중인 세션이 날리는 쿼리를 알수있다.

SELECT a.sid, -- SID a.serial#, -- 시리얼번호 a.status, -- 상태정보 a.process, -- 프로세스정보 a.username, -- 유저 a.osuser, -- 접속자의 OS 사용자 정보 b.sql_text, -- sql c.program -- 접속 프로그램 FROM v$session a, v$sqlarea b, v$process c WHERE a.sql_hash_value=b.hash_value AND a.sql_address=b.address AND a.paddr=c.addr AND a.status='ACTIVE';
SELECT a.osuser ,a.SID ,a.serial# ,a.status ,b.sql_text FROM v$session a ,v$sqlarea b WHERE a.sql_address = b.address;

◎ session 접속 정보

▼ 내용

현재 접속중인 세션의 정보를 알수 있다.

SELECT username,program from v$session;

◎ sessions, processes 현재 설정된 max 수

 


▼ 내용

왼쪽은 맥스값 process 쿼리 ---------------------------------------------- 오른쪽은 맥스값 sessions 쿼리

show parameter processes; //프로세스 맥스값 조회 show parameter sessions; //세션수 맥스값 조회




◎ sessions , process 맥스값 변경

▼ 내용

최대 접속세션의 수는 다음과 같은 공식으로 이루어진다.

SESSIONS = (PROCESSES * 1.1) + 5

그러므로 processes 의 값만 변경하면 sessions 의 값은 자동으로 변경된다.

ALTER SYSTEM SET processes = 200 scope=spfile; //변경할 processes의 값을 넣어주면됨. //변경후 db 재시작 한다음 processes , sessions수 확인

세션,프로세스수 수정전




세션,프로세스수 수정후




SELECT s.status "Status", s.serial# "Serial#", s.TYPE "Type", s.username "DB User", s.osuser "Client User", s.server "Server", s.machine "Machine", s.module "Module", s.client_info "Client Info", s.terminal "Terminal", s.program "Program", p.program "O.S. Program", s.logon_time "Connect Time", lockwait "Lock Wait", si.physical_reads "Physical Reads", si.block_gets "Block Gets", si.consistent_gets "Consistent Gets", si.block_changes "Block Changes", si.consistent_changes "Consistent Changes", s.process "Process", p.spid, p.pid, si.sid, s.audsid, s.sql_address "Address", s.sql_hash_value "Sql Hash", s.action FROM v$session s, v$process p, sys.v_$sess_io si WHERE s.paddr = p.addr(+) AND si.sid(+) = s.sid AND (s.username IS NOT NULL) AND (NVL (s.osuser, 'x') <> 'SYSTEM') AND (s.TYPE <> 'BACKGROUND') ORDER BY 1;
SELECT s.INST_ID, s.SID, s.username, s.STATUS, TO_CHAR(s.SQL_EXEC_START,'yyyy.mm.dd-hh24:mi:ss') SQL_EXEC_START , TO_CHAR(TO_DATE(TRUNC( MOD(SYSDATE - s.SQL_EXEC_START,1)* 24 * 60 * 60), 'SSSSS'),'HH24:MI:SS') connect_tm , s.TERMINAL , q.sql_text, s.MODULE, s.LOGON_TIME FROM ( SELECT s.INST_ID, s.SID, s.USERNAME, s.STATUS, s.SCHEMANAME, s.MACHINE, s.TERMINAL, DECODE(s.SQL_ID,NULL, s.PREV_SQL_ID, s.SQL_ID) SQL_ID, DECODE(s.SQL_EXEC_START,NULL, s.PREV_EXEC_START, s.SQL_EXEC_START) SQL_EXEC_START , s.MODULE, TO_CHAR(s.LOGON_TIME,'yyyy.mm.dd-hh24:mi:ss') LOGON_TIME FROM GV$SESSION S WHERE ( (s.USERNAME IS NOT NULL) AND (NVL (s.osuser, 'x') <> 'SYSTEM') AND (s.TYPE <> 'BACKGROUND')) AND s.PROGRAM = 'w3wp.exe' ) s, (SELECT INST_ID, sql_id, sql_text, first_load_time FROM gv$sql) q WHERE s.INST_ID = q.INST_ID AND s.SQL_ID = q.sql_id AND (SYSDATE - s.SQL_EXEC_START) > (300 * (1/24/60/60)) ORDER BY connect_tm desc;


반응형
반응형

◎ compression (압축)

▼ 내용

post 또는 get 의 request 데이터를 압축해주는 미들웨어이다.

▼ 설치법

npm install compression

▼ 사용법

var compression = require('compression'); app.use(compression());

상단에 이렇게만 써주면 데이터를 자동으로 압축해준다. 그리고 아래 사진을보면 위의 저 모듈을 써준것만으로도 내부적으로 리소스 자원 데이터를 이렇게 압축해서 빠르게 로딩될수있도록 한다.


◎ URL로 파일 접근하기

▼ 내용

express.static 내부에있는 파일을 URL로 접근할수 있게 해주는 미들웨어다.

express 모듈 안에 있는 미들웨어다.

▼ 사용법

express.static('경로',[options]);
app.use(express.static('./lib/img'));

이렇게 할경우 ./lib/img 폴더에 있는 모든파일을 url로 접근할수 있다.

만약 ./lib/img/1.jpg 에 있는 파일을 url로 접근하려면 http//localhost:3000/1.jpg 이렇게 파일로 접근할수 있다. 즉 특정폴더를 url로 접근할수잇게끔 열어주는 기능이다.


◎ 에러처리

▼ 내용

url 경로를 에러처리할경우 사용된다. 미들웨어의 순서적으로 작동하는 방식을 이용하여 사용한다.아래구문을 app.js의 맨아래에 넣어서 사용한다. 이유는 이 구문을 만나기전까지 res.send 객체를못만나면 페이지가 없는것이기 때문이다.

app.use(function (req,res,next){ res.status(404).send('페이지를 찾을수 없습니다'); });

또한 404에러 외에 다른 에러들은 미들웨어 함수의 중간에 next(err); 로 던져지게되면

밑아 소스의 있는 미들웨어가 실행되어 에러를 처리합니다 밑에 문구는 맨아래에 넣는다.

app.use(function (err,req,res,next){ res.status(500).send('500페이지를 찾을수 없습니다'); });

◎ express-generator

기본 express구조를 사용하게만들어준다.

npm install express-generator -g
express myapp


반응형
반응형

오렌만에 뵙네요 하하 ...

요즘 저희 아가는

어린이집을 다녀요

근데 아가가 적응을 잘못하네요 ㅜㅜ

같은 반 아가들은 8개월 아가 , 돌지난아가 등

미르랑 몇개월 차이도안나는대

그 아가들은 엄마가 맡기구 휙하고 집에가도 안우는데

저희 아가는 떨어질려고만 해도 엉엉어엉 울고

1시간 떨어져있어봣는대 1시간 내내우네요 ㅜㅜ

지금 어린이집 2주쨰인데 적응을 아직도 못하고있어요....

무슨 좋은방법없을가요 휴 분리불안증세가 나오는거같아

매우 걱정되요....

일단 오렌만에 아가 사진 투척!~


자 이제 아가사진도 투척했고

속상한 글도 썻으니간

일상생활 애기를 ....

오늘 시내에 헌혈을 하러 갔는데..

한 할머니가 상가앞에서 진짜 엄청 쪼그려앉으시면서

땅콩을 파시드라고요

근대품목이많은것도아니고 진짜 초라하게

한 봉다리 10개정도?

되는걸 진짜 쪼그려서 앞에 내놓고 파시길래

너무 불쌍해보이셔서...

그냥 못지나가는 이마음 크~

흠흠.. 여튼 그래서 땅콩을 1만원어치 구매하고

집에와서 먹으려고 맛을 봤더니.....

옴머나 세상에 이게 뭐람.....

여러분들도 느껴보셧을지모르겟는데

땅콩에서 진짜 콩맛이 나요....

껍데기도 안벗겨지구요.......

쌩땅콩을 줬드라고요....

저게 2봉지가있는데 ......

와 땅콩에서 콩맛이 나는줄 처음알앗어요

그레서 폭풍 네이버검색후!

땅콩을 볶기로 결정...

그럼 볶아볼까...


짜잔 땅콩 프라이팬에 등장...

처음에 땅콩을 볶는다해서

기름을 부어야하나 고민했씁니다...

네이버 없엇으면

전 여기다 기름부을뻔....

근데 땅콩을 볶으면서 애기도

봐야해가지고....

요렇게 애기안고 땅콩을 볶고있습니다...

어휴 내신세야...

우쩃든 땅콩을 다 볶으니간

존맛 꿀맛

요즘 어린아이들상에서 유행하는

JMT 라는 말 아세요?

이말 모르면 젊은이가 아니라고하네요...

JMT = 존맛탱 = 엄청맛있다.

이런 뜻이라네요....

저도 이제 늙엇나 봅니다...

저런말이 뭔지도 몰랐어요 ㅋㅋㅋㅋ

마무으리로

아기랑 뽀뽀 한컷 사진 올리면서!!!

다음에 뵈여!~


반응형

+ Recent posts