본문 바로가기

OTP의 기본 gen_server 오늘은 OTP의 가장 기초적인 gen_server에 대해 한번 알아봅시다. gen_server는 모든 OTP server의 기본이 되는 것이라서 이것만 잘 알아도 erlang Code를 알아보는데 큰 도움이 됩니다. 먼저 우리가 gen_server로 무엇을 하고 싶은 지부터 생각해봅시다. 저번의 게시물을 리뷰 해봅시다. 여기서 보듯이 우리는 “서버를 켜고 → Request를 받아 그것을 처리하고 → 할 일을 다 했으면 서버를 내리고” 싶습니다. 매우 간단한 원리 입니다.(사실 여기서 요청을 하는 것을 처리하는 게 복잡한거지! 라고 하면 할말이 없긴 합니다.) 어찌 되었든 이러한 간단한 생각을 바탕으로 만들어진 것이 gen_server입니다. 그럼 "서버를 켜는 루틴, Request를 받아 그것을 처리하는.. 더보기
erlang io:format과 같은 String Format 처음에 erlang을 시작했을 때, String Format이 매우 특이해서 놀랐습니다. 보통, '%'나 '\'를 많이 쓰는데 erlang은 '~'를 사용합니다. erlang Document에 자세히 나와있지만, 간단하고 많이 사용하는것을 한번 알아보겠습니다. erlang Document는 다음을 참고하시면 됩니다.http://erlang.org/doc/man/io.html#format-2 ~c C는 ASCII Code형식을 받습니다. 여기서 ~x.yc라는 형식을 쓸 수 있는데, 여기서 x는 구문이 차지할 칸수이고, y는 반복할 횟수입니다. 여기서 x가 -이면, 왼쪽 정렬을 하게 됩니다. 예제를 보면 쉽게 이해 할 수 있습니다. 1> io:format("|~10.5c|~-10.5c|~5c|~n",[$a,.. 더보기
erlang에서 _Var와 Var의 차이 erlang의 많은 예제 코드를 보면 _Var형식의 변수명들이 있습니다. 사실 저는 _Var형식의 변수명을 안좋아 해서.. 그냥 왜 저렇게 하지? 라는 생각이 있었는데.. 사실 이유가 있었더라고요...매우 기초적이라서 포스팅 쓰기도 거시기 한데, 일단 저처럼 모르는 사람이 있을수도 있으니까..일단 '_'는 다들 아실껍니다. Scala도 그렇지만 wildcard 변수 명입니다. 만약 _라고 하면, 이 변수는 Pattern Matching이나, 기타 다른 이유 때문에 있는 것이지 절대 다시 사용하지 않는다는 뜻 입니다.그렇다면 _Var는 어떤 것일까요? 보통 erlang Compiler는 함수에서 사용되지 않는 변수가 있으면 다음과 같은 Warning을 발생시킵니다. 1> c(ex1).ex1.erl:22: .. 더보기