ES 2015 (ES 6)
1. let, const 키워드 추가
기존의 변수는 함수 scope를 가진 var 키워드를 이용하여 선언하였다. 때문에 block scope 를 가진 let과 const 키워드를 추가하였다. 기존에는 상수형 키워드가 없어 CONST_TEST와 같이 대문자로 상수임을 표시했다면, ES 6부터 const 키워드가 추가되어 값의 변경을 통제한다.
2. arrow 문법 지원
arror 문법은 두 가지의 장점을 제공한다. 첫 번째는 익숙하면 편하고 간결해진 코드를 작성할 수 있다. 두 번째는 this 를 바인딩하지 않는다. (다르게 말하면, this는 해당 scope의 this와 같다.)
두 번째 this를 바인딩 하지 않는다는 코드로 설명하겠다. 우선 아래 코드를 보자. test 객체에 name변수와 fn이라는 메소드를 두었다. 아래 test.fun으로 메소드를 실행한다.
3. iterator / generator 추가
위 arrorw에서 샛길로 빠져서 더 새진 않겠습니다. 이 둘은 따로 공부해서 글을 쓸 정도로 내용이 깊고 많습니다.
4. module import / export 추가
사실 저는 익숙하고 당연하게 import / export를 써 왔는데 도입된 시점이 그리 오래되지 않았다는 것에 잠깐 놀라네요.
5. Promise 도입
자바스크립트의 비 동기 callback hell을 해결해 줄 기법이 추가 되었습니다.
ECMA 2017 (ES 8)
사실 ECMA 2017 까진 정리하지 않으려 했는데, 보던 중 반가운 기능이 추가되어 소개 합니다.
async — await
위에서 ES6에서 callback hell을 해결하기 위해 Promise가 도입되었다고 했는데 async-await도 Promise처럼 callback 을 해결할 뿐만 아니라 좀 더 직관적이고 단순하게 코드를 만들 수 있습니다.
0. 공통 명명 규칙
대소문자가 구분되며 길이에 제한이 없다.
예약어를 사용해서는 안 된다.
숫자로 시작해서는 안 된다.
특수문자는 '_' 와 '$'만을 허용한다.
파스칼 표기법 (PascalCase)과 카멜 표기법(camelCase)를 사용한다.
PascalCase : 모든 단어에서 첫 번째 문자는 대문자이며 나머지는 소문자이다.
camelCase : 최초에 사용된 단어를 제외한 첫 번째 문자가 대문자이며 나머지는 소문자이다.
반의어는 반드시 대응하는 개념으로 사용해야 한다.
1. 패키지(Package) 명명 규칙
패키지명은 표준 패턴을 따라야 한다.
Ex) [com].[Company].[Project].[TopPackage].[LowerPackage]
패키지명은 가급적 한 단어의 명사를 사용한다.
Ex) 좋은 예 : com.nexon.sudden.member.object
Ex) 나쁜 예 : sudden.memberObject
2. 클래스(Class) 명명 규칙
클래스명에는 파스칼을 사용한다.
Ex) public class HelloWorld {}
인터페이스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public interface Animal {}
인터페이스를 구현한 클래스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public class Tiger implements animal{}
추상 클래스에는 특별한 접두사 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public abstract class Animal {}
3. 메소드(Method) 명명 규칙
메소드명에는 파스칼 표기법을 사용한다.
Ex) public void SendMessage(String message) {}
속성에 접근하는 메소드명의 접두사는 'get','set'을 사용한다.
Ex) public void setDisplayName
Ex) public void getDisplayName
데이터를 조회하는 메소드명의 접두사는 find를 사용한다.
Ex) public void findData(String data){}
데이터를 입력하는 메소드명의 접두사는 input을 사용한다.
Ex) public void inputData(HashMap data){}
데이터를 변경하는 메소드명의 접두사는 modify를 사용한다.
Ex) public void modifyData(HashMap data){}
데이터를 삭제하는 메소드명의 접두사는 delete를 사용한다.
Ex) public void deleteData(String data){}
데이터를 초기화 하는 메소드명의 접두사는 initialize을 사용한다.
Ex) public void initData(String data){}
반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void isData(String Data){}
데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void loadData(){}
데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void hasData(){}
보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void registerAccount(){}
새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void createAccount(){}
해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void toString(){}
해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getMembers(){}
B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
Ex) public void getUserByName(String name){}
반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void isData(String Data){}
데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void loadData(){}
데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void hasData(){}
보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void registerAccount(){}
새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void createAccount(){}
해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void toString(){}
해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getMembers(){}
B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
Ex) public void getUserByName(String name){}
4. 변수(Variable) 명명 규칙
변수와 메소드의 파라미터에는 카멜표기법을 사용한다.
변수에 약어를 사용하지 않고 모든 의미를 충분히 담는다.
한 글자로 된 이름을 사용하지 않는다.
선언된 지점에서 초기화하며, 가능한 사용범위를 최소화 한다. 숫자 0 레퍼런스 null
반복문에서 인덱스로 사용할 변수는 i,j,k 등으로 사용한다.
Ex) for(int i = 0; i < 10; i++){}
지역변수와 멤버변수(전역변수)는 변수명 앞에 밑줄(_)을 사용하여 구별한다.
boolean타입의 변수는 접두사로 is를 사용한다 Ex) isCheck
1. 카멜 표기법(camelCase) "camelCase" "단봉낙타" 표기법[1][2] 각 단어의 첫문자를 대문자로 표기하고 붙여쓰되, 맨처음 문자는 소문자로 표기함 띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식 예시: backgroundColor, typeName, iPhone
2. 파스칼 표기법(PascalCase) "PascalCase" 첫 단어를 대문자로 시작하는 표기법 예시: BackgroundColor, TypeName, PowerPoint
* 각종 네이밍 룰(Naming Rule)
1. 카멜 케이스 (Camel Case)
- 흔히 접하는 표기법. 가장 처음에 오는 문자는 소문자로 표기하고, 각 단어의 첫글자는 대문자로 표기
- 예) deleteNumber, insertNumer
2. 파스칼 케이스 (Pascal Case)
- 쌍봉낙타 표기법. 각 단어의 첫글자를 대문자로 표기
- 가장 처음에 오는 문자도 대문자로 표기하는 점에서 카멜 케이스와 차이점
- 예) DeleteNumber, InsertNumber
3. 스네이크 케이스 (Snake Case)
- 각 단어의 사이에 언더바를 삽입
- 예) delete_number, insert_number
4. 헝가리언 표기법 (Hungarian notation)
- 데이터의 타입을 의미하는 접두어를 붙이는 표기법
- 마이크로소프트의 찰스 시모니가 제안했으나 현재는 MS조차 공식 가이드라인에서 사용하지 말라고 권고하는 비운의 표기법
국민은행측은 KB모바일인증서가 국내 은행 중 유일하게 소프트웨어뿐만 아니라 하드웨어에까지 보안기술을 적용했다고 밝혔다. TEE(신뢰된 실행 환경, Trusted Execution Environment)라는 독립된 보안영역에 인증서를 저장시킴으로써 안정성과 신뢰성을 높였다는 설명이다. 이를 위해 영국 보안업체인 트러스트오닉(Trustonic)사의 TAP(Trustonic Application Protection) 솔루션을 적용했으며, 인증서의 유효성과 비밀번호를 검증하는 알고리즘은 KB국민은행 자체기술로 개발하여 안정성과 보안성을 강화했다.
KB국민은행은 KB모바일인증서의 활용 범위도 확대하고 있다. 모바일뱅킹에만 초점을 두고 개발된 다른 사설인증서와는 달리 PC 기반인 인터넷뱅킹에서도 연동 로그인이 가능하도록 했다. 또한 KB손해보험 앱에서도 KB모바일인증서 로그인이 가능하다. 다른 KB금융지주 내 계열사까지 금융거래를 처리할 수 있도록 KB금융그룹 통합인증 환경 구축을 진행하고 있다.
KB국민은행측은 최근 전자서명법 개정안이 국회를 통과함에 따라 모바일 인증서의 업무 범위를 계속하여 확장할 계획이다.
이러한 와중에도 다양한 인증기술이 출현하고 있다. 공인인증서 폐지와 더불어 새로운 인증에 대한 사회적 요구가 큰 탓이다. 물론 ▲공인인증서와▲본인확인 ▲본인인증 ▲전자서명 ▲부인방지 등 다양한 인증 기술이 혼재되고 있는 것은 문제다. 어쨌든 새로운 인증은 강력한 보안성을 담보로 얼마나 편하게 사용할 수 있느냐가 관건인 셈이다.
이러한 관점에서 코리아엑스퍼트는 1회용 아이디인 OTID(One Time ID)를 선보이기도 했다. 대부분 2차 인증으로만 활용되는 일회용 비밀번호(OTP)와 달리 ID와 패스워드를 대신하는 1차 인증으로도 활용될 수 있는 기술이다.
코리아엑스퍼트 유인지 전략사업팀장은 “OTID는 한 번에 나를 식별하는 코드로 코리아엑스퍼트의 OTID는 아이디와 패스워드의 역할을 한 번에 하는 것으로 한 번의 행위로 ID와 패스워드는 물론 간편인증까지 대체하는 기술”이라고 밝혔다.
코리아엑스퍼트는 그동안 이상 징후를 탐색해 위협요인 및 위험인자를 찾아내는데 노하우를 쌓아왔다. 예를 들어 로그 정보에 특정 패턴을 걸어놓고 누가 언제 무엇을 어떻게 하고 있는지를 알아내는 분석 시스템에 전문성을 보유해왔다.
하지만 이러한 시스템 구축 및 운영 과정에서 이상 징후를 찾기 위해선 시작점인 ‘인증’을 다시 봐야 한다고 생각했다.
이러한 결과 새롭게 나온 제품이 OTID 기술 기반의 자사 솔루션 ‘아이루키’에 공개키 기반 구조(PKI) 기술을 융합한 ‘PKID’ 솔루션이다. PKID 솔루션은 일회용 코드 입력 방식과 원터치 방식으로 사용자 편의성에 집중한 공인·사설 인증을 대체할 수 있는 차세대 인증방식이라는 설명이다.
코리아엑스퍼트에 따르면 사업을 진행하며 고객이 공인인증과 사설인증을 무분별하게 사용하는 사례 등을 경험했다. 한 보험사의 경우 내부 업무에 15개의 인증수단을 사용한 경우도 있다는 설명이다.
유 팀장은 “2차 인증을 해야 하는데 귀찮고 힘들어서 아직 공인인증서를 사용하는 경우도 있었다”며 “공공의 경우 보안 적합성 심사와 국정원 감사 등 이슈가 있다. 예를 들어 가상 데스크톱(VDI)이나 가상사설망 접속시 2차 인증 도입을 확보할 것을 주문하고 있는데 이를 대체하는 수단으로 제공할 계획”이라고 밝혔다.
한편 다양한 사설 인증서의 등장으로 기업 입장에서 인증관리도 중요한 업무가 될 전망이다. 이에 따라 코리아엑스퍼트는 통합 인증 플랫폼을 기업에 제공하고 있다. 예를 들어 모 생명보험사의 경우 코리아엑스퍼트의 통합인증 플랫폼을 도입해 인증 어플리케이션을 관리하고 있다.
유 팀장은 “인증수단이 많아지고 관리해야 하는 앱도 많은 상황에서 이상징후 확인에 대한 요구가 있어 통합인증 플랫폼과 인증수단의 API 등을 엮어 관리하는 방안을 제안하고 있다”고 설명했다.
임은희 코리아엑스퍼트 기술영업본부 부장은 “하반기에도 PKID에 집중할 것”이라며 “공인인증서 폐지 관련해서 의도치 않게 캐피탈, 보험사, 공공기관 등에서 문의가 오고 있다. 모바일 앱에서 대출심사를 할 때 공인인증서를 쓰는데 여기에 사설인증을 적용하거나 보험가입 시 언더라이팅 할 때 산용카드 본인확인 등의 절차 말고 사설인증서로 대체하면서 패턴, 핀번호, 지문, 등 다양한 형태로 접근이 가능한 것을 원하고 있다”고 전했다.