Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다

442 views

Published on

Zeopage Devil's camp 2019 발표자료입니다.

제로페이지 24기 권준혁

Published in: Engineering
  • Login to see the comments

  • Be the first to like this

[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다

  1. 1. https://elixir-lang.org/install.html
  2. 2. 결론 회사에서 하라니까… 입사했을때는 C++ 개발자였던 내가 이세계로 워 프한 후(전배)에는 C#에 Elixir 개발자???!!!!
  3. 3. Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir is a dynamic, functional language designed for building scalable and maintainable applications.
  4. 4. https://madnight.github.io/githut/#/pull_requests/2019/2
  5. 5. https://madnight.github.io/githut/#/pull_requests/2019/2
  6. 6. https://prograils.com/posts/why-discord-pinterest-moz- bleacher-report-use-elixir-case-studies
  7. 7. 얼랭 생태계를 날로 먹을 수 있다 (with OTP)
  8. 8. https://elixirschool.com/ko/
  9. 9. https://elixirschool.com/ko/
  10. 10. https://hexdocs.pm/elixir/Enum.html 이것도 사실 엘릭서의 장점임 (문서화 간단함)
  11. 11. - Dynamic type임 (요즘 대세) - UnitTest, Dynamic Supervisor 로 보안. - Dynamic Supervisor - 프로세스를 무한히 늘리기 편함
  12. 12. - 도데체 함수형 언어란 무엇인가?????????? - 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀 리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하 는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. (from 위키) - 특징은 다음과 같다 - Pure function (스레드 안전 -> 병렬처리 간단함 -> WA!!!) 사실 완벽한건 아님 - 익명함수, higher-order function(아직도 익명함수, 1급함수 안되는 언어 없제????) - 사실 중요한건 Stateless라는 특성 - C 같은 State(상태) 중심 언어와는 달라서 코딩할 때 적응이 필요 - 어떤 현상의 재현이 간단함 (버그가 엄청 생기지 않음!) - (딴이야기긴 한데) 재귀 짜기가 쉬움. - 패턴매칭덕분임
  13. 13. - Erlang 승차감 조쿠요 - 언어단에서 지원해주는 것도 많음 - 저는 자세히 모르고 Discord가 잘 압니다 - https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b
  14. 14. - 얼랭 자체가 안전성에 미친 사람들이 만듬 - 실시간 코드 변경 - 유닛 테스트 - Supervisor 모델
  15. 15. - 문제가 되는 놈만 죽이자! - 초기상태? 그냥 바로 만들어보자 - 이걸 해주는 것이 Supervisor 사실 Erlang꺼임 ㅎㅎ;;;ㅈㅅ…ㅋㅋ!!
  16. 16. - 객체지향 하다 온 사람이 적응하기 힘듬 - Stateless - 액터 모델
  17. 17. - 러닝 커브가 쎔(특히 한국인은 더) - Macro 와 Erlang이 2가지 러닝커브 - 가볍게 쓰긴 좋다는 말이다!!!!!(머쓱)
  18. 18. - 느림 (책에서도 단독으로 쓰는건 권장 ㄴ) https://blog.discordapp.com/using-rust-to-scale-elixir- for-11-million-concurrent-users-c6f19fc029d3 보통 RUST나 C랑 섞어 씁니다
  19. 19. - 버전업을 팍팍함(원래 어린애가 쑥쑥 자람) - 의존성들이 따라오질 못함 - 레포들이 업데이트가 느림 - (물론 어느정도 대책은 있습니다)
  20. 20. - 참고자료가 아무래도 적음
  21. 21. - 진짜로 적음
  22. 22. - DB 래퍼 - 유닛 테스트 툴 - Config 저장 - 명령어 alias - 빌드 툴 - 의존성 관리 - 바이너리 배포(최근에 추가됨!!!!!) - 포매터도 있다
  23. 23. - 언어 차원에서 빌드툴을 지원 - 의존성 추가, 버전 등을 명시하기 편함. - 프로젝트 관리도 편하다 (umbrella)
  24. 24. - Aliases까지 지원 - 프로젝트에 맞게 세팅 가능. - 기존 명령어까지 override
  25. 25. - Mix deps.~~ 로 의존성 관리 가능 (Hex 사용)
  26. 26. A database wrapper and language integrated query for Elixir
  27. 27. 코드 준비 끝! 명령어 두줄로 설정 끝!
  28. 28. 마이그레이션 끝!스키마 정의 끝!
  29. 29. 있을만한건 다 있다 테스트별 세팅, 세팅, 종료처리, 등등 이제 리팩토링 막함(편안) ㅇㅈ합니다 Prof. cglee 설정도 테스트를 위해 따로 만들 수 있음.
  30. 30. ㅇㅈ합니다 222222 Prof. cglee
  31. 31. ㅇㅈ합니다 3333 Prof. cglee Mix format CI에서 연결해서 사용도 가능 Githook에 연결해서 사용도 가능 심지어 옵션 설정도 가능함(라인 글자 제한 등등…) 이것도 Elixir 버전에 따라서 쑥쑥 성장중 코드 에러도 잡아줘서 완전 편함
  32. 32. - 기능이 안정적이다 - 언어 버전이 올라갈 때 묶인 기능이 같이 올라감 - 선택의 고민을 할 필요가 없음 (선택의 여지가 없다는 말도 되지만…) - 서포트가 안 끊긴다(언어가 살아있는 한 아마도…) - 간단하게 올리기 쉽다. - 기본 제공하고 플러그인 설치는 다르지 않을까요. 이미 제공되어있는거니…
  33. 33. WELCOME MULTI-THREADING NO FREE LUNCH
  34. 34. Actor 끼리 Message로 통신 https://www.brianstorti.com/the-actor-model/ https://hamait.tistory.com/716 •Create more actors •Send messages to other actors •Designate what to do with the next message
  35. 35. 편하게 쓸 수 있게 이미 준비되어있다. https://hamait.tistory.com/716
  36. 36. - 기능이 안정적이다 - 언어 버전이 올라갈 때 묶인 기능이 같이 올라감 - 선택의 고민을 할 필요가 없음 (선택의 여지가 없다는 말도 되지만…) - 서포트가 안 끊긴다(언어가 살아있는 한 아마도…) - 간단하게 올리기 쉽다. - 기본 제공하고 플러그인 설치는 다르지 않을까요. 이미 제공되어있는거니…
  37. 37. 근데 인터페이스 바뀌 었는데요?
  38. 38. 인자가 없는 Run 인자가 True인 run 인자가 False인 run
  39. 39. 이런식으로 가능 (이제 case do 같은거 잘 안씀) (사실씀) 여러 오브젝트에서 특정 값을 추출 해내는 래핑 함수 같은거 만들때 편 함.
  40. 40. 에러 처리할 때 이 패턴매칭을 많이 씀 LET IT CRASH!!!!!!!
  41. 41. 아까 봤던 액터 모델 그럼 데이터는 어떻게 주고받지? DB는 하나일텐데, DB도 액터인가? -> 공유자원을 쓸 수 밖에 없는 상황이 생기기 에 완벽하게 모든게 Pure Function인건 아님 EX) ETS, DB ADAPTER, FILE 대체적으로 원칙이 지켜짐. (가끔 안되서 짜증나긴 하는데) 편함
  42. 42. Immutable
  43. 43. 생각보다 잘해준다. 다 참조형식으로 함. (head tail이 괜히 있는게 아니더라. 왜 PL때 이런거 안알려줬지…)
  44. 44. Manning의 action in elixir에서.
  45. 45. Manning의 action in elixir에서.
  46. 46. Manning의 action in elixir에서.
  47. 47. 버그 찾기가 좋아짐(것같은 착각이 듬) - 그 함수에서 자기 할일만 잘 하면 버그가 잘 안생김 - 버그가 터져도 자기 할 일만 잘 하게 고치면 됨
  48. 48. list를 한차례씩 변환해주는 코드
  49. 49. 어떤 데이터가 차례차례 바뀌어간다는 느낌이 있어서 좋음 (중간에 다른코 드 끼어드는것도 막고)
  50. 50. 이런식으로 하면 진짜 코드 재로딩 한다. (recompile로 전체 가능) (피닉스 쓰면 코드 바뀔때마다 알아서 재로딩해준다)
  51. 51. 매크로 등등…
  52. 52. 매크로 등등…
  53. 53. - 당장 쓰는 사람이 없고 - 뽑을려는 회사도 없고 - 앞으로 어떻게 될지 모르겠다(신생언어니까)
  54. 54. - 넘나 편하고 - 생산성은 확실히 좋은것같고 - 힙스터감성을 느끼기도 좋음 (무수한 악수요청을 받을 수 있음) 어쩔수 없다냐~
  55. 55. https://www.irasutoya.com/ 미쿠냥콘 3 냥냥한 미쿠콘 이상 이미지출처들

×