항상 ES5, ES6의 특징이나 차이에 대해서 찾아보긴했지만 ECMA 자체가 어떤 의미를 가지는지는 찾아보지 않아서

한번 정리해보았다. 

 

ES는 ECMA Script 의 약자로 Script 의 규격, 표준을 말한다.

 

버전 별 특징은 아래와 같다.

ES3 (1999)

- 가장 범용적인 버전 (흔히 말하는 javascript)

 

ES5 (2009)

- 배열에 forEach, map, filter, reduce, some, every와 같은 메소드 지원

- Object에 대한 getter / setter 지원

- 자바스크립트 strict 모드 지원 (엄격한 문법 검사)

- JSON 지원 ( 과거에는 XML 지원하다가 json 지원 포함)

 

* IE9를 포함한 모던 브라우저들은 ES5 까지는 무난히 적용가능

 

ES6 (= ES 2015)

- let, const 키워드 추가

- arrow 문법 지원

- iterator / generator 추가

- module import / export 추가

- Promise 도입 (callback hell 해결위해 도입)

 

ES8 (= ES 2017)

- async — await (callback hell 해결위해 도입)

 

이번글은 개괄적으로 ECMA를 알아보기위해 작성했기때문에 버전별 특징에 대한 상세와 브라우저 호환성 관련 포스팅은 차근차근 작성할 예정이다!

 

참고글

// ES 버전별 특징 설명

https://medium.com/sjk5766/ecma-script-es-%EC%A0%95%EB%A6%AC%EC%99%80-%EB%B2%84%EC%A0%84%EB%B3%84-%ED%8A%B9%EC%A7%95-77715f696dcb

 

// 브라우저 호환성 설명 (상세)

https://webclub.tistory.com/316

 

'Language > JavaScript' 카테고리의 다른 글

javascript - scope, lexical, hoisting  (0) 2018.07.24

Reset이나 Revert는 특정시점 이전으로 돌아가는 명령어이다.

차이점은 reset은 특정시점으로 돌아갈때 이력을 남기지 않고 revert는 특정시점으로 돌아가는 revert 명령자체도 이력으로 남긴다는 점이다.

 

ORIG_HEAD ]

reset 전의 커밋은  'ORIG_HEAD'라는 이름으로 참조할 수 있다. 실수로 reset 한 경우에 ORIG_HEAD로 reset 하여 이전버전으로 되돌릴수있다.

$ git reset --hard ORIG_HEAD

'프로젝트 관리 툴 > GIT' 카테고리의 다른 글

Git Log 옵션  (0) 2019.08.19
Git Branch 관리 명령  (0) 2019.08.19
Git Commit 명령  (0) 2019.08.19
github 간단 명령어  (0) 2019.01.10

-- 로컬저장소의 Commit 히스토리를 시간순으로 조회

$ git log

 

-- git log 결과값 

commit ca82a6dff817ec66f44342007202690a93763949      -- SHA-1 체크섬값
Author: Scott Chacon <schacon@gee-mail.com>             -- commit한 계정
Date:   Mon Mar 17 21:52:11 2008 -0700                       -- commit 날짜 

    changed the version number                                   -- commit 메세지

 

-- 최근 2개 commit 비교 (diff)

$ git log -p -2 

 

-- log 히스토리 통계 조회 (변경파일개수 등)

$ git log --stat

 

-- oneline은 커밋내용을 한줄로 요약해서 조회 > commit 내역 한꺼번에 볼때 

$ git log --pretty=[oneline | short | full | fuller]

 

 

이밖에도 날짜, 파일, 작성자, 커밋메세지 별로 조회가 가능 > 차근차근 찾아봐야겠당

 

 

 

'프로젝트 관리 툴 > GIT' 카테고리의 다른 글

Git Reset, Revert 차이  (1) 2019.08.19
Git Branch 관리 명령  (0) 2019.08.19
Git Commit 명령  (0) 2019.08.19
github 간단 명령어  (0) 2019.01.10

[ branch 생성 ] 

$ git branch [새로운브랜치명]    

$ git checkout -b [새로운브랜치명]    -- 생성 & branch이동

 

[ branch 체크아웃 ]                        -- 해당 branch로 이동

$ git checkout [브랜치명]

 

[ branch 삭제 ]

$ git branch -D [브랜치명] 

 

[ branch 조회 ]

$ git branch -vva

 

[ branch head 맞추기 ]

$ git stash                -- 기존에 작업하던내용 임시저장

$ git rebase master    -- 리모트소스 내려받기 

$ git stash apply        -- 임시저장한 내용 적용

'프로젝트 관리 툴 > GIT' 카테고리의 다른 글

Git Reset, Revert 차이  (1) 2019.08.19
Git Log 옵션  (0) 2019.08.19
Git Commit 명령  (0) 2019.08.19
github 간단 명령어  (0) 2019.01.10

소스를 수정하고 commit 한 후에 리모트 레파지토리에 수정사항이 생겨 다시 pull 받았더니 commit 이 두개로 생성되었다. (Your branch is ahead of 'origin/master' by 2 commits.)

로그를 확인해보니 내가 commit 한 버전 1개와 리모트 소스를 pull 받으면서 생긴 merge commit이 추가로 생긴거였다. 처음부터 merge commit 을 남기지 않으려면 pull 받을때 --rebase 옵션을 주면 생기지 않는다고 한다. (git pull --rebase)

내 경우에는 이미 merge commit이 생겨버려서 reset으로 2번째 전 commit으로 돌아가서 다시 진행했다.

 

 

[ 진행순서 ]

$ git commit -m [msg]

$ git pull 

Your branch is ahead of 'origin/master' by 2 commits. 

 

[ 해결 ]

$ git reset HEAD^^ (2개 이전까지 commit 취소) > 변경된파일은 그대로 

$ git add .

$ git commit -m [msg]

$ git push origin HEAD:refs/for/master 

 

 

[ commit 취소명령 ]

$ git reset HEAD^ : 마지막 커밋 취소 but, 변경한 파일은 그대로 존재 
$ git reset --hard HEAD^ : 마지막 커밋 취소하고 변경전 파일로 복구
$ git reset HEAD~n : 마지막 n개 커밋 취소 but, 변경한 파일은 그대로 존재 
$ git reset --hard HEAD~n : 마지막 n개 커밋 취소하고 변경전 파일로 복구

 

 

[ commit amend 옵션 ]

- 코드리뷰 후 수정사항 반영할때 사용 (Change-Id는 유지, Commit-Id는 새로 생성)

- 현재 브랜치의 마지막 커밋을 새로운 커밋으로 대체 (변경이력은 없어지지만 변경된내용은 누적)

$ git commit --amend

$ git push origin master 

 

 

 

참고글 

http://logonluv.blogspot.com/2015/02/git-commit-reset.html

'프로젝트 관리 툴 > GIT' 카테고리의 다른 글

Git Reset, Revert 차이  (1) 2019.08.19
Git Log 옵션  (0) 2019.08.19
Git Branch 관리 명령  (0) 2019.08.19
github 간단 명령어  (0) 2019.01.10
  • SET NOCOUNT 옵션

- 구문 : SET NOCOUNT [ ON | OFF ] 

- ON 으로 설정하면 쿼리를 수행하며 영향받은 행수를 카운트하여 리턴

- 메시지를 출력하는 부하를 줄일수있어 프로시저 성능을 향상시킬수있음

- ON 설정이 되어있어도 @@ROWCOUNT 함수는 업데이트됨

 

  • SET TRANSACTION ISOLATION LEVEL 옵션

- 격리수준을 설정하는 옵션

- READ UNCOMMITED : 가장 약한 격리수준, 커밋되지않은 데이터를 읽을수있어서 무결성을 깨뜨릴수있지만 동시성이 향상되어 자주사용됨 (무결성이 중요한 처리에는 X)

SERIALIZABLE : 가장 강한 격리수준

 

격리수준 순위 격리수준 커밋되지않은 읽기 반복되지않는 읽기  
1 SERIALIZABLE NO NO  
2 SNAPSHOT NO NO 비표준, MSSQLServer만의 격리 수준
3 REPEATABLE READ NO NO  
4 READ COMMITTED NO YES SQLServer 2008 기본 격리 수준
5 READ UNCOMMITED YES YES  

 

참고글 : http://egloos.zum.com/sweeper/v/3005129

'데이터베이스 > MSSQL' 카테고리의 다른 글

datetime / datetime2 타입차이  (0) 2019.09.25

Spring에서 Exception 처리는 총 3가지

 

  • 전역 처리 Global Level using -  @ControllerAdvice
  • 컨트롤러단에서 처리 Controller Level using @ExceptionHandler 
  • 메소드단위 처리 Method Level using try/catch  

1. @ControllerAdvice 

- 공통 Exception 클래스를 만들고 해당 어노테이션 추가

- 서비스, 컨트롤러단에서는 exception을 throw 하는 역할만하고 공통 클래스에서 일괄처리

 

 

2. @ExceptionHandler 

- 컨트롤러 별로 Exception 처리 

 

3. try/catch

- 메소드 단위에서 exception 처리

- 안티패턴, 불가피한경우 구체적인 Exception 지정 

 

 

*** cheese10yun 블로그에 설명이 너무 잘돼있음 



출처: https://springboot.tistory.com/33 [스프링부트는 사랑입니다]

 

 

 

스프링부트 : REST 어플리케이션에서 예외처리하기

스프링부트 : REST어플리케이션에서 예외처리하기 (원문소스: http://www.ekiras.com/2016/02/how-to-do-exception-handling-in-springboot-rest-application.html) 기억할 점 스프링 부트 어플리케이션에서 예외..

springboot.tistory.com

https://cheese10yun.github.io/spring-guide-exception/

 

Spring Guide - Exception 전략 - Yun Blog | 기술 블로그

Spring Guide - Exception 전략 - Yun Blog | 기술 블로그

cheese10yun.github.io

https://groups.google.com/forum/#!topic/ksug/5xeN3gDSbu8

 

Google 그룹스

 

groups.google.com

 

서브쿼리 주의사항

- 괄호로 묶어서 사용

- order by 사용 금지 

- 연산자 오른쪽에 위치

구문별 명칭

  • select   - 스칼라서브쿼리
  • from    - 인라인뷰
  • where  - 서브쿼리

스칼라 서브쿼리

- select 문에서 서브쿼리는 1개의 결과만 출력돼야함

 

인라인뷰 

- 서브쿼리에서 출력된 데이터를 테이블처럼 사용가능

 

 

 

참고

https://docs.microsoft.com/ko-kr/sql/relational-databases/stored-procedures/modify-a-stored-procedure?view=sql-server-2017

 

저장 프로시저 수정 - SQL Server

저장 프로시저 수정Modify a Stored Procedure 이 문서의 내용 --> 적용 대상: SQL Server Azure SQL Database Azure SQL Data Warehouse 병렬 데이터 웨어하우스 APPLIES TO: SQL Server Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse SQL Server 2017SQL Server 2017 또는 SQL Ser

docs.microsoft.com

 

'데이터베이스' 카테고리의 다른 글

트랜잭션 특성 - ACID  (0) 2019.07.23

트랜잭션 이란? - 논리적인 작업 단위 

 

 

  • 원자성 ( Atomicity )
    • 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말합니다.
    • 즉, All or Noting의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미합니다.
  • 일관성 ( Consistency )

    • 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말합니다.

    • 여기서 말하는 일관성이란, 위의 송금 예제에서 금액의 데이터 타입이 정수형(integer)인데, 갑자기 문자열(string)이 되지 않는 것을 말합니다.

      • 즉, 송금 전후 모두 금액의 데이터 타입은 정수형이여야 한다는 것이 일관성입니다.

  • 격리성 ( Isolation )

    • 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말합니다.

    • 즉, 트랜잭션끼리는 서로를 간섭할 수 없습니다.

  • 지속성 ( Durability )

    • 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 말합니다.

    • commit을 하면 현재 상태는 영원히 보장됩니다.

'데이터베이스' 카테고리의 다른 글

DB SubQuery  (0) 2019.07.24

SQL 튜닝 결과보고

- 오라클 기준

- 8가지 사례소개

 

*블록IO

- 블록IO 를 줄이면 수행시간 단축 가능

- DBMS에서 IO는 블록단위로 이루어짐

- 레코드를 읽을때 레코드가 속한 블록 전체를 읽게됨

- 따라서 블록IO개수는 쿼리 실행할때 읽게되는 블록의 개수

- 보통 한번 가져올때 블록 128개 가져옴

- 인덱싱된 로우 가져올때는 싱글블록IO(블록1개만가져올수잇음)

- MSSQL 에서는 페이지라는 용어 사용

 

*스칼라 서브쿼리

- 스칼라 서브쿼리 쓰면 버퍼캐시에 캐싱이 되기때문에 부하감소

- 예를 들어 1을 입력한후 다음번에도 1을 입력하면 미리 캐시된 값이 나가서 시간 단축

- 리컬시브 콜을 감소

- 근데 입력값이 유니크한것보다 변별력없을때 성능이 더 좋아짐

- 사용시 밑져야 본전이므로 스칼라서브쿼리 사용을 표준으로 잡는것도 나쁘지않음

 

*쿼리변환

- 결합된 쿼리 개선 > 결합을 풀거나 다른방식으로 진행

- 보통은 옵티마이저가 알아서 잘해주지만... 잘 안될때도잇음

 

*인덱스

- 인덱스를 쓰면 빠르다고 생각하는데 인덱스를 타서 테이블로 가는것도 부하가 생기므로 건수가 적으면 안쓰는게 나음

- 예를들어 3만건이면 풀스캔이 나음 인덱스쓰면 3만번도는거

 

*파티션 프루닝

- 읽지않아도되는 파티션을 제외시키는 법

 

*NL조인?

- Nested Loops

 

*view push predicate

- 힌트를 줘서 WITH 문 부터 실행하는게 아니라 인라인을 먼저 실행해서 WITH문에 더 좋은조건을 주는것

- WITH절에 무조건 이걸 쓰는게 좋은건 아니고 해당하는 케이스에만 사용

 

*SQL 튜닝의 시작 책

 

*View Merging

- 큰쿼리안에 작은쿼리 감싸고 있는 경우 작은쿼리를 큰쿼리 레벨로 올리는 것

- 뷰머징이 실패할 경우가 많음 >내부로직이 복잡해서 > 노머징 힌트를 주고 반대로 작은쿼리로 데이터를 던져주는방식으로 view push predicate 유도

+ Recent posts