Erlang 정리 2(쉘명령어)

[markdown]
### 쉘 명령어

[여기](http://learnyousomeerlang.com/starting-out) 링크를 요약 한 글임을 밝혀드립니다.

– Emacs를 베이스로한 라인에디터를 내장하고 있음. (Emacs를 몰라도 됨)
– `Ctrl + A`를 누르면 커서가 라인의 가장 앞으로 이동함.
– `Ctrl + E`를 누르면 커서가 라인의 가장 끝으로 이동함.
– `li`를 누르고 `tab`을 누르면 `lists:`이런식으로 자동완성 됨.

들어오긴 했는데, 끄는법을 모를 때

`help().` 를 누르면 명령어가 쫘악 나옴. 여기서 `.` 점을 꼭 찍어야됨.

`help().`를 실행 후 나오는 것 중에 보면

아래와 같은 게 보이는데
“`
q() — quit – shorthand for init:stop()
“`

`q().`를 실행하면 쉘이 종료됨

쉘을 잠깐 멈추고 싶은 경우는 `ctrl + G`를 누르면 유저스위치 커맨드 라는 게 보이는데

“`
User switch command
–>
“`

여기서 `h`를 누르면 몇가지 명령어가 나옴. 쉘 안에서 멈추고 다른 걸 실행가능

“`
User switch command
–> h
c [nn] – connect to job
i [nn] – interrupt job
k [nn] – kill job
j – list all jobs
s [shell] – start local shell
r [node [shell]] – start remote shell
q – quit erlang
? | h – this message
“`

종료는 `ctrl + G` 후 `q`로 종료가능
[/markdown]

Erlang 정리1 (erlang 이란?)

[markdown]

“`
node코드를 리팩토링 해야하는데, 하기 싫고 귀찮아서 erlang을 잠깐 봄.
명언이 생각난다.
“`

> 개발자는 자기가 흥미가 가는 것을 열심히하는 직업병이 있다.

# Erlang 정리1 (erlang 이란?)

> [http://learnyousomeerlang.com/introduction#about-this-tutorial](http://learnyousomeerlang.com/introduction#about-this-tutorial)

> 위 링크를 참고, 요약 한 것임을 밝혀 드립니다.

– functional 프로그램이다
– 참조의 투명성 (referential transparency)
– 변경가능한 데이터를 못씀 (avoiding mutable data)
– 코드는 바이트코드로 변환되고, 가상머신위에서 돌아간다.
– 표준배포판
– 개발툴(컴파일러, 디버거, 프로파일러, 테트트 프레임웤)
– OTP(Open Telecom Platform) 프레임웤
– 웹서버
– 파서 생성기
– mnesia 데이터베이스
– key-value 스토리지 시스템(복제기능, 트랜젝션, 어떤 erlang데이터도 저장가능)을 포함한다.
– actor를 강제로 쓰게 만든다.
– message로만 응답한다.
– 경량프로세스이다. (가벼우니 많이 만들수는 있지만 그게 좋은건 당연히 아니다.)
– 시계열 프로세싱이나, 운영체제의 시스템 드라이버를 만드는데는 안좋다.
– 큰규모의 서버(Queue, map-reduce)나, 고수준 프로토콜의 구현등에는 좋다.

## erlang에 뛰어들려면 무엇이 필요한가?

– 텍스트 에디터 + Erlang 실행환경 (공식사이트에서 받자 http://erlang.org/download.html)

### 리눅스환경에서 설치하기

“`
### mac
$ brew install erlang

### ubuntu
$ apt-get install erlang

### centos
$ yum install erlang

### 위의 3가지 방법으로 안 될 경우는 컴파일 설치!
### 컴파일 설치하려면 GNU make, gcc, Perl5, GNU m4, ncurses,
### termcap, termlib, OpenSSL, Sun Java jdk-1.5 이상, sed등이 필요.
### 위의 것들은 알아서 설치하시길..

### configure 설정에 –prefix= 설정을 하면 설치경로 지정가능
### 없으면 /usr/local/{bin,lib/erlang}에 기본적으로 설치됨.

$ curl -O http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
$ tar xvzf otp_src_R16B03-1.tar.gz
$ cd otp_src_R16B03-1
$ LANG=C; export LANG
$ ./configure
$ make #오래걸림
$ make install
“`

## 도움얻기

“`
# man page
$ erl -man lists
“`

#### 웹 문서

공식 사이트 : [http://erlang.org/doc/](http://erlang.org/doc/)

공식 사이트 대신(디자인이 쫌 더 이쁨) : [http://erldocs.com/](http://erldocs.com/)

코딩 룰 : [http://www.erlang.se/doc/programming_rules.shtml](http://www.erlang.se/doc/programming_rules.shtml)

메일링리스트 : [http://www.erlang.org/static/doc/mailinglist.html](http://www.erlang.org/static/doc/mailinglist.html)

쿡북이나 레시피 좋아하는 사람은 여기를 : [https://erlangcentral.org/wiki/index.php?title=Main_Page](https://erlangcentral.org/wiki/index.php?title=Main_Page)

#### erlang shell 실행해보기

아래와 같이 실행하면
“`
$ erl
“`

요런식으로 나옴
“`
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4 (abort with ^G)
1>
“`

[/markdown]

javascript strict mode 정리

[markdown]
# javascript strict mode

strict모드를 jslint를 사용하게 되면서 사용하고 있는데, 이게 뭔지 모르는 채로 그냥 사용하는 것은 뭔가 찜찜했기에,찾아서 정리함.

strict모드는 파일, 프로그램 또는 함수의 시작 부분에 `”use strict”;`를 추가하여 strict모드를 추가 할 수 있다.

### strict모드의 제한

– Strict모드에서 변수를 선언하지않고 사용할 수 없다.
– 읽기 전용 속성에 값을 할당할 수 없다.
– extensible특성이 false로 설정된 객체에 속성을 추가할 수 없다.
– configurable특성이 false로 설정된 속성을 삭제할 수 없다.
– 객체에 같은 이름의 속성을 두번이상 정의 하지 못한다.
– 함수에서 파라메터명에 같은 이름을 두번 이상 사용하지 못한다.
– implements, interface, package, private, protected, public, static, yield 등과 같은 예약어를 변수 또는 함수 이름으로 사용 할 수 없다.
– 숫자 리터럴에 8진수 값을 할당하거나 8진수 값에 이스케이프를 사용할 수 없다.
– this의 값이 null또는 undefined인 경우 전역 객체로 바뀌지 않음.
– 문자열 “eval”, “arguments” 식별자(함수, 변수, 매개변수 명)으로 사용 할 수 없다.
– 함수선언을 statement나 함수 블록내에서 중첩해서 할 수 없다.
– 변수가 eval함수내에서 선언 되는 경우 해당 함수 밖에서 사용할 수 없다.
– 로컬 arguments 객체의 값을 변경할 수 없다.
– arguments.callee를 허용하지 않음
– with문을 허용하지 않음
[/markdown]