본문 바로가기

CPS 예외 처리 패턴 CPS에서는 일반적으로 요류를 호출 체인의 다음에서 콜백으로 전달하여 수행된다. Node.js 콜백 규칙에 따르면 오류는 콜백의 첫번째 인수로 전달된다. const fs = require('fs') function readJSON(fileName, callback){ fs.readFile(filename, 'utf8',(err,data)=>{ let parsed; if(err) // 오류 전달 후 현재 함수 종료 // 콜백이 호출되는 즉시 readJSON을 종료하기 위해 return을 사용한다. return callback(err); try{ parsed = JSON.parse(data) }catch(err){ // 에러 catch 후 오류 전달 return callback(err); } callback..
자바스크립트 Execution Context 1 Execution Context 개념 Execution context는 javascript 코드를 실행하기 위해 필요한 환경을 말한다. 자바스크립트 엔진이 코드를 실행하기 위해서는 다음 정보를 알아야 한다. 변수 : 전역변수, 지역변수, 매개변수, 객체 프로퍼티 함수 선언 Scope 정보 this javascript 엔진은 execution context를 객체로써 관리한다. execution context 객체는 위의 정보를 저장하기 위해 아래와 같이 3개의 프로퍼티를 갖는다. 각 프로퍼티에 대한 간단한 설명은 다음과 같다. variable object (VO) : 변수, 매개변수, 함수 선언 정보를 담는다. scope chain : 스코프 정보를 담는다. thisValue : this 바인딩 정보를 ..
화살표 함수와 this 화살표 함수와 this 일반 함수와 화살표 함수의 this는 바인딩할 객체를 결정하는 시점이 다르다. 일반 함수 : 함수 호출 방식에 따라 동적으로 결정 화살표 함수 : 정적으로 결정. 항상 상위 스코프의 this 를 가리킨다 (Lexical this) 다음 예시를 통해 둘의 차이를 알 수 있다. /* ======================== 일반 함수 =========================== */ function Prefixer(prefix) { this.prefix = prefix; } Prefixer.prototype.prefixArray = function (arr) { return arr.map(function (x) { return this.prefix + ' ' + x; // 여..
[MySQL] ER_NOT_SUPPORTED_AUTH_MODE 1. 증상 sequelize를 사용해 mysql에 접속을 시도하는데 해당 오류 발생 2. 원인 MySQL8 에서 지원하는 인증방식을 node의 mysql 드라이버에서 지원하지 않기 때문에 발생하는 문제 3. 해결방법 (1) 직관적인 방법으로, 그냥 MySQL의 인증 방식을 이전 버전으로 낮춰주면 된다. MySQL Installer를 사용하면 간단하게 재설정이 가능하다. (2) MySQL 계정의 인증 방법을 변경해주면 된다. 자세한 내용은 링크를 참조. 참고로 해결 방법으로 use mysql; update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; 를 사용하라고 하는데, mysql..
4. 스택 본 카테고리에 게시되는 글은 제가 편입을 준비하며 정리한 자료들입니다. 참조한 서적은 다음과 같습니다. 1. C언어로 쉽게 풀어 쓴 자료구조. 천인국·공용해·하상호. 생능출판사 2. 윤성우의 열혈 자료구조. 윤성우. 오렌지미디어 학부 편입 면접을 위해 준비한 자료이기 때문에 지나치게 긴 코드 또는 너무 깊은 내용은 배제했습니다. 1. 스택의 개념 1) 기본 개념 - 간단하게 책 쌓아놓은 것 생각하면 된다. - 후입선출 개념 : 맨 끝에 들어간게 맨 처음으로 나옴 - 스택의 후입선출 예시 : 함수 순환호출 마치고 return하면서 되돌아가는 과정 - 스택top : 스택의 가장 위쪽 자료 위치를 알림 스택 삽입, 출력, 스택 비었는지/꽉찼는지 등에 넓게 쓰임. - 출력 순서가 입력 순서의 역순으로 이루어져야..
프로젝트 수행 계기 및 목표 어제 스타트업 인턴즈 교육에 참석해 개발 일지의 중요성을 깨닫게 되었다. 그래서 당장 오늘부터라도, 개발 일지를 작성하고자 한다. 개발 일지 작성 이전에, 기존의 작업을 정리하는 차원에서 글을 작성한다. 프로젝트를 시작하게 된 계기 프로젝트를 시작하게 된 계기는 기존 졸업 프로젝트로 개발한 SIMS를 개선하기 위함이다. 학기 중 수업을 들으며 FE와 BE를 동시에 개발하는 것은 생각보다 힘든 일이었다. 그래도 기한 내에 '돌아가는' 프로그램을 만들기는 했지만.. 너무 많은 기술적 부채를 남겨두었다. 특히 BE는 졸업 프로젝트라고 내놓기 민망할 정도였다. 따라서 본 프로젝트를 통해 BE 개발에만 집중하여 보다 수준 높은 서버 코드를 작성하고자 한다. 프로젝트 목표 1. RESTful API 개념 적용 기존..
JPQL, Criteria JPQL 개요 JPA에서 사용되는 JPQL은 SQL 쿼리를 추상화 한다. 즉 하나의 쿼리 언어를 통해 다양한 DB를 사용할 수 있다. JPQL은 SQL문과 유사하지만, 다른 점이 존재하기 때문에 이를 고려해 사용해야 한다. 예를 들어 inline view를 사용할 수 없고, insert 문이 존재하지 않는다(Entity manager를 사용해야 한다). 한편, JPQL의 대상은 테이블이 아닌 객체라는 것 또한 고려해야 한다. 즉, JPQL은 DB 테이블과 직접적인 의존관계를 지니지 않는다는 것을 생각해야 한다. 기본 질의 JPQL은 기본적으로 SQL 문법과 유사한 구조를 가지고 있다. // SELECT SELECT ... FROM ... [WHERE ...] [GROUP BY ... [HAVING .....
Java Date와 Spring boot JPA(Hibrnate) Java8 이전의 Date는 불변 객체가 아니라는 점, 상수 필드 남용 및 일관성 없는 상수값 등 많은 문제점을 가지고 있다. (참조 : 머루의 개발블로그, Java의 Date) Java8 이후에는 LocalDateTime을 사용해 기존의 문제를 대부분 해결 가능하다. Java8을 사용할 수 없는 상황이라면, joda-time을 사용할 수 있으며 안드로이드의 경우 date4j를 사용할 수 있다. 한편, Spring JPA에서 LocalDateTime을 사용할 때는 Spring boot의 버전을 고려해야 한다. Java 8의 날짜와 시간 클래스는 Hibernate 5.3(JPA 2.2) 부터 별도의 설정 없이도 정상적으로 사용 가능하다. Spring boot는 2.1 버전부터 Hibernate 5.3을 지..