MariaDB Database 및 계정 생성 그리고 접속권한 설정

NAS에 MariaDB10이 있어서 개발하면서 사용할 일이 많다. 디비랑 계정 생성하고 접속권한 세팅할 때마다 찾기 귀찮아서 문법을 남긴다. database 생성 CREATE DATABASE 데이터베이스 이름; 계정생성  '%'부분에 'localhost' 일 경우 로컬에서만 접속을 허용 '%' 는 모든 IP에서 접속을 허용한다. 특정대역대 : '111.222.%' 특정IP : 'xxx.xxx.xxx.xxx' 형태로 적어준다. CREATE USER '계정이름'@'%' IDENTIFIED BY '비밀번호'; 특정 데이터베이스에 속한 모든 오브젝트들에 대한 권한을 특정 계정에 부여한다. GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO '계정이름'@'%'; 리프레쉬 ~ 바로 적용 FLUSH PRIVILEGES; 적용된 결과 보기 SHOW GRANTS FOR '계정이름'@'%'; 계정 정보 확인 하기 use mysql; select host, user, password from user;

ECMAScript6 - Operation

이미지
프로퍼티 이름 조합 문자열 조합 변수 값과 문자열 조합 디스트럭처링과 프로퍼티 이름 조합 Default Value 디폴트 값 적용 순서 Default 파라미터 파라미터 디스트럭처링 for-of Array 와 String NodeList 반복 디스트럭처링 for-of아 for-in의 차이 for-of Object 열거와 거듭 제곱 연산자

ECMAScript6 - DeStructuring

이미지
간단히 말해서, 변수에 분할 할당이다. four가 undefined라는 점 다차원 분할 할당도 가능하다는 점 ,를 사용해서 인덱스를 건너뛰고 할당, spread 연산자를 사용하여 할당 Object에도 분할 할당이 가능하다. Key에도 Value에도 함수의 파라미터로도 사용이 가능하다.

ECMAScript6 - Spread

이미지
Spread 연산자는 이터러블 오브젝트의 엘리먼트를 분리하여 전개한다. 전개한 결과를 변수에 할당하거나 함수의 파라미터로 사용할 수 있다. 1. Array 오브젝트 2. String 오브젝트 3. 함수의 파라미터로 사용 ...rest 파라미터 Array-like Array는 아니지만 Array처럼 사용할 수 있는 Object 오브젝트를 Array-like라고 한다. ES6 스펙에서 사용하는 공식 용어. key값이 0부터 시작해서 1씩 증가하고 length 프로퍼티가 있어야한다. 둘 중 하나라도 만족하지 않으면 Array-like가 아니다. ...rest파라미터와 Arguments Argument 는 function 키워드로 함수를 정의 했을 때 사용이 가능하다. get(1,2,3)으로 호출했을 때, 호출받는 함수의 arguments에 1,2,3이 설정된다. arguments도 Array-lik e이므로 for()문으로 전개가 가능하다. 따라서 Array 오브젝트와 메서드를 사용이 불가능하다. 단점  - 함수안의 코드를 보아야 arguments의 사용 여부와 사용 부분을 알 수 있어 코드 가    독성이 떨어진다. 많은 코드를 디버깅하거나 소스 코드를 리팩토링할 때 부담이 된다. ...rest 파라미터는 arrow function 으로 함수를 정의 했을 때 사용이 가능하다. ...rest 파라미터는 Array 오브젝트로 이터러블 오브젝트이다. 따라서 Array 오브젝트의 메서드를 사용할 수 있다. 장점 - 함수안의 코드를 체크하지 않고 (one, ...rest) 형태만 보아도 rest 파라미터의 범위를 알 수 있다.

ECMAScript6 - Iteration

이미지
이터러블 프로토콜은 오브젝트의 반복 처리 규약을 정의한다. 내장 오브젝트로 String, Array, Map, Set, TypedArray, Argument 오브젝트는 디폴트로 이터러블 프로토콜을 갖고 있다. 또한 DOM의 NodeList도 갖고 있다. 이러한 오브젝트는 자바스크립트 엔진이 렌더링될 때 이터러블 프로토콜이 설정된다. 사전처리 없이 반복 처리가 가능하다. 이터러블 프로토콜이 설정된 오브젝트를 이터러블 오브젝트라고 한다. 이터러블 오브젝트는 Symbol.iterator가 있어야 한다. 이것이 이터러블 프로토콜 이다. 이터러블 오브젝트가 아닌 오브젝트에 Symbol.iterator를 개발자 코드로 추가하면 이터러블 오브젝트가 된다. Array 오브젝트가 할당된 arrayObj에서 Symbol.iterator의 존재 여부를 체크하는 코드이다. 오브젝트에 프로퍼티 존재 여부를 체크할 때 arrayObj.propertyKey 또는 arrayObj[propertyKey] 형태로 작성하는데, Symbol은 arrayObj.Symbol.iterator 형태로 작성할 수 없고 arrayObj[Symbol.iterator]와 같이 대괄호 [] 안에 Symbol.iterator를 작성해야 한다. Object 오브젝트는 이터러블 오브젝트가 아니다. Symbol.iterator가 없다. 이터레이터 프로토콜은 오브젝트 값을 순차적으로 처리할 수 있는 방법을 제공하는데, 이것이 next() 메서드이다.

ECMAScript6 - arrow function, () => {}

이미지
기본 형태 () => { }; 1. 함수 블록 { } 사용하지 않은 형태, 2. 파라미터가 한 개의 형태 3. 파라미터가 없는 형태 4. 오브젝트를 리턴 할 경우 4-1 { }가 함수 블록인지 오브젝트를 의미하는것인지 헷갈리기 때문에 ( ) 감싸주는것 같다. 4-2 아니면 아래와 같이 명시적으로 return문을 작성해준다. 5. arguments 사용 불가 function 키워드로 선언한 함수를 sports(1,2) 형태로 호출하면 함수의 arguments에 1과 2가 설정된다. 반면 화살표 함수에는 arguments가 존재하지 않는다. 화살표 함수블록에서 arguments를 사용하면 ReferenceError가 발생한다. ES6에서는 arguments 대신에 rest 파라미터를 사용한다. rest 파라미터는 "let sports = (...rest) => {code}" 형태와 같이 소괄호 () 안에 점(.)을 세 개 작성하고 이어서 파라미터 이름을 작성한다. sports(1 ,2)로 호출하면 1과 2가 rest 파라미터에 배열로 설정된다. arguments는 Argument 오브젝트를 대신하는 프로퍼티로 함수가 호출되면 Argument오브젝트를 생성하고 함수 실행이 끝나 빠져나올 때 삭제한다. 함수를 100번 호출하면 100번 Argument 오브젝트를 생성하고 삭제하므로 효율이 떨어진다. rest 파라미터는 Argument 오브젝트를 생성하지 않으므로 효율이 높다. 이런 점을 고려하여 Argument 오브젝트를 생성하지 않는 것으로 간주된다. 6. this와 setTimeout() setTimeout()가 window 오브젝트 함수이므로 setTimeout()안 this가 window 오브젝트를 참조하게 된다. 그래서 콘솔에 true가 출력된다. 여기서 문제는 newSports.get() 형태로 호출했으므로 this가 newSports의 인스턴스를...

ECMAScript6 - var와 let

이미지
1. 함수 안에 작성한 let 변수는 함수가 스코프. 2. 함수안에 if(a==0){let sprots= "축구"} 형태로 코드를 작성했을 때, sports 변수는 함수가     스코프가 아니라 if문의 블록 { } 스코프. 3. 같은 스코프에서 같은 이름의 let 변수를 선언할 수 없다. 4. let 변수는 호이스팅(hoisting) 되지 않는다. 5. let과 this 6. for문에서 var 와 let 1. 의 예시 2. 의 예시 호이스팅이란 - 변수나 함수를 선언, 정의하기 앞서서 먼저 호출하는 경우 문제없이 작동되도록 하는 특성이다. 4. 의 예시 - var 로 선언된 sports 변수는 비록 undefined가 출력되었지만 변수로 인식되었다. 반면에  let 으로 선언된 music 변수는 변수로 인식되지 않았다. 5. 의 예시 var로 선언한 변수의 스코프는 글로벌 오브젝트이고 this가 글로벌 오브젝트를 참조한다. this가 window 오브젝트를 참조한다. 6. 의 예시 for문에서 let 변수는 반복할 때마다 스코프를 갖는 반면, var 변수는 스코프를 갖지 않는다. <!doctype html> <html> <head>   <meta charset="utf8" /> </head> <body>   <ul>     <li>1~10</li>     <li>11~20</li>     <li>21~30</li>   </ul>   <script>     var nodes = document.querySelector('ul');     f...