분류 전체보기
-
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..
-
Elixir 웹 프레임워크 Phoenix 들어가기Elixir 프로그래밍 2019. 10. 1. 13:00
Elixir(Erlang)은 그 태생이 서버를 개발하기 위한 목표로 만들어진 언어입니다. Ericson 에서 교환기를 개발하기 위한 만들어진 언어이다보니, 높은 가용성과 분산성,동시성을 가지고 있으며 이러한 특성은 웹서버의 개발에 적합합니다. Phoenix는 Elixir로 만들어진 웹 프레임워크 입니다. 함수형 언어인 Elixir로 만들어진 Phoenix는 높은 안정성과 동접 처리 성능을 가집니다. 각각의 웹 클라이언트에 대한 응답처리를 개별 프로세서로 처리하는 방식인 Elixir는 Thread Lock등의 동기화에 대한 걱정없이 쉽게 고성능, 분산 웹서버를 개발할 수 있습니다. 또한, 단순한 함수형언어를 이용하므로 다른 언어의 웹 프레임워크에서와 같이 복잡한 개념을 이해하지 않아도 쉽게 서버를 구축할 ..
-
Project, ApplicationElixir 프로그래밍 2019. 7. 31. 00:36
이번 글에서는 Project 생성과 컴파일 및 실행하는 방법과 Elixir Application에 대한 내용을 적겠습니다. iex를 실행한 후, Application.loaded_applications 를 실행해보면 다음과 같은 내용이 나옵니다. 이는 현재 수행중인 Elixir Application 들의 목록을 보여주는 것입니다. Elixir는 Erlang VM(Virtual Machine)에서 수행됩니다. 그리고, 하나의 Erlang VM에는 복수개의 Application이 실행됩니다. Erlang VM은 하나의 OS(Operation System)이며, 하나의 OS상에 동시에 여러 개의 Application이 실행되는 것처럼 하나의 Erlang VM에는 여러 개의 Application이 실행됩니다. ..
-
Recursion, Tail RecursionElixir 프로그래밍 2019. 7. 30. 23:21
무언가를 반복 처리해야 하는 경우 , Elixir에서는 recursiove 함수를 사용합니다. for 문이 있기는 하지만, 다른 언어와의 for 문과는 좀 다르게 사용하는 Comprehensions 로 사용됩니다. (https://elixirschool.com/ko/lessons/basics/comprehensions/) 다음의 코드는 1부터 주어지는 수까지의 합을 구하는 함수입니다. Recursion과 패턴 매칭으로 구현하였습니다. 동작은 잘 하지만, 위의 코드는 좋지 않은 코드 작성의 예입니다. 이유는 sum(n-1) + n 부분의 비효율성 때문입니다. sum(n-1)은 다시 sum을 호출하는데, 이 sum 은 수행이 완료되는 시점에 다시 호출한 원래 sum 함수로 돌아와야 합니다. sum(3) ->..
-
패턴매칭Elixir 프로그래밍 2019. 7. 30. 22:29
제 생각에는 패턴 매칭이야 말로, Elixir의 백미라고 생각됩니다. 패턴 매칭에 의해서 간결하고 이해하기 쉬운 코드의 작성이 가능해집니다. 그리고, 어찌 보면 애텀을 사용하는 이유가 패턴 매칭을 이용하기 위해서 이기도 합니다. 패턴 매칭의 편리성 때문인지, 비단 Elixir 이외에도 많은 프로그래밍 언어에서 패턴 매칭을 도입하고 있습니다. 이번 글은 패턴 매칭에 대해 설명하도록 하겠습니다. 사실 우리가 어떤 프로그램을 작성한다는 것은, - 어떤 입력을 받아서, 그 입력을 처리할 어떤 함수를 호출하고 , - 함수의 호출결과가 이러할 때는 이러하게 하고, 저러할 때는 저러하게 한다. 라는 것을 컴퓨터에게 시키는 것이라고 볼수 있습니다. 이는, - 어떤 입력(데이터)가 있을 때, 그 데이터를 처리할 함수를 ..
-
Function과 ModuleElixir 프로그래밍 2019. 7. 29. 09:52
Module과 Function Module은 Function의 그룹 입니다. OOP의 Method 등의 개념이 들어가지 않은 단순 Function의 모임이 Module 입니다. 사실, Module 내에는 관련 있는 Function의 모음을 만들건 그렇지 않건 상관없습니다. Module은 그저 Function들의 모임입니다. Elixir 프로그램에는 많은 수의 함수들이 있을수 있으며, 이들 함수들을 하나의 집합으로 만들어주는 것이 모듈입니다. 어찌 보면, 함수들의 Name Scope를 정해주는 정도로 생각할 수 있습니다. 앞글에 적었듯이 Elixir에는 객체의 개념이 없으므로 당연히 Module의 상속 개념도 없습니다 Module은 그저 함수들의 묶음입니다. 그리고, Module의 이름은 영대문자로 시작하..