Erlang 소개 Case Studies Summary Erlang Brief S/W Development with Erlang 박달호 Suresoft Technologies Inc 박달호 Erlang

Similar documents
6주차.key

?털恬묵

LXR 설치 및 사용법.doc

PowerPoint 프레젠테이션

HMC_TG_ADO_

소프트웨어개발방법론

PRO1_02E [읽기 전용]

PRO1_04E [읽기 전용]

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

Microsoft PowerPoint APUE(Intro).ppt

본책- 부속물

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

1

초보자를 위한 C++

SW

1 SW

untitled

<30352D30312D3120BFB5B9AEB0E8BEE0C0C720C0CCC7D82E687770>

歯mp3사용설명서

DE1-SoC Board

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대


untitled

COVER.HWP

이슈분석 2000 Vol.1

가볍게읽는-내지-1-2

kbs_thesis.hwp


한눈에-아세안 내지-1

UML

SRC PLUS 제어기 MANUAL

PCServerMgmt7

K7VT2_QIG_v3

Remote UI Guide

untitled

[ 영어영문학 ] 제 55 권 4 호 (2010) ( ) ( ) ( ) 1) Kyuchul Yoon, Ji-Yeon Oh & Sang-Cheol Ahn. Teaching English prosody through English poems with clon

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

2009년 국제법평론회 동계학술대회 일정

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

2 min 응용 말하기 01 I set my alarm for It goes off. 03 It doesn t go off. 04 I sleep in. 05 I make my bed. 06 I brush my teeth. 07 I take a shower.

딥러닝 첫걸음

歯FDA6000COP.PDF

step 1-1

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

02 C h a p t e r Java

Modern Javascript

chap01_time_complexity.key

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

untitled

Mentor_PCB설계입문

3Æí2Àå¨éÀç

구문 분석

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

OCaml

10주차.key

. "" "",.... :...,,....,.. :..,,,..,,...,.... 2

歯경영혁신 단계별 프로그램 사례.ppt

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

untitled

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint 프레젠테이션

Buy one get one with discount promotional strategy

Copyright 0, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT RIGHTS Programs, software, databases, and related

User Guide

PowerPoint 프레젠테이션

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

PowerPoint 프레젠테이션

º¸µµ¿Â

PowerPoint 프레젠테이션


대학교육151호-합침

슬라이드 1

고객 카드 현대모비스 제품을 구입해 주셔서 대단히 감사합니다. A/S 마크란? 공업 진흥청이 애프터 서비스가 우수한 업체를 선정, 지정하는 마크로 애프터 서비스 센터 운영관리 등 8개 분야 45개 항목의 까다로운 심사로 결정됩니다. 주의 : 본 제품의 디자인 및 규격은

Week3

Tcl의 문법

Portal_9iAS.ppt [읽기 전용]

김기남_ATDC2016_160620_[키노트].key

Microsoft PowerPoint - PL_03-04.pptx

Mac OS X 이란.hwp

1

슬라이드 1

A+H/W-CH16

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

금오공대 컴퓨터공학전공 강의자료

0.1-6

553호

PowerPoint 프레젠테이션

10X56_NWG_KOR.indd

인켈(국문)pdf.pdf

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

강의10

Hi-MO 애프터케어 시스템 편 5. 오비맥주 카스 카스 후레쉬 테이블 맥주는 천연식품이다 편 처음 스타일 그대로, 부탁 케어~ Hi-MO 애프터케어 시스템 지속적인 모발 관리로 끝까지 스타일이 유지되도록 독보적이다! 근데 그거 아세요? 맥주도 인공첨가물이

대표이사등의확인서명( ) I. 회사의 개요 1. 회사의 개요 1. 연결대상 종속회사 개황(연결재무제표를 작성하는 주권상장법인이 사업보고서, 분기ㆍ 반기보고서를 제출하는 경우에 한함) (단위 : 백만원) 상호 설립일 주소 주요사업 직전사업연도말 자산총액 지배

DCR-HC15

untitled

untitled


목 차 Ⅰ. 일반사항 1 Ⅱ. 특기사항 3 Ⅲ. 물품내역 및 세부규격 8 Ⅳ. 주의사항

Microsoft PowerPoint - 27.pptx

Transcription:

Brief S/W Development with Suresoft Technologies Inc. 2009.12

Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

Why? 쉽고강력하다. 현재환경분산처리요구증가 Multicore CPU 대중화품질관련기대치상승 의강점대량의노드에서검증됨병렬처리에적합 (share nothing) 9 nines 사례 (AXD301) Down Time 최소화가능

특징 I 특징적 공유가없다동시성의관점에서만악의근원인공유객체가없다 a. 단지메시지를주고받을뿐이다. a 사실은 거의없다 가정확한표현이다.

특징 II 특징적 패턴매칭패턴이일치하지않으면에러다. ( 일종의 guided programming) 함수선언시 Guard 및 parameter 제어문 if case 등 list comprehension list 에서추출할때

특징 III 특징적 동시성특별한처리없이병렬프로그램으로변신가능하다 (OTP 등사용 ). 경량의프로세스 (green process) 들간에메시지로정보를교환한다. 프로세스생성및관리에드는비용이적다.

Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

Primitives arity foo/0, foo/1, bar/5 atom a, b, c, A list [a, b], [], abc tuple {a, b}, {Any, Any, Any} variable Str, L, H, T

Assignment 1 single 2 one time 1 3 immutable 4 invariant

Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

Distel Slime과유사한 Emacs Mode 1 설치 svn co http://distel.googlecode.com/svn/trunk distel cd distel make install 2 설정 (let ((distel-dir "/usr/local/share/distel/elisp")) (unless (member distel-dir load-path) ;; Add distel-dir to the end of load-path (setq load-path (append load-path (list distel-dir))))) (require distel)

Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

Quick Sort 자주소개되는예 5줄짜리퀵소트 quicksort([]) -> []; quicksort([pivot Rest]) -> quicksort([front Front <- Rest, Front < Pivot]) ++ [Pivot] ++ quicksort([back Back <- Rest, Back >= Pivot]).

패턴매칭 I Guards, Parameters, Control, List Comp. Guards foo(a) when is_list(a) ->... ; foo(a) when is_integer(a) ->... ; foo(_) -> error.

패턴매칭 II Guards, Parameters, Control, List Comp. Guards (lambda style) F = fun(x) when is_list(x) ->... ; (X) when is_integer(x) ->... ; (_) -> error.

패턴매칭 III Guards, Parameters, Control, List Comp. Parameters foo([h T]) -> do_somthing_with(h), foo(t); foo([]) -> done.

패턴매칭 IV Guards, Parameters, Control, List Comp. Control if Foo > 0 -> {pos, Foo}; true -> {neg, -Foo} end, case Foo of {neg, _} ->... ; {pos, _} ->... end.

패턴매칭 V Guards, Parameters, Control, List Comp. List Comprehension [{X * X, X * Y} {X, Y} <- [{1,2}, {3, 4}]] =:= [{1,2},{9,12}].

패턴매칭사용시참고사항 Underscore foo([h T]) ->... %% H 미사용시컴파일타임경고생김. foo([_h T]) ->... %% _H 미사용시경고없음. More Specific First Bad foo(x) ->... ; foo(x) when is_atom(x) ->... % 절대실행안됨 Good - Bad의반대.

Message Passing Concurrent Programming 의기초 function (in module "mp") loop() -> receive quit -> io:format(" quit arrived.\nquit"); Any -> io:format("rcv: ~p\n", [Any]), loop() end. fire! (w/ operator! ) > Pid = spawn(mp, loop, []). > Pid! "a". rcv: "a" "a

ErlKi 실무 적용 사례 Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

ErlKi 실무 적용 사례 Eunit http://svn.process-one.net/contribs/trunk/eunit/doc/overview-summary.html JUnit 과비슷한단위테스트도구 ( 현재는 OTP Lib에포함 ) 예제 -include_lib("eunit/include/eunit.hrl"). foo_test_() ->?_assert(... =:=... ). bar_test_() -> {setup, fun()->... end, % setup fun(r) ->... end, % cleanup (R은 setup의반환값 ) [?_assert(... ),?_assertnot(... ),?_assertmatch(... )].

ErlKi 실무 적용 사례 Leex http://www.erlang.org/doc/man/leex.html 원래 trap exit 쪽에올라왔던유틸이었으나최근 otp lib 에포함 Lexical analyzer(scanner) 생성기 (ErlKi 소스참조 )

ErlKi 실무 적용 사례 Yecc http://www.erlang.org/doc/man/yecc.html LALR-1 Parser 생성기 (ErlKi 소스참조 )

ErlKi 실무 적용 사례 Yaws http://yaws.hyber.org/ 고성능웹서버 JSP와비슷한문법 (ErlKi 소스및예제참조 ) <erl> {ehtml, {p, [{attr_name, attr_value,... ], [child_nodes]}}. </erl>

ErlKi 실무 적용 사례 Outline 1 Language Some Configs Code 2 ErlKi 실무적용사례

ErlKi 실무 적용 사례 대용량문서처리 Java Legacy system 대체 1 약 1억건의문건처리 2 실제수행속도는자바와비슷하거나더빨랐음 (IO Bound 라큰의미는없을수있음 ) 3 생산성은대략 1.5~2 배정도로추정 ( 실제재작성기간은기존 java 대비 1 /4 정도소요 ) 4 Mnesia DB 사용 disc_copies 는 2G limit 존재, subscribe() 사용하여단계별테이블처리.

ErlKi 실무 적용 사례 Trac 사이트통합 1 사내이슈관리시스템 2 여러개의사이트 (Agilo on Trac) 통합, 사용자별프로젝트별보고서생성 3 sqlite-erlang 수정, 활용

은쉽고강력하고실용적이며따라서, 충분히실무에적용가능하다.

Appendix For Further Reading For Further Reading I Joe Armstrong Programming : Software for a Concurrent World The Pragmatic Programmers, LLC. 2007. David S. Touretzky Common Lisp: A Gentle Introduction to Symbolic Computation The Benjamin/Cummings Publishing Company, Inc. 1990. What s all this fuss about? http://pragprog.com/articles/erlang