본문 바로가기
728x90
반응형

로그인3

14. 유저 세션(3) 6-2. 구현하기 유저가 로그인을 성공하면 유저 세션 역할을 하는 프로세스를 생성할 것이다. 점수를 저장하는 API는 핸들러에서 처리시 해당 세션 프로세스에게 메시지를 전달해서 결과값을 받아 오도록 한다. 6-2-1. 유저 세션 프로세스 생성 mon_users 모듈에 new_session/1, loop/1, make_session_key/2 함수를 만든다. 프로세스 생성 부분만 만들고, 나머지는 함수 껍데기만 작성하겠다. %% API -export([join/2, login/2]). join(Id, Password) -> F = fun() -> case mnesia:read(users, Id) of [] -> %% 해당 Id로 가입된 데이터가 없으면 저장한다 Users = #users{id=Id, pas.. 2018. 1. 18.
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
반응형