부제: 프로토타입 체이닝. JavaScript 객체지향 패턴. 이번 포스팅은 JavaScript의 prototype에 대해 다루는 글이다. 이미 이전 포스팅들에서 prototype에 대해 어느정도 다루었다. 프로토타입에는 두가지 의미가 있으며, 이를 명확하게 숙지하는 것이 중요하므로 다시 한 번 짚고 넘어가려고 한다. 1. JavaScript의 모든 객체는 '__proto__' 라는 숨겨진 프로퍼티를 갖고 있다. __proto__는 자신의 부모인 프로토타입 객체를 가리킨다. 이러한 링크를 'prototype Link'라고 부른다. 2. JavaScript의 모든 함수는 'prototype' 라는 숨겨진 프로퍼티를 갖고 있다. prototype은 자신에 new 키워드를 붙여 생성한 객체의 부모를 가리킨다...
JavaScript의 this는 다른 언어의 this와는 조금 다르게 동작한다. this의 값은 함수를 호출하는 방법에 따라 바뀐다. 좋은 JavaScript 개발자로 거듭나기 위해서는 꼭 이해해야하는 개념이라고 하니, 이번 포스팅에서 다루도록 하겠다. JavaScript에서 함수(Function)을 호출할 때는 암묵적으로 arguments 객체 및 this 변수가 함수 내부로 전달된다. 그리고 방금 언급했듯 함수를 호출하는 방법에 따라 this에 할당되는 값은 달라진다. 지금부터 하나씩 알아보자. 1. 함수를 호출할 때 this 일반적인 함수를 호출할 때, 해당 함수 내부에서 사용된 this는 전역객체(브라우저의 경우 window객체, Node.js의 경우 global 객체)에 바인딩 된다. var n..
지난 포스팅에서 배열(Array)가 객체(Object)로 취급된다는 것을 확인했다. 그리고 JavaScript에서는 함수(Function)도 객체다. 본격적인 이야기를 시작하기 전에, 1급객체(First-Class Citizens)에 대해 짚고 넘어가려고 한다. JavaScript의 함수를 1급 객체라고 표현하기도 한다. 1급 객체는 CS분야에서 자주 쓰이는 용어로, 아래와 같은 특징을 갖는다. ⊙ 변수나 데이터 구조안에 담을 수 있다. ⊙ 파라미터로 전달 할 수 있다. ⊙ 반환값(return value)으로 사용할 수 있다. ⊙ 동적으로 프로퍼티 할당이 가능하다. JavaScript의 함수는 위의 조건을 모두 만족한다. JavaScript의 함수는 입력값을 받아 결과를 반환하는 구조로, JAVA와 같은..
JavaScript에서 배열(Array)은 객체(Object)의 일종이다. 조금 특별한 형태의 객체라고 할 수 있겠다. 다른 프로그래밍 언어의 배열과 유사한 동작을 한다. 이번 포스팅에서는 JavaScript의 배열에 대해 다뤄보려고 한다. 1. 배열 생성 배열을 생성할 때는 대괄호([])를 활용한 표기법인 배열 리터럴을 사용하거나, Array()라는 생성자 함수를 사용한다. var foodArr = ['sushi', 'kimchi', 'apple-pie'] console.log(foodArr[0]); // sushi 출력 foodArr[0] = 200; // 배열의 첫번째 요소가 200으로 바뀜 foodArr[5] = 'pizza'; // 배열의 6번째 요소에 pizza 삽입 첫번째 줄에서 요소가 3개..
JavaScript는 객체기반의 스크립트 언어이다. 즉, JavaScript는 기본 타입(Primitive Type. 숫자, 문자열, boolean, null, undefined 등.)을 제외하고 모든 것이 객체로 이루어져있다. 그래서 JavaScript를 잘 다루려면 'Object'에 대해 이해하는 것이 가장 중요하다. 1. JavaScript의 객체 JavaScript에서 객체는 Key-Value 형태의 프로퍼티(Property)들을 저장하는 컨테이너이다. 즉, 객체는 프로퍼티로 구성되어있다. 이러한 프로퍼티의 Value에는 기본타입의 값이 들어가거나, 다른 객체가 들어가기도 한다. 심지어 함수가 포함되기도 한다. (이러한 함수를 '메서드'라고 부른다.) 2. 객체 생성 ⊙ Object() 생성자 방..
★관련 링크Spring과 DB이야기 - 1. DataSource와 JdbcTemplateSpring과 DB이야기 - 2. JdbcTemplate에서의 UPDATE, INSERT 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스에서 상호작용의 단위라고 할 수 있다. 연관된 두 개 이상의 쿼리를 실행할 때, 모든 작업이 끝났을 때 COMMIT을 수행하고 중간에 오류가 발생하면 ROLLBACK하는 것이 기본이다. (트랜잭션을 잘 모른다면 여기를 클릭) 트랜잭션을 JAVA에서 구현한다면 아래와 같을 것이다. Connection conn = null; try { conn = DriverManager.getConnection(jdbcUrl, user, pw); conn.setAutoComm..
부제: @Autowired @Resource 차이, Spring @Qualifier, Spring Annotation 종류 Spring의 핵심 개념 중 하나인 DI는 Dependency Injection의 약자이다. 이 포스팅에서는 DI와 의존(Dependency)에 대한 자세한 설명은 하지 않고, 위키피디아의 설명으로 대신하겠다. 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다. 한편, 특정 객체에 의존 객체를 주입하는 방식은 두가지이다. 1. 생성자를 통한 주입. 2. Setter 메소드를 통한 주입. 이는 각각 XML로 아래와 같이 구현할 수 있으며, xml파일에 의존관계를 설정하는 것을 명시적 의존 주입이라고 한다. ..
★관련 링크Spring과 DB이야기 - 1. DataSource와 JdbcTemplateSpring과 DB이야기 - 3. Transaction 처리 지난 포스팅에서 DataSource의 개념과 Spring에서 DataSource를 활용한 JdbcTemplate으로 간단한 SELECT 쿼리를 작성해봤다. 이번 포스팅에서는 UPDATE와 INSERT에 대해 짚어보겠다. JdbcTemplate을 활용하여 INSERT, UPDATE, DELETE 쿼리를 실행할 때는, update() 메소드를 사용하면 된다. update() 메소드는 아래와 같다. - int update(String sql) - int update(String sql, Object... args) int 형태의 리턴을 하는데, 쿼리 실행 결과로 ..
부제: Spring으로 JDBC연동하기, Spring으로 DB조회하기 ★관련 링크Spring과 DB이야기 - 2. JdbcTemplate에서의 UPDATE, INSERT Spring과 DB이야기 - 3. Transaction 처리 JDBC의 구현과 DataSource JAVA를 활용하여 애플리케이션을 개발할 때, DB접근이 필요하면 보통 JDBC를 쓴다. JDBC를 사용해본 사람이라면 아래와 같은 방식으로 개발했을 것이다. public Student getSingleStudent (String studentNum) throws SQLException { Student student; try(Connection conn = DriverManager.getConnection ("jdbc:oracle:this..
부제: IntelliJ에서 S3 연동하기, Spring Boot AWS 연동 이번 포스팅에서는 Spring Boot에서 Spring Cloud AWS를 활용하여 S3를 연동하는 법을 알아보겠다. 절차는 크게 3가지(의존성 설정, Properties 파일 설정, 구현)로 나눌 수 있다. 1. 의존성 설정 Spring Cloud AWS를 활용하면, 의존성만 추가해도 간편하게 AWS의 모든 기능을 활용할 수 있다는 장점이 있다. 아래 내용을 build.gradle에 추가하자. (버전은 알아서 적절히 넣도록 한다.) 12compile("org.springframework.cloud:spring-cloud-aws-context:${springCloudVersion}")compile("org.springframew..