본문 바로가기
728x90
반응형

분류 전체보기301

13. 유저 세션(2) 프로세스를 스스로 종료되도록 하려면 몇 가지 방법들이 있다. 물론 exit(Pid,kill)함수를 사용해도 되겠지만 프로세스 스스로 종료되도록 하는 것이 낫다. stop 메시지를 받으면 종료되도록 하는 방법 receive {Pid,Message} -> Pid ! Message; stop -> true end 5초 동안 아무런 메시지를 못 받으면 바로 종료되도록 하는 방법 receive {Pid,Message} -> Pid ! Message; after 5000 -> true end timer를 등록해서 몇초 후에 스스로에게 stop 메시지를 보내도록 해도 된다. erlang:send_after(Time, Dest, Msg) -> TimerRef. 예로 5초 후에 자기 자신에게 stop 메시지를 보내는 코.. 2018. 1. 15.
tistory 2017 결산! 티스토리에 글 써본 이후로 처음 결산! 인터넷 속 안전을 이야기하는 블로거 입니다 이렇게 한눈에 보여주니 참 신기하네요~ 내년에는 더 열심히 해서 더 많은 정보를 올리도록 해보겠습니다!! 2018. 1. 15.
12. 유저 세션(1) 6-1. 유저 세션 서버에서 세션은 유저가 접속한 이후에 로그인된 상태에 지속적으로 관리하기 위해 필요하다. 모바일에서는 로그인과 다르게 로그아웃은 서버에서 자동으로 관리해줘야 한다. 로그인에 성공한 유저의 세션을 만들고, 해당 유저가 특정한 시간 동안 아무런 행동을 하지 않는다면 자동으로 세션을 종료해서 로그아웃 되도록 하는 기능이 필요하다. 사용자의 행동과 서비스에 맞는 적절한 시간을 이용해서 세션의 만료를 판단해야 한다. 얼랭 프로세스를 이용해서 유저의 세션을 만들 거다. 유저의 세션이라고 하는 것은 접속한 유저마다 독립적으로 하나씩 필요한 것이고, 이것에 가장 잘 부합되는 것이 얼랭의 프로세스이다. 6-1-1. 얼랭 프로세스 얼랭에서의 프로세스라고 하는 것은 OS의 프로세스를 생각하면 안 된다. .. 2018. 1. 15.
11. 데이터베이스(2) 5-2-3. 테이블 생성 테이블 생성은 mnesia:create_table(Name, Args) 함수를 사용한다. Name은 생성할 테이블 이름을 Atom 형식으로 작성, record 이름을 사용하면 편리하다. Args에는 테이블의 타입과 각종 테이블 관련 설정값들을 튜플의 리스트로 입력한다. Mnesia에서 생성할 수 있는 테이블에는 3가지 종류가 있다. ram_copies disc_only_copies disc_copies : 데이터를 디스크와 메모리에 동시에 저장한다. 가장 추천하는 옵션 mnesia:create_table 함수의 주요 설정값 {attributes, List} : 테이블의 칼럼 이름을 리스트 형식으로 입력한다. 예를 들어 전에 정의했던 users라는 record를 사용하는 테이블이라.. 2018. 1. 13.
10. 데이터베이스(1) 5-1. 데이터베이스란 관계형 데이터베이스는 관계형 모델을 기초로 한 데이터베이스 데이터를 표의 형태, 즉 테이블 형태로 표현하는 것 데이터 베이스를 설계하는 정규화 과정에서 E-R(개체-관계) 모델과 이것을 그림으로 표현한 다이어그램은 필수적으로 만들어야 하는 문서이다. NoSQL은 관계형 모델을 쓰지 않고 분산 처리가 용이하여 클러스터로 동작이 가능한 오픈소스 데이터베이스이다. 5-1-1. ACID 트랜잭션 ACID 트랜잭션은 관계형 데이터베이스에서 여러 개의 SQL 연산을 하나의 단일 트랜잭션으로 처리하는 것을 의미한다. 여러 개의 테이블에 대해서 읽고 쓰고 하는 행동을 하나의 연산처럼 사용하는 것이다. Atomicity 원자성 : 여러 개의 SQL 연산이 하나의 연산처럼 동작해야 한다. Consi.. 2018. 1. 12.
9. 로그인(3) 4-2-5. ETS와 Dets ETS는 얼랭에 내장된 메모리 데이터베이스 (Erlang Term Storage) Dets는 Disk ETS라고 생각하면 된다. ETS 기능을 파일 베이스로 만든 버전이 Dets ETS는 메모리에 데이터를 저장하기 때문에 서버가 꺼지면 데이터가 소멸되지만 Dets는 파일에 저장하기 때문에 데이터이 분실 위험은 사라진다. 하지만 속도가 느리고 용량도 제한적이다. 지금은 ETS를 이용해서 유저의 아이디와 패스워드를 저장해보겠다. ETS의 모든 기능은 ets 모듈에 BIFs로 구현되어 있다. BIFs는 얼랭 VM 내부에 내장된 함수들을 의미한다. 얼랭 모듈이지만 C언어로 작성되어 있어 속도가 빠르다. ETS에 데이터를 저장하기 위해서는 먼저 테이블을 생성해야 한다. 테이블에는 얼.. 2018. 1. 11.
8. 로그인(2) 4-2-2. URL Parser URL 부분을 우리가 원하는 요청에 대해서 지정된 API를 실행하도록 분류하는 기능을 한다. mon_http.erl의 handle 함수를 다음과 같이 수정하여 실제로 Api,What,Opt 값을 얻어올 것이다.handle(Req, State) -> {Api, Req1} = cowboy_req:binding(api, Req), {What, Req2} = cowboy_req:binding(what, Req1), {Opt, Req3} = cowboy_req:binding(opt, Req2),io:format("api=~p, what=~p, opt=~p ~n",[Api, What, Opt]),{ok, Req4} = cowboy_req:reply(200, [ {, } ], , Re.. 2018. 1. 11.
728x90
반응형