Elixir 프로그래밍
-
Process 생성하기Elixir 프로그래밍 2022. 7. 19. 18:13
앞글에도 적었지만, Elixir 의 Process는 주요 특성이 있습니다. Process는 독립적으로 동시에 실행된다. 한 Process의 종료가 다른 Process에 영향을 미치지 않는다. (Link 라는 개념으로 영향을 줄수도 있는데, 이는 다음에 적겠습니다.)Process 간에 공유되는 것은 없으며, Process간의 협업은 Message 전달로 이루어진다. (함수 호출이 아닌, 메세지 전달) 이들에 대해서 하나씩, 상세히 적어보겠습니다. 우선, 가장 쉽게 Process를 느껴보도록 하죠..iex 를 실행시킨 후, 아래와 같이 self() 명령을 치면, #PID 과 같은 Process ID 가 나옵니다. 이 PID 는 iex 자체의 Process 입니다. 즉 , iex 도 Elixir..
-
Process (OTP) 들어가기,Elixir 프로그래밍 2022. 7. 12. 13:49
글의 연재를 다시 시작하긴 하는데, 이전과 같이 꾸준히 올릴수 있을지는 모르겠습니다. 아무튼, Process 부터 한참 동안 안쓴 글을 다시 올리겠습니다. Elixir라는 언어는 문법의 간결성, 함축성 외에 Process를 통한 분산처리, 장애대응이 가능한 코드의 개발이 큰 장점입니다. Elixir 의 기반인 Erlang 은 Ericson 사에서 대규모 네트워크 장비의 개발을 위해 만든 언어입니다. 통신 중계기의 특성상 높은 안정성, 병렬처리, 분산처리가 가능해야, Erlang은 이런 시스템의 개발이 가능하도록 만들어진 언어(플랫폼의 성격을 포함한) 입니다. Process는 이런 안정성, 병렬처리, 분산처리를 구현하는 중요한 요소이며 , 사실 이를 위해서 함수형 언어가 만들어졌다고 할수 있습니다. 기술내..
-
Elixir Phoenix : Session 관리Elixir 프로그래밍 2019. 10. 22. 21:34
앞장에서 적은 assigns는 , 하나의 connection을 처리하기 위한 과정에서 Controller와 View 간의 데이터 전달 방법이였습니다. Conn 에 Assigns로 할당된 값은 connection의 처리가 완결된 이후에는 사라집니다. 이번글에서는, 웹에서 사용자의 로그인 처리등에 사용되는 Session의 관리에 대한 내용을 적겠습니다. 이번글은 https://phoenixframework.org/blog/sessions에 대한 설명이라 할 수 있습니다. Elixir Phoenix에서는 session관리가 대단히 편리하게, Key, Value로 원하는 값을 관리할 수 있습니다. Session관련함수는 다음의 4개의 함수 입니다. https://hexdocs.pm/plug/Plug.Conn.h..
-
Elixir Phoenix : Controller와 View(Template)간의 데이터 전달 : assignsElixir 프로그래밍 2019. 10. 15. 21:50
Contorller에서 URI의 parameter를 받아서, 이를 HTML 내에 표현해야 하는 경우가 있습니다. 또는 사용자의 요청에 따라서 DB를 조회하고 그 결과를 HTML에 표현해야 하는 경우도 있습니다. 이와 같이 Controller 에서 Template내에 표현되어야하는 어떤 데이터를 전달할때 assigns를 사용합니다. assigns는 controller의 conn(Plug.Conn)에 할당을 해도되며, render 함수의 3번째 파라미터로 전달해도 됩니다. router에 두개의 URI을 다음과 같이 추가하여, 이에 대한 설명을 진행하겠습니다. scope "/", HelloWebWeb do pipe_through :browser get "/", PageController, :index get ..
-
Elixir Phoenix : View와 TemplateElixir 프로그래밍 2019. 10. 13. 14:22
Elixir Phoenix는 MVC 모델을 따릅니다. 이전의 글에서 Controller에 대한 내용을 적었고, 이번글에서는 View에 대한 내용입니다. Model에 해당하는 Ecto는 다음글에 적겠습니다. 이전글에서 Controller는 Router의 설정에 따라 각각의 URI에 대한 어떤 처리를 수행하고, 그 결과인 HTML이나 JSON을 반환하였습니다. JSON인 경우, Map이나 List 등의 Elixir의 데이터 구조체를 주면 자동으로 JSON으로 변환되어 코드가 지저분해지거나 그러진 않습니다. 하지만, HTML의 경우는 def now(conn,_param) do now = :calendar.local_time() |> NaiveDateTime.from_erl! |> NaiveDateTime.to..
-
Elixir Phoenix : Router와 ControllerElixir 프로그래밍 2019. 10. 8. 01:21
Router는 request URI를 어떤 모듈의 어떤 함수가 처리할지를 지정하는 모듈입니다. router 모듈내에는 복수개의 pipeline을 둘수 있으며, pipeline은 http request를 받았을 때 해야하는 일련의 일들의 모임이라 생각할 수 있습니다. 위의 소스코드에서는 두개의 pineline이 있으며, :browser와 :api로 각각 html request와 json api 를 처리하는 경우에 대한 정의라고 생각하면 됩니다. 이에 대한 자세한 설명은 https://hexdocs.pm/phoenix/routing.html#pipelines을 참조하면 되며, 일반적인 경우 이에 대한 기능 추가는 하지 않아도 됩니다. 위의 코드에서 중요한 부분은 scope "/", HelloWebWeb do..
-
Elixir Phoenix Project 생성과 Project의 폴더 구조Elixir 프로그래밍 2019. 10. 7. 21:47
Phoenix Project 생성용 Tool 설치 Phoenix는 Elixir가 설치된 PC에서 , 터미널 창에서 command mix local.hex 를 실행한 후 mix archive.install hex phx_new 1.4.10 를 실행하면 Phoenix Project를 생성할 수 있는 환경이 갖추어집니다. 위의 2개의 command는 Phoenix Project를 생성할 수 있는 환경을 만드는 것이지, 실제 Phoenix Project를 생성하는 것은 아닙니다. (Java의 Spring과 비유한다면, 위의 두개의 명령에는 STS를 설치하는 것과 같다고 할 수 있습니다.) 참조 : https://hexdocs.pm/phoenix/installation.html#content (글 쓰는 시점의 p..
-
웹 서버와 Elixir Phoenix 기능Elixir 프로그래밍 2019. 10. 1. 21:11
위의 그림은 웹서버의 기능을 간략히 표현한것 입니다. 웹서버는 클라이언트(브라우저)의 접속과 요청을 받아 그에 해당하는 응답을 주는 기능을 합니다. 웹서버는 여러가지 항목에 대한 응답을 하며, 클라이언트는 어떤 항목을 원하는지를 URI 로 지정하여 웹서버에 요청하게 됩니다. 웹서버는 요청을 받은 URI에 따른 응답을 주며, HTML 또는 JSON 응답을 줍니다. 웹서버는 응답 HTML이나 JSON을 생성하기 위해 DB에 있는 자료를 참조하기도 합니다. 결국, 웹 서버는 다음의 기능을 수행할 수 있어야 합니다. 클라이언트의 접속을 받을수 있어야 한다. 클라이언트의 요청에 따라 해당하는 처리를 하는 함수로 분기를 시킬수 있어야 한다. DB의 자료를 참조할 수 있어야 한다. DB의 자료를 HTML 또는 JSO..