manywaypark's Blog
개발, 검색, 함수

참고 링크에 있는 것을 요약한다.


  • broadcast - channel내의 모든 client들에게 전송
  • broadcast_from - 메시지를 발송한 client를 제외한 channel내의 모든 client들에게 전송
  • push - 메시지를 발송한 client에게만 전송

다르게 생각해보면 broadcast = broadcast_from + push


ref: https://www.reddit.com/r/elixir/comments/4t6k6w/phoenix_what_is_the_difference_between_broadcast/


happy hackin'

@impl true

함수형 언어/Elixir 2018.07.12 12:42 by manywaypark

현재 내가 사용하는 elixir version은 1.6.5이다.

1.5.0의 changelog에 나오는 내용이므로 1.5.0 이상의 버전에서는 다 적용될 것으로 예상됨.


callback의 구현임을 명시적으로 알려줄 때 "@impl true"를 함수의 앞에 써준다.


sample:


defmodule MyApp do

  @behaviour Plug


  @impl true

  # 이 함수 `init/1`은 문서화에서 제외된다. 암묵적으로 @doc false로 설정된다.

  def init(_opts) do

    opts

  end


  @impl true

  @doc """

  여기 내용은 그대로 문서화에 적용됨

  see `Plug.call/2`

  """

  def call(conn, _opts) do

    Plug.Conn.send_resp(conn, 200, "hello world")

  end

end



- callback이 아닌 함수에 @impl 사용하면 에러.

- 어느 하나의 함수에 @impl을 적용했다면 그 모듈 내의 모든 callback에서 @impl을 써주지 않은 함수에 대해 경고.


ref: https://elixir-lang.org/blog/2017/07/25/elixir-v1-5-0-released/


happy hackin'


d3를 예제로 설명한다. 대부분의 npm package는 동일한 방법으로 사용가능하다.


npm을 이용해 d3 설치


cd /path/to/my_web_app

cd ./assets/

npm install --save d3



brunch-config.js 파일에 다음 내용 추가


  npm: {

    ......

    globals: {

      ......

      "d3": 'd3'

    }

  }


이젠 app.js 파일에 등록됨.

다시 말해 app.js를 include하는 모든 페이지의 javascript에서 d3를 사용할 수 있다.


happy hackin'

named argument 사용

함수형 언어/Elixir 2017.09.11 12:38 by manywaypark

대충 map을 이용하면 되는데... 좀더 깔끔한 방법이 있다.

자세한 것은 참조 링크 참조.

결론은 아래처럼 NamedArgs를 mix.exs 의존성에 추가하고 필요한 모듈에서 use NamedArgs만 추가하면 끝.

  def deps do

    [

      {:named_args, "~> 0.1.0"}

    ]

  end

사용은 이렇게...

defmodule Talk do

  use NamedArgs

  def introduction(opts \\ [name: "Sarah", birthday: "1985-12-30"]) do

    IO.puts "Hi my name is #{opts[:name]} and I was born on #{opts[:birthday]}"

  end

end


refs:

https://blog.praveenperera.com/named-arugments-with-default-values-in-elixir/

https://github.com/mgwidmann/named_args


happy hackin'

ABNF 사용하기 - 아래 글 참조


http://marcelog.github.io/articles/abnf_grammars_in_elixir.html

https://github.com/marcelog/ex_abnf


happy hackin'


TAG abnf, Elixir

Ubuntu가 15.04 부터는 systemd만 온전히 지원하므로, 현재 이전의 upstart를 사용하는 방법은 별로 권장되지 않는다. 


아래 페이지 참고하면 systemd를 이용해서 설정할 수 있을 것이다.

http://mfeckie.github.io/Phoenix-In-Production-With-Systemd/


happy hackin'

Elixir 창시자의 변

함수형 언어/Elixir 2017.02.13 10:23 by manywaypark

좀 오래된 글이지만 창시자의 꼬드김(?) 스크랩.

Concurrent and Distributed Programming with Erlang and Elixir: part1, part2


happy hackin'

TAG Elixir

함수이름 마지막에 마침표를 찍어야 anonymous function(일반적으로 변수에 저장된) 함수를 invoke할 수 있는 것은 좀 이상하다.

Joe 아저씨도 의문을 표시한 적이 있구나.

https://groups.google.com/forum/#!topic/elixir-lang-core/Zop_x5K85XE

namespace를 분리하든가 scoping을 활용하든가 하면 좀더 깔끔한 방법이 있을 듯도 한데...


happy hackin'

1 
분류 전체보기 (297)
잡담 (20)
함수형 언어 (62)
emacs (16)
java (18)
tips & tricks (149)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)